Cytron WiFi Shield

Discussion on how to get started with various type of IoT projects

Cytron WiFi Shield

Postby Ariff » Mon Jul 09, 2018 8:59 am

Hello may i ask, based on the wifi demo sketch below is it possible to send data to a different ip adress or cloud and which command is responsible for that ?

Code: Select all
#include <CytronWiFiShield.h>
#include <CytronWiFiClient.h>
#include <CytronWiFiServer.h>
#include <SoftwareSerial.h>

const char *ssid = "...";
const char *pass = "...";
IPAddress ip(192, 168, 1 ,242);
ESP8266Server server(80);

const char htmlHeader[] = "HTTP/1.1 200 OK\r\n"
                        "Content-Type: text/html\r\n"
                        "Connection: close\r\n\r\n"
                        "<!DOCTYPE HTML>\r\n"
                        "<html>\r\n";
                         
void setup() {
 
  // put your setup code here, to run once:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
 
  if(!wifi.begin(2, 3))
  {
    Serial.println(F("Error talking to shield"));
    while(1);
  }
  Serial.println(wifi.firmwareVersion());
  Serial.print(F("Mode: "));Serial.println(wifi.getMode());// 1- station mode, 2- softap mode, 3- both
  // Uncomment these 2 lines if you are using static IP Address
  // Serial.println(F("Setup wifi config"));
  // wifi.config(ip);
  Serial.println(F("Start wifi connection"));
  if(!wifi.connectAP(ssid, pass))
  {
    Serial.println(F("Error connecting to WiFi"));
    while(1);
  }
  Serial.print(F("Connected to "));Serial.println(wifi.SSID());
  Serial.println(F("IP address: "));
  Serial.println(wifi.localIP());
  wifi.updateStatus();
  Serial.println(wifi.status()); //2- wifi connected with ip, 3- got connection with servers or clients, 4- disconnect with clients or servers, 5- no wifi
  clientTest();
  espblink(100);
  server.begin();
}

void loop() {
  // put your main code here, to run repeatedly:
  serverTest();
}

void espblink(int time)
{
  for(int i = 0;i<12;i++)
  {
    wifi.digitalWrite(2,wifi.digitalRead(2)^1);
    delay(time);
  }
}

void serverTest()
{
  ESP8266Client client = server.available();
 
  if(client.available()>0)
  {
    String req = client.readStringUntil('\r');
    // First line of HTTP request looks like "GET /path HTTP/1.1"
    // Retrieve the "/path" part by finding the spaces
    int addr_start = req.indexOf(' ');
    int addr_end = req.indexOf(' ', addr_start + 1);
    if (addr_start == -1 || addr_end == -1) {
      Serial.print(F("Invalid request: "));
      Serial.println(req);
      return;
    }
    req = req.substring(addr_start + 1, addr_end);
    Serial.print(F("Request: "));
    Serial.println(req);
    client.flush();
   
    if(req.equals("/"))
    {
      IPAddress ip = wifi.localIP();
      String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
      client.print(htmlHeader);
      String htmlBody = "Hello from ESP8266 at ";
      htmlBody += ipStr;
      htmlBody += "</html>\r\n\r\n";
      client.print(htmlBody);
    }
   
    else if(req.equals("/analog"))
    {
      client.print(htmlHeader);
      String htmlBody="";
      for (int a = 0; a < 6; a++)
      {
        htmlBody += "A";
        htmlBody += String(a);
        htmlBody += ": ";
        htmlBody += String(analogRead(a));
        htmlBody += "<br>\r\n";
      }
      htmlBody += "\r\n</html>\r\n";
      client.print(htmlBody);
    }
   
    else if(req.equals("/gpio2"))
    {
      wifi.digitalWrite(2, wifi.digitalRead(2)^1);
      client.print(htmlHeader);
      String htmlBody="GPIO2 is now ";
      htmlBody += wifi.digitalRead(2)==HIGH?"HIGH":"LOW";
      htmlBody += "</html>\r\n";
      client.print(htmlBody);
    }
   
    else if(req.equals("/info"))
    {
      String toSend = wifi.firmwareVersion();
      toSend.replace("\r\n","<br>");
      client.print(htmlHeader);
      client.print(toSend);
      client.print("</html>\r\n");
    }

    else
      client.print("HTTP/1.1 404 Not Found\r\n\r\n");
   
    client.stop();
 
  }
}

void clientTest()
{
  const char destServer[] = "www.adafruit.com";
  ESP8266Client client;
  if (!client.connect(destServer, 80))
  {
    Serial.println(F("Failed to connect to server."));
    client.stop();
    return;
  }
 
  const char *httpRequest = "GET /testwifi/index.html HTTP/1.1\r\n"
                           "Host: http://www.adafruit.com\r\n"
                           "Connection: close\r\n\r\n";
  if(!client.print(httpRequest))
  {
    Serial.println(F("Sending failed"));
    client.stop();
    return;;
  }

  // set timeout approximately 5s for server reply
  int i=5000;
  while (client.available()<=0&&i--)
  {
    delay(1);
    if(i==1) {
      Serial.println(F("Timeout"));
      return;
      }
  }

  while (client.available()>0)
  {
    //char c = (char)client.read();
    //Serial.print(c);
    Serial.write(client.read());
  }
 
  client.stop();
}
Ariff
Freshie
 
Posts: 7
Joined: Wed Jun 27, 2018 2:23 pm

Re: Cytron WiFi Shield

Postby bengchet » Tue Jul 10, 2018 8:00 pm

Hi,

You refer to function clientTest. It involves function to send data to external cloud.

You can also check out on few other examples such as WiFiThingspeak, PushingboxApi, GoogleHttpsRequest. They are the examples to send and record data to external server or cloud.
bengchet
Moderator
 
Posts: 237
Joined: Tue Aug 25, 2015 8:29 am

Re: Cytron WiFi Shield

Postby Ariff » Fri Jul 13, 2018 11:38 am

I checked the CytronGoogleFormHttps example, and uploaded it to my Arduino and at the serial monitor it displayed
"Failed to connect to server".
Do i need to change anything from the sketch apart from the wifi id and password ?
Ariff
Freshie
 
Posts: 7
Joined: Wed Jun 27, 2018 2:23 pm

Re: Cytron WiFi Shield

Postby bengchet » Sat Jul 14, 2018 9:05 am

Hi,

You will need upgrade AT firmware. Please refer to the user manual section firmware upgrade.
bengchet
Moderator
 
Posts: 237
Joined: Tue Aug 25, 2015 8:29 am

Re: Cytron WiFi Shield

Postby Ariff » Mon Jul 16, 2018 10:25 am

alright thank you, the program works ! now may i know how to send data to our own spreadsheet ?
it relates to this command i presume ?

String url = "/forms/d/1472Zeb9kDfira_8WAQRbAAdCx0gy8dsgh5HI0vxeqlQ/formResponse";

what do i need to replace it with in order to send data to my own spreadsheet ?
your help is much appreciated
Ariff
Freshie
 
Posts: 7
Joined: Wed Jun 27, 2018 2:23 pm

Re: Cytron WiFi Shield

Postby bengchet » Wed Jul 18, 2018 9:53 am

Hi,

You can refer here on how to create spreadsheet.
bengchet
Moderator
 
Posts: 237
Joined: Tue Aug 25, 2015 8:29 am

Re: Cytron WiFi Shield

Postby Ashraaf » Sun Apr 14, 2019 12:06 pm

Sorry but I also have the exact problem but even when I have updated the firmware. It keeps on giving error when I trying to connect to docs.google.com. Not only that. The WiFi demo clientTest() also keep on stuck when I run it. When I skip it, it runs back to normal. Something is wrong with the latest firmware.

Image

update: It works now somehow. Thank you.
Ashraaf
Freshie
 
Posts: 4
Joined: Sun Apr 14, 2019 11:22 am

Re: Cytron WiFi Shield

Postby ober » Mon Apr 15, 2019 6:48 am

Great! What is the problem that it does not work initially? I am sure others might face it too.
Ober Choo
Cytron Technologies Sdn Bhd
www.cytron.com.my
User avatar
ober
Moderator
 
Posts: 1437
Joined: Wed Apr 15, 2009 1:03 pm

Cytron WiFi Shield

Postby afiqahshaharin » Wed Apr 17, 2019 11:38 pm

How to code cytron wifi shield with ultrasonic sensor to thingspeak? And how to flash the wifi shield? :cry:
afiqahshaharin
Fledgling
 
Posts: 1
Joined: Wed Apr 17, 2019 11:36 pm


Next

Return to Getting Started - IoT

Who is online

Users browsing this forum: No registered users and 2 guests