Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed BME280 SI1145
Diff: main.cpp
- Revision:
- 9:e619711e05be
- Parent:
- 8:1703f45edfa2
- Child:
- 10:1296cc169c60
--- a/main.cpp Thu Jul 06 00:27:22 2017 +0000
+++ b/main.cpp Thu Jul 06 15:04:11 2017 +0000
@@ -23,7 +23,6 @@
#define rx (PA_10)
const char nodeID = '1';
-const int node_id_test = 1;
// I/O Delarations
I2C i2c(I2C_SDA, I2C_SCL); // D14, D15
@@ -32,6 +31,7 @@
// Declare the PIR interface
InterruptIn MotionDetect(PA_0);
+bool pir_enable = true;
bool pir_trigger = false;
// Declare Serial Interfaces
@@ -42,28 +42,39 @@
// "id:2,te:2,pr:3,mo:4,uv:5,ir:6,vi:7,no:8"
void SendSensorData(int t, int p, int h, int u, int ir, int v, int n){
//" id:2, te:%2,pr:%3,uv:%5,ir:%6,vi:%7,no:%8"
- xb.printf( ",ni:%d,te:%d,pr:%d,hu:%d,uv:%d,ir:%d,vi:%d,no:%d\n\r",node_id_test,t,p,h,u,ir,v,n);
- pc.printf("send: id:%d,te:%d,pr:%d,hu:%d,uv:%d,ir:%d,vi:%d,no:%d\n\r",node_id_test,t,p,h,u,ir,v,n);
+ 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);
+ pc.printf("send: id:%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);
}
void SendPirFlag(){
- xb.printf("ni:%c,mo:1\r\n",nodeID);
+ if(1){
+ xb.printf("ni:%c,mo:1\r\n",nodeID);;
+ }
}
// PIR interrupt. Set the pir_trigger to true when interrupted.
void PIR(void){
-
+ if(xb.writeable()){
+ SendPirFlag();
+ }
pir_trigger = true;
}
+void initialize_serial_connections(){
+ xb.baud(57600);
+ pc.baud(115200);
+}
+
int main() {
+ initialize_serial_connections();
+
pc.printf("\n\rMic test 1-2, 1-2\n\r");
-
+
// Attach the PIR function to interrupt
- //MotionDetect.rise(&PIR);
+ MotionDetect.rise(&PIR);
char pc_data = 'e';
- char buffer[6];
+ char buffer[10];
int temp = 1;
int pressure = 2;
@@ -77,7 +88,6 @@
while(true){
// Debug Controls Input
-
if(pc.readable()){
pc_data = pc.getc();
pc.printf("PC: %c", pc_data);
@@ -86,7 +96,6 @@
if(pir_trigger){
// DEBUG
- //pc.printf("pir_trigger TRUE\r\n");
if(xb.writeable()){
SendPirFlag();
pir_trigger = false;
@@ -95,29 +104,42 @@
}
// testing out using getc() instead of gets()
+
if(xb.readable()){
wait(0.01);
- for(int i = 0; i < sizeof(buffer); i++){
- buffer[i] = xb.getc();
- pc.printf("%c",buffer[i]);
+ char temp = xb.getc();
+ if(temp == 'i' || temp == '\0'){
+ //if(xb.readable()){
+ if(1){
+ for(int i = 1; i < sizeof(buffer); i++){
+ buffer[i] = xb.getc();
+ }
+ }
}
+
+
pc.printf("\r\n");
- if((buffer[4] == nodeID)){
+ if(buffer[4] == nodeID){
send_enable = true;
}
+
+ if(buffer[9] == '1'){
+ pir_enable = true;
+ pc.printf("pir_enable = true\r\n");
+ } else if (buffer[9] == '0'){
+ pir_enable = false;
+ pc.printf("pir_enable = false\r\n");
+ }
+ pc.printf("RECV: ");
for(int i = 0; i < sizeof(buffer); i++){
pc.printf("%i,", buffer[i]);
}
+
pc.printf("\r\n");
memset(buffer, '\0', sizeof(buffer));
}
- if(xb.writeable() && send_enable){
- SendSensorData(temp, pressure, humidity, uv, ir, vis, noise);
- send_enable = false;
- }
-
// Take in new measurements
// Read in values from the BME280 board
temp = thp_sensor->getTemperature();
@@ -130,6 +152,13 @@
vis = uiv_sensor->getVIS(); // Reads from the SI1145
noise = 404;
+
+ // Transmit over the xbee if possible and necessary
+ if(xb.writeable() && send_enable){
+ SendSensorData(temp, pressure, humidity, uv, ir, vis, noise);
+ send_enable = false;
+ }
+
}
}