Local version for working on Nucleo F401 and Ethernet shield

Dependencies:   WIZnet_Library mbed

Fork of Embedded_web_wiznet by IPN ESIME ZACATENCO

Committer:
highroads
Date:
Mon Dec 29 14:20:56 2014 +0000
Revision:
7:e5c9b43f5754
Parent:
6:09f34aa14399
rough working version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
highroads 7:e5c9b43f5754 1 //w5100
Ademir501 0:2f0a30377d42 2 #include "mbed.h"
Ademir501 0:2f0a30377d42 3 #include "WIZnetInterface.h"
highroads 7:e5c9b43f5754 4 #include <string>
Ademir501 0:2f0a30377d42 5
Ademir501 0:2f0a30377d42 6 #define ECHO_SERVER_PORT 80
Ademir501 0:2f0a30377d42 7
highroads 5:8f5448521cd8 8
highroads 2:606891a51c85 9 WIZnetInterface eth(SPI_MOSI, SPI_MISO, SPI_SCK,SPI_CS,PB_4); // spi, cs, reset
highroads 2:606891a51c85 10 Serial pc(SERIAL_TX,SERIAL_RX);
highroads 6:09f34aa14399 11 // theres a conflict with LED1 on the Nucleo board it uses the same pin as SPI_SCK!
highroads 2:606891a51c85 12 //DigitalOut led(LED1);
highroads 5:8f5448521cd8 13 // This is the chip select for the sd card which shares the SPI bus on the Arduino shield.
highroads 2:606891a51c85 14 DigitalOut SD_CS(PB_5);
highroads 2:606891a51c85 15
Ademir501 0:2f0a30377d42 16
Ademir501 0:2f0a30377d42 17 void f_ethernet_init(void);
Ademir501 0:2f0a30377d42 18
highroads 2:606891a51c85 19 const char * IP_Addr = "192.168.1.210";
Ademir501 0:2f0a30377d42 20 const char * IP_Subnet = "255.255.255.0";
highroads 2:606891a51c85 21 const char * IP_Gateway = "192.168.1.1";
Ademir501 1:f39ba31afda9 22 char data[8];
Ademir501 1:f39ba31afda9 23
highroads 7:e5c9b43f5754 24 int ret;
Ademir501 1:f39ba31afda9 25 bool status;
Ademir501 0:2f0a30377d42 26
Ademir501 0:2f0a30377d42 27
highroads 7:e5c9b43f5754 28 char paq_en[64];
highroads 7:e5c9b43f5754 29 #define THING_SPEAK_IP_STR "184.106.153.149" /* thingspeak.com IP Address */
highroads 7:e5c9b43f5754 30 #define THING_SPEAK_IP_PORT 80 /* port number */
highroads 7:e5c9b43f5754 31 #define THING_SPEAK_KEY_STR "94XG0UQQXJ28F1QM" /* API key */
highroads 7:e5c9b43f5754 32 #define THING_SPEAK_CHANNEL 21931 /* channel ID */
highroads 7:e5c9b43f5754 33 #define THING_SPEAK_LABEL_STR "field1"
highroads 7:e5c9b43f5754 34 char * str0 = "POST /update HTTP/1.1\n";
highroads 7:e5c9b43f5754 35 char * str1 = "Host: api.thingspeak.com\n";
highroads 7:e5c9b43f5754 36 char * str2 = "Connection: close\n";
highroads 7:e5c9b43f5754 37 char * str3 = "X-THINGSPEAKAPIKEY: ";
highroads 7:e5c9b43f5754 38 char * str4 = "Content-Type: application/x-www-form-urlencoded\n";
highroads 7:e5c9b43f5754 39 char * write_key = "94XG0UQQXJ28F1QM";
highroads 7:e5c9b43f5754 40 char * str5 = "Content-Length: ";
Ademir501 0:2f0a30377d42 41
highroads 7:e5c9b43f5754 42 void updateThingSpeak(char * tsData)
highroads 7:e5c9b43f5754 43 {
highroads 7:e5c9b43f5754 44 }
Ademir501 0:2f0a30377d42 45
Ademir501 0:2f0a30377d42 46 int main()
Ademir501 0:2f0a30377d42 47 {
highroads 5:8f5448521cd8 48 // force the chip select for the SD card high to avoid collisions. We're not using the sd card for this program
highroads 7:e5c9b43f5754 49 char buffer[64];
highroads 7:e5c9b43f5754 50 char data_entry[64];
highroads 2:606891a51c85 51 SD_CS=1;
highroads 7:e5c9b43f5754 52 uint8_t mac[]={0x90,0xa2,0xDa,0x0d,0x42,0xe0};
highroads 7:e5c9b43f5754 53 int attempt=0;
highroads 7:e5c9b43f5754 54 int entry=42;
highroads 7:e5c9b43f5754 55 int length;
Ademir501 0:2f0a30377d42 56 f_ethernet_init();
Ademir501 1:f39ba31afda9 57 TCPSocketConnection client;
highroads 7:e5c9b43f5754 58 //
Ademir501 1:f39ba31afda9 59
highroads 7:e5c9b43f5754 60 while (attempt < 4){
highroads 7:e5c9b43f5754 61 pc.printf("\nWaiting for connection to ThingSpeak server...\n");
highroads 7:e5c9b43f5754 62 ret=client.connect(THING_SPEAK_IP_STR,THING_SPEAK_IP_PORT);
highroads 7:e5c9b43f5754 63 if (!ret) {
highroads 7:e5c9b43f5754 64 pc.printf("\nConnected to ThingSpeak server\n");
highroads 7:e5c9b43f5754 65 }
highroads 7:e5c9b43f5754 66 else {
highroads 7:e5c9b43f5754 67 pc.printf("\nConnection attempt to ThingSpeak server failed\n");
highroads 7:e5c9b43f5754 68 attempt++;
highroads 7:e5c9b43f5754 69 }
highroads 7:e5c9b43f5754 70 if (client.is_connected() ) // try to send data
highroads 7:e5c9b43f5754 71 {
highroads 7:e5c9b43f5754 72 // update function
highroads 7:e5c9b43f5754 73 client.send(str0,strlen(str0));
highroads 7:e5c9b43f5754 74 pc.printf("%s >%d",str0,strlen(str0));
highroads 7:e5c9b43f5754 75 client.send(str1,strlen(str1));
highroads 7:e5c9b43f5754 76 pc.printf("%s >%d",str1,strlen(str1));
highroads 7:e5c9b43f5754 77 client.send(str2,strlen(str2));
highroads 7:e5c9b43f5754 78 pc.printf("%s >%d",str2,strlen(str2));
highroads 7:e5c9b43f5754 79 sprintf(buffer,"%s %s\n",str3,write_key);
highroads 7:e5c9b43f5754 80 client.send(buffer,strlen(buffer));
highroads 7:e5c9b43f5754 81 pc.printf("%s >%d",buffer,strlen(buffer));
highroads 7:e5c9b43f5754 82 client.send(str4,strlen(str4));
highroads 7:e5c9b43f5754 83 pc.printf("%s >%d",str4,strlen(str4));
highroads 7:e5c9b43f5754 84 sprintf(data_entry,"field1=%d\n",entry);
highroads 7:e5c9b43f5754 85 length=strlen(data_entry);
highroads 7:e5c9b43f5754 86 sprintf(buffer,"Content-Length: %d\n\n",length);
highroads 7:e5c9b43f5754 87 pc.printf("%s >%d",buffer,strlen(buffer));
highroads 7:e5c9b43f5754 88 pc.printf("%s >%d",data_entry,strlen(data_entry));
highroads 7:e5c9b43f5754 89 client.send(buffer,strlen(buffer));
highroads 7:e5c9b43f5754 90 client.send(data_entry,strlen(data_entry));
highroads 7:e5c9b43f5754 91 entry++;
highroads 7:e5c9b43f5754 92 wait(20.0);
Ademir501 0:2f0a30377d42 93 }
highroads 7:e5c9b43f5754 94 }
highroads 7:e5c9b43f5754 95 }
Ademir501 0:2f0a30377d42 96
Ademir501 0:2f0a30377d42 97 void f_ethernet_init()
Ademir501 0:2f0a30377d42 98 {
highroads 2:606891a51c85 99 uint8_t mac[]={0x90,0xa2,0xDa,0x0d,0x42,0xe0};
highroads 2:606891a51c85 100 // mbed_mac_address((char *)mac);
highroads 4:21669521476c 101 pc.printf("\tStarting Ethernet Server ...\n\r");
highroads 2:606891a51c85 102 wait(1.0);
highroads 2:606891a51c85 103 ret = eth.init(mac);
Ademir501 0:2f0a30377d42 104 if(!ret)
Ademir501 0:2f0a30377d42 105 {
highroads 4:21669521476c 106 pc.printf("Initialized, MAC= %s\n\r",eth.getMACAddress());
Ademir501 0:2f0a30377d42 107 }
Ademir501 0:2f0a30377d42 108 else
Ademir501 0:2f0a30377d42 109 {
highroads 4:21669521476c 110 pc.printf("Communication Failure ... Restart devices ...\n\r");
Ademir501 0:2f0a30377d42 111 }
highroads 4:21669521476c 112 pc.printf("Connected");
Ademir501 1:f39ba31afda9 113 wait(0.5);
Ademir501 0:2f0a30377d42 114 pc.printf(".");
Ademir501 1:f39ba31afda9 115 wait(0.5);
Ademir501 0:2f0a30377d42 116 pc.printf(".\n\r");
Ademir501 1:f39ba31afda9 117 wait(0.5);
Ademir501 0:2f0a30377d42 118 ret = eth.connect();
Ademir501 0:2f0a30377d42 119 if(!ret)
Ademir501 0:2f0a30377d42 120 {
highroads 4:21669521476c 121 pc.printf("Connection Established!\n\n\r");
Ademir501 0:2f0a30377d42 122 wait(1);
Ademir501 0:2f0a30377d42 123 pc.printf("IP=%s\n\rMASK=%s\n\rGW=%s\n\r",eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway());
Ademir501 0:2f0a30377d42 124 }
Ademir501 0:2f0a30377d42 125 else
Ademir501 0:2f0a30377d42 126 {
highroads 4:21669521476c 127 pc.printf("Communication Failure ... Restart devices ...\n\r");
Ademir501 0:2f0a30377d42 128 }
Ademir501 1:f39ba31afda9 129 }
Ademir501 1:f39ba31afda9 130