Code example to regularly report light level and temperature over Sigfox on the QW dev kit
Fork of QW_Temperature_Light_Monitor by
This is a code example that demonstrates sending the light level sensor and temperature sensor output over Sigfox at regular time intervals.
The payload that is sent over the network consists of 3 bytes:
- two bytes light level reading
- one byte temperature reading.
Use this code example as a start to connect your own device over Sigfox with the QW development kit.
Diff: main.cpp
- Revision:
- 2:33e92af45279
- Parent:
- 0:9a93fff79b27
diff -r b2c941af91c6 -r 33e92af45279 main.cpp
--- a/main.cpp Tue Mar 08 09:48:32 2016 +0000
+++ b/main.cpp Mon May 02 12:03:27 2016 +0000
@@ -48,6 +48,7 @@
/* Ticker for scheduled transmissions */
Ticker tTX;
Ticker tSense;
+Ticker heartbeat;
/* Function prototypes */
void sw1interrupt();
@@ -69,8 +70,15 @@
/* Serial connection to sigfox modem */
Serial modem(PA_9, PA_10);
+void beat()
+{
+ LED_3 = !LED_3;
+}
+
int main()
{
+ /* Blinking LED */
+ heartbeat.attach(&beat, 0.5);
/* Storage for VCNL4010 readout */
unsigned char ID=0, Current=0;
//unsigned int ProxiValue=0, AmbiValue=0;
@@ -207,6 +215,8 @@
void sw2interrupt()
{
pc.printf("\n\rButton 2 pressed\n\r");
+ LED_1 = 0;
+ handleIRQ1 = true;
}
void dataScheduledTX()
@@ -232,11 +242,12 @@
char command[32];
VCNL4010.ReadAmbiOnDemand (&ambiValue); // read ambi value on demand
+ sensor.Sense();
tAvg = sensor.GetAverageTemp();
tAvgByte = (int8_t)tAvg;
ambiValueShort = (uint16_t)ambiValue;
- sprintf(command, "AT$SF=%04X%02X,2,0\n", ambiValueShort, tAvgByte);
+ sprintf(command, "AT$SF=02%04X%02X,2,0\n", ambiValueShort, tAvgByte);
pc.printf("Sending ambient light level %i cts and temperature %i degrees C over Sigfox\n", ambiValueShort, tAvgByte);
pc.printf("using modem command: %s", command);
