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: GP-20U7 PinDetect Servo mbed nRF24L01P
Fork of GP20U7_HelloWorld by
Revision 6:97dfabad83aa, committed 2016-12-05
- Comitter:
- mmittal8
- Date:
- Mon Dec 05 16:35:26 2016 +0000
- Parent:
- 5:a5b817198f1a
- Commit message:
- Basestation for Breathalyzer
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PinDetect.lib Mon Dec 05 16:35:26 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/AjK/code/PinDetect/#cb3afc45028b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Servo.lib Mon Dec 05 16:35:26 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/Servo/#36b69a7ced07
--- a/main.cpp Thu Mar 17 19:33:05 2016 +0000
+++ b/main.cpp Mon Dec 05 16:35:26 2016 +0000
@@ -1,45 +1,201 @@
#include "mbed.h"
#include "GPS.h"
+#include "Servo.h"
+#include "PinDetect.h"
+#include "nRF24L01P.h"
+
+nRF24L01P myTransceiver(p5, p6, p7, p8, p9, p10); // mosi, miso, sck, csn, ce, irq
Serial pc(USBTX, USBRX);
GPS gps(p13, p14);
+PinDetect pb1(p19);
+PinDetect pb2(p20);
+Servo servo(p21);
+
+Serial esp(p28, p27); // tx, rx
+DigitalOut reset(p26);
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+Timer t;
+
+bool drunk = true;
+
+int count,ended,timeout,killSwitch = 0,Sig = 0;
+char buf[2024];
+char snd[1024];
+
+char ssid[32] = "AndroidAP"; // enter WiFi router ssid inside the quotes
+char pwd [32] = "ece4180a"; // enter WiFi router password inside the quotes
+
+void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate(),ESPServerSetup();
+
+void signal(void){
+ Sig = 1;
+}
+
+void kill_switch(void){
+ if (killSwitch == 0){
+ killSwitch = 1;
+ }
+}
int main() {
- //pc.printf("start main\r\n");
- while(1) {
- //wait(0.1);
- //pc.printf("\nHello world\n\r");
- //printf ("\n\r the value of GPS sample is : %d\n\r", gps.sample());
- if(gps.sample()) {
- //pc.printf("\r\nsampled\r\n");
- pc.printf("Longitude: %f degrees %c\n\rLatitude: %f degrees %c\n\rAltitude: %f meters \n\rUTC time: %f\n\r", gps.longitude, gps.ns, gps.latitude, gps.ew, gps.alt, gps.time);
- //pc.printf("good\r\n");
- } else {
- pc.printf("Oh Dear! No lock :(\n\r");
- //pc.printf("bad\r\n");
+ pb1.mode(PullUp);
+ pb2.mode(PullUp);
+
+ reset=0; //hardware reset for 8266
+ pc.baud(9600);
+ wait(0.5);
+ reset=1;
+
+ esp.baud(9600);
+
+ pb1.attach_deasserted(&kill_switch);
+ pb1.setSampleFrequency();
+
+ pb2.attach_deasserted(&signal);
+ pb2.setSampleFrequency();
+
+ led1 = 0;
+ led2 = 0;
+ servo = 0;
+ while (1){
+ if (killSwitch == 1){
+ led2 = 1;
+ led1 = 1;
+ servo = 1.0;
+ ESPconfig();
+ killSwitch = 2;
+ led1 = 0;
}
+ if (Sig){
+ if(drunk){
+ servo = 1.0;
+ led3 = 1;
+ //wait(120);
+ if (drunk)
+ ESPServerSetup();
+ }
+ else{
+ servo = 0;
+ led2 = 0;
+ }
+ killSwitch = 0;
+ Sig = 0;
+ }
+ sleep();
}
}
+void ESPsetbaudrate()
+{
+ strcpy(snd, "AT+CIOBAUD=115200\r\n"); // change the numeric value to the required baudrate
+ SendCMD();
+}
-/*
-$GPRMC,000115.039,V,,,,,,,291006,,*2C
-$GPGGA,000116.031,,,,,0,00,,,M,0.0,M,,0000*52
-$GPGSA,A,1,,,,,,,,,,,,,,,*1E
-$GPGSV,3,1,12,20,00,000,,10,00,000,,31,00,000,,27,00,000,*7C
-$GPGSV,3,2,12,19,00,000,,07,00,000,,04,00,000,,24,00,000,*76
-$GPGSV,3,3,12,16,00,000,,28,00,000,,26,00,000,,29,00,000,*78
-$GPRMC,000116.031,V,,,,,,,291006,,*27
-$GPGGA,000117.035,,,,,0,00,,,M,0.0,M,,0000*57
-$GPGSA,A,1,,,,,,,,,,,,,,,*1E
-$GPRMC,000117.035,V,,,,,,,291006,,*22
-$GPGGA,000118.039,,,,,0,00,,,M,0.0,M,,0000*54
-$GPGSA,A,1,,,,,,,,,,,,,,,*1E
-$GPRMC,000118.039,V,,,,,,,291006,,*21
-$GPGGA,000119.035,,,,,0,00,,,M,0.0,M,,0000*59
-$GPGSA,A,1,,,,,,,,,,,,,,,*1E
-$GPRMC,000119.035,V,,,,,,,291006,,*2C
-$GPGGA,000120.037,,,,,0,00,,,M,0.0,M,,0000*51
-$GPGSA,A,1,,,,,,,,,,,,,,,*1E
-$GPRMC,000120.037,V,,,,,,,291006,,*24
-*/
\ No newline at end of file
+void ESPconfig()
+{
+ pc.printf("---------- Reset & get Firmware ----------\r\n");
+ strcpy(snd,"node.restart()\r\n");
+ SendCMD();
+ timeout=5;
+ getreply();
+
+ wait(2);
+
+ pc.printf("\n---------- Connecting to AP ----------\r\n");
+ pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
+ strcpy(snd, "wifi.sta.config(\"");
+ strcat(snd, ssid);
+ strcat(snd, "\",\"");
+ strcat(snd, pwd);
+ strcat(snd, "\")\r\n");
+ SendCMD();
+ timeout=10;
+ getreply();
+ pc.printf(buf);
+
+ wait(5);
+
+ pc.printf("\n---------- Get IP's ----------\r\n");
+ strcpy(snd, "print(wifi.sta.getip())\r\n");
+ SendCMD();
+ timeout=3;
+ getreply();
+ pc.printf(buf);
+
+ wait(1);
+}
+
+void ESPServerSetup(){
+ while (!gps.sample()){
+ wait(0.1);
+ }
+ pc.printf("\n---------- Setting up http server ----------\r\n");
+ strcpy(snd, "srv=net.createServer(net.TCP)\r\n");
+ SendCMD();
+ wait(0.2);
+ strcpy(snd, "srv:listen(80,function(conn)\r\n");
+ SendCMD();
+ wait(0.2);
+ strcpy(snd, "conn:on(\"receive\",function(conn,payload)\r\n");
+ SendCMD();
+ wait(0.2);
+ strcpy(snd, "print(payload)\r\n");
+ SendCMD();
+ wait(0.2);
+ strcpy(snd, "conn:send(\"<!DOCTYPE html>\")\r\n");
+ SendCMD();
+ wait(0.2);
+ strcpy(snd, "conn:send(\"<html>\")\r\n");
+ SendCMD();
+ wait(0.2);
+ strcpy(snd, "conn:send(\"<h1> Come Pick Me up, I'm Drunk</h1>\")\r\n");
+ SendCMD();
+ wait(0.2);
+ gps.sample();
+ int n = sprintf(snd, "conn:send(\"<h2>I'm at Longitude: %f degrees %c, Latitude %f degrees %c</h2>\")\r\n", gps.longitude, gps.ew, gps.latitude, gps.ns);
+ SendCMD();
+ wait(0.2);
+ strcpy(snd, "conn:send(\"</html>\")\r\n");
+ SendCMD();
+ wait(0.2);
+ strcpy(snd, "end)\r\n");
+ SendCMD();
+ wait(0.2);
+ strcpy(snd, "conn:on(\"sent\",function(conn) conn:close() end)\r\n");
+ SendCMD();
+ wait(0.2);
+ strcpy(snd, "end)\r\n");
+ SendCMD();
+ wait(0.2);
+ timeout=5;
+ getreply();
+ pc.printf(buf);
+ pc.printf("\r\nDONE");
+}
+
+void SendCMD()
+{
+ esp.printf("%s", snd);
+}
+
+void getreply()
+{
+ memset(buf, '\0', sizeof(buf));
+ t.start();
+ ended=0;
+ count=0;
+ while(!ended) {
+ if(esp.readable()) {
+ buf[count] = esp.getc();
+ count++;
+ }
+ if(t.read() > timeout) {
+ ended = 1;
+ t.stop();
+ t.reset();
+ }
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nRF24L01P.lib Mon Dec 05 16:35:26 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/pabloamr/code/nRF24L01P/#8d55f1f49a33
