The code reads various sensors, populates the packet and transmits it over to another TCP Client on receiving a request
Dependencies: Ping WiflyInterface mbed
Fork of Wifly_TCPEchoServer by
main.cpp@1:9ae2041887fa, 2013-03-27 (annotated)
- Committer:
- Neel
- Date:
- Wed Mar 27 18:16:27 2013 +0000
- Revision:
- 1:9ae2041887fa
- Parent:
- 0:0710a5e21ef9
- Child:
- 2:b15847b47f78
Interfaced the sensors and transmitted the packet over TCP to an Android device
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
samux | 0:0710a5e21ef9 | 1 | #include "mbed.h" |
samux | 0:0710a5e21ef9 | 2 | #include "WiflyInterface.h" |
Neel | 1:9ae2041887fa | 3 | #include "Ping.h" |
samux | 0:0710a5e21ef9 | 4 | |
Neel | 1:9ae2041887fa | 5 | #define ECHO_SERVER_PORT 12345 |
Neel | 1:9ae2041887fa | 6 | #define MY_NODE_ID 1 |
Neel | 1:9ae2041887fa | 7 | |
Neel | 1:9ae2041887fa | 8 | Ping Pinger(p21); |
Neel | 1:9ae2041887fa | 9 | AnalogIn t(p19); //TMP36 is connected here |
Neel | 1:9ae2041887fa | 10 | AnalogIn l(p18); |
Neel | 1:9ae2041887fa | 11 | DigitalIn PIR(p17); |
samux | 0:0710a5e21ef9 | 12 | |
samux | 0:0710a5e21ef9 | 13 | /* wifly object where: |
samux | 0:0710a5e21ef9 | 14 | * - p9 and p10 are for the serial communication |
samux | 0:0710a5e21ef9 | 15 | * - p25 is for the reset pin |
samux | 0:0710a5e21ef9 | 16 | * - p26 is for the connection status |
samux | 0:0710a5e21ef9 | 17 | * - "mbed" is the ssid of the network |
samux | 0:0710a5e21ef9 | 18 | * - "password" is the password |
samux | 0:0710a5e21ef9 | 19 | * - WPA is the security |
samux | 0:0710a5e21ef9 | 20 | */ |
Neel | 1:9ae2041887fa | 21 | WiflyInterface wifly(p9, p10, p25, p26, "solarskin", "solarskin", WPA); |
samux | 0:0710a5e21ef9 | 22 | |
samux | 0:0710a5e21ef9 | 23 | int main (void) |
samux | 0:0710a5e21ef9 | 24 | { |
samux | 0:0710a5e21ef9 | 25 | wifly.init(); // use DHCP |
samux | 0:0710a5e21ef9 | 26 | while (!wifly.connect()); // join the network |
samux | 0:0710a5e21ef9 | 27 | printf("IP Address is %s\n\r", wifly.getIPAddress()); |
Neel | 1:9ae2041887fa | 28 | |
samux | 0:0710a5e21ef9 | 29 | TCPSocketServer server; |
samux | 0:0710a5e21ef9 | 30 | server.bind(ECHO_SERVER_PORT); |
samux | 0:0710a5e21ef9 | 31 | server.listen(); |
samux | 0:0710a5e21ef9 | 32 | |
samux | 0:0710a5e21ef9 | 33 | printf("\nWait for new connection...\n"); |
samux | 0:0710a5e21ef9 | 34 | TCPSocketConnection client; |
samux | 0:0710a5e21ef9 | 35 | server.accept(client); |
samux | 0:0710a5e21ef9 | 36 | |
samux | 0:0710a5e21ef9 | 37 | char buffer[256]; |
Neel | 1:9ae2041887fa | 38 | char data[256]; |
Neel | 1:9ae2041887fa | 39 | float temp_c; |
Neel | 1:9ae2041887fa | 40 | float range; |
Neel | 1:9ae2041887fa | 41 | int packet_no=1; |
Neel | 1:9ae2041887fa | 42 | int flag=0; |
Neel | 1:9ae2041887fa | 43 | char motion = 'N'; |
Neel | 1:9ae2041887fa | 44 | |
samux | 0:0710a5e21ef9 | 45 | while (true) { |
Neel | 1:9ae2041887fa | 46 | |
Neel | 1:9ae2041887fa | 47 | server.set_blocking(false, 100); |
Neel | 1:9ae2041887fa | 48 | int n = client.receive(buffer, sizeof(buffer)); |
Neel | 1:9ae2041887fa | 49 | printf("\r N = %d\n",n); |
Neel | 1:9ae2041887fa | 50 | if(n>6) |
Neel | 1:9ae2041887fa | 51 | { |
Neel | 1:9ae2041887fa | 52 | flag=1; |
Neel | 1:9ae2041887fa | 53 | } |
Neel | 1:9ae2041887fa | 54 | if (n <= 0) break; |
Neel | 1:9ae2041887fa | 55 | |
Neel | 1:9ae2041887fa | 56 | temp_c=(t.read()*330.0)-50; |
Neel | 1:9ae2041887fa | 57 | printf("\rtemp is%d\n",(int)temp_c); |
Neel | 1:9ae2041887fa | 58 | |
Neel | 1:9ae2041887fa | 59 | float light = l.read_u16(); |
Neel | 1:9ae2041887fa | 60 | printf("\rlight value is %f\n",light); |
Neel | 1:9ae2041887fa | 61 | |
Neel | 1:9ae2041887fa | 62 | Pinger.Send(); |
Neel | 1:9ae2041887fa | 63 | wait_ms(30); |
Neel | 1:9ae2041887fa | 64 | range = Pinger.Read_cm(); |
Neel | 1:9ae2041887fa | 65 | |
Neel | 1:9ae2041887fa | 66 | if(!PIR){ |
Neel | 1:9ae2041887fa | 67 | motion = 'Y'; |
Neel | 1:9ae2041887fa | 68 | } |
Neel | 1:9ae2041887fa | 69 | else motion = 'N'; |
Neel | 1:9ae2041887fa | 70 | |
Neel | 1:9ae2041887fa | 71 | if (n <= 0) break; |
Neel | 1:9ae2041887fa | 72 | |
Neel | 1:9ae2041887fa | 73 | if (flag == 1) |
Neel | 1:9ae2041887fa | 74 | { |
Neel | 1:9ae2041887fa | 75 | for (int i=5;i<n;i++) |
Neel | 1:9ae2041887fa | 76 | printf("%c",buffer[i]); |
Neel | 1:9ae2041887fa | 77 | data[0]=MY_NODE_ID; |
Neel | 1:9ae2041887fa | 78 | data[1]=packet_no; |
Neel | 1:9ae2041887fa | 79 | data[2]=(int)temp_c; |
Neel | 1:9ae2041887fa | 80 | data[3]=(int)(light/100); |
Neel | 1:9ae2041887fa | 81 | data[4]=range; |
Neel | 1:9ae2041887fa | 82 | data[5]=motion; |
Neel | 1:9ae2041887fa | 83 | data[6]='\0'; |
Neel | 1:9ae2041887fa | 84 | |
Neel | 1:9ae2041887fa | 85 | n=sprintf(buffer,"%s",data); |
Neel | 1:9ae2041887fa | 86 | //n=sprintf(buffer,"%s",data); |
Neel | 1:9ae2041887fa | 87 | |
Neel | 1:9ae2041887fa | 88 | printf("\n\n"); |
Neel | 1:9ae2041887fa | 89 | client.send_all(buffer, n); |
Neel | 1:9ae2041887fa | 90 | packet_no++; |
Neel | 1:9ae2041887fa | 91 | flag=0; |
Neel | 1:9ae2041887fa | 92 | } |
Neel | 1:9ae2041887fa | 93 | |
Neel | 1:9ae2041887fa | 94 | } |
Neel | 1:9ae2041887fa | 95 | client.close(); //Closes the connection with the client |
samux | 0:0710a5e21ef9 | 96 | } |