DIY: Temperaturlogging med Arduino og/eller ESP8266

msevland

NMKomiteen
Sentralstyre
Redigert:
Det meste i denne tråden er foreldet. Gå til templogg.no for å finne de nyeste temperatur loggerne / datalogg
hilsen
msevland
2018


*** Opprinnelig post ***
Det siste året har jeg arbeidet mye med mine temperaturloggere. De har gjennomgått mange endringer siden jeg postet v1.0 tidlig i 2015.
Loggeren finnes nå i tre versjoner.
1. Gjæringslogger med Arduino og display
2. Meskelogger med Arduino, display, alarm (lyd/lys) og innstilling av alarmtemperatur på enheten
3. ESP8266-TempLogger, hvor alt kjører direkte på ESP'n uten Arduino
Alle versjonenen sender data trådløst til en Sky-tjeneste

Hva gjør Loggerne?
I korte trekk henter loggerne temperaturdata fra en eller flere sensorer ('uendelig' mange er mulig), oppdaterer et lite display dersom de har det, og sender data til en gratis skytjeneste via et trådløst kort og internett. Grafisk fremstilling av temperatur over tid er da tilgjengelig på din mobil, pc eller annet uavhengig av hvor du er, og ferske data tilgjengeliggjøres i løpet av fra 1 til 3 sekunder.
Overordnet_Skisse.jpg


ESP8266-TempLogg
Jeg utvikler for tiden en avansert temperaturlogger for ESP8266 brikken (ESP8266-TempLogger). Lenger ned i denne posten har jeg imidlertid lagt ut DIY koden for en enkel temperaturlogger med ESP'en. Denne inneholder ingen av de avanserte funksjonene som kommer i ESP8266-TempLoggeren.

For mer om ESP8266-TempLogg som kommer for salg snarlig, gå til: templogg.no

Gjæringslogger
Første versjon var Gjæringsloggeren som ble laget for overvåking og logging av gjæring i underetasjen. Den hadde opprinnelig kun et 1602 linjers display, men er nå oppgradert til 2004 (20 tegn * 4 linjer). Alle loggerne kan lese flere sensorer. Denne versjonen har to utganger med hurtigkobling i selve enheten, men har i tillegg en hub med tre sensorer. Vanligvis har jeg tilkoblet en sensor som måler temperatur i selve kjøleskapet, og en på hver av gjæringskarene - totalt 3.

Gjaeringslogger1.jpg


Meskelogger
Etter det har jeg videreutviklet en enhet som jeg bruker til logging av mesketemperatur. Den styrer ingen ting, men jeg bruker den til kvalitetssikring og input til bryggeloggen. Meskeloggeren har innebygget temperaturalarm (lyd/lys) med et navigeringshjul slik at du enkelt kan stille inn øvre og nedre grense på alarmen på selve enheten. Lydalarmen kan deaktiveres helt med en enkel vippebryter, mens lysalarmen alltid er aktiv.
Jeg bruker denne aktivt når jeg brygger slik at jeg kan gå fra bryggerommet uten å være redd for at temperaturen skal endre seg utover mine sett-punkter uten at jeg hører alarmen.

Meskelogger1.jpg


Sensor: DS18B20
Sensor av typen DS18B20 er vanlig å bruke til Arduino / ESP8266. Det finnes gode biblioteker som gjør innhenting av data svært enkelt. Disse kan også benyttes med OneWire biblioteket som gjør at du kan paralellkoble dem på samme kabel, så holder Arduinoen styr på hvilke signaler som hører til hvor. Jeg har derfor laget en hub i kjøleskapet mitt hvor tre sensorer er tilkoblet, og mellom hub og Arduino går det kun en treledet ledning (+ / - / signal).
Standard er tre sensorer i mitt oppsett da jeg måler to gjæringskar, og lufttemperaturen i gjæringsskapet (3 Fields per Channel).

Datalagring
Alle data lagres i skytjenesten, thingspeak.com. Dette er en gratis tjeneste som er svært enkel å sette opp og bruke. Skytjenesten lagrer 16000 datapunkter per brukerkanal (Channel). Jeg har satt opp 4 forskjellige kanaler (Gjæringskammer1 / Gjæringskammer2 / Meskelogg / Testlogg). Hver kanal kan inneholde 8 sensorer (Fields). Hvor ofte du sender data til skytjenesten, styrer derfor hvor langt tilbake i tid du lagrer data for. Jeg lagrer ca hvert tredje minutt, og har data for over 30 dager tilgjengelig. Data kan lett lastes ned til Excel, eller du kan eksportere grafene som bilder dersom du vil ha det i bryggeloggen din.

DIY
Planen var å lage en gjennomgående beskrivelse av Arduino, kode, sensorer ol., men jeg ser at tiden ikke strekker til. Jeg må jo få tid til å brygge også :)
Så her kommer en ferdig logger, men med en uferdig dokumentasjon.

Gjærings- og Meskelogger: Versjon 2.1

ESP8266-MiniLogger: Versjon 1.0
Krever beklageligvis arduino-1.6.5. Fungerer ikke på arduino-1.6.7
Se post #188 i denne tråden for mer info

I Sketchen må du endre nettverksinformasjonen til ditt nettverk. Dette gjøres her. Behold hermetegn " ":
// ****** WiFi settings / AP definitions
#define AP_SSID "Your-SSID"
#define AP_PASSWORD "your-password"


Deretter legger du inn din Thingspeak Write API Key. Dette legges inn i koden her. Behold også her hermetegn " ".
// Cloud definitions / Thingspeak API key ******
String apiKey = "CLIGLHELJGT9VT0G"; // Insert your Write API Key from ThingSpeak.com


For å koble esp'en for innlasting av koden, bruk følgende oppsett.

Programming_esp8266.jpg


Når koden er lastet inn, kobler du fra GPIO0 og kobler en DS18B20 sensor til GPIO2 med 4,7K motstand på denne måten
ESP8266-DS18b20.jpg
 
Sist redigert:
Hei!

Bra pakke. Jeg tits på PDF dokumentet ditt.. Der du beskriver esp wifi så har du kobla denne rett på arduinoen sin 3.3 volt. Her kan du bare dra 50 mA. Fikk du dette til å virke i det hele tatt?
(Tenker på å bruke en slik esp wifi sjøl.)
 
[Edit] #BEikeland jeg viste ikke at den nye ide'en allerede var klar, har du fått testet den?[/QUOTE]
Nei, ikkje funnet tid til å leke med det enda desverre
 
Ser det nå. De vises ikke på nettbrettet med chrome før man ser på siden i høydeformat. Derfor så jeg ikke de først.
 
Blir oppskriften du har postet veldig forskjellig hvis man laster ned den nye IDE'en? Er det like greit å følge din oppskrift uten å bruke den nye?
 
arduinoen har jo 3,3Volt. Hva er grunnen til at man ikke kan bruke denne? Begrenset kapasitet?
 
Takker for tilbudet. Har foreløpig bare kopiert det rett over. Temperaturen logges på kontoret på jobb foreløpig. Har ikke så mye erfaring med arduino, men har syslet med forskjellige mikrocontrollere opp gjennom årene, men det er jo få løsninger som slår arduinoen på enkelhet med ide og opplasting av programmer.
 
Har nå hatt denne liggende på kontoret på jobb i vel en uke. I løpet av denne tiden har loggingen eller opplastingen stoppet 3 ganger. Nå har den ikke lastet opp noe på 6 timer. I helga stoppet den i over et døgn før den startet igjen av seg selv. Kan det være nettet på jobb eller noe annet. Har kun en sensor og ingen display. Kun usb strømforsyning. Kan det være en ide å sette på kondensatorer på 3,3 volten? Det skal jo være det ihht databladet på spenningsregulatoren.
 
Jeg hadde også problemer helt til jeg loddet alt. (Bortsett Fra ledningene på arduino kortet). Så la jeg inn "wathdog" som tar en omstart hvis det henger
 
Jeg har loddet alt, så tror ikke problemet er der. Watchdog er jo en funksjon som resetter systemet dersom koden henger. Er egentlig en timer som skal resettes med jevne mellomrom hvis ikke overflower den og resetter systemet. Vanlig på pls og slike systemer.
 
Svarer den på ping? Man kan vel logge seg på routeren og se hvilke enheter som er tilkoblet.
 
Jeg tenkte å kjøre ping fra pc til arduinoen. Har åpnet opp routeren nå og funnet ip adressen til arduinoen og så at den hadde vært pålogget i72 timer. Kjørte ping fra kommandovindu på pc og da svarte den. Dro ut strømmen da forsvant den på lista i routeren. Og den kom tilbake når jeg plugget i igjen. Så det er ihvertfall ikke det at den mister ip adressen.
 
Burde være mulighet for å sjekke om man får ok fra thingspeak? Når jeg har prøvd å sende manuelt til thingspeak får jeg en ok og en kode 200, hvis alt er ok. Det er kanskje lettere enn å sysle med ping.
 
Har gjort en del testing, og funnet at svaret fra ThingSpeak kan benyttes. Har ikke klart og fremprovosere en feil, men tror det skal gå. Dersom du kjører en test på svaret fra CIPSTART, eller på CIPSEND som vist under, bør du kunne trigge en reset. Har ikke implementert det i koden min enda (ble litt sent), men regner med at jeg godtar 10 feil før reboot.

AT+CIPSTART
if(ser.find("Linked")){
}

AT+CIPSEND
if(ser.find("SEND OK")){
}
 
Enkelt :)
Det mest skremmende med dette oppsettet, er å bestemme seg for å gjøre det. Når du har startet - ser du fort hvor lite komplisert det er :)
Det gleder meg at du nå er en Arduino logger. Usikker på hvor langt du har kopiert mitt opplegg, men dersom du ønsker bistand til å kunne lese flere grafer samtidig via HighCharts, så sender du meg bare din Channel ID, så kan jeg fixe resten for deg på mitt domene ;-)
Jeg bruker highchart for å sammenstille grafer slik bb.sevland.no
Hei, da har også jeg fått til å laste opp data til Thingsspeak. Jeg måtte forske en del for å få det til. Problemet var at jeg bruker Arduino Mega, og den kan ikke bruke pinne 3 og 4 til softwareserial slik som du gjør i eksemplet. Da jeg skiftet til å bruke pinne 10 og 11 i stedet, så gikk det fint.
Nå har jeg kommet så langt at jeg ønsker å bruke Highcharts for å få flere live kurver i samme plott. Jeg har gått inn på Highcharts, men så vidt jeg kan se så venter det meg en jobb for å finne ut av den også. Derfor spør jeg om du kan gi meg noen tips, evt en oppskrift for å få det til.
mvh Jens
 
Jeg har brukt mye tid på å tilpasse min HighCharts og graf, og det er derfor unødig at du gjør det samme :)
Dersom du vil gjøre det superenkelt, gjør du kanalen din public, og sender meg din Channel ID fra ThingSpeak fanen [Channel Settings], så legger jeg det inn på min server. Jeg trenger også antallet felter du ønsker å logge da den går litt i stå dersom den ikke finner det antallet jeg ber den om...
Kan også sende deg Highcharts-opplegget mitt, men som du sier - er det mye å sette seg inn i... og da trenger du også en egen server å legge dette på.
Dersom du vil ha den hos meg, lager vi en kortadresse i formen *****.sevland.no hvor du bytter ut stjernene med det du måtte ønske.
Jeg har oppdatert bb.sevland.no til å kunne hente txt fil med gjæringsinfo, samt et bilde av den gjæringsprofilen jeg bruker.
Dersom du har et sted du kan legge og oppdatere disse, kan jeg hente dem inn som del av siden. Adressen til disse må da være konstant.
M
 
Tilbake
Topp