Using Ethernet Interface to send temperature/humidity info to client

Dependencies:   EthernetInterface SDFileSystem SHTx mbed-rtos mbed

Committer:
airaylee
Date:
Thu Oct 17 23:59:17 2013 +0000
Revision:
0:e26dfd507000
Child:
1:788d545c9cd1
Original Version;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
airaylee 0:e26dfd507000 1
airaylee 0:e26dfd507000 2 #include "mbed.h"
airaylee 0:e26dfd507000 3 #include "SHTx/sht15.hpp"
airaylee 0:e26dfd507000 4 #include "SDFileSystem.h"
airaylee 0:e26dfd507000 5 #include "EthernetInterface.h"
airaylee 0:e26dfd507000 6
airaylee 0:e26dfd507000 7 //SPI-mosi,miso,sclk,DigitalOut-cs, name used to access the filesystem
airaylee 0:e26dfd507000 8 SDFileSystem sd(p5, p6, p7, p8, "sd1");
airaylee 0:e26dfd507000 9
airaylee 0:e26dfd507000 10 //Terminal Port to display the file back
airaylee 0:e26dfd507000 11 Serial pc(USBTX, USBRX);
airaylee 0:e26dfd507000 12 DigitalOut busy(LED1);
airaylee 0:e26dfd507000 13
airaylee 0:e26dfd507000 14 // Use p28-sda--data,p27-scl--sck
airaylee 0:e26dfd507000 15 SHTx::SHT15 sensor(p28, p27);
airaylee 0:e26dfd507000 16
airaylee 0:e26dfd507000 17 EthernetInterface eth;
airaylee 0:e26dfd507000 18 #define ECHO_SERVER_PORT 7
airaylee 0:e26dfd507000 19
airaylee 0:e26dfd507000 20 int main() {
airaylee 0:e26dfd507000 21
airaylee 0:e26dfd507000 22 /*FILE *fw = fopen("/sd1/mydir/sdtest.txt", "w");
airaylee 0:e26dfd507000 23 if(fw == NULL) {
airaylee 0:e26dfd507000 24 pc.printf("Could not open file for write\n");
airaylee 0:e26dfd507000 25 }
airaylee 0:e26dfd507000 26 else{
airaylee 0:e26dfd507000 27 fprintf(fw, "Hello SD file World!LOLOLOL\n");
airaylee 0:e26dfd507000 28 fclose(fw);
airaylee 0:e26dfd507000 29 }
airaylee 0:e26dfd507000 30 //Begin reading from the SD file
airaylee 0:e26dfd507000 31 pc.printf("Begin reading from the SD file\n");
airaylee 0:e26dfd507000 32 FILE *fr = fopen("/sd1/mydir/sdtest.txt", "r");
airaylee 0:e26dfd507000 33 if(fr== NULL) {
airaylee 0:e26dfd507000 34 pc.printf("Could not open file for read\n");
airaylee 0:e26dfd507000 35 }
airaylee 0:e26dfd507000 36 else{
airaylee 0:e26dfd507000 37 while(!feof(fr)){
airaylee 0:e26dfd507000 38 pc.putc(fgetc(fr));
airaylee 0:e26dfd507000 39 }
airaylee 0:e26dfd507000 40 fclose(fr);
airaylee 0:e26dfd507000 41 }
airaylee 0:e26dfd507000 42 */
airaylee 0:e26dfd507000 43
airaylee 0:e26dfd507000 44 // Speed things up a bit.
airaylee 0:e26dfd507000 45 sensor.setOTPReload(false);
airaylee 0:e26dfd507000 46 sensor.setResolution(true);
airaylee 0:e26dfd507000 47
airaylee 0:e26dfd507000 48 eth.init(); //Use DHCP
airaylee 0:e26dfd507000 49 eth.connect(7000);//Longer timeout here
airaylee 0:e26dfd507000 50 //print out the MAC address first
airaylee 0:e26dfd507000 51 printf("MAC Address is %s\r\n", eth.getMACAddress());
airaylee 0:e26dfd507000 52 printf("IP Address is %s\r\n", eth.getIPAddress());
airaylee 0:e26dfd507000 53 //IP address is 130.207.234.205
airaylee 0:e26dfd507000 54
airaylee 0:e26dfd507000 55
airaylee 0:e26dfd507000 56 TCPSocketServer server;
airaylee 0:e26dfd507000 57 server.bind(ECHO_SERVER_PORT);
airaylee 0:e26dfd507000 58 server.listen();
airaylee 0:e26dfd507000 59
airaylee 0:e26dfd507000 60 while(1) {
airaylee 0:e26dfd507000 61 printf("\nWait for new connection...\r\n");
airaylee 0:e26dfd507000 62 TCPSocketConnection client;
airaylee 0:e26dfd507000 63 server.accept(client);
airaylee 0:e26dfd507000 64 client.set_blocking(false); // Timeout after (5)s
airaylee 0:e26dfd507000 65
airaylee 0:e26dfd507000 66 printf("Connection from: %s\r\n", client.get_address());
airaylee 0:e26dfd507000 67
airaylee 0:e26dfd507000 68 busy = true;
airaylee 0:e26dfd507000 69 sensor.update();
airaylee 0:e26dfd507000 70 busy = false;
airaylee 0:e26dfd507000 71 char buffer[256]={0};
airaylee 0:e26dfd507000 72
airaylee 0:e26dfd507000 73 // Temperature in celcius
airaylee 0:e26dfd507000 74 sensor.setScale(false);
airaylee 0:e26dfd507000 75 sprintf(buffer,"Temperature [ %3.2f C ]\r\nHumdity [ %3.2f %% ]\r\n\n", sensor.getTemperature(), sensor.getHumidity());
airaylee 0:e26dfd507000 76
airaylee 0:e26dfd507000 77 int n = sizeof(buffer);
airaylee 0:e26dfd507000 78 client.send_all(buffer, n);
airaylee 0:e26dfd507000 79
airaylee 0:e26dfd507000 80 client.close();
airaylee 0:e26dfd507000 81 printf(" Connection over\r\n");
airaylee 0:e26dfd507000 82
airaylee 0:e26dfd507000 83 }
airaylee 0:e26dfd507000 84 }