Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of USB2UART by
You are viewing an older revision! See the latest version
Homepage
ARCH GPRS With Xively¶

- Xively is an on-line database service allowing developers to connect sensor-derived data (e.g. energy and environment data from objects, devices & buildings) to the Web and to build their own applications based on that data,to know more, visit https://xively.com/
- Here, we use ARCH GPRS to post our sensor data(temperature/light/humidity etc.) to Xively.
ARCH GPRS Introduction¶
- Arch GPRS is a wireless network module based on EG-10, it can achive remote data colletion function to communicate with outside world by GPRS network.
- Arch GPRS has standard Arduino interface and Grove connectors. It’s convenient to connect existing Shields and Grove products to Arch GPRS.
- You can use the solar panel to charge for battery, and own to its low-power design, so Arch GPRS can work normally in outdoor.
- For more information, please visit http://www.seeedstudio.com/wiki/Arch_GPRS
Code¶
- Description: this demo is used as posting value of sound sensor to Xively every 10 seconds.
- Attention: you need to replace the PHONE_NUMBER/FEED_ID/SENSOR_ID/XIVELY_KEY with yours.
main.cpp
#include "gprs.h"
#define PHONE_NUMBER "139****7382"
#define IP_ADDRSS "216.52.233.120" //api.xively.com
#define PORT "80" //port addr
#define FEED_ID "your feeed ID"
#define SENSOR_ID "your sensor ID"
#define XIVELY_KEY "your Xively Key"
#define REQUEST_LENGTH 36
#define DATA_LENGTH 90
#define HEAD_LEN 270
#define PINPWR P1_2 // power on EG 10, low enable
#define PINONOFF P1_7 // switch of EG10, low enable, low for 2s to turn on EG10
DigitalOut eg10_pwr(PINPWR);
DigitalOut eg10_on(PINONOFF);
GPRS gprs(USBTX, USBRX,115200,PHONE_NUMBER);
AnalogIn soundSensor(P0_11);
void EG10_PowerUp(void)
{
eg10_pwr = 1;
eg10_on = 1;
wait(2);
eg10_pwr = 0;
eg10_on = 0;
wait(2);
eg10_on = 1;
wait(2);
}
int putDataToXively(float sensorValue)
{
char request[REQUEST_LENGTH];
char dataStream[DATA_LENGTH];
char head[HEAD_LEN];
snprintf(request,REQUEST_LENGTH,"PUT /v2/feeds/%s HTTP/1.1\r\n",FEED_ID);
snprintf(dataStream,DATA_LENGTH,"{\"version\":\"1.0.0\", \"datastreams\" : [{ \"id\" : \"%s\", \"current_value\" : \"%f\"}]}\r\n",SENSOR_ID,sensorValue);
int dataLen = strlen(dataStream);
snprintf(head,HEAD_LEN,"%sHost: api.xively.com\r\nX-ApiKey: %s\r\nUser-Agent: Xively-Arduino-Lib/1.0\r\nContent-Length: %d\r\n\r\n%s",request,XIVELY_KEY,dataLen,dataStream);
if(0 != gprs.connectTCP(IP_ADDRSS,PORT)) {
goto STOP;
}
wait(5);
if(0 != gprs.sendTCPData(head)) {
goto STOP;
}
STOP:
gprs.closeTCP();
return 0;
}
int main()
{
EG10_PowerUp();
while(0 != gprs.init()) {
wait(2);
}
while(1) {
putDataToXively(10*soundSensor.read());
wait(10);
}
}
