for aplaca jack education purpose
Dependencies: mbed Servo X_NUCLEO_IDW01M1v2 NetworkSocketAPI X_NUCLEO_IKS01A1 HC_SR04_Ultrasonic_Library
main.cpp@14:c24a683e40a9, 2018-11-23 (annotated)
- Committer:
- WAIYIP
- Date:
- Fri Nov 23 14:38:32 2018 +0000
- Revision:
- 14:c24a683e40a9
- Parent:
- 13:9a2016106dae
for alpaca jack
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| mridup | 0:dee849b0e6e6 | 1 | #include "mbed.h" |
| mridup | 0:dee849b0e6e6 | 2 | #include "SpwfInterface.h" |
| WAIYIP | 14:c24a683e40a9 | 3 | #include "x_nucleo_iks01a1.h" |
| mridup | 0:dee849b0e6e6 | 4 | #include "TCPSocket.h" |
| WAIYIP | 14:c24a683e40a9 | 5 | #include "Servo.h" |
| WAIYIP | 14:c24a683e40a9 | 6 | #include "ultrasonic.h" |
| WAIYIP | 14:c24a683e40a9 | 7 | |
| mridup | 0:dee849b0e6e6 | 8 | |
| mapellil | 8:74b827befe72 | 9 | |
| WAIYIP | 14:c24a683e40a9 | 10 | int distance1; |
| WAIYIP | 14:c24a683e40a9 | 11 | int distance; |
| WAIYIP | 14:c24a683e40a9 | 12 | void dist(int distance) |
| WAIYIP | 14:c24a683e40a9 | 13 | { |
| WAIYIP | 14:c24a683e40a9 | 14 | //put code here to happen when the distance is changed |
| WAIYIP | 14:c24a683e40a9 | 15 | printf("Distance changed to %dmm\r\n", distance); |
| WAIYIP | 14:c24a683e40a9 | 16 | distance1= distance; |
| WAIYIP | 14:c24a683e40a9 | 17 | } |
| WAIYIP | 14:c24a683e40a9 | 18 | |
| WAIYIP | 14:c24a683e40a9 | 19 | |
| WAIYIP | 14:c24a683e40a9 | 20 | ultrasonic mu(D8, D9, .1, 1, &dist); //Set the trigger pin to D8 and the echo pin to D9 |
| WAIYIP | 14:c24a683e40a9 | 21 | //have updates every .1 seconds and a timeout after 1 |
| WAIYIP | 14:c24a683e40a9 | 22 | //second, and call dist when the distance changes |
| WAIYIP | 14:c24a683e40a9 | 23 | Servo myservo(D6); |
| imi121 | 13:9a2016106dae | 24 | //char* ntpServerUrl = "0.ca.pool.ntp.org"; |
| WAIYIP | 14:c24a683e40a9 | 25 | //#define IP "184.106.153.149/update" |
| WAIYIP | 14:c24a683e40a9 | 26 | #define IP "184.106.153.149" |
| imi121 | 13:9a2016106dae | 27 | char* thingSpeakUrl = "http://api.thingspeak.com/update"; |
| WAIYIP | 14:c24a683e40a9 | 28 | char* thingSpeakKey = "5WJ5OYWTWTQX4310"; |
| mridup | 0:dee849b0e6e6 | 29 | |
| mridup | 2:3a87dbea07a7 | 30 | Serial pc(USBTX, USBRX); |
| mridup | 0:dee849b0e6e6 | 31 | DigitalOut myled(LED1); |
| WAIYIP | 14:c24a683e40a9 | 32 | /*************/ |
| mridup | 1:daf71fa3674c | 33 | SpwfSAInterface spwf(D8, D2, false); |
| WAIYIP | 14:c24a683e40a9 | 34 | uint8_t id; |
| WAIYIP | 14:c24a683e40a9 | 35 | float value1, value2; |
| WAIYIP | 14:c24a683e40a9 | 36 | char buffer1[32], buffer2[32]; |
| mridup | 2:3a87dbea07a7 | 37 | |
| imi121 | 13:9a2016106dae | 38 | |
| imi121 | 13:9a2016106dae | 39 | int http_demo(void) |
| imi121 | 13:9a2016106dae | 40 | { |
| imi121 | 13:9a2016106dae | 41 | TCPSocket socket(&spwf); |
| imi121 | 13:9a2016106dae | 42 | char buffer[256]; |
| WAIYIP | 14:c24a683e40a9 | 43 | char message[160]; |
| imi121 | 13:9a2016106dae | 44 | int err; |
| imi121 | 13:9a2016106dae | 45 | printf("Sending HTTP Data to thingspeak...\r\n"); |
| imi121 | 13:9a2016106dae | 46 | |
| imi121 | 13:9a2016106dae | 47 | // Open a socket on the network interface, and create a TCP connection to thingspeak |
| imi121 | 13:9a2016106dae | 48 | //socket.open(&spwf); |
| imi121 | 13:9a2016106dae | 49 | err=socket.connect(IP,80); // connecting to thingspeak |
| imi121 | 13:9a2016106dae | 50 | if(err!=0) |
| imi121 | 13:9a2016106dae | 51 | { |
| imi121 | 13:9a2016106dae | 52 | pc.printf("\r\nCould not connect to Socket, err = %d!!\r\n", err); |
| imi121 | 13:9a2016106dae | 53 | return -1; |
| imi121 | 13:9a2016106dae | 54 | } else pc.printf("\r\nconnected to host server\r\n"); |
| WAIYIP | 14:c24a683e40a9 | 55 | sprintf(message,"field1=%d",distance1); |
| imi121 | 13:9a2016106dae | 56 | printf("Message Length=%d\r\n",(int)strlen(message)); |
| imi121 | 13:9a2016106dae | 57 | sprintf(buffer,"POST /update HTTP/1.1\r\nHost: api.thingspeak.com\r\nConnection: close\r\nX-THINGSPEAKAPIKEY: %s\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: %d\r\n\r\n%s",thingSpeakKey,(int)strlen(message),message); |
| imi121 | 13:9a2016106dae | 58 | pc.printf("Request to %s\r\n", buffer); |
| imi121 | 13:9a2016106dae | 59 | int scount = socket.send(buffer, (int)strlen(buffer)); |
| imi121 | 13:9a2016106dae | 60 | printf("sent %d [%.*s]\r\n", scount, strstr(buffer, "\r\n")-buffer, buffer); |
| imi121 | 13:9a2016106dae | 61 | |
| imi121 | 13:9a2016106dae | 62 | // Recieve a simple http response and print out the response line |
| imi121 | 13:9a2016106dae | 63 | char rbuffer[64]; |
| imi121 | 13:9a2016106dae | 64 | int rcount = socket.recv(rbuffer, sizeof rbuffer); |
| imi121 | 13:9a2016106dae | 65 | printf("recv %d [%.*s]\r\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer); |
| imi121 | 13:9a2016106dae | 66 | |
| imi121 | 13:9a2016106dae | 67 | // Close the socket to return its memory and bring down the network interface |
| imi121 | 13:9a2016106dae | 68 | socket.close(); |
| imi121 | 13:9a2016106dae | 69 | return 0; |
| imi121 | 13:9a2016106dae | 70 | } |
| imi121 | 13:9a2016106dae | 71 | |
| imi121 | 13:9a2016106dae | 72 | int main() |
| imi121 | 13:9a2016106dae | 73 | { |
| WAIYIP | 14:c24a683e40a9 | 74 | |
| WAIYIP | 14:c24a683e40a9 | 75 | |
| WAIYIP | 14:c24a683e40a9 | 76 | char * ssid = "homebb@unifi"; |
| WAIYIP | 14:c24a683e40a9 | 77 | char * seckey = "homebb987"; |
| WAIYIP | 14:c24a683e40a9 | 78 | pc.printf("\r\nReal Time Weather System\r\n"); |
| mridup | 0:dee849b0e6e6 | 79 | pc.printf("\r\nconnecting to AP\r\n"); |
| mridup | 0:dee849b0e6e6 | 80 | |
| mridup | 0:dee849b0e6e6 | 81 | if(spwf.connect(ssid, seckey, NSAPI_SECURITY_WPA2)) { |
| mridup | 0:dee849b0e6e6 | 82 | pc.printf("\r\nnow connected\r\n"); |
| mridup | 0:dee849b0e6e6 | 83 | } else { |
| mridup | 0:dee849b0e6e6 | 84 | pc.printf("\r\nerror connecting to AP.\r\n"); |
| mridup | 0:dee849b0e6e6 | 85 | return -1; |
| mridup | 0:dee849b0e6e6 | 86 | } |
| mapellil | 8:74b827befe72 | 87 | |
| mridup | 0:dee849b0e6e6 | 88 | const char *ip = spwf.get_ip_address(); |
| mridup | 0:dee849b0e6e6 | 89 | const char *mac = spwf.get_mac_address(); |
| mridup | 0:dee849b0e6e6 | 90 | |
| mridup | 0:dee849b0e6e6 | 91 | pc.printf("\r\nIP Address is: %s\r\n", (ip) ? ip : "No IP"); |
| WAIYIP | 14:c24a683e40a9 | 92 | pc.printf("\r\nMAC Address is: %s\r\n", (mac) ? mac : "No MAC"); |
| WAIYIP | 14:c24a683e40a9 | 93 | wait (3); |
| mridup | 0:dee849b0e6e6 | 94 | |
| imi121 | 13:9a2016106dae | 95 | while(1) |
| imi121 | 13:9a2016106dae | 96 | { |
| WAIYIP | 14:c24a683e40a9 | 97 | mu.checkDistance(); //call checkDistance() as much as possible, as this is where |
| WAIYIP | 14:c24a683e40a9 | 98 | //the class checks if dist needs to be called. |
| WAIYIP | 14:c24a683e40a9 | 99 | if(distance1 <55){ |
| WAIYIP | 14:c24a683e40a9 | 100 | printf("ok\r\n"); |
| WAIYIP | 14:c24a683e40a9 | 101 | //for(float p=0; p<1.0; p += 0.99) |
| WAIYIP | 14:c24a683e40a9 | 102 | // myservo = p; |
| WAIYIP | 14:c24a683e40a9 | 103 | //wait(0.2); |
| WAIYIP | 14:c24a683e40a9 | 104 | http_demo(); |
| WAIYIP | 14:c24a683e40a9 | 105 | //x=0;y=0;z=0; |
| WAIYIP | 14:c24a683e40a9 | 106 | pc.printf("Thingspeak update completed successfully\r\n"); |
| WAIYIP | 14:c24a683e40a9 | 107 | //buz=0;//RESET CONDITION |
| WAIYIP | 14:c24a683e40a9 | 108 | wait(10); |
| mridup | 0:dee849b0e6e6 | 109 | } |
| WAIYIP | 14:c24a683e40a9 | 110 | }} |