Innehållsförteckning:

WiFi Temperature Logger (med ESP8266): 11 steg (med bilder)
WiFi Temperature Logger (med ESP8266): 11 steg (med bilder)

Video: WiFi Temperature Logger (med ESP8266): 11 steg (med bilder)

Video: WiFi Temperature Logger (med ESP8266): 11 steg (med bilder)
Video: Introduction to NodeMCU ESP8266 WiFi Development board with HTTP Client example- Robojax 2024, November
Anonim
Image
Image
Material
Material

Hej, kul att se dig här. Jag hoppas att du i denna instruktör kommer att hitta användbar information. Skicka mig gärna förslag, frågor, … Här är några grundläggande data och en snabb översikt över projektet. För mobilanvändare: Video. Låt mig veta vad du tycker om projektet i kommentarsfältet, tack. Jag har nyligen köpt ett NodeMcu (esp8266 -baserat) kort bara för att prova så det här är inget riktigt avancerat projekt. Men det fungerar och det är vad jag behöver, så det är ok. Huvudfunktionen för denna datalogger är att samla temperatur och spara den till en server. Detta låter användarna kontrollera data och diagram online även när de inte är på samma plats för loggaren (till exempel för en väderstation). En annan användbar funktion är OTA -uppdateringen som ingår i koden som gör att användaren enkelt kan uppdatera och anpassa programvaran. Jag ska analysera två sensorer och deras relaterade förvärvsmetod för att göra en balans mellan alla fördelar och nackdelar.

Spoiler: efter lite tester fann jag att en digital sensor som DS18B20 är den bästa lösningen eftersom den erbjuder stabilitet och högre noggrannhet. Det är redan vattentätt och med kabeln.

Steg 1: Material

Material
Material
Material
Material
Material
Material

Detta är ett minimalt projekt med endast få externa komponenter, för detta kommer listan BOM att bli riktigt kort. Låt oss dock se vilket material som efterfrågas:

  • NodeMcu V3 (eller någon kompatibel ESP8266 mikroprocessor);
  • RGB -led (vanlig anod);
  • Motstånd för LED (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Maxim integrerad termometer);
  • LM35 (Texas Instrument -termometer);
  • Externt batteri (tillval);
  • Kabel;
  • Anslutning (för att göra det mer "avancerat");
  • Box (valfritt, igen för att göra det mer "avancerat");
  • LED -hållare (tillval);

Obs: Som jag sa måste du välja en av de två metoderna. Om du väljer LM35 -termometer behöver du några andra komponenter:

  • Attiny45/85;
  • AVR -programmerare (eller Arduino som ISP);
  • Motstånd (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • 2,54 mm bandkontakt (tillval)
  • Diod (2x1N914)
  • Perfboard eller PCB;

Steg 2: Välja sensor

Välja sensor
Välja sensor

Att välja sensor kan vara ett svårt steg: idag finns det massor av givare (TI erbjuder 144 olika element) både analoga och digitala med olika temperaturintervall, noggrannhet och fall. Analoga sensorer (46 delar tillgängliga från TI): Fördelar:

  • Dataloggern kan enkelt ändras från temperatur till en annan mängd (spänning, ström, …);
  • Kan vara lite billigare;
  • Lätt att använda eftersom det inte kräver något särskilt bibliotek;

Nackdelar:

  • Kräver ADC (som kan påverka mätningens noggrannhet) och andra externa komponenter. Eftersom esp8266 bara har en ADC (och inte riktigt exakt) skulle jag föreslå att använda en extern.
  • Behöver dedikerad kabel med brusavstötning eftersom eventuell induktion av spänning kan förändra resultatet.

Efter lite funderande bestämde jag mig för att använda LM35, en linjär sensor med +10mV/° C skalfaktor med 0,5 ° C noggrannhet och en mycket låg ström (ca 60uA) med en driftspänning från 4V till 30V. För mer information föreslår jag att du ser databladet: LM35.

Digitala sensorer (rekommenderas starkt) Fördelar:

Nästan alla externa komponenter behövs;

Integrerad ADC

Nackdelar:

Begär bibliotek eller programvara för att avkoda den digitala signalen (I2C, SPI, Serial, One Wire, …);

Dyrare;

Jag har valt DS18B20 eftersom jag hittade en uppsättning med 5 vattentäta sensorer på Amazon och för att det är mycket dokumenterat på internet. Huvudfunktionen är 9-12bit mätning, 1-tråds buss, 3,0 till 5,5 matningsspänning, 0,5 ° C noggrannhet. Återigen, för mer detaljer här är databladet: DS18B20.

Steg 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Låt oss analysera hur jag har implementerat den externa ADC och andra funktioner för LM35 -termometern. Jag hittade en kabel med tre ledningar, en med skärmning och två utan. Jag bestämde mig för att lägga till en avkopplingskondensator för att stabilisera matningsspänningen nära sensorn. För att konvertera analog temperatur till digital har jag använt Attiny85 mikroprocessor i ett dip8 -paket (igen för mer information se databladet: attiny85). Det viktigaste för oss är 10 -bitars ADC (inte riktigt den bästa men tillräckligt exakt för mig). För att kommunicera med Esp8266 bestämde jag mig för att använda seriell kommunikation med tanke på att esp8266 fungerar med 3.3V och attiny85 vid 5V (eftersom den behöver för att driva sensorn). För att uppnå det använde jag en enkel spänningsdelare (se schemat). För att kunna läsa negativ temperatur måste vi lägga till några externa komponenter (2x1N914 och 1x18k motstånd), eftersom jag inte vill använda negativ strömförsörjning. Här är koden: TinyADC -arkiv. Obs: för att kompilera den här koden måste du installera attiny to ide (infoga detta i alternativet: https://drazzy.com/package_drazzy.com_index.json), om du inte vet hur du gör det, sök bara på Google. Och ladda upp.hex -filen direkt.

Steg 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Jag köpte dessa sensorer från Amazon (5 kostar cirka 10 €). Den kom med ett lock av rostfritt stål och en kabel på 1 m längd. Denna sensor kan returnera 9 till 12 bitars temperaturdata. Massor av sensorer kan anslutas till samma stift eftersom alla har ett unikt ID. För att ansluta DS18B20 till esp8266 kan du bara följa schemat (andra fotot). Eftersom jag har bestämt att min logger skulle ha haft tre sonder, har jag varit tvungen att skilja vilken som är vilken. Så jag tänkte ge dem en färg som är associerad via programvara till deras adress. Jag har använt något termokrympbart rör (tredje bilden).

Steg 5: ESP8266 -kod

ESP8266 -kod
ESP8266 -kod
ESP8266 -kod
ESP8266 -kod

Eftersom jag är ny i den här världen bestämde jag mig för att använda många bibliotek. Som sagt i inledningen är huvuddragen:

  • OTA -uppdatering: du behöver inte ansluta esp8266 till din dator varje gång du behöver ladda upp koden (du måste bara göra det första gången);
  • Trådlös chef, om det trådlösa nätverket ändras behöver du inte ladda upp skissen igen. Du kan helt enkelt konfigurera nätverksparametrarna igen som ansluter till esp8266 -åtkomstpunkten;
  • Thingspeak dataöverföring;
  • Både LM35 och DS18B20 stöds;
  • Enkelt användargränssnitt (RGB -LED indikerar lite användbar information);

Ursäkta mig eftersom min programvara inte är den bästa och att den inte är riktigt välordnad. Innan du laddar upp till enheten måste du ändra några parametrar för att passa koden till din installation. Här kan du ladda ner programvaran. Vanlig LM35- och DS18B20 -konfiguration Du måste ändra pin -definition, token, kanalnummer, användare och lösenord för OTA -uppdatering. Linje från 15 till 23.

#define red YOURPINHERE #define green YOURPINHERE

#define blue YOURPINHERE const char* host = "välj värdadress"; // verkligen inte behövs kan du lämna esp8266-webupdate const char* update_path = "/firmware"; // för att ändra adressen för uppdatering ex: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char * update_password = "YOURPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

Steg 6: ESP8266 Kod: LM35 -användare

Du måste ansluta attiny -kortet till esp8266, för att driva ADC -enheten använder du VU -stiftet och G -stiftet. Du måste välja vilken pin du vill använda för seriell kommunikation (för att hålla maskinvaran seriell fri för felsökning). Tx -stift måste väljas men används inte riktigt. (Rad 27). SoftwareSerial mySerial (RXPIN, TXPIN); På toppen måste du lägga till: #define LM35USER

Steg 7: ESP8266 -kod: DS18B20 -användare

Som första operation måste du identifiera enhetens adress för varje sensor. Kompilera och programmera denna kod till esp och leta i följd efter resultaten. Koden finns här (sök efter denna titel på sidan: «Läs enskilda DS18B20 interna adresser»). Anslut bara en sensor för att få adressen, resultaten ska vara ungefär så här (slumpmässigt tal här! Precis som exempel): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12Därefter måste du ändra min kod i avsnittet " Konfiguration för DS18B20 "(rad 31 till 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION ((från 9 till 12) #definiera fördröjning Dallas READINTERVAL // (i millisekunder är minimum 15s eller 15000mS) DeviceAddress blueSensor = {0x11, 0x, 0x, 0x, 0x, 0x12}; // ÄNDRA MED DIN ADRESS DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ÄNDRA MED DIN ADRESS DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ÄNDRA MED DIN ADRESS På toppen måste du lägga till: #define DSUSER

Steg 8: ESP8266 Little Trick

ESP8266 Little Trick
ESP8266 Little Trick

Efter lite tester upptäckte jag att om du ansluter esp8266 utan programmering kommer koden inte att köras förrän du trycker på reset en gång. För att lösa detta problem upptäckte jag efter lite undersökning att du måste lägga till ett pull-up-motstånd från 3.3V till D3. Detta kommer att berätta för processorn att ladda koden från flashminne. Med den här metoden kan D3 direkt användas för datainmatning för DS18B20 -sensorer.

Steg 9: Första gången

Första gången operation
Första gången operation
Första gången operation
Första gången operation

Om du har laddat upp koden korrekt men aldrig använder Wifi Manager -biblioteket är det dags att konfigurera din wifi -anslutning. Vänta tills du ser RGB -lampan blinka snabbare än tidigare, sök sedan med din mobil eller dator wifi -nätverket som heter "AutoConnectAp" och anslut. Efter anslutning, öppna en webbläsare och ange 192.168.4.1, du hittar GUI -gränssnittet för wifi -chef (se bilder) och tryck på "Konfigurera Wifi". Vänta tills esp8266 söker efter wifi -nätverk och välj önskat. Sätt in lösenord och tryck på "spara". Esp8266 startar om (bryr mig inte om RGB -led den här gången eftersom det kommer ut lite slumpmässig information) och ansluter till nätverket.

Steg 10: Slutsats

Slutsats
Slutsats
Slutsats
Slutsats
Slutsats
Slutsats
Slutsats
Slutsats

I slutändan är här en graf tagen från dataloggern i aktion medan jag loggar min frys temperatur. I orange är DS18B20 och i blått LM35 och dess krets. Du kan se den största skillnaden i noggrannhet från digital till analog sensor (med min dåliga "ADC-krets") som ger några icke-fysiska data. Sammanfattningsvis, om du vill bygga denna logger föreslår jag att du använder den digitala temperatursensorn DS18B20 eftersom det är lättare att läsa och nästan "plug and play", det är mer stabilt och exakt, det körs på 3.3V och kräver bara en stift för många sensorer. Tack för uppmärksamheten, jag hoppas att det här projektet är bra för dig och du har hittade lite användbar information. Och för vem som vill inse det, jag önskar att jag gav all information som behövs. Om inte blev fri att fråga allt, svarar jag gärna på alla frågor. Eftersom jag inte är en engelsktalande, låt mig veta om något är fel eller inte är begripligt. Om du gillade det här projektet, rösta det för tävlingarna och/eller lämna en kommentar ☺. Det kommer att uppmuntra mig att fortsätta uppdatera och publicera nytt innehåll. Tack.

Rekommenderad: