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

Dependencies:   BME280 SI1145 mbed

Committer:
jonathanyost
Date:
Tue Jul 18 15:08:42 2017 +0000
Revision:
1:d0db255b07a8
Parent:
0:7daf9b751759
Child:
2:dd4d53687372
Working, no mic;

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 0:7daf9b751759 20 const char nodeID = '1';
jonathanyost 0:7daf9b751759 21
jonathanyost 0:7daf9b751759 22 // I/O Delarations
jonathanyost 0:7daf9b751759 23 I2C i2c(I2C_SDA, I2C_SCL); // D4, D5
jonathanyost 0:7daf9b751759 24 BME280 *thp_sensor = new BME280(i2c);
jonathanyost 0:7daf9b751759 25 SI1145 *uiv_sensor = new SI1145(i2c);
jonathanyost 0:7daf9b751759 26
jonathanyost 0:7daf9b751759 27 // Declare the PIR interface
jonathanyost 1:d0db255b07a8 28 InterruptIn PIR_sensor(PA_5);
jonathanyost 1:d0db255b07a8 29 Ticker pir_timer;
jonathanyost 0:7daf9b751759 30 bool pir_enable = true;
jonathanyost 0:7daf9b751759 31 bool pir_trigger = false;
jonathanyost 0:7daf9b751759 32
jonathanyost 0:7daf9b751759 33 // Declare Serial Interfaces
jonathanyost 0:7daf9b751759 34 Serial xb(tx, rx); // Serial 1
jonathanyost 0:7daf9b751759 35 Serial pc(PB_3, PB_4); // Serial 2
jonathanyost 0:7daf9b751759 36
jonathanyost 0:7daf9b751759 37 // send_sensor_data(temp, pressure, humidity, motion, uv, ir, vis, noise);
jonathanyost 0:7daf9b751759 38 // "id:2,te:2,pr:3,mo:4,uv:5,ir:6,vi:7,no:8"
jonathanyost 0:7daf9b751759 39 void SendSensorData(int t, int p, int h, int u, int ir, int v, int n){
jonathanyost 0:7daf9b751759 40 //" ni:XX, te:XX,pr:XX,hu:XX,uv:XX,ir:XX,vi:XX,no:XX"
jonathanyost 0:7daf9b751759 41 xb.printf( ",ni:%d,te:%d,pr:%d,hu:%d,uv:%d,ir:%d,vi:%d,no:%d\n\r",1,t,p,h,u,ir,v,n);
jonathanyost 0:7daf9b751759 42 pc.printf("SEND: ni:%d,te:%d,pr:%d,hu:%d,uv:%d,ir:%d,vi:%d,no:%d\n\r",1,t,p,h,u,ir,v,n);
jonathanyost 0:7daf9b751759 43 }
jonathanyost 0:7daf9b751759 44
jonathanyost 0:7daf9b751759 45 void SendPirFlag(){
jonathanyost 0:7daf9b751759 46 if(xb.writeable() && pir_enable){
jonathanyost 0:7daf9b751759 47 xb.printf("ni:%c,mo:1\r\n",nodeID);
jonathanyost 0:7daf9b751759 48 pc.printf("ni:%c,mo:1\r\n",nodeID);
jonathanyost 0:7daf9b751759 49 pir_trigger = false;
jonathanyost 0:7daf9b751759 50 }
jonathanyost 0:7daf9b751759 51 }
jonathanyost 0:7daf9b751759 52
jonathanyost 0:7daf9b751759 53 // PIR interrupt. Set the pir_trigger to true when interrupted.
jonathanyost 0:7daf9b751759 54 void PIR(void){
jonathanyost 1:d0db255b07a8 55 //pc.printf("void PIR(void){}\r\n");
jonathanyost 0:7daf9b751759 56 pir_trigger = true;
jonathanyost 1:d0db255b07a8 57 }
jonathanyost 1:d0db255b07a8 58
jonathanyost 1:d0db255b07a8 59 // This method is attached to a timer
jonathanyost 1:d0db255b07a8 60 void PIR_timed_send(){
jonathanyost 1:d0db255b07a8 61 //pc.printf("PIR_timed_send();\r\n");
jonathanyost 1:d0db255b07a8 62 if(pir_enable && pir_trigger){
jonathanyost 0:7daf9b751759 63 SendPirFlag();
jonathanyost 1:d0db255b07a8 64 pir_trigger = false;
jonathanyost 0:7daf9b751759 65 }
jonathanyost 0:7daf9b751759 66 }
jonathanyost 0:7daf9b751759 67
jonathanyost 0:7daf9b751759 68 void initialize_serial_connections(){
jonathanyost 0:7daf9b751759 69 xb.baud(57600);
jonathanyost 0:7daf9b751759 70 pc.baud(115200);
jonathanyost 0:7daf9b751759 71 }
jonathanyost 0:7daf9b751759 72
jonathanyost 0:7daf9b751759 73 int main() {
jonathanyost 0:7daf9b751759 74 initialize_serial_connections();
jonathanyost 0:7daf9b751759 75
jonathanyost 0:7daf9b751759 76 pc.printf("\n\rMic test 1-2, 1-2\n\r");
jonathanyost 0:7daf9b751759 77
jonathanyost 0:7daf9b751759 78 // Attach the PIR function to interrupt
jonathanyost 1:d0db255b07a8 79 PIR_sensor.rise(&PIR);
jonathanyost 1:d0db255b07a8 80 pir_timer.attach(&PIR_timed_send,3);
jonathanyost 0:7daf9b751759 81
jonathanyost 0:7daf9b751759 82 char pc_data = 'e';
jonathanyost 0:7daf9b751759 83 char buffer[10];
jonathanyost 0:7daf9b751759 84
jonathanyost 0:7daf9b751759 85 int temp = 1;
jonathanyost 0:7daf9b751759 86 int pressure = 2;
jonathanyost 0:7daf9b751759 87 int humidity = 3;
jonathanyost 0:7daf9b751759 88 int uv = 5;
jonathanyost 0:7daf9b751759 89 int ir = 6;
jonathanyost 0:7daf9b751759 90 int vis = 7;
jonathanyost 0:7daf9b751759 91 int noise = 8;
jonathanyost 0:7daf9b751759 92
jonathanyost 0:7daf9b751759 93 bool send_enable = false;
jonathanyost 0:7daf9b751759 94
jonathanyost 0:7daf9b751759 95 while(true){
jonathanyost 0:7daf9b751759 96 // Debug Controls Input
jonathanyost 0:7daf9b751759 97 if(pc.readable()){
jonathanyost 0:7daf9b751759 98 pc_data = pc.getc();
jonathanyost 0:7daf9b751759 99 pc.printf("%c", pc_data);
jonathanyost 0:7daf9b751759 100 if(xb.writeable()){xb.printf("%c", pc_data);}
jonathanyost 0:7daf9b751759 101 }
jonathanyost 0:7daf9b751759 102
jonathanyost 0:7daf9b751759 103 if(xb.readable()){
jonathanyost 1:d0db255b07a8 104
jonathanyost 0:7daf9b751759 105 wait(0.01);
jonathanyost 1:d0db255b07a8 106 pc.printf("before the read loop\r\n");
jonathanyost 1:d0db255b07a8 107
jonathanyost 0:7daf9b751759 108 for(int i = 0; i < sizeof(buffer); i++){
jonathanyost 0:7daf9b751759 109 buffer[i] = xb.getc();
jonathanyost 0:7daf9b751759 110 }
jonathanyost 1:d0db255b07a8 111
jonathanyost 1:d0db255b07a8 112 /*
jonathanyost 1:d0db255b07a8 113 // Try a while(readable()) loop to read stuff
jonathanyost 1:d0db255b07a8 114 int j = 0;
jonathanyost 1:d0db255b07a8 115 while(xb.readable() && j < 10){
jonathanyost 1:d0db255b07a8 116 wait(0.01);
jonathanyost 1:d0db255b07a8 117 buffer[j] = xb.getc();
jonathanyost 1:d0db255b07a8 118
jonathanyost 1:d0db255b07a8 119 j = j+1;
jonathanyost 1:d0db255b07a8 120 }
jonathanyost 1:d0db255b07a8 121 */
jonathanyost 1:d0db255b07a8 122 pc.printf("after the read loop\r\n");
jonathanyost 1:d0db255b07a8 123
jonathanyost 1:d0db255b07a8 124 // Print out a bunch of stuff
jonathanyost 0:7daf9b751759 125 pc.printf("=========================================\r\n");
jonathanyost 0:7daf9b751759 126 // Print out received message in char and int format
jonathanyost 1:d0db255b07a8 127 pc.printf("RECV: ");
jonathanyost 1:d0db255b07a8 128 for(int i = 1; i < sizeof(buffer); i++){
jonathanyost 1:d0db255b07a8 129 pc.printf("%c", buffer[i]);
jonathanyost 1:d0db255b07a8 130 }
jonathanyost 1:d0db255b07a8 131 pc.printf("\r\nRECV: ");
jonathanyost 1:d0db255b07a8 132 // Print out message (INT)
jonathanyost 1:d0db255b07a8 133 for(int i = 0; i < sizeof(buffer); i++){
jonathanyost 1:d0db255b07a8 134 pc.printf("%i,", buffer[i]);
jonathanyost 1:d0db255b07a8 135 }
jonathanyost 1:d0db255b07a8 136 pc.printf("\r\n");
jonathanyost 1:d0db255b07a8 137
jonathanyost 1:d0db255b07a8 138 //Check the node id
jonathanyost 0:7daf9b751759 139 if(buffer[4] == nodeID){
jonathanyost 0:7daf9b751759 140 send_enable = true;
jonathanyost 0:7daf9b751759 141 } else {
jonathanyost 0:7daf9b751759 142 pc.printf("Ignore, Target Node: #%c\r\n", buffer[4]);
jonathanyost 0:7daf9b751759 143 }
jonathanyost 0:7daf9b751759 144
jonathanyost 0:7daf9b751759 145 if(buffer[9] == '1'){
jonathanyost 0:7daf9b751759 146 pir_enable = true;
jonathanyost 0:7daf9b751759 147 pc.printf("pir_enable = true\r\n");
jonathanyost 0:7daf9b751759 148 } else if (buffer[9] == '0'){
jonathanyost 0:7daf9b751759 149 pir_enable = false;
jonathanyost 0:7daf9b751759 150 pc.printf("pir_enable = false\r\n");
jonathanyost 0:7daf9b751759 151 }
jonathanyost 1:d0db255b07a8 152
jonathanyost 0:7daf9b751759 153 memset(buffer, '\0', sizeof(buffer));
jonathanyost 0:7daf9b751759 154 }
jonathanyost 0:7daf9b751759 155
jonathanyost 0:7daf9b751759 156 // Take in new measurements
jonathanyost 0:7daf9b751759 157 // Read in values from the BME280 board
jonathanyost 0:7daf9b751759 158 temp = thp_sensor->getTemperature();
jonathanyost 0:7daf9b751759 159 pressure = thp_sensor->getPressure();
jonathanyost 0:7daf9b751759 160 humidity = thp_sensor->getHumidity();
jonathanyost 0:7daf9b751759 161
jonathanyost 0:7daf9b751759 162 //Sensor data from the SI1145 board
jonathanyost 0:7daf9b751759 163 uv = uiv_sensor->getUV(); // Reads from the SI1145
jonathanyost 0:7daf9b751759 164 ir = uiv_sensor->getIR(); // Reads from the SI1145
jonathanyost 0:7daf9b751759 165 vis = uiv_sensor->getVIS(); // Reads from the SI1145
jonathanyost 0:7daf9b751759 166
jonathanyost 0:7daf9b751759 167 noise = 404;
jonathanyost 0:7daf9b751759 168
jonathanyost 0:7daf9b751759 169 // Transmit over the xbee if possible and necessary
jonathanyost 0:7daf9b751759 170 if(xb.writeable() && send_enable){
jonathanyost 0:7daf9b751759 171 SendSensorData(temp, pressure, humidity, uv, ir, vis, noise);
jonathanyost 0:7daf9b751759 172 send_enable = false;
jonathanyost 0:7daf9b751759 173 }
jonathanyost 0:7daf9b751759 174
jonathanyost 0:7daf9b751759 175 }
jonathanyost 0:7daf9b751759 176 }
jonathanyost 0:7daf9b751759 177