Ok so I will buy one of those and hopefully this will work. Third time lucky.
Dmitriy, I have just bought an Ethernet shield for my Arduino as you instructed to use either Ethernet or Wifi as more stable that USB.
Guess what, it keeps disconnecting, connecting, disconnecting, connecting even on the most simple of sketches. Things work when its connected, but why does it keep disconnecting and then reconnecting? I thought this was supposed to be more stable?
@stevelondon post the simple sketch that keeps disconnecting together with the Serial Monitor data.
Sounds like you have a general internet or hardware problem as every connection type you try is unstable and that is not the experience of most Blynkers.
Which Ethernet shield are you using as some are very unreliable i.e. faulty?
It might be me but I will do some more testing tonight. Itās the
http://www.maplin.co.uk/p/arduino-ethernet-shield-r3-n33ku
Itās a Wiznet W5100
Post a basic sketch if you are still struggling.
#define BLYNK_PRINT Serial
#define ONE_WIRE_BUS_PIN 44
#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(ONE_WIRE_BUS_PIN);
DallasTemperature sensors(&oneWire);
DeviceAddress Probe01 = { 0x28, 0x5E, 0x72, 0xC5, 0x06, 0x00, 0x00, 0xA4 };
DeviceAddress Probe02 = { 0x28, 0x9F, 0x49, 0x2F, 0x06, 0x00, 0x00, 0xAA };
DeviceAddress Probe03 = { 0x28, 0x7A, 0xFB, 0xC4, 0x06, 0x00, 0x00, 0x79 };
char auth[] = "65b59ec2bb95487dbfe59f0c4d5f4166";
#define W5100_CS 10
#define SDCARD_CS 4
float tempC01, tempC02, tempC03;
unsigned int tempMillis = millis();
void setup()
{
Serial.begin(9600);
pinMode(SDCARD_CS, OUTPUT);
digitalWrite(SDCARD_CS, HIGH); // Deselect the SD card
Blynk.begin(auth);
sensors.begin();
sensors.setResolution(Probe01, 10);
sensors.setResolution(Probe02, 10);
sensors.setResolution(Probe03, 10);
}
void printtemp1()
{
if (tempC01 > 28)
{
Blynk.setProperty(V21, "color", "#FF3333");
}
else if (tempC01 < 25)
{
Blynk.setProperty(V21, "color", "#3399FF");
}
else
{
Blynk.setProperty(V21, "color", "#000000");
}
Blynk.virtualWrite(V21, tempC01);
}
void printtemp2()
{
if (tempC02 > 28)
{
Blynk.setProperty(V22, "color", "#FF3333");
}
else if (tempC02 < 25)
{
Blynk.setProperty(V22, "color", "#3399FF");
}
else
{
Blynk.setProperty(V22, "color", "#000000");
}
Blynk.virtualWrite(V22, tempC02);
}
void printtemp3()
{
if (tempC03 > 28)
{
Blynk.setProperty(V23, "color", "#FF3333");
}
else if (tempC03 < 25)
{
Blynk.setProperty(V23, "color", "#3399FF");
}
else
{
Blynk.setProperty(V23, "color", "#000000");
}
Blynk.virtualWrite(V23, tempC03);
}
void loop()
{
Blynk.run();
if (millis() - tempMillis > 1000)
{
sensors.requestTemperatures();
tempC01 = sensors.getTempC(Probe01); // Tank
tempC02 = sensors.getTempC(Probe02); // Sump
tempC03 = sensors.getTempC(Probe03); // LEDS
printtemp1();
printtemp2();
printtemp3();
tempMillis = millis();
}
}
@stevelondon looks like a fairly clean sketch.
10 bit resolution takes around 190ms so the 3 probes should take around 570ms and therefore 1000ms intervals should work. Personally I would read the sensors every 10s or longer unless your project really needs to respond quicker.
I would look to switch to BlynkTimer rather than millis() and see if you are still having problems.
You might want to rethink this if you stick with millis() rather than BlynkTimer(aka SimpleTimer)
You know what, I have at the same time as you noticed that and changed it to unsigned long. I was just about to post it and see your second reply. Its fixed it (I think) just running a longer test.
The unsigned int was getting to the end of its numbers and then going back to 0, thus confusing everything and sending flood and other error messages and disconnecting it.
Phew. Thank god for that. Its typical, I knew it would be bloody me. I have spent hours and hours going through this code and couldnāt find anything wrong with it, and it was one little āintā instead of a ālongā.
Also I want to keeps using millis because i want the arduino to run independently from the app in case something goes wrong with the app. I have water pumps and stuff on it so want to make sure it will run on its own if the app was to ever stop working. I should in theory be able to use the app to programme everything, and then disconnect if need be and still have everything run off the arduino itself.
Thanks for your help mate and good spot.
I agree, I planned on doing it every 5 to 10 seconds in the final setup but used 1s for testing so I could see the results quicker.
The big question now isā¦ have I wasted money on an ethernet board and was it this āunsigned intā that was causing me problems all along with my USB connection.
Will have to test this later.
I thought it was you too
BlynkTimer is nothing to do with Blynk, it is Arduinoās SimpleTimer renamed and prevents int / long bugs
Strongly recommend you switch but itās your call.
@vshymanskyy might be worth renaming BlynkTimer to āArduinoESPtimerā as there seems to be a lot of people getting the wrong idea of what it is.
Oh right. Iāll have a look at it then. Thank you.
It didnāt help wither that I was troubleshooting in the dark a little bit because I forgot I can use Serial monitor with an ethernet shield, I was used to using USB were you canāt use it unless you have a TTL - USB cable.
nice touch! how could that go unspotted for soo LONG? (literally)
Perhaps because the OP originally posted hundreds of lines of āirrelevantā code.
Very punny
No, why? It works on linux , particle, esp and mbedā¦ why renaming?