Sisällysluettelo:
- Vaihe 1: BoM - Bill of Material
- Vaihe 2: Hw
- Vaihe 3: Micropython, REPL, Jupyter
- Vaihe 4: Anturit
- Vaihe 5: Kaikkien anturitietojen tallentaminen ja näyttäminen paikallisesti
- Vaihe 6: Paikallisen asemakoodin suorittaminen ESP-käynnistyksen yhteydessä
- Vaihe 7: ESP: n liittäminen paikalliseen WiFi -verkkoon
- Vaihe 8: ThingSpeak
- Vaihe 9: MQTT -protokolla ja ThingSpeak -yhteys
- Vaihe 10: Anturidataloggeri
- Vaihe 11: ThingView -sovellus
- Vaihe 12: Johtopäätös
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-23 14:42
Edellisessä opetusohjelmassani, MicroPython ESP: ssä Jupyterin avulla, opimme asentamaan ja suorittamaan MicroPythonin ESP -laitteeseen. Käyttämällä Jupyter-muistikirjaa kehitysympäristönä opimme myös lukemaan antureista (lämpötila, kosteus ja kirkkaus). Käytämme useita kommunikaatioprotokollia ja -menetelmiä, analogista, digitaalista, 1-johtimista ja I2C, tämä viimeinen näyttää kaapatut tiedot OLED -näytöllä.
Nyt tästä opetusohjelmasta, jossa käytetään MQTT -protokollaa, saamme kaikki kaapatut tiedot lähettämällä ne IoT -palveluun, ThingSpeak.com ja mobiilisovellukseen (Thingsview), jossa voimme kirjautua ja pelata datalla.
Tässä projektimme lohkokaavio:
Vaihe 1: BoM - Bill of Material
- NodeMCU - 8,39 dollaria
- DHT22 lämpötila- ja suhteellisen kosteuden anturi - 9,95 USD
- Vedenpitävä lämpötila -anturi DS18B20 - 5,95 USD
- OLED-näyttö SSD1366- USD 8,99 (valinnainen)
- LDR (1x)
- LEDit (1x) (valinnainen)
- Painike (1x)
- Vastus 4K7 ohmia (2x)
- Vastus 10K ohmia (1x)
- Vastus 220 ohmia (1x)
Vaihe 2: Hw
Tässä käyttämämme Hw on pohjimmiltaan sama kuin opetusohjelmassa: Micropython ESP: ssä Jupyterin avulla. Katso siitä kaikki HW -liitännät.
Poikkeuksena on Servo, jota ei käytetä tässä projektissa.
Yllä näet koko HW: n. Liitä laitteet siellä kuvatulla tavalla.
Vaihe 3: Micropython, REPL, Jupyter
ESP -laitteeseen on ladattava Micropython -tulkki. Kun olet ladannut, sinun on ohjelmoitava ESP käyttämällä mitä tahansa käytettävissä olevia tapoja/IDE: itä, kuten:
- REPL
- Jupyter -muistikirja
- Mu
- ESPCut (vain Windows)
- … jne
Opetusohjelmassani, Micropython ESP: ssä Jupyterin avulla, kerroin kuinka ladata ja asentaa MicroPython -tulkki, ESPTool ESP -laitteiden hallintaan ja kuinka käyttää Jupyter -muistikirjaa kehitysympäristönä. Voit vapaasti käyttää sitä, mikä on sinulle mukavampaa.
Teen yleensä kaiken kehityksen Jupyter -muistikirjalla, ja kun saan lopullisen koodin, kopioin ne Geanylle ja lataan sen ESP: hen Ampyn avulla.
Vaihe 4: Anturit
Asennetaan kirjastot, määritellään GPIO, luodaan objekteja, toimintoja kaikille antureille erikseen:
A. DHT (lämpötila ja kosteus)
Asennetaan DHT -kirjasto ja luodaan objekti:
dht -tuonnista DHT22
koneen tuonnista Nasta dht22 = DHT22 (nasta (12))
Luo nyt toiminto DHT -anturin lukemiseksi:
def readDht ():
dht22.measure () palauttaa dht22.temperature (), dht22.humidity () Testaa DHT -toiminto
tulosta (readDht ())
Tuloksen pitäisi olla esimerkiksi:
(17.7, 43.4)
DS18B20 (ulkoinen lämpötila)
Asennetaan kirjastot ja luodaan objekti:
tuo onewire, ds18x20
tuontiaika # Määritä, mikä nasta 1-johtiminen laite liitetään ==> nasta 2 (D4) dat = Nasta (2) # luo onewire-objekti ds = ds18x20. DS18X20 (onewire. OneWire (dat)) Etsi laitteita bu
anturit = ds.scan ()
tulosta ("löydetyt laitteet:", anturit)
Tulostetulla tuloksella ei ole oikeastaan merkitystä, tarvitsemme ensimmäisen havaitun anturin: anturit [0]. Ja nyt voimme rakentaa toiminnon anturitietojen lukemiseksi:
def readDs ():
ds.convert_temp () time.sleep_ms (750) return ds.read_temp (anturit [0])
On aina tärkeää testata anturi luodulla toiminnolla
tulosta (lukuDs ()) Jos saat lämpötila -arvon, koodi on oikea
17.5
LDR (kirkkaus)
LDR käyttää ESP: n analogista tappia (se on vain yksi ESP8266: n tapauksessa ja useita ESP32: een).
Katso lisätietoja ESP32 -opetusohjelmastani.
Sama kuin ennen:
# tuonti kirjasto
koneen tuonnista ADC # Määrittele objekti adc = ADC (0) Yksinkertainen toiminto: adc.read () voidaan lukea ADC -arvo. Muista kuitenkin, että sisäinen ADC muuntaa jännitteet välillä 0 ja 3,3 V vastaavissa digitaalisissa arvoissa, jotka vaihtelevat 0: sta 1023. Kun olemme kiinnostuneita "Luminosity": stä, pidämme Max -valoa enimmäisarvoina anturista (minun tapaus 900) ja vähimmäisvalo, joka minun tapauksessani on 40. Näillä arvoilla voimme "kartoittaa" arvon 40 - 900 0-100%: n kirkkaudesta. Tätä varten luomme uuden toiminnon
def readLdr ():
lumPerct = (adc.read ()-40)*(10/86) # muuntaa prosentteina ("kartta") paluukierros (lumPerct)
Sinun on testattava toiminto käyttämällä tulostusta (readLDR ()). Tuloksen pitäisi olla kokonaisluku välillä o ja 100.
D. Painike (digitaalitulo)
Tässä käytämme painonappia digitaalisena anturina, mutta se voi olla toimilaitteen "kaiku" (Pumppu, joka on esimerkiksi kytketty päälle/pois).
# määritä nasta 13 tuloksi ja aktivoi sisäinen vetovastus:
painike = Nasta (13, Pin. IN, Pin. PULL_UP) # Painikkeen tilan lukutoiminto: def readBut (): return button.value ()
Voit testata painikkeen, joka lukee tulostustoiminnon (readBut ()). Ilman painamista tuloksen pitäisi olla "1". Painiketta painettaessa tuloksen pitäisi olla "0"
Vaihe 5: Kaikkien anturitietojen tallentaminen ja näyttäminen paikallisesti
Nyt kun olemme luoneet yhden toiminnon kullekin anturille, luomme viimeisen, joka lukee ne kaikki samanaikaisesti:
def colectData ():
temp, hum, = readDht () extTemp = readDs () lum = readLdr () butSts = readBut () paluulämpötila, hum, extTemp, lum, butSts Jos nyt käytät
tulosta (colectData ())
Tuloksena on tuple, joka sisältää kaikki antureista kaapatut tiedot:
(17.4, 45.2, 17.3125, 103, 1)
Voimme myös vaihtoehtoisesti näyttää nämä tiedot paikallisella näytöllä:
# tuo kirjasto ja luo objekti i2c
koneen tuonnista I2C i2c = I2C (scl = Pin (5), sda = Pin (4)) # tuonti kirjasto ja luo objekti olet tuonti ssd1306 i2c = I2C (scl = Pin (5), sda = Pin (4)) oled = ssd1306. SSD1306_I2C (128, 64, i2c, 0x3c) # luo funktio: def displayData (temp, hum, extTemp, lum, butSts): oled.fill (0) oled.text ("Temp:" + str (temp) + "oC", 0, 4) oled.text ("Hum:" + str (hum) + "%", 0, 16) oled.text ("ExtTemp:" + str (extTemp) + "oC", 0, 29) oled.text ("Lumin:" + str (lum) + "%", 0, 43) oled.text ("Button:" + str (butSts), 0, 57) oled.show () # näyttää tiedot toiminnolla displayData (temp, hum, extTemp, lumen, butSts)
Vaihtoehtoisesti sisällytän myös LED -merkkivalon, joka palaa, kun aloitamme antureiden lukemisen, ja sammuu, kun tiedot näytetään. Tämä auttaa varmistamaan, että ohjelma toimii, kun ESP on irrotettu tietokoneesta ja käynnissä automaattisesti.
Päätehtävä olisi siis:
# Päätoiminto kaikkien antureiden lukemiseen
def main (): # näyttää tietoja toiminnolla led.on () temp, hum, extTemp, lum, butSts = colectData () displayData (temp, hum, extTemp, lum, butSts) led.off ()
Joten suorittamalla main (), saamme anturitiedot näkyviin OLED -laitteeseen kuvan osoittamalla tavalla.
Vaihe 6: Paikallisen asemakoodin suorittaminen ESP-käynnistyksen yhteydessä
Voimme saada kaiken tähän mennessä kehitetyn yhdestä tiedostosta, joka suoritetaan ESP: llämme.
Avaa mikä tahansa tekstieditori ja ohita kaikki koodit:
# tuoda yleisiä kirjastoja
koneen tuonnista Nastan tuontiaika # määritä nasta 0 tulostusdiodina = Pin (0, Pin. OUT) # DHT dht -tuonnista DHT22 dht22 = DHT22 (Pin (12)) # DHT: n lukutoiminto def readDht (): dht22.measure () return dht22.temperature (), dht22.humidity () # DS18B20 import onewire, ds18x20 # Määritä, mikä nasta 1-johtiminen laite yhdistetään ==> nasta 2 (D4) dat = Pin (2) # Luo onewire objekti ds = ds18x20. pyöreä (ds.read_temp (anturit [0]), 1) # LDR koneen tuonnista *(10/86) # muunna prosentteina ("kartta") paluukierros (lumPerct) # määritä nasta 13 tuloksi ja aktivoi sisäinen vetovastus: painike = nasta (13, Pin. IN, Pin. PULL_UP) # Toiminto lukupainikkeen tilaan: def readBut (): return button.value () # Toiminto kaikkien tietojen lukemiseen: def cole ctData (): temp, hum, = readDht () extTemp = readDs () lum = readLdr () butSts = readBut () paluu lämpötila, hum, extTemp, lum, butSts # tuonti kirjasto ja luo objekti i2c koneen tuonnista I2C i2c = I2C (scl = Pin (5), sda = Pin (4)) # tuonti kirjasto ja luo objekti oled tuonti ssd1306 i2c = I2C (scl = Pin (5), sda = Pin (4)) oled = ssd1306. SSD1306_I2C (128, 64, i2c, 0x3c) # luo funktio: def displayData (temp, hum, extTemp, lum, butSts): oled.fill (0) oled.text ("Temp:" + str (temp) + "oC", 0, 4) oled.text ("Hum:" + str (hum) + "%", 0, 16) oled.text ("ExtTemp:" + str (extTemp) + "oC", 0, 29) oled. text ("Lumin:" + str (lum) + "%", 0, 43) oled.text ("Button:" + str (butSts), 0, 57) oled.show () # Päätoiminto kaikkien antureiden lukemiseen def main (): # näyttää tietoja toiminnolla led.on () temp, hum, extTemp, lum, butSts = colectData () displayData (temp, hum, extTemp, lum, butSts) led.off () ''-- ----- suorita päätoiminto -------- '' 'main ()
Tallenna se esimerkiksi nimellä localData.py.
Jos haluat käyttää tätä koodia suoraan päätelaitteessasi, tarvitset Ampyn.
Ensinnäkin päätelaitteessa ilmoitetaan Ampylle sarjaporttimme:
vie AMPY_PORT =/dev/tty. SLAB_USBtoUART
Nyt voimme nähdä tiedostot, jotka ovat ESP -juurihakemistomme sisällä:
ampy ls
Vastauksena saamme boot.py, joka on ensimmäinen tiedosto, joka suoritetaan järjestelmässä.
Käytämme nyt Ampyä lataamaan python -skriptimme LocalData.py nimellä /main.py, joten komentosarja suoritetaan heti käynnistyksen jälkeen:
ampy laita localData.py /main /py
Jos käytämme komentoa amp ls nyt, näet kaksi tiedostoa ESP: n sisällä: boot.py ja main.py
Jos ESP nollataan, ohjelma localData.py käynnistyy automaattisesti ja näyttää anturitiedot näytöllä.
Yllä oleva terminaalin tulostusnäyttö näyttää, mitä olemme tehneet.
Yllä olevalla koodilla näyttö näytetään vain kerran, mutta voimme määritellä silmukan main () -funktiolle, joka näyttää tietoja jokaisesta määritellystä aikavälistä (PUB_TIME_SEC) ja esimerkiksi kunnes painamme painiketta:
# silmukka hakee tietoja, kunnes painiketta painetaan
while button.value (): led.on () temp, hum, extTemp, lum, butSts = colectData () displayData (temp, hum, extTemp, lum, butSts) led.off () time.sleep (PUB_TIME_SEC)
Muuttuja PUB_TIME_SEC on ilmoitettava siihen mennessä, kun haluat näytteesi.
Parantaaksemme koodiamme enemmän, olisi hyvä ilmoittaa, että poistumme silmukasta, sillä määritämme kaksi uutta yleistä toimintoa, joista toinen on näytön tyhjentäminen ja toinen vilkuttaa LEDiä tietyn määrän kertoja.
# Selkeä näyttö:
def displayClear (): oled.fill (0) oled.show () # luo vilkkutoiminto def blinkLed (num): i alueella (0, num): led.on () unessa (0.5) led.off () nukkua (0,5)
Joten voimme nyt kirjoittaa pääfunktion () uudelleen:
while button.value ():
led.on () temp, hum, extTemp, lum, butSts = colectData () displayData (temp, hum, extTemp, lum, butSts) led.off () time.sleep (PUB_TIME_SEC) vilkkuuLed (3) displayClear ()
Lopullinen koodi voidaan ladata osoitteesta GitHub: localData.py ja myös Jupyter -muistikirja, jota käytetään koko koodin kehittämiseen: Jupyter Local Data Development.
Vaihe 7: ESP: n liittäminen paikalliseen WiFi -verkkoon
Verkkomoduulia käytetään WiFi -yhteyden määrittämiseen. WiFi -rajapintoja on kaksi, yksi asemalle (kun ESP8266 muodostaa yhteyden reitittimeen) ja toinen tukiasemaan (muille laitteille, jotka muodostavat yhteyden ESP8266: een). Tässä ESP yhdistetään paikalliseen verkkoon. Soitetaan kirjastoon ja määritetään verkkotiedot:
tuontiverkko
WiFi_SSID = "OMA SSID" WiFi_PASS = "SALASANASI"
Seuraavaa toimintoa voidaan käyttää ESP: n liittämiseen lähiverkkoon:
def do_connect ():
wlan = verkko. WLAN (verkko. STA_IF) wlan.aktiivinen (tosi), jos ei wlan.isconnected (): tulosta ('muodostetaan yhteys verkkoon …') wlan.connect (WiFi_SSID, WiFi_SSID), mutta ei wlan.isconnected (): pass print ('verkkoasetukset:', wlan.ifconfig ())
Toiminnon suorittamisen seurauksena saat IP -osoitteen:
do_connect ()
Tuloksena on:
verkkoasetukset: ('10.0.1.2 ',' 255.255.255.0 ', '10.0.1.1', '10.0.1.1 ')
Oliko minun tapauksessani 10.0.1.2, ESP: n IP -osoite.
Vaihe 8: ThingSpeak
Tässä vaiheessa opimme tallentamaan tietoja kaikista antureista ja näyttämään ne OLED -laitteessamme. Nyt on aika nähdä, miten nämä tiedot voidaan lähettää IoT -alustalle, ThingSpeakille.
Aloitetaanpa!
Ensinnäkin sinulla on oltava tili osoitteessa ThinkSpeak.com. Luo sitten kanava noudattamalla ohjeita ja merkitse muistiin kanavatunnuksesi ja Write API -avaimesi.
Yllä näet 5 kenttää, joita kanavassamme käytetään.
Vaihe 9: MQTT -protokolla ja ThingSpeak -yhteys
MQTT on julkaisu/tilausarkkitehtuuri, joka on kehitetty ensisijaisesti kaistanleveyden ja tehonrajoitteisten laitteiden yhdistämiseksi langattomien verkkojen kautta. Se on yksinkertainen ja kevyt protokolla, joka toimii TCP/IP -pistorasioiden tai WebSockets -kanavien yli. MQTT WebSocketsin kautta voidaan suojata SSL: llä. Julkaise/tilaa tilausarkkitehtuuri mahdollistaa viestien siirtämisen asiakaslaitteisiin ilman, että laitteen tarvitsee jatkuvasti kysyä palvelinta.
MQTT -välittäjä on viestinnän keskeinen kohde, ja se vastaa kaikkien viestien lähettämisestä lähettäjien ja oikeiden vastaanottajien välillä. Asiakas on mikä tahansa laite, joka muodostaa yhteyden välittäjään ja voi julkaista tai tilata aiheita päästäkseen käsiksi tietoihin. Aihe sisältää välittäjän reititystiedot. Jokainen asiakas, joka haluaa lähettää viestejä, julkaisee ne tiettyyn aiheeseen, ja jokainen asiakas, joka haluaa vastaanottaa viestejä, tilaa tietyn aiheen. Välittäjä toimittaa kaikki vastaavan aiheen viestit sopiville asiakkaille.
ThingSpeakilla on MQTT -välittäjä osoitteessa mqtt.thingspeak.com ja portti 1883. ThingSpeak -välittäjä tukee sekä MQTT -julkaisua että MQTT -tilausta.
Tässä tapauksessa käytämme: MQTT Publish
Kuva kuvaa aiheen rakennetta. Write API -avain on julkaistava. Välittäjä kuittaa oikean CONNECT -pyynnön CONNACKilla.
MQTT-protokollaa tuetaan Micropython-binaaritiedostojen sisäänrakennetussa kirjastossa-tätä protokollaa voidaan käyttää lähettämään tietoja ESP8266-laitteestasi WIFI-yhteyden kautta ilmaiseen pilvitietokantaan.
Käytämme umqtt.simple -kirjastoa:
osoitteesta umqtt.simple MQTTClient
Ja tietäen palvelintunnuksemme, on mahdollista luoda MQTT -asiakasobjekti:
PALVELIN = "mqtt.thingspeak.com"
client = MQTTClient ("umqtt_client", SERVER)
Nyt kun sinulla on ThingSpeak -kirjautumistietosi käsillä:
CHANNEL_ID = "YOUR CHANNEL ID"
WRITE_API_KEY = "AVAIN TÄSTÄ"
Luodaan MQTT -aiheemme:
topic = "kanavat/" + CHANNEL_ID + "/julkaise/" + WRITE_API_KEY
Lähetämme tietomme ThingSpeak IoT Service -palveluun käyttämällä luotua funktiota ja liitämme sen vastauksen tiettyihin datamuuttujiin:
lämpötila, hum, extTemp, lum, butSts = colectData ()
Kun nämä muuttujat on päivitetty, voimme luoda "MQTT -hyötykuorman":
hyötykuorma = "field1 ="+str (temp)+"& field2 ="+str (hum)+"& field3 ="+str (extTemp)+"& field4 ="+str (lum)+"& field5 ="+str (butSts)
Ja siinä se! Olemme valmiita lähettämään tietoja ThinsSpeakiin yksinkertaisesti käyttämällä alla olevia 3 koodiriviä:
client.connect ()
client.publish (aihe, hyötykuorma) client.disconnect ()
Jos nyt siirryt kanavasivullesi (kuten minun yllä), näet, että jokaisella viidestä kentästä on antureihin liittyviä tietoja.
Vaihe 10: Anturidataloggeri
Nyt kun tiedämme, että vain muutamalla koodirivillä on mahdollista ladata dataa IoT -palveluun, luodaan silmukkafunktio, joka tekee sen automaattisesti säännöllisin väliajoin (samanlainen kuin mitä olemme tehneet "Paikallisilla tiedoilla" ").
Käyttämällä samaa muuttujaa (PUB_TIME_SEC), joka on ilmoitettu aiemmin, yksinkertainen päätoiminto tietojen keräämiseksi jatkuvasti, kirjaamalla ne kanavallemme olisi:
vaikka totta:
lämpötila, hum, extTemp, lum, butSts = colectData () hyötykuorma = "field1 ="+str (temp)+"& field2 ="+str (hum)+"& field3 ="+str (extTemp)+"& field4 ="+ str (lum)+"& field5 ="+str (butSts) client.connect () client.publish (topic, payload) client.disconnect () time.sleep (PUB_TIME_SEC)
Huomaa, että vain "hyötykuorma" on päivitettävä, kun "aihe" liittyy kanavamme tunnistetietoihin eikä muutu.
Kun etsit ThingSpeak -kanavasivua, huomaat, että tiedot latautuvat jatkuvasti jokaiseen kenttään. Voit peittää LDR: n, laittaa kätesi lämpötila-/hum -anturien päälle, painaa painiketta jne. Ja katso, miten kanava "kirjaa" automaattisesti nämä tiedot tulevaa analyysiä varten.
Yleensä tietojen keräämisessä meidän pitäisi yrittää käyttää mahdollisimman vähän virtaa, joten emme käytä LEDiä tai näyttöä paikallisesti. Lisäksi se on tavallista ESP -laitteiden kanssa, laita ne "syvään lepotilaan", jossa mikroprosessori on vähimmäisenergiassa, kunnes on aika kerätä tietoja ja lähettää ne IoT -alustalle.
Mutta kun idea on oppinut, sisällytetään myös näyttö ja LED kuten aiemmin. Tällöin "logger" -toimintomme on:
while button.value ():
led.on () temp, hum, extTemp, lum, butSts = colectData () displayData (temp, hum, extTemp, lum, butSts) led.off () temp, hum, extTemp, lum, butSts = colectData () hyötykuorma = "field1 ="+str (temp)+"& field2 ="+str (hum)+"& field3 ="+str (extTemp)+"& field4 ="+str (lum)+"& field5 ="+str (butSts) -asiakas.connect () client.publish (topic, payload) client.disconnect () time.sleep (PUB_TIME_SEC) vilkkuuLed (3) displayClear ()
Koko microPython -skripti löytyy täältä: dataLoggerTS_EXT.py ja kehittämiseen käytetty Jupyter -muistikirja löytyvät myös täältä: IoT ThingSpeak Data Logger EXT.ipynb.
Voit ladata komentosarjan ESP: lle päätteessäsi komennolla:
ampy laita dataLoggerTS.py /main.py
Ja paina ESP - nollauspainiketta. ESP kerää tietoja ja kirjaa ne ThingSpeak.com -sivustolle, kunnes pohja pidetään painettuna (odota, että LED -valo vilkkuu 3 kertaa ja OLED sammuu).
Vaihe 11: ThingView -sovellus
Tallennetut tiedot voidaan tarkastella suoraan ThingSpeak.com -sivustolla tai APP: n, esimerkiksi ThingsView!
ThingView on CINETICAn kehittämä APP, jonka avulla voit visualisoida ThingSpeak -kanavasi helposti, syötä vain kanavatunnus ja olet valmis lähtemään.
Julkisilla kanavilla sovellus noudattaa ikkunoiden asetuksia: väri, aikataulu, kaavion tyyppi ja tulosten määrä. Nykyinen versio tukee viiva- ja sarakekaavioita, spline -kaaviot näytetään viivakaavioina.
Yksityisten kanavien tiedot näytetään oletusasetuksilla, koska yksityisten ikkunoiden asetuksia ei voi lukea vain API -avaimella.
ThingView -sovelluksen voi ladata Android- ja IPHONE -laitteille.
Vaihe 12: Johtopäätös
Kuten aina, toivon, että tämä projekti voi auttaa muita löytämään tiensä elektroniikan jännittävään maailmaan!
Lisätietoja ja lopullisen koodin löydät GitHub -varastostani: IoT_TS_MQTT
Lisää projekteja löydät blogistani: MJRoBot.org
Terveisiä etelästä maailmasta!
Nähdään seuraavassa ohjeessani!
Kiitos, Marcelo
Suositeltava:
Useiden ESP-keskustelujen tekeminen ESP-NOW: n avulla ESP32: n ja ESP8266: n avulla: 8 vaihetta
Useiden ESP-keskustelujen tekeminen ESP-NYT: n avulla ESP32: n ja ESP8266: n avulla: Käynnissä olevassa projektissani tarvitsen useita ESP: itä puhuakseni keskenään ilman reititintä. Tätä varten käytän ESP-NOW-ohjelmaa langattoman viestinnän tekemiseen keskenään ilman ESP: n reititintä
ESP 32 -kameran suoratoistovideo WiFi: n kautta - ESP 32 CAM Boardin käytön aloittaminen: 8 vaihetta
ESP 32 -kameran suoratoistovideo WiFi-yhteydellä | ESP 32 CAM Boardin käytön aloittaminen: ESP32-CAM on hyvin pieni kameramoduuli, jossa on ESP32-S-siru ja joka maksaa noin 10 dollaria. OV2640 -kameran ja useiden oheislaitteiden liittämiseen tarkoitettujen GPIO -laitteiden lisäksi siinä on myös microSD -korttipaikka, joka voi olla hyödyllinen t
Esp 8266 Esp-01: n käytön aloittaminen Arduino IDE: n kanssa Esp -levyjen asentaminen Arduino Ide -ohjelmaan ja Esp -ohjelmointi: 4 vaihetta
Esp 8266 Esp-01: n käytön aloittaminen Arduino IDE: n kanssa Esp-levyjen asentaminen Arduino Ide -ohjelmaan ja Esp-ohjelmointi: Tässä ohjeessa opimme asentamaan esp8266-levyt Arduino IDE: hen ja kuinka ohjelmoida esp-01 ja ladata koodi siihen. tämä ja useimmat ihmiset kohtaavat ongelmia
ESP – ESP -viestintä: 4 vaihetta
ESP – ESP -viestintä: Tämä opetusohjelma auttaa sinua korvaamaan muut lähetin -vastaanotinmoduulit mihin tahansa muuhun projektiin, joka sisältää langattoman viestinnän. Käytämme ESP8266 -pohjaista korttia, toinen WiFi -STA -tilassa ja toinen WiFi -AP -tilassa, NodeMCU V3 on valintani tähän projektiin
Koksikoneen tasonilmaisin - nyt puhe!: 6 vaihetta (kuvilla)
Koksikoneen tasonilmaisin-nyt puhetta !: Tämä projekti on remix Coke Machine Can Level -tunnistimestani (https://www.instructables.com/id/Coke-Machine-Can-Level-Detector/) uusilla antureilla , ja puhutun äänen lisääminen! Kun tein ensimmäisen tasonilmaisimen, lisäsin pietsosummerin