Cytron WiFi Shield (WiFi Demo)

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

Cytron WiFi Shield (WiFi Demo)

Postby Ariff » Wed Aug 29, 2018 11:11 am

Hello, i want to ask regarding the Cytron wifi shield wifi demo sketch, i manage to tweak the coding to display my own data to the local ip address, and when i add an lcd display to the skecth it failed to upload the data to the ip address but it does display on the lcd. May i ask why and how to resolve this ?


this is my sketch btw, i already comment out the lcd display command


#include <CytronWiFiShield.h>
#include <CytronWiFiClient.h>
#include <CytronWiFiServer.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

int LED = 10;
//int LED2 = 13;
int sensor = 8;
int sensorCounter = 0; // counter for the number of button presses
int sensorState = 0; // current state of the sensor
int lastSensorState = 0;

const char *ssid = "ferntea2500@unifi";
const char *pass = "tiramisu2016";
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:
pinMode(LED,OUTPUT);
//pinMode(LED2,OUTPUT);
pinMode(sensor,INPUT_PULLUP);
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();
// lcd.begin(16, 2);
// Print a message to the LCD.
// lcd.print("Chocolate Count!");
//
}

void loop() {
// put your main code here, to run repeatedly:
sensorState = digitalRead(sensor);
if(sensorState != lastSensorState){
if(sensorState == LOW){
sensorCounter++;
Serial.println("Chocolate: ");
Serial.println(sensorCounter);
// lcd.setCursor(0, 1);
// lcd.print(sensorCounter);
digitalWrite(LED,HIGH);
delay(50);
digitalWrite(LED,LOW);

}
}
lastSensorState = sensorState;

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 = "Chocolate Value : ";
float cvalue = sensorCounter;
// htmlBody += ipStr;
// htmlBody += "</html>\r\n\r\n";
client.print(htmlBody);
client.print(cvalue);
}

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 (WiFi Demo)

Postby ZaM » Tue Sep 18, 2018 12:21 pm

Hi,

Look like there is pin conflict between
if(!wifi.begin(2, 3)) and LCD D6, D7
ZaM
Moderator
 
Posts: 65
Joined: Tue Nov 23, 2010 4:16 pm


Return to Getting Started - IoT

Who is online

Users browsing this forum: No registered users and 8 guests