PIR still blocked by the XBee reading. Audio sensor not configured yet.

Dependencies:   BME280 SI1145 mbed

Committer:
jonathanyost
Date:
Mon Aug 14 13:28:49 2017 +0000
Revision:
8:99788d3a0514
Parent:
7:5d217e208d3f
doing the do;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jonathanyost 0:7daf9b751759 1 /*
jonathanyost 0:7daf9b751759 2 Author: Jonathan Yost
jonathanyost 0:7daf9b751759 3 Title: END_NODE_REQUEST_POC
jonathanyost 0:7daf9b751759 4 Date: 6/28/17
jonathanyost 0:7daf9b751759 5
jonathanyost 0:7daf9b751759 6 Desc: Reads in data from the sensors and sends to the gateway.
jonathanyost 0:7daf9b751759 7 yeah.
jonathanyost 0:7daf9b751759 8 */
jonathanyost 0:7daf9b751759 9
jonathanyost 0:7daf9b751759 10 // Libraries
jonathanyost 1:d0db255b07a8 11 #include "mbed.h"
jonathanyost 0:7daf9b751759 12 #include "BME280.h"
jonathanyost 0:7daf9b751759 13 #include "SI1145.h"
jonathanyost 0:7daf9b751759 14
jonathanyost 0:7daf9b751759 15 // Define Constants / Macros
jonathanyost 0:7daf9b751759 16 #define node_id (0x01)
jonathanyost 0:7daf9b751759 17 #define tx (PA_9)
jonathanyost 0:7daf9b751759 18 #define rx (PA_10)
jonathanyost 0:7daf9b751759 19
jonathanyost 2:dd4d53687372 20 // Declare Noise Sensor Stuff
jonathanyost 2:dd4d53687372 21 #define noise_pin (PA_1)
jonathanyost 2:dd4d53687372 22
jonathanyost 7:5d217e208d3f 23 const char nodeID = '1';
jonathanyost 4:7335cd74f3bc 24
jonathanyost 4:7335cd74f3bc 25 // RX declarations
jonathanyost 6:002e8a4809eb 26 uint8_t rx_buffer[128];
jonathanyost 3:07fd499e96b4 27 bool rx_flag = false;
jonathanyost 4:7335cd74f3bc 28 int rx_index = 0;
jonathanyost 3:07fd499e96b4 29
jonathanyost 0:7daf9b751759 30
jonathanyost 0:7daf9b751759 31 // I/O Delarations
jonathanyost 0:7daf9b751759 32 I2C i2c(I2C_SDA, I2C_SCL); // D4, D5
jonathanyost 0:7daf9b751759 33 BME280 *thp_sensor = new BME280(i2c);
jonathanyost 0:7daf9b751759 34 SI1145 *uiv_sensor = new SI1145(i2c);
jonathanyost 2:dd4d53687372 35 AnalogIn adc_noise(noise_pin);
jonathanyost 2:dd4d53687372 36
jonathanyost 0:7daf9b751759 37
jonathanyost 0:7daf9b751759 38 // Declare the PIR interface
jonathanyost 6:002e8a4809eb 39 InterruptIn PIR_sensor(PB_5);
jonathanyost 1:d0db255b07a8 40 Ticker pir_timer;
jonathanyost 6:002e8a4809eb 41 Ticker pir_send_timer;
jonathanyost 2:dd4d53687372 42 bool pir_enable = false;
jonathanyost 0:7daf9b751759 43 bool pir_trigger = false;
jonathanyost 0:7daf9b751759 44
jonathanyost 8:99788d3a0514 45 Ticker reset_timer;
jonathanyost 8:99788d3a0514 46
jonathanyost 0:7daf9b751759 47 // Declare Serial Interfaces
jonathanyost 0:7daf9b751759 48 Serial xb(tx, rx); // Serial 1
jonathanyost 0:7daf9b751759 49 Serial pc(PB_3, PB_4); // Serial 2
jonathanyost 0:7daf9b751759 50
jonathanyost 0:7daf9b751759 51 // send_sensor_data(temp, pressure, humidity, motion, uv, ir, vis, noise);
jonathanyost 0:7daf9b751759 52 void SendSensorData(int t, int p, int h, int u, int ir, int v, int n){
jonathanyost 0:7daf9b751759 53 //" ni:XX, te:XX,pr:XX,hu:XX,uv:XX,ir:XX,vi:XX,no:XX"
jonathanyost 5:0e4d19f6ba45 54 xb.printf( ",ni:%c,te:%d,pr:%d,hu:%d,uv:%d,ir:%d,vi:%d,no:%d\n\r",nodeID,t,p,h,u,ir,v,n);
jonathanyost 6:002e8a4809eb 55 pc.printf(" >> ,ni:%c,te:%d,pr:%d,hu:%d,uv:%d,ir:%d,vi:%d,no:%d\n\r",nodeID,t,p,h,u,ir,v,n);
jonathanyost 0:7daf9b751759 56 }
jonathanyost 0:7daf9b751759 57
jonathanyost 0:7daf9b751759 58 void SendPirFlag(){
jonathanyost 2:dd4d53687372 59 if(xb.writeable() && pir_enable){
jonathanyost 0:7daf9b751759 60 xb.printf("ni:%c,mo:1\r\n",nodeID);
jonathanyost 6:002e8a4809eb 61 pc.printf(" >> ni:%c,mo:1\r\n",nodeID);
jonathanyost 0:7daf9b751759 62 pir_trigger = false;
jonathanyost 0:7daf9b751759 63 }
jonathanyost 0:7daf9b751759 64 }
jonathanyost 0:7daf9b751759 65
jonathanyost 0:7daf9b751759 66 // PIR interrupt. Set the pir_trigger to true when interrupted.
jonathanyost 0:7daf9b751759 67 void PIR(void){
jonathanyost 8:99788d3a0514 68 /*
jonathanyost 8:99788d3a0514 69 if(PIR_sensor.read()){
jonathanyost 8:99788d3a0514 70 pc.printf("# \r\n");
jonathanyost 8:99788d3a0514 71 pir_trigger = true;
jonathanyost 8:99788d3a0514 72 }*/
jonathanyost 6:002e8a4809eb 73
jonathanyost 8:99788d3a0514 74
jonathanyost 6:002e8a4809eb 75 if(PIR_sensor.read() && !pir_trigger){
jonathanyost 6:002e8a4809eb 76 pc.printf("# \r\n");
jonathanyost 6:002e8a4809eb 77 pir_trigger = true;
jonathanyost 6:002e8a4809eb 78 }
jonathanyost 8:99788d3a0514 79
jonathanyost 1:d0db255b07a8 80 }
jonathanyost 1:d0db255b07a8 81
jonathanyost 1:d0db255b07a8 82 // This method is attached to a timer
jonathanyost 1:d0db255b07a8 83 void PIR_timed_send(){
jonathanyost 6:002e8a4809eb 84 if(pir_trigger){
jonathanyost 0:7daf9b751759 85 SendPirFlag();
jonathanyost 0:7daf9b751759 86 }
jonathanyost 0:7daf9b751759 87 }
jonathanyost 0:7daf9b751759 88
jonathanyost 0:7daf9b751759 89 void initialize_serial_connections(){
jonathanyost 0:7daf9b751759 90 xb.baud(57600);
jonathanyost 0:7daf9b751759 91 pc.baud(115200);
jonathanyost 0:7daf9b751759 92 }
jonathanyost 0:7daf9b751759 93
jonathanyost 3:07fd499e96b4 94 void rx_read_callback(){
jonathanyost 4:7335cd74f3bc 95 char c = xb.getc();
jonathanyost 6:002e8a4809eb 96 //pc.printf("%c", c);
jonathanyost 4:7335cd74f3bc 97
jonathanyost 4:7335cd74f3bc 98 if(c == '\n'){
jonathanyost 4:7335cd74f3bc 99 rx_flag = true;
jonathanyost 4:7335cd74f3bc 100 rx_index = 0;
jonathanyost 7:5d217e208d3f 101 pc.printf(" \r\n");
jonathanyost 5:0e4d19f6ba45 102 } else {
jonathanyost 4:7335cd74f3bc 103 rx_buffer[rx_index] = c;
jonathanyost 4:7335cd74f3bc 104 rx_index++;
jonathanyost 5:0e4d19f6ba45 105 }
jonathanyost 4:7335cd74f3bc 106
jonathanyost 6:002e8a4809eb 107 if(rx_index > 127){
jonathanyost 4:7335cd74f3bc 108 rx_index = 0;
jonathanyost 8:99788d3a0514 109 }
jonathanyost 8:99788d3a0514 110 }
jonathanyost 8:99788d3a0514 111
jonathanyost 8:99788d3a0514 112 void system_reset() {
jonathanyost 8:99788d3a0514 113 NVIC_SystemReset();
jonathanyost 4:7335cd74f3bc 114 }
jonathanyost 3:07fd499e96b4 115
jonathanyost 0:7daf9b751759 116 int main() {
jonathanyost 0:7daf9b751759 117 initialize_serial_connections();
jonathanyost 6:002e8a4809eb 118 memset(rx_buffer, '\0', 128);
jonathanyost 3:07fd499e96b4 119 pc.printf("\n\rMic test 1-2, 1-2\n\r");
jonathanyost 8:99788d3a0514 120 pc.printf("NODE ID: %c\n\r", nodeID);
jonathanyost 0:7daf9b751759 121
jonathanyost 3:07fd499e96b4 122 xb.attach(&rx_read_callback, Serial::RxIrq);
jonathanyost 0:7daf9b751759 123
jonathanyost 6:002e8a4809eb 124 // Attach the PIR function to ticker thing
jonathanyost 8:99788d3a0514 125 pir_timer.attach(&PIR, 0.2);
jonathanyost 6:002e8a4809eb 126 pir_send_timer.attach(&PIR_timed_send, 1.5);
jonathanyost 8:99788d3a0514 127 reset_timer.attach(&system_reset, 169);
jonathanyost 8:99788d3a0514 128
jonathanyost 6:002e8a4809eb 129
jonathanyost 0:7daf9b751759 130 char pc_data = 'e';
jonathanyost 0:7daf9b751759 131
jonathanyost 0:7daf9b751759 132 int temp = 1;
jonathanyost 0:7daf9b751759 133 int pressure = 2;
jonathanyost 0:7daf9b751759 134 int humidity = 3;
jonathanyost 0:7daf9b751759 135 int uv = 5;
jonathanyost 0:7daf9b751759 136 int ir = 6;
jonathanyost 0:7daf9b751759 137 int vis = 7;
jonathanyost 0:7daf9b751759 138 int noise = 8;
jonathanyost 2:dd4d53687372 139
jonathanyost 0:7daf9b751759 140 bool send_enable = false;
jonathanyost 0:7daf9b751759 141
jonathanyost 0:7daf9b751759 142 while(true){
jonathanyost 2:dd4d53687372 143 //pc.printf("top of loop \r\n");
jonathanyost 2:dd4d53687372 144
jonathanyost 0:7daf9b751759 145 // Debug Controls Input
jonathanyost 0:7daf9b751759 146 if(pc.readable()){
jonathanyost 0:7daf9b751759 147 pc_data = pc.getc();
jonathanyost 0:7daf9b751759 148 pc.printf("%c", pc_data);
jonathanyost 0:7daf9b751759 149 if(xb.writeable()){xb.printf("%c", pc_data);}
jonathanyost 0:7daf9b751759 150 }
jonathanyost 0:7daf9b751759 151
jonathanyost 5:0e4d19f6ba45 152 // Read in values from the BME280 board
jonathanyost 5:0e4d19f6ba45 153 temp = thp_sensor->getTemperature();
jonathanyost 5:0e4d19f6ba45 154 pressure = thp_sensor->getPressure();
jonathanyost 5:0e4d19f6ba45 155 humidity = thp_sensor->getHumidity();
jonathanyost 5:0e4d19f6ba45 156
jonathanyost 5:0e4d19f6ba45 157 //Sensor data from the SI1145 board
jonathanyost 5:0e4d19f6ba45 158 uv = uiv_sensor->getUV(); // Reads from the SI1145
jonathanyost 5:0e4d19f6ba45 159 ir = uiv_sensor->getIR(); // Reads from the SI1145
jonathanyost 5:0e4d19f6ba45 160 vis = uiv_sensor->getVIS(); // Reads from the SI1145
jonathanyost 5:0e4d19f6ba45 161
jonathanyost 5:0e4d19f6ba45 162 noise = adc_noise.read();
jonathanyost 5:0e4d19f6ba45 163
jonathanyost 3:07fd499e96b4 164 if(rx_flag){
jonathanyost 6:002e8a4809eb 165 //pc.printf("IND: 0123456789ABCDEF\r\n"); // Show indices
jonathanyost 6:002e8a4809eb 166 pc.printf("<< %s\r\n", rx_buffer); // Show received message
jonathanyost 4:7335cd74f3bc 167 rx_flag = false;
jonathanyost 1:d0db255b07a8 168
jonathanyost 4:7335cd74f3bc 169 if(rx_buffer[3] == nodeID){
jonathanyost 4:7335cd74f3bc 170 send_enable = true;
jonathanyost 4:7335cd74f3bc 171 } else {
jonathanyost 6:002e8a4809eb 172 //pc.printf("Target: NODE %c\r\n", rx_buffer[3]);
jonathanyost 3:07fd499e96b4 173 }
jonathanyost 2:dd4d53687372 174
jonathanyost 4:7335cd74f3bc 175 if(rx_buffer[5] == 'm' && rx_buffer[6] == 's'){
jonathanyost 4:7335cd74f3bc 176 send_enable = false;
jonathanyost 4:7335cd74f3bc 177 if(rx_buffer[8] == '1'){
jonathanyost 4:7335cd74f3bc 178 pir_enable = true;
jonathanyost 6:002e8a4809eb 179 pc.printf("PIR on\r\n");
jonathanyost 4:7335cd74f3bc 180 } else {
jonathanyost 4:7335cd74f3bc 181 pir_enable = false;
jonathanyost 6:002e8a4809eb 182 pc.printf("PIR off\r\n");
jonathanyost 4:7335cd74f3bc 183 }
jonathanyost 4:7335cd74f3bc 184 }
jonathanyost 4:7335cd74f3bc 185 memset(rx_buffer, '\0', sizeof(rx_buffer));
jonathanyost 2:dd4d53687372 186 }
jonathanyost 2:dd4d53687372 187
jonathanyost 5:0e4d19f6ba45 188 // Transmit over the xbee if possible and necessary
jonathanyost 5:0e4d19f6ba45 189 if(xb.writeable() && send_enable) {
jonathanyost 2:dd4d53687372 190
jonathanyost 0:7daf9b751759 191 SendSensorData(temp, pressure, humidity, uv, ir, vis, noise);
jonathanyost 0:7daf9b751759 192 send_enable = false;
jonathanyost 0:7daf9b751759 193 }
jonathanyost 0:7daf9b751759 194
jonathanyost 2:dd4d53687372 195 //pc.printf("bottom of loop \r\n");
jonathanyost 0:7daf9b751759 196 }
jonathanyost 0:7daf9b751759 197 }
jonathanyost 0:7daf9b751759 198