I’m trying to connect my Arduino Nano to the Blynk Cloud to report some very basic sensor information. To connect the Nano to the Internet I went with the WizNet WIZ550io Ethernet board. I’ve wired this up to the Nano - and ran the basic WebServer example and was able to get this working on my local network. It is worth noting, I placed the “Ethernet” library from Wiznet (https://github.com/Wiznet/WIZ_Ethernet_Library) into my Libraries folder at Documents\Arduino\libraries as per instructions from the WizNet github and some other sources. I had to comment out these lines:
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :(");
while (true) {
delay(1); // do nothing, no point running without Ethernet hardware
}
}
if (Ethernet.linkStatus() == LinkOFF) {
Serial.println("Ethernet cable is not connected.");
}
As I would get an error when compiling:
exit status 1
'class EthernetClass' has no member named 'hardwareStatus'
However, once I removed these lines the webserver example worked fine.
Now when I try to connect the device to the Blynk Cloud using the Quickstart function - my nano gets an IP address from my network which I can also ping, but in the Serial Monitor all I can see is:
[5211] Connecting to blynk.cloud:80
[37394] Connecting to blynk.cloud:80
[69574] Connecting to blynk.cloud:80
[101754] Connecting to blynk.cloud:80
And the device won’t connect or show any updates either on the Blynk Cloud or on my Serial Monitor.
I copied my code from the Blynk Cloud - but leaving below in case it helps. Any suggestions/advice greatly appreciated:
/*************************************************************
This is a simple demo of sending and receiving some data.
Be sure to check out other examples!
*************************************************************/
// Template ID, Device Name and Auth Token are provided by the Blynk.Cloud
// See the Device Info tab, or Template settings
#define BLYNK_TEMPLATE_ID "TMPLpvuQBTV9"
#define BLYNK_DEVICE_NAME "Quickstart Device"
#define BLYNK_AUTH_TOKEN "NrKBboxuAChO3ZY8CJLSPcakKTDE4oFI"
// Comment this out to disable prints and save space
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>
char auth[] = BLYNK_AUTH_TOKEN;
#define W5100_CS 10
#define SDCARD_CS 4
BlynkTimer timer;
// This function is called every time the Virtual Pin 0 state changes
BLYNK_WRITE(V0)
{
// Set incoming value from pin V0 to a variable
int value = param.asInt();
// Update state
Blynk.virtualWrite(V1, value);
}
// This function is called every time the device is connected to the Blynk.Cloud
BLYNK_CONNECTED()
{
// Change Web Link Button message to "Congratulations!"
Blynk.setProperty(V3, "offImageUrl", "https://static-image.nyc3.cdn.digitaloceanspaces.com/general/fte/congratulations.png");
Blynk.setProperty(V3, "onImageUrl", "https://static-image.nyc3.cdn.digitaloceanspaces.com/general/fte/congratulations_pressed.png");
Blynk.setProperty(V3, "url", "https://docs.blynk.io/en/getting-started/what-do-i-need-to-blynk/how-quickstart-device-was-made");
}
// This function sends Arduino's uptime every second to Virtual Pin 2.
void myTimerEvent()
{
// You can send any value at any time.
// Please don't send more that 10 values per second.
Blynk.virtualWrite(V2, millis() / 1000);
}
void setup()
{
// Debug console
Serial.begin(115200);
pinMode(SDCARD_CS, OUTPUT);
digitalWrite(SDCARD_CS, HIGH); // Deselect the SD card
Blynk.begin(auth);
// You can also specify server:
//Blynk.begin(auth, "blynk.cloud", 80);
//Blynk.begin(auth, IPAddress(192,168,1,100), 8080);
// Setup a function to be called every second
timer.setInterval(1000L, myTimerEvent);
}
void loop()
{
Blynk.run();
timer.run();
// You can inject your own code or combine it with other sketches.
// Check other examples on how to communicate with Blynk. Remember
// to avoid delay() function!
}