Tartalomjegyzék:

WiFi hőmérséklet naplózó (ESP8266 esetén): 11 lépés (képekkel)
WiFi hőmérséklet naplózó (ESP8266 esetén): 11 lépés (képekkel)

Videó: WiFi hőmérséklet naplózó (ESP8266 esetén): 11 lépés (képekkel)

Videó: WiFi hőmérséklet naplózó (ESP8266 esetén): 11 lépés (képekkel)
Videó: ESP8266 ESP01 WI-FI-UART | Программирование LDmicro-Roboremo 2024, November
Anonim
Image
Image
Anyagok
Anyagok

Szia, örülök, hogy itt látlak. Remélem, hogy ebben az oktatóanyagban hasznos információkat talál. Nyugodtan küldjön nekem javaslatokat, kérdéseket,… Íme néhány alapvető adat és a projekt gyors áttekintése. Mobil felhasználóknak: Videó. Hadd tudjam meg, mit gondol a projektről a megjegyzések részben, köszönöm. Nemrég vettem egy NodeMcu (esp8266 alapú) fórumot, hogy kipróbáljam, így ez nem igazán fejlett projekt. De működik, és ez az, amire szükségem van, így rendben van. Ennek az adatgyűjtőnek a fő funkciója a hőmérséklet gyűjtése és a szerverre való mentése. Ez lehetővé teszi a felhasználók számára, hogy online ellenőrizzék az adatokat és a grafikonokat, még akkor is, ha nincsenek azonos helyen a naplózóban (például egy időjárásállomásnál). Egy másik hasznos funkció a kódban található OTA frissítés, amely lehetővé teszi a felhasználó számára a szoftver egyszerű frissítését és testreszabását. Elemzek két érzékelőt és a hozzájuk tartozó beszerzési módszert, hogy egyensúlyt teremtsek az előnyök és hátrányok között.

Spoiler: némi tesztelés után rájöttem, hogy a DS18B20 -hoz hasonló digitális érzékelő a legjobb megoldás, mert stabilitást és nagyobb pontosságot kínál. Már vízálló és a kábellel együtt.

1. lépés: Anyagok

Anyagok
Anyagok
Anyagok
Anyagok
Anyagok
Anyagok

Ez egy minimális projekt, csak kevés külső összetevővel, ezért a BOM lista nagyon rövid lesz. Lássuk azonban, milyen anyagot kérnek:

  • NodeMcu V3 (vagy bármely kompatibilis ESP8266 μ processzor);
  • RGB led (közös anód);
  • Ellenállások LED -ekhez (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Maxim integrált hőmérő);
  • LM35 (Texas Instrument hőmérő);
  • Külső akkumulátor (opcionális);
  • Kábel;
  • Csatlakozó (hogy "fejlettebb" legyen);
  • Box (opcionális, ismét "fejlettebb");
  • LED tartó (opcionális);

Megjegyzés: Mint mondtam, a két módszer közül egyet kell választania. Ha az LM35 hőmérőt választja, szüksége lesz néhány más alkatrészre:

  • Attiny45/85;
  • AVR programozó (vagy Arduino, mint internetszolgáltató);
  • Ellenállás (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • 2,54 mm -es szalagcsatlakozó (opcionális)
  • Dióda (2x1N914)
  • Perfboard vagy PCB;

2. lépés: Az érzékelő kiválasztása

Az érzékelő kiválasztása
Az érzékelő kiválasztása

Az érzékelő kiválasztása nehéz lépés lehet: manapság rengeteg átalakító (a TI 144 különböző elemet kínál) analóg és digitális, különböző hőmérsékleti tartományokkal, pontossággal és tokokkal. Analóg érzékelők (46 alkatrész a TI -től):

  • Az adatgyűjtő könnyen átvihető a hőmérsékletről egy másik mennyiségre (feszültség, áram,…);
  • Lehet egy kicsit olcsóbb;
  • Könnyen használható, mivel nem igényel külön könyvtárat;

Hátrányok:

  • ADC (amely befolyásolhatja a mérés pontosságát) és más külső összetevők szükségesek. Mivel az esp8266 csak egy ADC -vel rendelkezik (és nem igazán pontos), javaslom egy külső használatát.
  • Speciális kábelre van szükség zajcsökkentéssel, mivel bármely indukált feszültség megváltoztathatja az eredményt.

Kis gondolkodás után úgy döntöttem, hogy az LM35 -öt használom, egy lineáris érzékelőt, +10 mV/° C skálázási tényezővel, 0,5 ° C pontossággal és nagyon alacsony árammal (kb. 60uA), 4 V és 30 V közötti üzemi feszültséggel. További részletekért javaslom, hogy nézze meg az adatlapot: LM35.

Digitális érzékelők (erősen ajánlott) Előnyök:

Szinte minden külső alkatrész szükséges;

Integrált ADC

Hátrányok:

Kérjen könyvtárat vagy szoftvert a digitális jel dekódolására (I2C, SPI, soros, egy vezeték,…);

Drágább;

Azért választottam a DS18B20 -at, mert találtam egy 5 db vízálló érzékelőt az Amazon -on, és mert széles körben dokumentálták az interneten. Fő jellemzője a 9-12 bites mérés, 1 vezetékes busz, 3,0-5,5 tápfeszültség, 0,5 ° C pontosság. Ismét részletesebben itt található az adatlap: DS18B20.

3. lépés: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Elemezzük, hogyan valósítottam meg a külső ADC -t és az LM35 hőmérő egyéb funkcióit. Találtam egy kábelt három vezetékkel, az egyik árnyékolással és kettő anélkül. Úgy döntöttem, hogy hozzáadok egy leválasztó kondenzátort, hogy stabilizáljam a tápfeszültséget az érzékelő közelében. Az analóg hőmérséklet digitálisra konvertálásához Attiny85 mikroprocesszort használtam egy dip8 csomagban (további információért lásd az adatlapot: attiny85). Számunkra a legfontosabb a 10 bites ADC (nem igazán a legjobb, de számomra elég pontos). Az Esp8266 -al való kommunikációhoz úgy döntöttem, hogy a soros kommunikációt használom, szem előtt tartva, hogy az esp8266 3.3V -val és attiny85 -tel működik 5 V -nál (mivel szükség van az érzékelő áramellátására). Ennek eléréséhez egy egyszerű feszültségosztót használtam (lásd a vázlatot). A negatív hőmérséklet leolvasásához néhány külső komponenst kell hozzáadnunk (2x1N914 és 1x18k ellenállás), mivel nem akarok negatív tápegységet használni. Itt a kód: TinyADC tároló. Megjegyzés: a kód összeállításához telepítenie kell attiny to ide (ezt illessze be az opcióba: https://drazzy.com/package_drazzy.com_index.json), ha nem tudja, hogyan kell csinálni, akkor csak keressen a Google -on. Vagy töltsön fel.hex fájlt közvetlenül.

4. lépés: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Ezeket az érzékelőket az Amazon -tól vettem (5 ára körülbelül 10 €). Rozsdamentes acél burkolattal és 1 m hosszú kábellel érkezett. Ez az érzékelő 9-12 bites hőmérsékleti adatokat tud visszaadni. Sok érzékelő csatlakoztatható ugyanabba a csapba, mivel mindegyik egyedi azonosítóval rendelkezik. A DS18B20 esp8266 -hoz való csatlakoztatásához kövesse a sematikus ábrát (második fotó). Mivel úgy döntöttem, hogy a naplózómnak három szondája lett volna, meg kellett különböztetnem, melyik melyik. Ezért gondoltam, hogy megadok nekik egy színt, amely szoftveren keresztül kapcsolódik a címükhöz. Hőre zsugorodó csövet használtam (harmadik kép).

5. lépés: ESP8266 kód

ESP8266 kód
ESP8266 kód
ESP8266 kód
ESP8266 kód

Mivel új vagyok ezen a világon, úgy döntöttem, hogy sok könyvtárat használok. A bevezetőben elmondottak szerint a fő jellemzők a következők:

  • OTA frissítés: nem kell minden alkalommal csatlakoztatnia az esp8266 -ot a számítógéphez, amikor fel kell töltenie a kódot (csak az első alkalommal kell megtennie);
  • Vezeték nélküli kezelő, ha a vezeték nélküli hálózat megváltozik, akkor nem kell újratölteni a vázlatot. Egyszerűen újra konfigurálhatja az esp8266 hozzáférési ponthoz csatlakozó hálózati paramétereket;
  • Thingspeak adatok továbbítása;
  • Mind az LM35, mind a DS18B20 támogatott;
  • Egyszerű felhasználói felület (az RGB LED néhány hasznos információt jelez);

Kérem, kérjen bocsánatot, mert a szoftverem nem a legjobb, és nem igazán rendezett. Mielőtt feltöltené az eszközre, módosítania kell néhány paramétert, hogy illeszkedjen a kódhoz. Itt letöltheti a szoftvert. Gyakori LM35 és DS18B20 konfiguráció Az OTA frissítéshez meg kell változtatnia a pin definíciót, a tokent, a csatorna számát, a felhasználót és a jelszót. Vonal 15 -től 23 -ig.

#define red YOURPINHERE #define green YOURPINHERE

#define blue YOURPINHERE const char* host = "host cím kiválasztása"; // nem igazán szükséges, otthagyhatja az esp8266-webupdate const char* update_path = "/firmware"; // a frissítés címének módosítása ex: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char * update_password = "YOURPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

6. lépés: ESP8266 kód: LM35 felhasználó

Az attiny táblát az esp8266 -hoz kell csatlakoztatni, az ADC egység áramellátásához használja a VU és a G tűt. Ki kell választania, hogy melyik PIN -kódot szeretné használni a soros kommunikációhoz (hogy a hardver sorozatmentes maradjon a hibakeresés céljából). A Tx tűt ki kell választani, de valójában nem használják. (27. sor). SoftwareSerial mySerial (RXPIN, TXPIN); A tetején hozzá kell adnia: #define LM35USER

7. lépés: ESP8266 kód: DS18B20 felhasználó

Első műveletként meg kell határoznia az eszköz címét minden érzékelőhöz. Fordítsa le és programozza be ezt a kódot az esp -re, és keresse meg sorban az eredményeket. A kód itt található (keresse meg ezt a címet az oldalon: «Olvassa el az egyes DS18B20 belső címeket»). Csatlakoztasson csak egy érzékelőt a cím megszerzéséhez, az eredményeknek valahogy így kell lenniük (itt véletlen szám! Csak példa): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12Akkor módosítania kell a kódomat a szakaszban " Konfiguráció DS18B20 "(31-36. Sor)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (9 -től 12 -ig) #define delayDallas READINTERVAL // (Ezredmásodpercben a minimum 15 s vagy 15000mS) DeviceAddress blueSensor = {0x 0, 0x12}; // VÁLTOZTATÁS A CÍMÉVEL DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // VÁLTOZTATÁS CÍMÉVEL DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // VÁLTOZTATÁS CÍMÉVEL A tetején fel kell tüntetni: #define DSUSER

8. lépés: ESP8266 Kis trükk

ESP8266 Kis trükk
ESP8266 Kis trükk

Egy kis tesztelés után megállapítottam, hogy ha programozás nélkül csatlakoztatja az esp8266 -ot, addig nem futtatja a kódot, amíg egyszer nem nyomja meg a reset gombot. A probléma megoldásához némi kutatás után rájöttem, hogy fel kell húzni egy ellenállást 3.3V-ról D3-ra. Ez azt fogja mondani a processzornak, hogy töltse be a kódot a flash memóriából. Ezzel a módszerrel a D3 közvetlenül használható a DS18B20 érzékelők adatbeviteléhez.

9. lépés: Első használat

Első működés
Első működés
Első működés
Első működés

Ha helyesen töltötte fel a kódot, de soha nem használja a Wifi -kezelő könyvtárat, akkor ideje konfigurálni a wifi -kapcsolatot. Várjon, amíg az RGB LED gyorsabban villog, mint korábban, majd keresse meg mobiljával vagy számítógépével az "AutoConnectAp" nevű wifi -hálózatot, és csatlakozzon. A csatlakozás után nyissa meg a webböngészőt, és írja be a 192.168.4.1 parancsot, megtalálja a wifi kezelő grafikus felületét (lásd a fényképeket), és nyomja meg a "Wifi konfigurálása" gombot. Várja meg, amíg az esp8266 megkeresi a wifi -hálózatokat, és válassza ki a kívánt hálózatot. Helyezze be a jelszót, és nyomja meg a "mentés" gombot. Az Esp8266 újraindul (ezúttal nem érdekel az RGB led, mert véletlenszerű információkat ad ki), és csatlakozik a hálózathoz.

10. lépés: Következtetés

Következtetés
Következtetés
Következtetés
Következtetés
Következtetés
Következtetés
Következtetés
Következtetés

Végül itt van egy grafikon, amelyet az adatgyűjtőből vettem működés közben, miközben naplóztam a fagyasztó hőmérsékletét. Narancssárgában a DS18B20, kékben pedig az LM35 és áramköre látható. Láthatja a legnagyobb különbséget a pontosságban a digitális és az analóg érzékelő között (a rossz "ADC áramkörrel"), amelyek néhány nem fizikai adatot szolgáltatnak. Összefoglalva, ha fel szeretné építeni ezt a naplózót, javaslom a DS18B20 digitális hőmérséklet-érzékelő használatát, mivel könnyebben olvasható és szinte "plug and play", stabilabb és pontosabb, 3,3 V -on működik, és sok érzékelőhöz csak egy tű szükséges. Köszönöm a figyelmet, remélem, hogy ez a projekt jó lesz Önnek és talált néhány hasznos információt. Aki pedig meg akarja valósítani, annak szeretném, ha minden szükséges információt megadnék. Ha nem esett szabadon mindent kérdezni, szívesen válaszolok minden kérdésre. Mivel nem vagyok angolul beszélő, ha valami nem stimmel vagy nem érthető, kérjük, jelezze. Ha tetszett ez a projekt, kérjük, szavazzon rá a versenyekre, és/vagy hagyjon megjegyzést ☺. Arra ösztönöz, hogy folyamatosan frissítsem és közzétegyem az új tartalmakat. Köszönöm.

Ajánlott: