update
Dependencies: HCSR04 MQTT Servo WizFi310Interface_Legacynew mbed-src
Fork of w7500-mqtt-wizfi310 by
main.cpp@18:e162fcc82c6b, 2018-09-20 (annotated)
- Committer:
- HarshaDRAGNEEL
- Date:
- Thu Sep 20 11:17:29 2018 +0000
- Revision:
- 18:e162fcc82c6b
- Parent:
- 16:2794fcca7629
update
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
justinkim | 8:f837e0d255e8 | 1 | #include "mbed.h" |
akshaytom | 16:2794fcca7629 | 2 | #include "WizFi310Interface.h" |
bangbh | 9:21574e058141 | 3 | #include "MQTTClient.h" |
akshaytom | 16:2794fcca7629 | 4 | #include "MQTTmbed.h" |
akshaytom | 16:2794fcca7629 | 5 | #include "MQTTSocket.h" |
HarshaDRAGNEEL | 18:e162fcc82c6b | 6 | #include "hcsr04.h" |
HarshaDRAGNEEL | 18:e162fcc82c6b | 7 | #include "Servo.h" |
HarshaDRAGNEEL | 18:e162fcc82c6b | 8 | |
justinkim | 8:f837e0d255e8 | 9 | |
akshaytom | 16:2794fcca7629 | 10 | #define SECURE WizFi310::SEC_WPA2_MIXED |
akshaytom | 16:2794fcca7629 | 11 | #define SSID "CDI" |
akshaytom | 16:2794fcca7629 | 12 | #define PASS "Cdi*1717" |
akshaytom | 16:2794fcca7629 | 13 | /* |
akshaytom | 16:2794fcca7629 | 14 | SET DHCP |
akshaytom | 16:2794fcca7629 | 15 | */ |
akshaytom | 16:2794fcca7629 | 16 | #define USE_DHCP 1 |
akshaytom | 16:2794fcca7629 | 17 | //--------- Have to modify the mac address------------- |
akshaytom | 16:2794fcca7629 | 18 | unsigned char MAC_Addr[6] = {0x00,0x08,0xDC,0x12,0x34,0x56}; |
akshaytom | 16:2794fcca7629 | 19 | #if defined(TARGET_WIZwiki_W7500) |
HarshaDRAGNEEL | 18:e162fcc82c6b | 20 | WizFi310Interface wizfi310(D1, D0, D7, D6, D8, NC, 115200); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 21 | Serial pc(USBTX, USBRX); |
akshaytom | 16:2794fcca7629 | 22 | #endif |
HarshaDRAGNEEL | 18:e162fcc82c6b | 23 | HCSR04 sensor(A1,A0); // Trigger , Echo |
HarshaDRAGNEEL | 18:e162fcc82c6b | 24 | HCSR04 sensor1(A3,A2); // Trigger , Echo |
HarshaDRAGNEEL | 18:e162fcc82c6b | 25 | HCSR04 sensor2(A5,A4); // Trigger , Echo |
HarshaDRAGNEEL | 18:e162fcc82c6b | 26 | HCSR04 sensor3(D14,D15); // Trigger , Echo |
justinkim | 8:f837e0d255e8 | 27 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 28 | int j=0; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 29 | Servo myservo(D3); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 30 | DigitalIn button(D4); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 31 | int distance1[100]; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 32 | int distance2[100]; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 33 | int distance3[100]; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 34 | int distance4[100]; |
bangbh | 9:21574e058141 | 35 | int arrivedcount = 0; |
bangbh | 9:21574e058141 | 36 | void messageArrived(MQTT::MessageData& md) |
justinkim | 8:f837e0d255e8 | 37 | { |
bangbh | 9:21574e058141 | 38 | MQTT::Message &message = md.message; |
bangbh | 9:21574e058141 | 39 | printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id); |
bangbh | 9:21574e058141 | 40 | printf("Payload %.*s\n", message.payloadlen, (char*)message.payload); |
bangbh | 9:21574e058141 | 41 | ++arrivedcount; |
bangbh | 9:21574e058141 | 42 | } |
bangbh | 9:21574e058141 | 43 | |
akshaytom | 16:2794fcca7629 | 44 | class MQTTWIZ: public MQTTSocket |
bangbh | 9:21574e058141 | 45 | { |
HarshaDRAGNEEL | 18:e162fcc82c6b | 46 | public: |
HarshaDRAGNEEL | 18:e162fcc82c6b | 47 | MQTTWIZ() { |
akshaytom | 16:2794fcca7629 | 48 | wait(1); |
akshaytom | 16:2794fcca7629 | 49 | this->createSocket(); |
akshaytom | 16:2794fcca7629 | 50 | } |
akshaytom | 16:2794fcca7629 | 51 | }; |
akshaytom | 16:2794fcca7629 | 52 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 53 | int main() |
HarshaDRAGNEEL | 18:e162fcc82c6b | 54 | { |
HarshaDRAGNEEL | 18:e162fcc82c6b | 55 | pc.baud(9600); |
akshaytom | 16:2794fcca7629 | 56 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 57 | wait(1.0); // 1 sec Admin |
HarshaDRAGNEEL | 18:e162fcc82c6b | 58 | // printf("WizFi310 STATION. \r\n"); |
akshaytom | 16:2794fcca7629 | 59 | wizfi310.init(); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 60 | // printf("After Initialisation. \r\n"); |
akshaytom | 16:2794fcca7629 | 61 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 62 | // printf("After Set Address. \r\n"); |
akshaytom | 16:2794fcca7629 | 63 | if ( wizfi310.connect(SECURE, SSID, PASS, WizFi310::WM_STATION)) return -1; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 64 | // printf("After Connect. \r\n"); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 65 | // printf("IP Address is %s\r\n", wizfi310.getIPAddress()); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 66 | |
akshaytom | 16:2794fcca7629 | 67 | MQTTWIZ ipstack = MQTTWIZ(); |
akshaytom | 16:2794fcca7629 | 68 | MQTT::Client<MQTTWIZ, Countdown> client = MQTT::Client<MQTTWIZ, Countdown>(ipstack); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 69 | |
akshaytom | 16:2794fcca7629 | 70 | char* hostname = "172.16.73.4"; |
bangbh | 9:21574e058141 | 71 | int port = 1883; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 72 | |
bangbh | 9:21574e058141 | 73 | int rc = ipstack.connect(hostname, port); |
bangbh | 9:21574e058141 | 74 | if (rc != 0) |
bangbh | 9:21574e058141 | 75 | printf("rc from TCP connect is %d\n", rc); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 76 | // printf("rc from TCP connect is %d\n", rc); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 77 | |
bangbh | 15:d4604c47da41 | 78 | char MQTTClientID[30]; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 79 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 80 | MQTTPacket_connectData data = MQTTPacket_connectData_initializer; |
bangbh | 9:21574e058141 | 81 | data.MQTTVersion = 3; |
bangbh | 15:d4604c47da41 | 82 | sprintf(MQTTClientID,"WIZwiki-W7500-client-%d",rand()%1000); |
bangbh | 15:d4604c47da41 | 83 | data.clientID.cstring = MQTTClientID; |
bangbh | 9:21574e058141 | 84 | data.username.cstring = "testuser"; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 85 | data.password.cstring = "testpassword"; |
bangbh | 9:21574e058141 | 86 | |
bangbh | 9:21574e058141 | 87 | if ((rc = client.connect(data)) != 0) |
HarshaDRAGNEEL | 18:e162fcc82c6b | 88 | // pc.printf("rc from MQTT connect is %d\n", rc); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 89 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 90 | myservo.calibrate(0.0005, 170); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 91 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 92 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 93 | while (true) { |
HarshaDRAGNEEL | 18:e162fcc82c6b | 94 | if(button==1){ |
HarshaDRAGNEEL | 18:e162fcc82c6b | 95 | char buf[100]; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 96 | MQTT::Message message; |
bangbh | 9:21574e058141 | 97 | message.qos = MQTT::QOS0; |
bangbh | 9:21574e058141 | 98 | message.retained = false; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 99 | message.dup = false; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 100 | for(int i=0; i<100; i++) { |
HarshaDRAGNEEL | 18:e162fcc82c6b | 101 | myservo = i/100.0; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 102 | distance1[i] = sensor.distance(); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 103 | distance2[i] = sensor1.distance(); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 104 | distance3[i] = sensor2.distance(); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 105 | distance4[i] = sensor3.distance(); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 106 | // pc.printf("count %d \n",i); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 107 | wait(0.01); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 108 | } |
HarshaDRAGNEEL | 18:e162fcc82c6b | 109 | for(int i=100; i>0; i--) { |
HarshaDRAGNEEL | 18:e162fcc82c6b | 110 | myservo = i/100.0; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 111 | wait(0.01); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 112 | } |
HarshaDRAGNEEL | 18:e162fcc82c6b | 113 | j++; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 114 | pc.printf("number of times mapped %d \n",j); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 115 | sprintf(buf, "%ld", j); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 116 | message.payload = (void*)buf; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 117 | message.payloadlen = strlen(buf); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 118 | rc = client.publish("Number of times mapped", message); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 119 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 120 | for(int i=0;i<91;i++){ |
HarshaDRAGNEEL | 18:e162fcc82c6b | 121 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 122 | sprintf(buf, "%ld", distance1[i]); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 123 | pc.printf(" The distance is : %s\n",buf); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 124 | message.payload = (void*)buf; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 125 | message.payloadlen = strlen(buf); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 126 | rc = client.publish("0 to 90 degree distance", message); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 127 | pc.printf("0 to 90 degree distance: %s\r\n",message.payload); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 128 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 129 | sprintf(buf, "%ld", distance2[i]); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 130 | // pc.printf(" The disstance is : %ld\n",distance1); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 131 | pc.printf(" The distance is : %s\n",buf); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 132 | message.payload = (void*)buf; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 133 | message.payloadlen = strlen(buf); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 134 | rc = client.publish("90 to 180 degree distance", message); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 135 | pc.printf("90 to 180 degree distance : %s\r\n",message.payload); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 136 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 137 | sprintf(buf, "%ld", distance3[i]); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 138 | pc.printf(" The distance is : %s\n",buf); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 139 | message.payload = (void*)buf; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 140 | message.payloadlen = strlen(buf); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 141 | rc = client.publish("180 to 270 degree distance", message); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 142 | pc.printf("180 to 270 degree distance: %s\r\n",message.payload); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 143 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 144 | sprintf(buf, "%ld", distance4[i]); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 145 | pc.printf(" The distance is : %s\n",buf); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 146 | message.payload = (void*)buf; |
HarshaDRAGNEEL | 18:e162fcc82c6b | 147 | message.payloadlen = strlen(buf); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 148 | rc = client.publish("270 to 360 degree distance", message); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 149 | pc.printf("270 to 360 degree distance: %s\r\n",message.payload); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 150 | |
HarshaDRAGNEEL | 18:e162fcc82c6b | 151 | client.yield(1000); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 152 | wait(0.05); |
HarshaDRAGNEEL | 18:e162fcc82c6b | 153 | } |
HarshaDRAGNEEL | 18:e162fcc82c6b | 154 | } |
HarshaDRAGNEEL | 18:e162fcc82c6b | 155 | } |
HarshaDRAGNEEL | 18:e162fcc82c6b | 156 | } |