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 Samuel Mokrani

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?

UserRevisionLine numberNew 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 }