Temperature reading using NUCLEO-L152RE microcontroller and Grove – Temperature&Humidity Sensor Pro.

Dependencies:   DHT LMiC SX1276Lib mbed

Fork of LoRaWAN_send_text by Thomas Amberg

Committer:
dagga
Date:
Tue Jan 19 09:51:34 2016 +0000
Revision:
14:c872172f062c
Parent:
13:d2eb917f9883
hey

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tamberg 11:0cc0f7b84c72 1 // License: Revised BSD License, see LICENSE.TXT, (c)2015 Semtech
mluis 0:a2929fa6e4f0 2
mluis 1:60184eda0066 3 #include "mbed.h"
mluis 0:a2929fa6e4f0 4 #include "lmic.h"
mluis 1:60184eda0066 5 #include "debug.h"
mluis 0:a2929fa6e4f0 6
dagga 14:c872172f062c 7 #include "DHT.h"
dagga 14:c872172f062c 8
tamberg 6:fbfc95b5c979 9 #define LORAWAN_NET_ID (uint32_t) 0x00000000
tamberg 13:d2eb917f9883 10 // TODO: enter device address below, for TTN just set ???
dagga 14:c872172f062c 11 #define LORAWAN_DEV_ADDR (uint32_t) 0x02031003
tamberg 6:fbfc95b5c979 12 #define LORAWAN_ADR_ON 1
tamberg 6:fbfc95b5c979 13 #define LORAWAN_CONFIRMED_MSG_ON 1
tamberg 13:d2eb917f9883 14 #define LORAWAN_APP_PORT 3//15
mluis 0:a2929fa6e4f0 15
dagga 14:c872172f062c 16 DHT sensor(A1, AM2302);
dagga 14:c872172f062c 17
tamberg 5:1f8829bd11ed 18 static uint8_t NwkSKey[] = {
tamberg 13:d2eb917f9883 19 // TODO: enter network, or use TTN default
tamberg 13:d2eb917f9883 20 // e.g. for 2B7E151628AED2A6ABF7158809CF4F3C =>
tamberg 13:d2eb917f9883 21 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
tamberg 13:d2eb917f9883 22 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
mluis 0:a2929fa6e4f0 23 };
mluis 0:a2929fa6e4f0 24
tamberg 5:1f8829bd11ed 25 static uint8_t ArtSKey[] = {
tamberg 13:d2eb917f9883 26 // TODO: enter application key, or use TTN default
tamberg 13:d2eb917f9883 27 // e.g. for 2B7E151628AED2A6ABF7158809CF4F3C =>
tamberg 13:d2eb917f9883 28 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
tamberg 13:d2eb917f9883 29 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
mluis 0:a2929fa6e4f0 30 };
mluis 0:a2929fa6e4f0 31
tamberg 9:fdd150f9db9e 32 osjob_t initjob;
mluis 0:a2929fa6e4f0 33 osjob_t sendFrameJob;
tamberg 9:fdd150f9db9e 34 u1_t n = 0;
mluis 0:a2929fa6e4f0 35
tamberg 7:4adfa7248a0b 36 void os_getArtEui (uint8_t *buf) {} // ignore
tamberg 7:4adfa7248a0b 37 void os_getDevEui (uint8_t *buf) {} // ignore
tamberg 7:4adfa7248a0b 38 void os_getDevKey (uint8_t *buf) {} // ignore
mluis 0:a2929fa6e4f0 39
dagga 14:c872172f062c 40 float getTemperature() {
dagga 14:c872172f062c 41
dagga 14:c872172f062c 42 int err = 1;
dagga 14:c872172f062c 43
dagga 14:c872172f062c 44 while(err != 0) {
dagga 14:c872172f062c 45 wait(2.0f);
dagga 14:c872172f062c 46 err = sensor.readData();
dagga 14:c872172f062c 47 }
dagga 14:c872172f062c 48
dagga 14:c872172f062c 49 return sensor.ReadTemperature(CELCIUS);
dagga 14:c872172f062c 50 }
dagga 14:c872172f062c 51
tamberg 9:fdd150f9db9e 52 void onSendFrame (osjob_t* j) {
dagga 14:c872172f062c 53
dagga 14:c872172f062c 54 char message[32];
dagga 14:c872172f062c 55
dagga 14:c872172f062c 56 float temperature = getTemperature();
dagga 14:c872172f062c 57 printf("Temperature is %4.2f \r\n", temperature);
dagga 14:c872172f062c 58
dagga 14:c872172f062c 59 sprintf(message, "%4.2f", temperature);
dagga 14:c872172f062c 60
tamberg 12:020ffc39a19e 61 int frameLength = strlen(message); // keep it < 32
tamberg 11:0cc0f7b84c72 62 for (int i = 0; i < frameLength; i++) {
tamberg 12:020ffc39a19e 63 LMIC.frame[i] = message[i];
tamberg 10:576f275cfc14 64 }
tamberg 9:fdd150f9db9e 65 int result = LMIC_setTxData2(LORAWAN_APP_PORT, LMIC.frame,
tamberg 11:0cc0f7b84c72 66 frameLength, LORAWAN_CONFIRMED_MSG_ON); // calls onEvent()
dagga 14:c872172f062c 67
dagga 14:c872172f062c 68 os_setTimedCallback(j, os_getTime() + sec2osticks(60), onSendFrame);
mluis 0:a2929fa6e4f0 69 }
mluis 0:a2929fa6e4f0 70
tamberg 9:fdd150f9db9e 71 void onInit (osjob_t* j) {
tamberg 9:fdd150f9db9e 72 LMIC_reset();
tamberg 5:1f8829bd11ed 73 LMIC_setAdrMode(LORAWAN_ADR_ON);
tamberg 9:fdd150f9db9e 74 LMIC_setDrTxpow(DR_SF12, 14);
tamberg 9:fdd150f9db9e 75 LMIC_setSession(LORAWAN_NET_ID, LORAWAN_DEV_ADDR, NwkSKey, ArtSKey);
tamberg 5:1f8829bd11ed 76 onSendFrame(NULL);
mluis 1:60184eda0066 77 }
mluis 1:60184eda0066 78
tamberg 8:747796516a2f 79 void onEvent (ev_t ev) { // called by lmic.cpp, see also oslmic.h
tamberg 13:d2eb917f9883 80 debug_event(ev);
tamberg 9:fdd150f9db9e 81 if (ev == EV_TXCOMPLETE) {
tamberg 8:747796516a2f 82 os_setCallback(&sendFrameJob, onSendFrame);
tamberg 8:747796516a2f 83 }
tamberg 8:747796516a2f 84 }
tamberg 8:747796516a2f 85
tamberg 6:fbfc95b5c979 86 int main (void) {
tamberg 4:f83ad3eee79d 87 debug_str("main\r\n");
tamberg 5:1f8829bd11ed 88 os_init();
tamberg 5:1f8829bd11ed 89 os_setCallback(&initjob, onInit);
tamberg 5:1f8829bd11ed 90 os_runloop(); // blocking
tamberg 8:747796516a2f 91 }