Arduino TempLogger GjæringsLogger Meskelogger Hva gjør den? I korte trekk henter de temperaturdata fra flere sensorer (uendelig mange er mulig), oppdaterer et lite display og sender data til en gratis skytjeneste ca hvert tredje minutt via et trådløst kort / internett. Grafisk fremstilling av temperatur over tid er da tilgjengelig på din mobil, pc eller annet uavhengig av hvor du er, og ferske data er tilgjengelig i løpet av ca 3 sekunder. Siden første versjon som ble laget for overvåking og logging av gjæring, har jeg også laget en 'fork'. Dette er en utgave som jeg bruker til logging av mesketemperatur, og den har innebygget temperaturalarm. Denne har også et navigeringshjul slik at du enkelt kan stille inn øvre og nedre grense på alarmen på selve boksen. Alarmen kan også deaktiveres helt. 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. Jeg har satt opp 4 forskjellige kanaler. 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. Standard er tre sensorer i mitt oppsett da jeg måler to gjæringskar, og lufttemperaturen i gjæringsskapet. Koden kan svært enkelt utvides med så mange sensorer du ønsker. Sensorene seriekobles, så det er ingen begrensning i antallet utganger på selve Arduinoen - alle sensorer kjøres fra de samme tre ledningene ut fra denne. Jeg har laget meg to sensorutganger på selve boksen, men har også laget en forlenger (hub) som kan stå fast i gjæringsskapet med ytterligere tre sensorutganger. Overordnet skisse 4 3 5 6 2 7 1 1. 2. 3. 4. 5. 6. 7. Temperaturmålere Resistor Arduino Nano LCD display (1602 / 2004) Spenningsregulator WiFi modul Breadboard / koblingsplate Kr 125,- / 210,- Alle data sendes fra Arduinoen, via ESP866 og opp til en skytjeneste levert av thingspeak.com Grafer kan hentes ut fra deres webside, eller via lenker til den enkelte graf. De tilbyr kun enkle grafverktøy fra kun en datakilde Kr 0,- For å kunne hente ut komplekse grafer med info fra flere målere, bruker jeg grafverktøy fra highcharts.com Denne er tilpasset til å hente ut data fra thingspeak.com, og kjøres som en rapportgenerator fra et webområde. Mange data kan manipuleres, og datakilder kan aktiveres og deaktiveres direkte i verktøyet Kr ?,- Lenker • Arduino UNO • Arduino Nano Startpakke for Bryggere • Arduino – – • ESP8266 WiFI transciver – • 4k7 resistor. DS18B20 trenger denne Dupont kabler – • Vanntett temperaturprobe Flere for seriekobling Resistor / motstand – • DC 5V to 3.3V Step-Down Power Supply Module DS18b20 – – • Trådløs oppkobling AMS1117 – • Nano anbefales (UNO fungerer ok) Begge har 3.3v og 5v utganger Kjøp alle tre variantene av han/hun Ekstrautstyr – – – – – – – – Breadboard – for enkel tilkobling 'Pin Head' – for flashing av STC'n 1602 / 2004 LCD-skjerm. Kjøp modul - ikke bare skjerm Koblingsboks – Biltema (110*110*70) Hurtigkoblinger til sensorene (5-pack) Rotary Encoder Piezo Buzzer Mobillader / usb ledning – http://goo.gl/8TqDNU http://goo.gl/Zvz4ai • ESP8266 • AMS1117 • DS18b20 – – – http://goo.gl/zKD4TQ http://goo.gl/N8NRYJ http://goo.gl/Dbn2lb • 4k7 resistor • Dupont kabler • LCD 1602 (16 tegn - 2 linjer) • LCD 2004 (20 tegn - 4 linjer) – – – – http://goo.gl/7AmVCi http://goo.gl/rY3l95 http://goo.gl/Be6dEO http://goo.gl/pXk6yc • 'Pin Head’ • Hurtigkobling – treleder • Koblingsboks – – – http://goo.gl/IUw0au http://goo.gl/Ys1B20 http://goo.gl/7WaHJF • Breadboard • Rotary Encoder • Rotary Encoder hjul – – – http://goo.gl/CU24LG http://goo.gl/i4bxXg http://goo.gl/UV32zK • Piezo Buzzer • Strømtilførsel • Strømledninger - retractabke – – – Kr 130,- – http://goo.gl/FZfv9X USB mobillader http://goo.gl/vx5qsq Kr 170,- Utstyrslisten GjæringsLogger Gjæringsloggeren henter temperaturinfo fra et antall sensorer og sender denne videre til LCD displayet, og til en skytjeneste. Det lagres altså ingen data på selve enheten, og ingen data går tapt dersom enheten mister strøm. Lagring i skyen er kort fortalt lagring av data på internett i stedet for på ditt eget nettverk, din egen pc, eller på en minnebrikke i selve loggeren. Fordelen er da at du kan lese disse dataene fra hvor som helst i verden. For å få til dette, trener vi noen temperatursensorer, en microkontroller, et trådløst wifi kort, litt strøm, litt kabler og mye kode. Alt hardware må du kjøpe selv, mens kode og hvordan det kobles, får du her. Jeg valgte å montere alt i en IP67 boks fra Biltema. Disse er rimelige, og lette å kutte i med en dremel / sag / fil. Du kan både bruke en Arduino Uno, eller en Nano. Jeg bruker Nano. Nano’en er kun festet på usb-kontakten. Dette gjør montering/demontering enkelt. Displayet er limt, og resten er stort sett skrudd. Breadboardet er saget ut av mitt store breadboard som var lite i bruk, men du får kjøpt små breadboard som passer. I dette er en 4k7 resistor festet. Denne kreves for å få riktig måling fra temperatursensoren. Det finnes svært mange temperatursensorer, men til Arduino benyttes svært ofte en DS18B20 sensor. Disse har en egen ’mac’ adresse slik at de kan seriekobles på samme ledning uten problemer. 2004 display Arduino Nano AMS1117 & 4k7 Wifi – esp8266 I breadboardet er det også en spenningsregulator som henter strøm fra 5v og reduserer den til 3,3v. Det er kun WiFi modulen som bruker 3,3v, og det er anbefalt å benytte en spenningsregulator til dette grunnet høy ampere. Alle temperatursensorene har hurtigkoblinger som er loddet identisk. Hurtigkoblinger Seriekobling Hub i kjøleskapet Koblingsskjema GjæringsLogger 4 3 1. 2. 3. 4. DS18B20 temperaturmålere Resistor - 4700 Ohms (4k7) Arduino Uno / Nano LCD display 1602 / 2004 med styreenhet 5. AMS1117 – 5v to 3,3v 6. ESP8266 – WiFi modul 7. Breadboard for enkel kobling 5 6 2 7 1 MeskeLogger Arduino Nano Menyen styres av en Rotary Encoder, som er en ’endeløs’ skru-bryter med en integrert trykkbryter. Navigeringen er basert på at du velger meny med å trykke, og velger verdier ved å vri. Ganske enkelt – egentlig. Det er også en 5*8 bar, som minker etter hvert. Når den er 0, sendes data til internett. AMS1117 & 4k7 Monteringen er ganske lik gjæringsloggeren. Den eneste forskjellen er at det er flere komponenter i meskeloggeren, og derfor flere kabler – og ledninger. Der hvor de to enhetene er like, er også koblingen identisk. Dvs at lcd display og temperatursensorer er koblet på de samme portene, noe som gjør dem kompatible med hverandre. Du kan laste den samme koden inn på begge. Piezo & kontakt Alarmbryter Rotary Encoder LCD display Wifi – esp8266 Meskeloggeren har foruten en Rotary Encoder, også en Piezo Buzzer (alarm) som varsler når temperaturen er utenfor det oppgitte området. Alarmen kan skrues helt av med en egen ekstern bryter. Både Meske- og gjæringsloggeren har verdier i koden som kan endres etter behov. Dette er angitt i selve koden. Hurtigkoblinger Seriekobling Hub i kjøleskapet 5 Koblingsskjema MeskeLogger 6 7 8 9 3 4 1. DS18B20 temperaturmålere 2. Resistor - 4700 Ohms (4k7) 3. LCD display 1602 / 2004 med styreenhet 4. AMS1117 – 5v to 3,3v 5. Alarmbryter on/off 6. Piezo Buzzer 7. Rotary Encoder 8. Arduino Uno / Nano 9. ESP8266 – WiFi modul 10.Breadboard for enkel kobling 10 2 1 Arduino og koden • En Arduino-kode kalles en sketch, og må som et minimum bestå av void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: } • Du finner mye nybegynner info på Arduino’s hjemmesider – • https://www.arduino.cc/en/Guide/HomePage Kjente utfordringer med LCD – Koden for å programmere mot et LCD avhenger av hvem som har laget selve LCD displayet og av hvem som har laget styreenheten til displayet – Min kode består av følgende linjer hvor jeg velger hvilket display som benyttes. Disse går ikke om hverandre. Bruk jeg feil, blir // ****** LCD ******** // Connect the 4displayet pins: VCC-5v / GND-GND svart…/ SDA-A4 / SCL-A5 //LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display //LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 20 chars and 4 line display //LiquidCrystal_I2C lcd(0x3F,20,4); // set the LCD address to 0x3F for a 20 chars and 4 line display – Arduinokoden min kan grovt deles i fire deler 1. 2. 3. 4. Koding av sensorer – DS18B20 Koding av trådløs Wifi-kort – ESP8266 Koding av kommunikasjon med ThingSpeak.com Koding av LCD skjerm – • Det er vanlig å benytte forskjellige bibliotek når man programmerer med Arduino. Dette er små programmer som gjør det mye lettere å programmere mot eksempelvis et LCD display. Disse må lastes inn på din pc, slik at kompilatoren finner dem når koden skal skrives til din Uno / Nano. Alle biblioteker starter med #include i koden sin vist til høyre. Jeg bruker 7 bibliotek. Jeg har altså tre forskjellige display. Ett 1602 (16 tegn * 2 linjer), og to 2004. De to 2004 displayene har forskjellig styreenhet (0x27 og 0x3F). Ved å fjerne de innledende // aktiveres koden. Linjer som starter med // kjøres aldri. Ofte er 0x27 riktig adresse. Forsøk den først. Dersom dette ikke fungerer, last ned følgende sketch – last den inn på din arduino med tilkoblet Liquid Crystal I2C enhet, og kjør [Serial Monitor] http://sevland.no/TempLogger/I2C_Scan.zip #include <SoftwareSerial.h> #include <stdlib.h> #include <OneWire.h> #include <DallasTemperature.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> // 1602-2004 - 4 pin #include <avr/wdt.h> // Watchdog library Arduino-installasjon og plassering av sketcher i filstrukturen • Installasjonsveiledningen finner du på de offisielle Arduinosidene: http://arduino.cc/en/Main/Software • Når du laster ned en sketch, må den ligge i en mappe med samme navn som selve sketchen på et fast oppgitt område. Hos meg ser det slik ut • ESP8266 - WiFi • • • • WiFi er vanligvis litt komplisert, men ESP8266 og Arduino snakker sammen helt uten ekstra koding, kun grunn-sketch Arduino har en kommunikasjonsprosess som vanligvis sender data til og fra Serial Monitor, som er et vindu du kan kjøre i Arduinosoftwaren på din pc. Dersom du kobler Arduino og ESP8266 sammen med rx og tx utgang / inngangene, sender og mottar ESP8266 denne kommunikasjonen sammen med Serial Monitor. NB 1 ! Når du kjører kode direkte via Serial Monitor til EXP8266, kobles rx-tx og tx-rx som vist her. Dersom du kjører kode via en Sketch, må du koble rx-rx og tx-tx. jeg skjønner ikke helt hvorfor … • NB 2 ! Du kan ikke laste opp en Sketch mens rx eller tx er tilkoplet på Arduinoenheten Serial Monitor 3.3v vs. 5v Det meste av WiFi-enheter sender med en variabel styrke avhengig av hvor god forbindelsen er til den trådløse senderen / mottakeren. ESP8266 kan derfor ved dårlig forbindelse sende med høyere styrke enn hva Arduinoen kan levere, noe som kan skade Arduinoen. Jeg har selv koblet den direkte til Arduinoen uten problemer, men det trenger ikke bety noen verdens ting For å være sikker benytter jeg nå en AMS1117-3.3 som henter strøm fra 5v og drar den ned til 3,3v 800mA Har sakset litt fra web. Med høyere Amp når den også mye lenger... The ESP8266 module is a 3v device, but it's no wimp. It draws quite a bit of power. In fact, you'll probably need to make sure that your circuit's power supply can handle at least 1 amp of power. (In my case, I was using a simple 7.5v 500ma power supply. When I started working with this module, I switched it for a 7.5v 1amp power supply and had plenty of power.) As it turns out there is good reason for this; some Youtube videos have surfaced recently with folks seeing anything from 500 meters to a couple miles of transmission capability from this module. That's a lot of horsepower for $5.00! ThingSpeak.com • • • • • ThingSpeak.com er skytjenesten som mottar alle data du logger, og som gjør dem tilgjengelig på mobil, pc og annet. I fanen [Channel Settings] setter du navn på sensorene som skal sende data til skytjenesten. De må naturligvis aktiveres først [add field] … Channe ID benyttes både for å sende til ’din’ teneste, men også når du skal hente ut data fra tjenesten. ThingSpeak gir kun tilgang til å hente ut en graf om gangen. Det er med andre ord ikke mulig å kombinere flere grafer dersom du har flere sensorer på samme gjæringskar / kjøleskap / kjølerom. Da må du bruke en annen tjeneste som i sin tur henter data fra ThingSpeak.com Følgende adresse henter data fra min Channel ID fra Field 1. [Make Public ?] må være haket av for å slippe [Read API Key] Dynamic betyr at grafen oppdaterer seg selv automatisk: – • http://api.thingspeak.com/channels/26673/charts/1?dynamic=true Du kan legge på mange tilleggsatributter i lenken for å få frem annen info. Alle begynner med & &title=Mitt_Bryggeri &days=10 &width=auto &height=500 &color=368ff2 &bgcolor=e9f3fa &yaxis=Temp.%E2%84%83
© Copyright 2024