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:34:49 2016 +0000
Revision:
6:dbf5cf5ca7b1
Parent:
5:35f80d88820f
Child:
7:98c5b9eba03a
http version

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 6:dbf5cf5ca7b1 28 Ticker 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 6:dbf5cf5ca7b1 48 flipper.attach(&timer_ticked, time_interval);
Kevin_Lee 0:29bbc7eec5e1 49 }
Kevin_Lee 0:29bbc7eec5e1 50
Kevin_Lee 0:29bbc7eec5e1 51 while(1) {
menggang 6:dbf5cf5ca7b1 52 myled = !myled;
menggang 6:dbf5cf5ca7b1 53 wait(10);
Kevin_Lee 0:29bbc7eec5e1 54 }
Kevin_Lee 0:29bbc7eec5e1 55 }
Kevin_Lee 0:29bbc7eec5e1 56
menggang 5:35f80d88820f 57 void timer_ticked()
menggang 5:35f80d88820f 58 {
menggang 6:dbf5cf5ca7b1 59 char str[512];
menggang 6:dbf5cf5ca7b1 60 char post_data[256]= "";
menggang 5:35f80d88820f 61
menggang 6:dbf5cf5ca7b1 62 float* th = temperature_get();
menggang 6:dbf5cf5ca7b1 63 printf("temperature: %.2f -- Humidity: %.2f.\r\n",th[0], th[1]);
menggang 6:dbf5cf5ca7b1 64
menggang 6:dbf5cf5ca7b1 65 pc.printf("Posting message to znrobotics server.\r\n");
menggang 6:dbf5cf5ca7b1 66 // http://machine.address:port/did/temperature?param1=v1&param2=v2
menggang 6:dbf5cf5ca7b1 67 sprintf(post_data, "http://192.168.1.222:3000/temperature?deviceid=%s&temperature=%.2f", DEVICE_ID, th[0]);
menggang 6:dbf5cf5ca7b1 68 pc.printf("post msg: %s\r\n", post_data);
menggang 6:dbf5cf5ca7b1 69
menggang 6:dbf5cf5ca7b1 70 HTTPClient http;
menggang 6:dbf5cf5ca7b1 71 ret = http.get(post_data, str, sizeof(str));
menggang 6:dbf5cf5ca7b1 72 if(!ret)
menggang 6:dbf5cf5ca7b1 73 {
menggang 6:dbf5cf5ca7b1 74 pc.printf("Result: %s\r\n", str);
menggang 6:dbf5cf5ca7b1 75 }
menggang 6:dbf5cf5ca7b1 76 else
menggang 6:dbf5cf5ca7b1 77 {
menggang 6:dbf5cf5ca7b1 78 pc.printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
menggang 6:dbf5cf5ca7b1 79 }
menggang 5:35f80d88820f 80 }
menggang 5:35f80d88820f 81
Kevin_Lee 0:29bbc7eec5e1 82 int W5500_Test(void)
Kevin_Lee 0:29bbc7eec5e1 83 {
Kevin_Lee 0:29bbc7eec5e1 84 mbed_mac_address((char *)MAC_Addr); //Use mbed mac addres
Kevin_Lee 0:29bbc7eec5e1 85 wait(1);
Kevin_Lee 0:29bbc7eec5e1 86 printf("Start to test ethernet!\r\n");
Kevin_Lee 0:29bbc7eec5e1 87
Kevin_Lee 0:29bbc7eec5e1 88 #if USE_DHCP
Kevin_Lee 0:29bbc7eec5e1 89 printf("use DHCP\r\n");
Kevin_Lee 0:29bbc7eec5e1 90 ret = ethernet.init(MAC_Addr);
Kevin_Lee 0:29bbc7eec5e1 91 #else
Kevin_Lee 0:29bbc7eec5e1 92 printf("do NOT use DHCP\r\n");
Kevin_Lee 0:29bbc7eec5e1 93 int ret = ethernet.init(MAC_Addr,IP_Addr,IP_Subnet,IP_Gateway);
Kevin_Lee 0:29bbc7eec5e1 94 #endif
Kevin_Lee 0:29bbc7eec5e1 95
Kevin_Lee 0:29bbc7eec5e1 96 if (!ret) {
Kevin_Lee 0:29bbc7eec5e1 97 pc.printf("Initialized, MAC: %s\r\n", ethernet.getMACAddress());
Kevin_Lee 0:29bbc7eec5e1 98 ret = ethernet.connect();
Kevin_Lee 0:29bbc7eec5e1 99 if (!ret) {
Kevin_Lee 0:29bbc7eec5e1 100 pc.printf("IP: %s, MASK: %s, GW: %s\r\n",
Kevin_Lee 0:29bbc7eec5e1 101 ethernet.getIPAddress(), ethernet.getNetworkMask(), ethernet.getGateway());
Kevin_Lee 0:29bbc7eec5e1 102 return 0;
Kevin_Lee 0:29bbc7eec5e1 103 } else {
Kevin_Lee 0:29bbc7eec5e1 104 pc.printf("Error ethernet.connect() - ret = %d\r\n", ret);
Kevin_Lee 0:29bbc7eec5e1 105 //exit(0);
Kevin_Lee 0:29bbc7eec5e1 106 return -1;
Kevin_Lee 0:29bbc7eec5e1 107 }
Kevin_Lee 0:29bbc7eec5e1 108 } else {
Kevin_Lee 0:29bbc7eec5e1 109 pc.printf("Error ethernet.init() - ret = %d\r\n", ret);
Kevin_Lee 0:29bbc7eec5e1 110 //exit(0);
Kevin_Lee 0:29bbc7eec5e1 111 return -1;
Kevin_Lee 0:29bbc7eec5e1 112 }
Kevin_Lee 3:cfc6ff08a668 113 }
Kevin_Lee 3:cfc6ff08a668 114
menggang 5:35f80d88820f 115 float* temperature_get()
Kevin_Lee 3:cfc6ff08a668 116 {
menggang 5:35f80d88820f 117 int error = 0;
menggang 5:35f80d88820f 118
menggang 5:35f80d88820f 119 float temp, hum;
menggang 5:35f80d88820f 120
menggang 5:35f80d88820f 121 error = dht22.sample();
menggang 5:35f80d88820f 122
menggang 5:35f80d88820f 123 // read successfully
menggang 5:35f80d88820f 124 if (1 == error) {
menggang 5:35f80d88820f 125 // YOUR CODE GOES HERE, read temperature and humidity
menggang 5:35f80d88820f 126 temp = dht22.getTemperature()/10.0f; //TODO;
menggang 5:35f80d88820f 127 hum = dht22.getHumidity()/10.0f; //TODO;
menggang 5:35f80d88820f 128 th[0] = temp;
menggang 5:35f80d88820f 129 th[1] = hum;
menggang 5:35f80d88820f 130 // printf("temp: %2.2f , hum:%2.2f \r\n",temp,hum);
menggang 5:35f80d88820f 131 } else {
menggang 5:35f80d88820f 132 printf("Error: %d\n", error);
menggang 5:35f80d88820f 133 }
menggang 5:35f80d88820f 134
menggang 5:35f80d88820f 135 return th;
menggang 5:35f80d88820f 136 }