for znrobotics workshop

Dependencies:   DHT22 HTTPClient SDFileSystem WIZnet_Library mbed

Fork of archlink_Temperture_dweetio by Kevin Lee

This program is for seeed arch link, using wiznet w550 ethernet interface. not compatible with mbed ethernet interface.

Committer:
menggang
Date:
Thu Jun 16 03:09:43 2016 +0000
Revision:
5:35f80d88820f
Parent:
4:81af9a9f7844
Child:
6:dbf5cf5ca7b1
use timer to collect information.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kevin_Lee 4:81af9a9f7844 1 /* This is just a demo by Kevin Lee */
Kevin_Lee 0:29bbc7eec5e1 2 #include "mbed.h"
Kevin_Lee 0:29bbc7eec5e1 3 #include "SDFileSystem.h"
Kevin_Lee 0:29bbc7eec5e1 4 #include "WIZnetInterface.h"
Kevin_Lee 2:8b304d2b4ca5 5 #include "HTTPClient.h"
menggang 5:35f80d88820f 6 #include "DHT22.h"
Kevin_Lee 0:29bbc7eec5e1 7
Kevin_Lee 2:8b304d2b4ca5 8 #define USE_DHCP 0
Kevin_Lee 0:29bbc7eec5e1 9 #define LOOPBACKPORT 5000
menggang 5:35f80d88820f 10
Kevin_Lee 0:29bbc7eec5e1 11 int W5500_Test(void);
Kevin_Lee 1:0f6a216263aa 12
menggang 5:35f80d88820f 13 float* temperature_get(); /* Grove - Temperature Sensor V1.2 */
menggang 5:35f80d88820f 14 float th[2];
Kevin_Lee 3:cfc6ff08a668 15
Kevin_Lee 0:29bbc7eec5e1 16 SPI spi(SPI_PSELMOSI0, SPI_PSELMISO0, SPI_PSELSCK0);
Kevin_Lee 0:29bbc7eec5e1 17 WIZnetInterface ethernet(&spi, p24, p17); // Spi ,cs, reset
Kevin_Lee 0:29bbc7eec5e1 18 int ret, dummy, lv = 1;
menggang 5:35f80d88820f 19 const char * IP_Addr = "192.168.1.123";
Kevin_Lee 0:29bbc7eec5e1 20 const char * IP_Subnet = "255.255.255.0";
menggang 5:35f80d88820f 21 const char * IP_Gateway = "192.168.1.1";
menggang 5:35f80d88820f 22 const char * DEVICE_ID = "933691ed-1f00-4826-953a-d56841f65240";
Kevin_Lee 0:29bbc7eec5e1 23 unsigned char MAC_Addr[6] = {0x00,0x08,0xDC,0x1C,0xAA,0xCA};
menggang 5:35f80d88820f 24
menggang 5:35f80d88820f 25 const int time_interval = 10; // 10 seconds;
menggang 5:35f80d88820f 26
menggang 5:35f80d88820f 27 // timer event;
menggang 5:35f80d88820f 28 Timeout flipper;
menggang 5:35f80d88820f 29 void timer_ticked();
Kevin_Lee 0:29bbc7eec5e1 30
Kevin_Lee 0:29bbc7eec5e1 31 DigitalOut myled(LED1);
Kevin_Lee 0:29bbc7eec5e1 32 //Arch Link
Kevin_Lee 0:29bbc7eec5e1 33 Serial pc(USBTX, USBRX); /* uart */
menggang 5:35f80d88820f 34 DHT22 dht22(p6);
Kevin_Lee 3:cfc6ff08a668 35
Kevin_Lee 3:cfc6ff08a668 36 AnalogIn ain(A0);
Kevin_Lee 3:cfc6ff08a668 37
Kevin_Lee 0:29bbc7eec5e1 38 int main() {
Kevin_Lee 1:0f6a216263aa 39 char buffer[256];
Kevin_Lee 0:29bbc7eec5e1 40 wait(1);
menggang 5:35f80d88820f 41 pc.baud(9600);
Kevin_Lee 0:29bbc7eec5e1 42 wait(1);
Kevin_Lee 3:cfc6ff08a668 43
Kevin_Lee 2:8b304d2b4ca5 44 if(W5500_Test() == 0) { // Internet is ok
Kevin_Lee 0:29bbc7eec5e1 45 printf("W5500 tested OK \r\n");
Kevin_Lee 1:0f6a216263aa 46
menggang 5:35f80d88820f 47 // start timer tick event.
menggang 5:35f80d88820f 48 flipper.attach(&timer_ticked, timer_interval);
menggang 5:35f80d88820f 49
Kevin_Lee 3:cfc6ff08a668 50 char str[512];
menggang 5:35f80d88820f 51 char post_data[256]= "";
menggang 5:35f80d88820f 52
Kevin_Lee 3:cfc6ff08a668 53 while(1)
Kevin_Lee 2:8b304d2b4ca5 54 {
menggang 5:35f80d88820f 55 float* th = temperature_get();
menggang 5:35f80d88820f 56 printf("temperature: %.2f -- Humidity: %.2f.\r\n",th[0], th[1]);
menggang 5:35f80d88820f 57
menggang 5:35f80d88820f 58 pc.printf("Posting message to znrobotics server.\r\n");
menggang 5:35f80d88820f 59 // http://machine.address:port/did/temperature?param1=v1&param2=v2
menggang 5:35f80d88820f 60 sprintf(post_data, "http://192.168.1.222:3000/temperature?deviceid=%s&temperature=%.2f", DEVICE_ID, th[0]);
menggang 5:35f80d88820f 61
Kevin_Lee 3:cfc6ff08a668 62 HTTPClient http;
Kevin_Lee 3:cfc6ff08a668 63 ret = http.get(get_msg, str, sizeof(str));
Kevin_Lee 3:cfc6ff08a668 64 if(!ret)
Kevin_Lee 3:cfc6ff08a668 65 {
menggang 5:35f80d88820f 66 pc.printf("Result: %s\r\n", str);
Kevin_Lee 3:cfc6ff08a668 67 }
Kevin_Lee 3:cfc6ff08a668 68 else
Kevin_Lee 3:cfc6ff08a668 69 {
menggang 5:35f80d88820f 70 pc.printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
Kevin_Lee 3:cfc6ff08a668 71 }
Kevin_Lee 3:cfc6ff08a668 72 wait(10);
Kevin_Lee 3:cfc6ff08a668 73 }
Kevin_Lee 0:29bbc7eec5e1 74 }
Kevin_Lee 0:29bbc7eec5e1 75
Kevin_Lee 0:29bbc7eec5e1 76 while(1) {
Kevin_Lee 0:29bbc7eec5e1 77 myled = 1;
menggang 5:35f80d88820f 78 printf("light on\r\n");
Kevin_Lee 0:29bbc7eec5e1 79 wait(3);
Kevin_Lee 0:29bbc7eec5e1 80 myled = 0;
menggang 5:35f80d88820f 81 printf("light off\r\n");
Kevin_Lee 0:29bbc7eec5e1 82 wait(3);
Kevin_Lee 0:29bbc7eec5e1 83 }
Kevin_Lee 0:29bbc7eec5e1 84 }
Kevin_Lee 0:29bbc7eec5e1 85
menggang 5:35f80d88820f 86 void timer_ticked()
menggang 5:35f80d88820f 87 {
menggang 5:35f80d88820f 88
menggang 5:35f80d88820f 89 }
menggang 5:35f80d88820f 90
Kevin_Lee 0:29bbc7eec5e1 91 int W5500_Test(void)
Kevin_Lee 0:29bbc7eec5e1 92 {
Kevin_Lee 0:29bbc7eec5e1 93 mbed_mac_address((char *)MAC_Addr); //Use mbed mac addres
Kevin_Lee 0:29bbc7eec5e1 94 wait(1);
Kevin_Lee 0:29bbc7eec5e1 95 printf("Start to test ethernet!\r\n");
Kevin_Lee 0:29bbc7eec5e1 96
Kevin_Lee 0:29bbc7eec5e1 97 #if USE_DHCP
Kevin_Lee 0:29bbc7eec5e1 98 printf("use DHCP\r\n");
Kevin_Lee 0:29bbc7eec5e1 99 ret = ethernet.init(MAC_Addr);
Kevin_Lee 0:29bbc7eec5e1 100 #else
Kevin_Lee 0:29bbc7eec5e1 101 printf("do NOT use DHCP\r\n");
Kevin_Lee 0:29bbc7eec5e1 102 int ret = ethernet.init(MAC_Addr,IP_Addr,IP_Subnet,IP_Gateway);
Kevin_Lee 0:29bbc7eec5e1 103 #endif
Kevin_Lee 0:29bbc7eec5e1 104
Kevin_Lee 0:29bbc7eec5e1 105 if (!ret) {
Kevin_Lee 0:29bbc7eec5e1 106 pc.printf("Initialized, MAC: %s\r\n", ethernet.getMACAddress());
Kevin_Lee 0:29bbc7eec5e1 107 ret = ethernet.connect();
Kevin_Lee 0:29bbc7eec5e1 108 if (!ret) {
Kevin_Lee 0:29bbc7eec5e1 109 pc.printf("IP: %s, MASK: %s, GW: %s\r\n",
Kevin_Lee 0:29bbc7eec5e1 110 ethernet.getIPAddress(), ethernet.getNetworkMask(), ethernet.getGateway());
Kevin_Lee 0:29bbc7eec5e1 111 return 0;
Kevin_Lee 0:29bbc7eec5e1 112 } else {
Kevin_Lee 0:29bbc7eec5e1 113 pc.printf("Error ethernet.connect() - ret = %d\r\n", ret);
Kevin_Lee 0:29bbc7eec5e1 114 //exit(0);
Kevin_Lee 0:29bbc7eec5e1 115 return -1;
Kevin_Lee 0:29bbc7eec5e1 116 }
Kevin_Lee 0:29bbc7eec5e1 117 } else {
Kevin_Lee 0:29bbc7eec5e1 118 pc.printf("Error ethernet.init() - ret = %d\r\n", ret);
Kevin_Lee 0:29bbc7eec5e1 119 //exit(0);
Kevin_Lee 0:29bbc7eec5e1 120 return -1;
Kevin_Lee 0:29bbc7eec5e1 121 }
Kevin_Lee 3:cfc6ff08a668 122 }
Kevin_Lee 3:cfc6ff08a668 123
menggang 5:35f80d88820f 124 float* temperature_get()
Kevin_Lee 3:cfc6ff08a668 125 {
menggang 5:35f80d88820f 126 int error = 0;
menggang 5:35f80d88820f 127
menggang 5:35f80d88820f 128 float temp, hum;
menggang 5:35f80d88820f 129
menggang 5:35f80d88820f 130 error = dht22.sample();
menggang 5:35f80d88820f 131
menggang 5:35f80d88820f 132 // read successfully
menggang 5:35f80d88820f 133 if (1 == error) {
menggang 5:35f80d88820f 134 // YOUR CODE GOES HERE, read temperature and humidity
menggang 5:35f80d88820f 135 temp = dht22.getTemperature()/10.0f; //TODO;
menggang 5:35f80d88820f 136 hum = dht22.getHumidity()/10.0f; //TODO;
menggang 5:35f80d88820f 137 th[0] = temp;
menggang 5:35f80d88820f 138 th[1] = hum;
menggang 5:35f80d88820f 139 // printf("temp: %2.2f , hum:%2.2f \r\n",temp,hum);
menggang 5:35f80d88820f 140 } else {
menggang 5:35f80d88820f 141 printf("Error: %d\n", error);
menggang 5:35f80d88820f 142 }
menggang 5:35f80d88820f 143
menggang 5:35f80d88820f 144 return th;
menggang 5:35f80d88820f 145 }