Skicka sensordata (DHT11 & BMP180) till ThingSpeak med en Arduino, använder ENC28J60 Ethercard (1 / 2 steg)
Steg 1: Skicka sensordata (DHT11 & BMP180) till ThingSpeak med en Arduino, använder ENC28J60 Ethercard: frågor
Bibliotek
Det finns i princip 4 bibliotek för ENC28J60
Ethershield (utveckling stannade) använder pin10 som chipselect
Ethercard develped som tillåter användning av ett SD-kort, använder stift 8 som chipselect
Ether_2860 från Simon munken. Om du inte redan har det, kommer du förmodligen aldrig få det.
UIPEthernet från Norbert Truchsess. Detta bibliotek är en droppe i ersättning för WS5100 Ethernet-biblioteket, gör ENC28J60 beter sig som en WIZ5100. Det innebär att program som utvecklats för den senare, kan användas för tidigare, helt enkelt genom att ersätta
#include < Ethernet.h > av #include < UIPEthernet.h >
Dock kräver som viss minne.
När googla för ethercard biblioteket, kan en komma över gafflar av olika bibliotek också.
Om du vill använda Ethercard biblioteket med stift 10 av någon anledning (t.ex. om du använder den med Ethershield), ändra pin-beläggning i biblioteket filer ENC28J60.h (linje 25 och 41 tror jag) och EtherCard.h (linje 134: uint8_t csPin = 8). (Beroende på vilken version det kan också vara i linje 154.)
Men det är enklare att lägga till deklarationen för pinne 10 i själva programmet så här:
Ether.BEGIN (sizeof Ethernet::buffer, mymac, 10)
I detta instructable jag kommer att använda Ethercard biblioteket.
Strömförsörjning
Ethershield- och Ethercard sköld som wel som de flesta av modulerna förvänta 3,3 Volt.
Thingspeak dataformatet
I min tidigare instructable på Thingspeak, jag diskuterade dataformat och särskilt att det förväntar sig strängar, medan DHT11 och BMP180 levererar flöten.
Programmet
Lyckligtvis hade EtherCard biblioteket ett bra exempel att utgå från. Även ursprungligen jag adderat en rutin för att konvertera flyttal data till strängar, insåg jag att Ethercard biblioteket skickar data till Thingspeak via klassen ut. Detta visar generellt flöten int strängar. testade det och ja, jag har inte att göra en sträng konvertering och fortfarande hålla precision i data.
ENC28J60 är ganska hungrig när det gäller minne så programmet har nått en kritisk massa med endast 412 byte över för lokala variabler. Jag har haft det körs konstant i 2 dagar utan problem. Jag kunde nog vinna några minne genom strippning adafruit BMP biblioteket lite,