![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Code for sensor nodes connected by radio receiver with gateway
Dependencies: mbed WakeUp coapRadioClient DHT11
Revision 7:2393eb882f82, committed 2019-01-25
- Comitter:
- Ka_myk
- Date:
- Fri Jan 25 12:11:18 2019 +0000
- Parent:
- 6:5102672e8ff4
- Commit message:
- inrement message id
Changed in this revision
diff -r 5102672e8ff4 -r 2393eb882f82 coapRadioClient.lib --- a/coapRadioClient.lib Fri Jan 25 11:07:23 2019 +0000 +++ b/coapRadioClient.lib Fri Jan 25 12:11:18 2019 +0000 @@ -1,1 +1,1 @@ -https://os.mbed.com/teams/IOT_GRZYBKI/code/coapRadioClient/#792cf53a73c4 +https://os.mbed.com/teams/IOT_GRZYBKI/code/coapRadioClient/#d633e12f113f
diff -r 5102672e8ff4 -r 2393eb882f82 mainDistance.cpp --- a/mainDistance.cpp Fri Jan 25 11:07:23 2019 +0000 +++ b/mainDistance.cpp Fri Jan 25 12:11:18 2019 +0000 @@ -26,7 +26,7 @@ PinName pinA = PinName(PB_3); PinName pinB = PinName(PA_10); uint8_t token[] = {2}; -CoapClient coapClient = CoapClient(token, RETRANSMITS, DATA_RATE, CHANNEL, RX_ADDRESS, TX_ADDRESS); +CoapClient coapClient = CoapClient(1, token, RETRANSMITS, DATA_RATE, CHANNEL, RX_ADDRESS, TX_ADDRESS); InterruptIn button(USER_BUTTON);
diff -r 5102672e8ff4 -r 2393eb882f82 mainHumidity.cpp --- a/mainHumidity.cpp Fri Jan 25 11:07:23 2019 +0000 +++ b/mainHumidity.cpp Fri Jan 25 12:11:18 2019 +0000 @@ -1,122 +1,122 @@ -#include "sensor.h" -#include "mbed.h" -#include "msg.h" -#include "dbg.h" -#include "coapClient.h" -#include <string> - -// https://os.mbed.com/users/Sissors/code/WakeUp/ -#include "WakeUp.h" - -#include "DHT11.h" -#include "humidityMeter.h" -#include "tempMeter.h" - -#define DATA_BUFFER_LEN 10 -#define BUFFER_LEN 32 -#define CHANNEL 4 -#define RX_ADDRESS 0xABCDEF08 -#define TX_ADDRESS 0xABCDEF11 -#define DATA_RATE 1000 -#define RETRANSMITS 4 - -char postUri[] = "/hum"; -char getConfUri[] = "/conf/hum"; -char postUri2[] = "/temp"; - -Serial pc(USBTX, USBRX); // tx, rx -PinName pinA = PinName(A5); -uint8_t token[] = {1}; -CoapClient coapClient = CoapClient(token, RETRANSMITS, DATA_RATE, CHANNEL, RX_ADDRESS, TX_ADDRESS); -InterruptIn button(USER_BUTTON); - - -// change this -DHT11 dht(pinA); -HumidityMeter sensor = HumidityMeter(&dht); -TempMeter sensor2 = TempMeter(&dht); - -int config_interval = 30; -int sense_interval = 10; - -int config_time_left = 30; -int sense_time_left = 0; - -void check_for_new_config() { - uint8_t buffer[BUFFER_LEN]; - int ret = coapClient.get(buffer, BUFFER_LEN, getConfUri); - if(ret > 0) { - uint8_t sensor_id = 0; - int data = -1; - Msg::deconstruct_data_msg(&sensor_id, &data, buffer, ret); - DBG("INTERVAL: %d", data); - sense_interval = data; - } - DBG("GET: %d", ret); -} - -void collect_and_send_data() { - uint8_t buffer[DATA_BUFFER_LEN]; - int data = sensor.read(); - DBG("DATA: %d", data); - int sensor_id = sensor.getSensorId(); - // TODO put sensor_id in URI, not in payload - Msg::construct_data_msg(sensor_id, data, buffer, DATA_BUFFER_LEN); - int ret = coapClient.post(buffer, DATA_BUFFER_LEN, postUri); - DBG("POST: %d", ret); - - data = sensor2.read(); - DBG("TEMP: %d", data); - sensor_id = sensor2.getSensorId(); - // TODO put sensor_id in URI, not in payload - Msg::construct_data_msg(sensor_id, data, buffer, DATA_BUFFER_LEN); - ret = coapClient.post(buffer, DATA_BUFFER_LEN, postUri2); - DBG("POST: %d", ret); -} - -bool start = false; -void send_packet() { - DBG("Start"); - start = true; -} - - -int main() { - pc.baud(115200); - WakeUp::calibrate(); - sensor.initialize(); - sensor2.initialize(); - DBG("RESTART"); - int czas_na_spanko = 1; - Timer t; - button.rise(&send_packet); - while(true) { - while(start) { - if (config_time_left <= 0) { - check_for_new_config(); - config_time_left = config_interval; - } - if (sense_time_left <= 0) { - collect_and_send_data(); - sense_time_left = sense_interval; - } - - czas_na_spanko = min(config_time_left, sense_time_left); - DBG("SPANKO: %d", czas_na_spanko); - if(czas_na_spanko > 0) { - t.stop(); - //WakeUp::set(czas_na_spanko); - wait(czas_na_spanko); - t.reset(); - t.start(); - config_time_left -= czas_na_spanko; - sense_time_left -= czas_na_spanko; - } else { - config_time_left -= t.read_ms(); - t.stop(); - t.reset(); - t.start(); - } - } - } -} \ No newline at end of file +//#include "sensor.h" +//#include "mbed.h" +//#include "msg.h" +//#include "dbg.h" +//#include "coapClient.h" +//#include <string> +// +//// https://os.mbed.com/users/Sissors/code/WakeUp/ +//#include "WakeUp.h" +// +//#include "DHT11.h" +//#include "humidityMeter.h" +//#include "tempMeter.h" +// +//#define DATA_BUFFER_LEN 10 +//#define BUFFER_LEN 32 +//#define CHANNEL 4 +//#define RX_ADDRESS 0xABCDEF08 +//#define TX_ADDRESS 0xABCDEF11 +//#define DATA_RATE 1000 +//#define RETRANSMITS 4 +// +//char postUri[] = "/hum"; +//char getConfUri[] = "/conf/hum"; +//char postUri2[] = "/temp"; +// +//Serial pc(USBTX, USBRX); // tx, rx +//PinName pinA = PinName(A5); +//uint8_t token[] = {1}; +//CoapClient coapClient = CoapClient(2, token, RETRANSMITS, DATA_RATE, CHANNEL, RX_ADDRESS, TX_ADDRESS); +//InterruptIn button(USER_BUTTON); +// +// +//// change this +//DHT11 dht(pinA); +//HumidityMeter sensor = HumidityMeter(&dht); +//TempMeter sensor2 = TempMeter(&dht); +// +//int config_interval = 30; +//int sense_interval = 10; +// +//int config_time_left = 0; +//int sense_time_left = 0; +// +//void check_for_new_config() { +// uint8_t buffer[BUFFER_LEN]; +// int ret = coapClient.get(buffer, BUFFER_LEN, getConfUri); +// if(ret > 0) { +// uint8_t sensor_id = 0; +// int data = -1; +// Msg::deconstruct_data_msg(&sensor_id, &data, buffer, ret); +// DBG("INTERVAL: %d", data); +// sense_interval = data; +// } +// DBG("GET: %d", ret); +//} +// +//void collect_and_send_data() { +// uint8_t buffer[DATA_BUFFER_LEN]; +// int data = sensor.read(); +// DBG("DATA: %d", data); +// int sensor_id = sensor.getSensorId(); +// // TODO put sensor_id in URI, not in payload +// Msg::construct_data_msg(sensor_id, data, buffer, DATA_BUFFER_LEN); +// int ret = coapClient.post(buffer, DATA_BUFFER_LEN, postUri); +// DBG("POST: %d", ret); +// +// data = sensor2.read(); +// DBG("TEMP: %d", data); +// sensor_id = sensor2.getSensorId(); +// // TODO put sensor_id in URI, not in payload +// Msg::construct_data_msg(sensor_id, data, buffer, DATA_BUFFER_LEN); +// ret = coapClient.post(buffer, DATA_BUFFER_LEN, postUri2); +// DBG("POST: %d", ret); +//} +// +//bool start = false; +//void send_packet() { +// DBG("Start"); +// start = true; +//} +// +// +//int main() { +// pc.baud(115200); +// WakeUp::calibrate(); +// sensor.initialize(); +// sensor2.initialize(); +// DBG("RESTART"); +// int czas_na_spanko = 1; +// Timer t; +// button.rise(&send_packet); +// while(true) { +// while(start) { +// if (config_time_left <= 0) { +// check_for_new_config(); +// config_time_left = config_interval; +// } +// if (sense_time_left <= 0) { +// collect_and_send_data(); +// sense_time_left = sense_interval; +// } +// +// czas_na_spanko = min(config_time_left, sense_time_left); +// DBG("SPANKO: %d", czas_na_spanko); +// if(czas_na_spanko > 0) { +// t.stop(); +// //WakeUp::set(czas_na_spanko); +// wait(czas_na_spanko); +// t.reset(); +// t.start(); +// config_time_left -= czas_na_spanko; +// sense_time_left -= czas_na_spanko; +// } else { +// config_time_left -= t.read_ms(); +// t.stop(); +// t.reset(); +// t.start(); +// } +// } +// } +//} \ No newline at end of file
diff -r 5102672e8ff4 -r 2393eb882f82 mainMoisture.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mainMoisture.cpp Fri Jan 25 12:11:18 2019 +0000 @@ -0,0 +1,110 @@ +//#include "sensor.h" +//#include "humidityMeter.h" +//#include "moistureMeter.h" +//#include "mbed.h" +//#include "msg.h" +//#include "dbg.h" +//#include "coapClient.h" +//#include <string> +// +//// https://os.mbed.com/users/Sissors/code/WakeUp/ +//#include "WakeUp.h" +// +//#define BUFFER_LEN 32 +//#define CHANNEL 4 +//#define RX_ADDRESS 0xABCDEF08 +//#define TX_ADDRESS 0xABCDEF12 +//#define DATA_RATE 1000 +//#define RETRANSMITS 4 +// +//char postUri[] = "/moist"; +//char getConfUri[] = "/conf/moist"; +// +//Serial pc(USBTX, USBRX); // tx, rx +//PinName pinA = PinName(PC_0); +//uint8_t token[] = {3}; +//CoapClient coapClient = CoapClient(3,token, RETRANSMITS, DATA_RATE, CHANNEL, RX_ADDRESS, TX_ADDRESS); +//InterruptIn button(USER_BUTTON); +// +// +//// TODO #ifdef +//MoistureMeter sensor = MoistureMeter(pinA); +// +//int config_interval = 30; +//int sense_interval = 10; +// +//int config_time_left = 0; +//int sense_time_left = 0; +// +//void check_for_new_config() { +// DBG("************ ASKING FOR NEW CONFIG..."); +// uint8_t buffer[BUFFER_LEN]; +// uint8_t sensor_id; +// int new_interval; +// int ret = coapClient.get(buffer, BUFFER_LEN, getConfUri); +// if(ret > 0) { +// Msg::deconstruct_data_msg(&sensor_id, &new_interval, buffer, BUFFER_LEN); +// sense_interval = new_interval; +// DBG("************ NEW INTERVAL IS %d.", sense_interval); +// } +// DBG("************ GET RET: %d", ret); +//} +// +//void collect_and_send_data() { +// uint8_t buffer[10]; +// int data = sensor.read(); +// int sensor_id = sensor.getSensorId(); +// // TODO put sensor_id in URI, not in payload +// DBG("************ SENDING VALUE %d...", data); +// Msg::construct_data_msg(sensor_id, data, buffer, 10); +// int ret = coapClient.post(buffer, 10, postUri); +// DBG("************ POST RET: %d", ret); +//} +// +//bool start = false; +//void send_packet() { +// DBG("Start"); +// start = true; +//} +// +// +//int main() { +// pc.baud(115200); +// WakeUp::calibrate(); +// sensor.initialize(); +// DBG("RESTART"); +// int czas_na_spanko = 1; +// Timer t; +// button.rise(&send_packet); +// while(true) { +// while(start) { +// if (config_time_left <= 0) { +// check_for_new_config(); +// config_time_left = config_interval; +// } +// if (sense_time_left <= 0) { +// collect_and_send_data(); +// sense_time_left = sense_interval; +// } +// +// czas_na_spanko = min(config_time_left, sense_time_left); +// DBG("*********** Config time left %d.", config_time_left); +// DBG("*********** Sense time left %d.", sense_time_left); +// DBG("*********** Interval %d.", sense_interval); +// DBG("*********** Czas na spanko to %d.", czas_na_spanko); +// if(czas_na_spanko > 0) { +// t.stop(); +// wait(czas_na_spanko); +// t.reset(); +// t.start(); +// config_time_left -= czas_na_spanko; +// sense_time_left -= czas_na_spanko; +// } else { +// config_time_left -= t.read_ms(); +// t.stop(); +// t.reset(); +// t.start(); +// } +// } +// } +//} \ No newline at end of file
diff -r 5102672e8ff4 -r 2393eb882f82 moistureMeter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/moistureMeter.cpp Fri Jan 25 12:11:18 2019 +0000 @@ -0,0 +1,17 @@ +#include "moistureMeter.h" +#include "dbg.h" + +int MoistureMeter::read() { + DBG("Reading moisture...\n\r"); + int readValue = (int)1000*analogIn.read(); + DBG("Moisture read: %d\n\r", readValue); + return readValue; +} + +int MoistureMeter::getSensorId() { + return 2; +} + +void MoistureMeter::initialize() { + DBG("Moisture sensor initialized"); +} \ No newline at end of file
diff -r 5102672e8ff4 -r 2393eb882f82 moistureMeter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/moistureMeter.h Fri Jan 25 12:11:18 2019 +0000 @@ -0,0 +1,21 @@ +#ifndef SLAVE_MOISTUREMETER_H +#define SLAVE_MOISTUREMETER_H + +#include "sensor.h" + +class MoistureMeter : public Sensor { + +private: + AnalogIn analogIn; + +public: + MoistureMeter(PinName dataPin) : analogIn(dataPin) {} + + int read(); + + int getSensorId(); + + void initialize(); +}; + +#endif //SLAVE_MOISTUREMETER_H \ No newline at end of file