Taula de continguts:
- Pas 1: crear un entorn de compilació
- Pas 2: Obteniu el codi font, configureu-lo i creeu-lo
- Pas 3: Connecteu components de maquinari
- Pas 4: Flash i execució
- Pas 5: interactuar
- Pas 6: detalls de la implementació
Vídeo: Tira LED WiFi + sensor de temperatura amb ESP8266: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Aquest tutorial descriu els passos per configurar un ESP8266 i fer-lo parlar tant amb un sensor de temperatura com amb una tira LED, alhora que es pot rebre l'entrada i enviar sortida amb MQTT per WiFi. El projecte es va fer per a un curs realitzat a Cal Poly San Luis Obispo la tardor del 2016 - CPE 439: Sistemes incrustats en temps real. L'objectiu general era demostrar la facilitat per crear una cosa "connectada" a Internet amb maquinari econòmic.
Subministraments / equips necessaris:
- Taula de desenvolupament NodeMCU ESP8266
- Tira LED WS2812B
- MAX31820 Sensor de temperatura
- Taula de pa
- Resistència de 4,7 K ohm
- Resistència de 220 ohm
- cables de pont
- cable micro-usb
- PC (o màquina virtual) que executa Linux (per exemple, Ubuntu)
Supòsits / requisits previs:
- experiència amb l'ús d'eines de línia d'ordres i la instal·lació de paquets en una distribució basada en debian
- comprensió bàsica de la sintaxi de Makefile
- connexió de cables
Pas 1: crear un entorn de compilació
Per construir el projecte, necessitareu esp-open-sdk instal·lat a la vostra màquina. Seguiu l'enllaç i llegiu les instruccions de construcció. En resum, feu algunes ordres sudo apt-get per instal·lar dependències, un clon git --recursiu per clonar / descarregar esp-open-sdk i, finalment, una ordre make per construir esp-open-sdk.
Mireu-me
Pas 2: Obteniu el codi font, configureu-lo i creeu-lo
Ara que es construeix esp-open-sdk, cloneu el dipòsit del projecte.
git clone
Canvieu al directori del projecte, creeu una carpeta.local i copieu la configuració d'exemple.
cd esp-rtos-tests
mkdir -p.local cp settings.example.mk.local / settings.mk
Ara obriu.local / settings.mk amb qualsevol editor de text i canvieu la configuració següent:
- OPENSDK_ROOT: el camí d'accés absolut per a la ubicació de l'esp-open-sdk que heu creat al pas 1
- WIFI_SSID: l’SSID de la vostra xarxa WiFi
- WIFI_PASS: la contrasenya de la vostra xarxa WiFi
- PIXEL_COUNT: el nombre de píxels de la vostra banda LED WS2812B
Nota: Atès que aquest projecte utilitza SPI per conduir els LED i utilitza el NodeMCU 3.3v per subministrar-los, probablement no podreu conduir més de ~ 60 LED.
Nota: No cal canviar la resta de paràmetres, però si es pot fer-ho. Es recomana mantenir l'ordre de les prioritats de la tasca. Com més baix sigui el número de prioritat, menor serà la prioritat de la tasca.
Ara creeu el projecte:
fes exemples -C / cpe439
Si tot està configurat correctament, hauria de començar a compilar-se. Al final hauríeu de veure:
S'ha creat "firmware / cpe439.bin" amb èxit
Mireu-me
Pas 3: Connecteu components de maquinari
Ara que es compila el codi, és hora de connectar els nostres perifèrics.
Primer, enganxeu el NodeMCU a la taula de treball i, a continuació, utilitzeu cables de pont per fer les connexions tal com es mostra al diagrama.
Un parell de coses que cal tenir en compte:
- Important: la línia de dades WS2812B no és bidireccional. Si mireu atentament les marques del costat LED de la tira, hauríeu de veure petites fletxes que apunten una direcció. La sortida de D7 del NodeMCU ha de dirigir-se al WS2812B de la mateixa manera que el marcador de direcció, que es pot veure al diagrama si es fixa bé.
- Depenent del tipus de connectors que inclogui el vostre WS2812B, és possible que hàgiu de fer algunes modificacions perquè es connectin de manera segura a la placa de control. També podeu utilitzar clips de cocodril per connectar-los a cables jumper capaços de configurar taulers.
- Els pins MAX31820 tenen un pas més petit i són més prims que els ponts estàndard de 0,1 "/ 2,54 mm, cosa que els fa difícils de connectar. Una manera d’evitar-ho és utilitzar cables de pont femení a masculí, treure la caixa de plàstic del costat femení, A continuació, utilitzeu unes alicates per encertar els extrems del pont femení amb força al voltant dels passadors MAX31820 més petits.
Comproveu les connexions abans d’engegar el NodeMCU per no danyar els components.
Pas 4: Flash i execució
Parpellejant
Amb tot el maquinari connectat, connecteu el NodeMCU i feu flash amb l'ordre següent:
make flash -C examples / cpe439 ESPPORT = / dev / ttyUSB0
/ dev / ttyUSB0 és la com sèrie en què hauria d'aparèixer NodeMCU. Si teniu connectats altres dispositius de sèrie, pot aparèixer com / dev / ttyUSB1 o algun altre número. Per comprovar-ho, podeu executar aquesta ordre dues vegades, una amb NodeMCU desconnectat i una altra amb endollat, i compareu la diferència:
ls / dev / ttyUSB *
Un altre problema que podeu trobar és que no teniu permís per accedir al dispositiu. Dues maneres de solucionar-ho són:
-
Afegiu el vostre usuari al grup de marcatge:
marcatge sudo adduser $ (whoami)
- chmod o bufat el dispositiu:
sudo chmod 666 / dev / ttyUSB0 sudo chown $ (whoami): $ (whoami) / dev / ttyUSB0Es prefereix el primer mètode, ja que és una solució permanent.
Córrer
Després d’executar l’ordre flash amb èxit, el dispositiu arrencarà immediatament i començarà a executar el codi compilat. En qualsevol moment després de parpellejar, podeu executar l'ordre següent per veure la sortida en sèrie:
python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 / dev / ttyUSB0 500000 --raw -q
Per estalviar temps, podeu afegir-lo al fitxer ~ /.bashrc:
àlies nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 / dev / ttyUSB0 500000 --raw -q'
..que us permet escriure simplement "nodemcu" com a àlies d'aquesta ordre.
Si tot està configurat correctament, la vostra tira LED hauria d’il·luminar-se de color verd i, en sèrie, hauríeu de veure la connexió WiFi, obtenir una adreça IP, connectar-vos a MQTT i els missatges que indiquen que s’estan enviant les dades de temperatura.
connectat amb MyWiFiSSID, inici del client del canal 1dhcp … wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, mask: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init okRequest temp OKwifi_task: status = 5xQueue_task: (Re) connectar-se al servidor MQTT test.mosquitto.org … xQueueReceive + 25,50xQueueEnvia ok doneEnvia MQTT connect … MQTTv311donexQueueReceive +25,56 xQueueSend ok
Pas 5: interactuar
Suposant que el dispositiu s’hagi connectat a WiFi i al corredor MQTT amb èxit, podreu enviar i rebre dades del NodeMCU amb MQTT. Si encara no ho heu fet, instal·leu el paquet mosquitto clients:
sudo apt-get install mosquitto-clients
Ara hauríeu de poder utilitzar els programes mosquitto_pub i mosquitto_sub del vostre intèrpret d’ordres.
Rebre actualitzacions de temperatura
Per rebre dades de temperatura, voldrem utilitzar l'ordre mosquitto_sub per subscriure-us al tema al qual publica NodeMCU.
mosquitto_sub -h test.mosquitto.org -t / cpe439 / temp
Heu de veure les dades de temperatura (en centígrads) que arriben a la terminal.
+25.87+25.93+25.68…
Configuració remota del color de la tira LED
S'utilitza un format de missatge senzill per enviar valors RGB al NodeMCU mitjançant MQTT. El format de l'ordre té aquest aspecte:
r: RRRg: GGGb: BBB ~
On RRR, GGG i BBB corresponen als valors RGB (0-255) del color que voleu enviar. Per enviar la nostra comanda, utilitzarem l'ordre mosquitto_pub. Aquests són alguns exemples:
mosquitto_pub -h test.mosquitto.org -t / cpe439 / rgb -m 'r: 255g: 0b: 0 ~' # redmosquitto_pub -h test.mosquitto.org -t / cpe439 / rgb -m 'r: 0g: 255b: 0 ~ '# greenmosquitto_pub -h test.mosquitto.org -t / cpe439 / rgb -m' r: 0g: 0b: 255 ~ '# blau
Si voleu ser creatiu, cerqueu un selector de colors en línia com aquest i editeu l'ordre amb el valor RGB que trieu.
Ves amb compte
Els temes d’aquest projecte s’estableixen a / cpe439 / rgb i / cpe439 / temp en un broker MQTT públic, cosa que significa que no hi ha res que impedeixi que algú altre publiqui o subscrigui els mateixos temes que vosaltres. Per provar coses, fer servir un broker públic està bé, però per a projectes més seriosos voldreu connectar-vos a un broker amb protecció per contrasenya o executar el vostre propi broker al servidor.
Pas 6: detalls de la implementació
Onewire
L'ESP8266 només té 1 nucli, de manera llarga, tasques de bloqueig com esperar 750 ms perquè el sensor de temperatura realitzi una mesura de temperatura normalment provocaria que el WiFi no funcioni bé, i potser fins i tot un bloqueig. Al paradigma FreeRTOS, truqueu a vTaskDelay () per gestionar aquestes llargues esperes, però també hi ha moltes esperes més curtes necessàries entre lectures i escriptures que són més curtes que la marca del sistema FreeRTOS i, per tant, no es poden evitar amb vTaskDelay (). Per solucionar-ho també, el controlador onewire d’aquest projecte es va escriure perquè s’executés d’una màquina d’estat que funciona amb el temporitzador de maquinari de l’ESP8266, que pot provocar esdeveniments tan baixos com cada 10 microsegons, que és el més curt temps necessari entre les operacions de lectura / escriptura onewire. La majoria d’altres implementacions utilitzen una trucada de bloqueig a delay_us () o similar per gestionar-ho, però si constantment feu actualitzacions de temperatura, tots aquests retards comencen a sumar-se, donant lloc a una aplicació menys sensible. La font d'aquesta porció de codi es troba a la carpeta d'extres / onewire.
WS2812B
L'ESP8266 no té cap opció de maquinari estàndard per a PWM prou ràpida com per conduir tires LED a 800 KHz. Per solucionar-ho, aquest projecte utilitza el pin SPI MOSI per accionar els LED. Ajustant la freqüència de rellotge de SPI i canviant la càrrega útil de SPI, podeu aconseguir un control bastant fiable de cada LED individual. Aquest mètode no està exempt de defectes: per a un, els LED s’han d’alimentar amb una font de 5 V i s’ha d’afegir un canvi de nivell a la sortida del pin SPI. Però el 3.3V funciona. En segon lloc, hi ha fallades que es produeixen a causa d’un temps imperfecte que utilitza el mètode SPI. I el tercer és que ara no es pot utilitzar SPI per a res més. Aquí es pot trobar informació addicional sobre aquest mètode i la font d’aquesta porció de codi es troba a la carpeta extras / ws2812.
Un mètode més fiable per conduir tires LED és utilitzar i2s. Tanmateix, aquest mètode té molts hacks específics del xip, de manera que SPI semblava ser una millor opció com a exercici d'aprenentatge.
Recomanat:
Sensor de temperatura i carn de barbacoa a ESP8266 amb pantalla: 5 passos (amb imatges)
Sensor de temperatura i carn de barbacoa a l'ESP8266 amb pantalla: en aquest instructiu us mostraré com fer la vostra pròpia versió d'una eina de barbacoa que mesuri la temperatura actual de la vostra barbacoa i encengui un ventilador per encendre-la si cal. A més, també hi ha un sensor de temperatura del nucli de la càrrega
Punt d'accés (AP) ESP8266 NodeMCU per a servidor web amb sensor de temperatura DT11 i temperatura i humitat d'impressió al navegador: 5 passos
Punt d'accés (AP) ESP8266 NodeMCU per a servidor web amb sensor de temperatura DT11 i temperatura i humitat d'impressió al navegador: Hola nois en la majoria dels projectes que fem servir ESP8266 i en la majoria dels projectes fem servir ESP8266 com a servidor web perquè es pugui accedir a les dades a qualsevol dispositiu mitjançant wifi accedint al servidor web allotjat per ESP8266, però l’únic problema és que necessitem un enrutador que funcioni
Sensor de temperatura IoT amb ESP8266: 6 passos (amb imatges)
Sensor de temperatura IoT amb ESP8266: Em va inspirar a crear un sensor de temperatura que puc supervisar per wifi. Aquest projecte no és nou, però m’agrada la idea de tenir una capa intermèdia per a la seguretat i no haver d’obrir el port del router al dispositiu IoT. La idea bàsica es
Tira LED activada amb sensor de moviment amb temporitzador: 6 passos (amb imatges)
Tira LED activada per sensor de moviment amb temporitzador: Hola a tothom! Estic molt content d’escriure ara un altre instructiu. Aquest projecte es va produir quan un company instructable (?!) (David @dducic) em va contactar fa uns mesos demanant ajuda al disseny. Així que aquí teniu les especificacions originals: & q
SENSOR SUHU DENGAN LCD DAN LED (fabricació de sensor de temperatura amb LCD i LED): 6 passos (amb imatges)
SENSOR SUHU DENGAN LCD DAN LED (Making Sensor Temperature With LCD and LED): hai, saya Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA from Indonesia, di sini saya akan berbagi cara membuat sensor suhu menggunakan Arduino dengan Output ke LCD dan LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini anda