Thingspeak IoT using Nucleo-F411RE and IDW01m1

Dependencies:   mbed X_NUCLEO_IDW01M1v2 NetworkSocketAPI

Committer:
stiotchallenge
Date:
Thu Nov 14 04:21:20 2019 +0000
Revision:
14:753cc5807f05
Parent:
13:9a2016106dae
Thingspeak IoT using Nucleo-F411RE and IDW01m1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mridup 0:dee849b0e6e6 1 /* SpwfInterface NetworkSocketAPI Example Program
mridup 0:dee849b0e6e6 2 * Copyright (c) 2015 ARM Limited
mridup 0:dee849b0e6e6 3 *
mridup 0:dee849b0e6e6 4 * Licensed under the Apache License, Version 2.0 (the "License");
mridup 0:dee849b0e6e6 5 * you may not use this file except in compliance with the License.
mridup 0:dee849b0e6e6 6 * You may obtain a copy of the License at
mridup 0:dee849b0e6e6 7 *
mridup 0:dee849b0e6e6 8 * http://www.apache.org/licenses/LICENSE-2.0
mridup 0:dee849b0e6e6 9 *
mridup 0:dee849b0e6e6 10 * Unless required by applicable law or agreed to in writing, software
mridup 0:dee849b0e6e6 11 * distributed under the License is distributed on an "AS IS" BASIS,
mridup 0:dee849b0e6e6 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mridup 0:dee849b0e6e6 13 * See the License for the specific language governing permissions and
mridup 0:dee849b0e6e6 14 * limitations under the License.
mridup 0:dee849b0e6e6 15 */
mridup 0:dee849b0e6e6 16
mridup 0:dee849b0e6e6 17 #include "mbed.h"
mridup 0:dee849b0e6e6 18 #include "SpwfInterface.h"
mridup 0:dee849b0e6e6 19 #include "TCPSocket.h"
mapellil 8:74b827befe72 20
imi121 13:9a2016106dae 21 #define PORT 1234
imi121 13:9a2016106dae 22 #define MAX_PENDING 1
imi121 13:9a2016106dae 23
imi121 13:9a2016106dae 24 #define IP "184.106.153.149"
imi121 13:9a2016106dae 25 char* thingSpeakUrl = "http://api.thingspeak.com/update";
stiotchallenge 14:753cc5807f05 26 char* thingSpeakKey = "HJM51JXEXCLTX2KQ";
mridup 0:dee849b0e6e6 27 //------------------------------------
mridup 0:dee849b0e6e6 28 // Hyperterminal configuration
mridup 0:dee849b0e6e6 29 // 9600 bauds, 8-bit data, no parity
mridup 0:dee849b0e6e6 30 //------------------------------------
mridup 0:dee849b0e6e6 31
mridup 2:3a87dbea07a7 32 Serial pc(USBTX, USBRX);
mridup 0:dee849b0e6e6 33 DigitalOut myled(LED1);
stiotchallenge 14:753cc5807f05 34
imi121 13:9a2016106dae 35 /*************************************/
mridup 1:daf71fa3674c 36
mridup 1:daf71fa3674c 37 SpwfSAInterface spwf(D8, D2, false);
stiotchallenge 14:753cc5807f05 38 int temp=5;
stiotchallenge 14:753cc5807f05 39 int humid=1;
imi121 13:9a2016106dae 40
imi121 13:9a2016106dae 41 int http_demo(void)
imi121 13:9a2016106dae 42 {
imi121 13:9a2016106dae 43 TCPSocket socket(&spwf);
imi121 13:9a2016106dae 44 char buffer[256];
imi121 13:9a2016106dae 45 char message[40];
imi121 13:9a2016106dae 46 int err;
imi121 13:9a2016106dae 47 printf("Sending HTTP Data to thingspeak...\r\n");
imi121 13:9a2016106dae 48
imi121 13:9a2016106dae 49 // Open a socket on the network interface, and create a TCP connection to thingspeak
imi121 13:9a2016106dae 50 //socket.open(&spwf);
imi121 13:9a2016106dae 51 err=socket.connect(IP,80); // connecting to thingspeak
stiotchallenge 14:753cc5807f05 52 if(err!=0) {
stiotchallenge 14:753cc5807f05 53 pc.printf("\r\nCould not connect to Socket, err = %d!!\r\n", err);
stiotchallenge 14:753cc5807f05 54 return -1;
stiotchallenge 14:753cc5807f05 55 }
stiotchallenge 14:753cc5807f05 56 else
stiotchallenge 14:753cc5807f05 57 pc.printf("\r\nconnected to host server\r\n");
stiotchallenge 14:753cc5807f05 58
imi121 13:9a2016106dae 59 // Send a simple http request
stiotchallenge 14:753cc5807f05 60 sprintf(message,"field1=%d&field2=%d",temp,humid);
imi121 13:9a2016106dae 61 printf("Message Length=%d\r\n",(int)strlen(message));
imi121 13:9a2016106dae 62 sprintf(buffer,"POST /update HTTP/1.1\r\nHost: api.thingspeak.com\r\nConnection: close\r\nX-THINGSPEAKAPIKEY: %s\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: %d\r\n\r\n%s",thingSpeakKey,(int)strlen(message),message);
imi121 13:9a2016106dae 63 pc.printf("Request to %s\r\n", buffer);
imi121 13:9a2016106dae 64 //char sbuffer[] = "GET / HTTP/1.1\r\nHost: www.arm.com\r\n\r\n";
imi121 13:9a2016106dae 65 int scount = socket.send(buffer, (int)strlen(buffer));
imi121 13:9a2016106dae 66 printf("sent %d [%.*s]\r\n", scount, strstr(buffer, "\r\n")-buffer, buffer);
imi121 13:9a2016106dae 67
imi121 13:9a2016106dae 68 // Recieve a simple http response and print out the response line
imi121 13:9a2016106dae 69 char rbuffer[64];
imi121 13:9a2016106dae 70 int rcount = socket.recv(rbuffer, sizeof rbuffer);
imi121 13:9a2016106dae 71 printf("recv %d [%.*s]\r\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
imi121 13:9a2016106dae 72
imi121 13:9a2016106dae 73 // Close the socket to return its memory and bring down the network interface
imi121 13:9a2016106dae 74 socket.close();
imi121 13:9a2016106dae 75 return 0;
imi121 13:9a2016106dae 76 }
imi121 13:9a2016106dae 77
imi121 13:9a2016106dae 78 int main()
imi121 13:9a2016106dae 79 {
mridup 0:dee849b0e6e6 80 int err;
stiotchallenge 14:753cc5807f05 81 char * ssid = "iPhone";
stiotchallenge 14:753cc5807f05 82 char * seckey = "abcd1234";
stiotchallenge 14:753cc5807f05 83 pc.printf("\r\nNucleo F411RE + WiFi + Thingspeak\r\n");
mridup 0:dee849b0e6e6 84 pc.printf("\r\nconnecting to AP\r\n");
mridup 0:dee849b0e6e6 85
mridup 0:dee849b0e6e6 86 if(spwf.connect(ssid, seckey, NSAPI_SECURITY_WPA2)) {
mridup 0:dee849b0e6e6 87 pc.printf("\r\nnow connected\r\n");
mridup 0:dee849b0e6e6 88 } else {
mridup 0:dee849b0e6e6 89 pc.printf("\r\nerror connecting to AP.\r\n");
mridup 0:dee849b0e6e6 90 return -1;
mridup 0:dee849b0e6e6 91 }
mapellil 8:74b827befe72 92
mridup 0:dee849b0e6e6 93 const char *ip = spwf.get_ip_address();
mridup 0:dee849b0e6e6 94 const char *mac = spwf.get_mac_address();
mridup 0:dee849b0e6e6 95
mridup 0:dee849b0e6e6 96 pc.printf("\r\nIP Address is: %s\r\n", (ip) ? ip : "No IP");
imi121 13:9a2016106dae 97 pc.printf("\r\nMAC Address is: %s\r\n", (mac) ? mac : "No MAC");
mridup 0:dee849b0e6e6 98
imi121 13:9a2016106dae 99 while(1)
imi121 13:9a2016106dae 100 {
stiotchallenge 14:753cc5807f05 101 wait(20);
stiotchallenge 14:753cc5807f05 102 myled = !myled;
stiotchallenge 14:753cc5807f05 103
stiotchallenge 14:753cc5807f05 104 int err=http_demo();
stiotchallenge 14:753cc5807f05 105 if(err==0)
stiotchallenge 14:753cc5807f05 106 pc.printf("Thingspeak update completed successfully\r\n");
imi121 13:9a2016106dae 107 else
stiotchallenge 14:753cc5807f05 108 pc.printf("Error occurred %d\r\n",err);
mridup 0:dee849b0e6e6 109 }
imi121 13:9a2016106dae 110 }
mridup 0:dee849b0e6e6 111