Taula de continguts:
- Subministraments
- Pas 1: maquinari
- Pas 2: Configuració del programari del sistema operatiu Raspberry Pi
- Pas 3: configureu l'aplicació de dades per permetre l'accés remot
- Pas 4: comproveu els sensors
- Pas 5: tallafocs UFW
- Pas 6: S finalitza les dades de temperatura com a JSON
- Pas 7: envieu dades des dels dos sensors
- Pas 8: Inici automàtic
- Pas 9: mostra les dades a Freeboard.io (1)
- Pas 10: mostra les dades a Freeboard.io (2)
- Pas 11: Construïu el projecte en una caixa
- Pas 12: finalitzat
Vídeo: Servidor de dades de doble temperatura IoT: 12 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
Aquest és el meu primer intent d'escriure un document instructiu i, per tant, si us plau, aneu-me'n fàcil! Si creieu que això no està tan malament, voteu-me al Concurs d’autors per primera vegada.
Aquest és el meu projecte Lock-Down per controlar de forma remota 2 temperatures en un hivernacle, una a la planta i una just sota el terrat. Tot i que abans havia utilitzat Raspberry Pi (RPi), aquest projecte implicava diversos elements que no havia utilitzat i, al llarg del camí, he trobat diversos tutorials que no estaven actualitzats o simplement estaven malament. Aquesta és la meva col·lecció de coneixements per fer un monitor de temperatura remot dual que funciona a partir d’un sensor de temperatura digital Pi Zero & 2 DS18B20 + One Wire que es va adquirir al llarg del camí.
Coses que he après sobre:
- Disposar de dades des d’un dispositiu com a part de l’Internet de les coses (IoT)
- Interfície 1 cable amb 2 dispositius
- Aplicació de dades
- Dades JSON
- Configuració del tallafoc UFW
- Utilitzant Freeboard.io per mostrar les dades
- Configuració del RPi per executar automàticament el programa
Hi ha una gran quantitat de dades que es poden trobar amb una cerca senzilla sobre tots aquests temes, però el que no està tan clar és com combinar tots aquests elements separats.
Subministraments
- Necessitareu un Raspberry Pi (amb monitor, ratolí i teclat per configurar-lo, però no quan executeu el projecte acabat)
- Una connexió a Internet que funciona.
- Una alimentació amb connector Micro USB
- 2 dels sensors de temperatura digitals DS18B20 + One Wire. Vaig trobar que Amazon era el més barat
- Resistència 4K7 ohm o he utilitzat 2 resistències de 10K ohm.
- Tauleta reduïda i uns quants cables masculins / femenins per provar al banc
- Peça de tauler de tires per al muntatge final
- Eines senzilles per soldar i pelar cables.
- Petita caixa de plàstic per allotjar el disseny acabat
Pas 1: maquinari
Ja tenia un Raspberry Pi Zero W (amb connexió sense fils), però estic segur que aquest senzill projecte funcionarà bé en qualsevol dels RPIs. La caixa de bits electrònics estranys del meu taller tenia tota la resta (taulers de connexió, filferro, PSU, etc.) i, per tant, tot el que havia de comprar eren dos sensors DS18B20 de 2 x d’Amazon. Aquests són els xips DS18B20 normals muntats convenientment en una carcassa impermeable i un cable de 3 m. Hi ha 3 cables del cable:
- Vermell: alimentació: connecteu-vos al pin 1 de 3.3v
- Negre - retorn - connecteu-vos a la clavilla de terra 6
- Groc: dades: connecteu-vos al pin 7 de GPIO4
Els sensors utilitzen la interfície 1-Wire i eren molt fàcils de connectar i obtenir dades. Hi ha diverses pàgines al web amb detalls sobre la connexió d’un dispositiu, però molt poques sobre la connexió de 2 (o més).
Per fer proves a la banqueta, el circuit es va muntar mitjançant una placa de prova. Els tutorials que vaig trobar van indicar que s'utilitzava una resistència 4K7 per esbiaixar la línia de dades, però no en vaig trobar cap, i vaig fer servir 2 * 10K en paral·lel i va funcionar bé. Hi ha un munt de recursos a la web per utilitzar una placa per muntar circuits RPi i, per tant, no els repetiré aquí.
Diagrama creat mitjançant el diagrama de circuits
Pas 2: Configuració del programari del sistema operatiu Raspberry Pi
Com ja havia utilitzat aquest RPi abans, vaig decidir començar amb una instal·lació neta del sistema operatiu, vaig tornar a formatar la targeta SD i vaig instal·lar una versió neta de NOOBS. Aleshores vaig instal·lar la versió completa de Raspian per a l’escriptori (l’opció superior), ja que també s’instal·laria PIP i GIT que la versió lite no fa. Tot i que no necessitava la interfície gràfica d’usuari (GUI) per al projecte, és una manera senzilla de configurar totes les opcions i amb una targeta SD de 16 gb no hi faltava espai.
Vaig configurar l'accés WI-FI, després vaig executar la instal·lació completa i després l'assistent amb actualitzacions i actualitzacions, etc. Utilitzant la interfície gràfica d'usuari, he configurat l'RPI segons sigui necessari només perquè utilitzar la interfície gràfica d'usuari és més senzill que la interfície de línia d'ordres (CLI). Vaig anar a la finestra de configuració del menú i després:
- A la pestanya del sistema, he canviat la contrasenya, he configurat per arrencar a CLI i he desmarcat Iniciar sessió automàticament
- A la pestanya interfícies, he activat un fil
- S'ha fet clic a D'acord i s'ha reiniciat
Si heu de tornar a la GUI en qualsevol moment, només cal que escriviu startx a la CLI
startx
Pas 3: configureu l'aplicació de dades per permetre l'accés remot
Vaig trobar una entrada de bloc molt útil al lloc de Dataplicity a https://blog.dataplicity.com/how-to-build-a-raspb… i en vaig utilitzar algunes parts. La secció 3 del bloc descriu la configuració de Dataplicity per a l'accés remot a l'RPi. Mai abans havia utilitzat Dataplicity, però he de dir que el recomano com una eina d'accés remot molt senzilla. Tot i que les captures de pantalla (al bloc anterior) estan una mica obsoletes, el principi està bé.
Al vostre PC, aneu a Dataplicity.com i creeu un compte (podeu utilitzar el navegador a la interfície gràfica d’usuari, però més aviat lent a l’RPi Zero). A continuació, feu clic al botó "Afegeix un dispositiu nou" i apareixerà una línia de codi a la finestra emergent. A continuació, aneu a la CLI del RPi i escriviu la línia de text. Si tot està bé, es mostrarà el logotip de Dataplicity i s'executarà el programa d'instal·lació.
De nou al vostre ordinador, el nou dispositiu hauria d'aparèixer al lloc web de Dataplicity. Feu clic al dispositiu i hauríeu de veure una pantalla de terminal per al vostre RPi.
Hi ha algunes coses que cal tenir en compte aquí:
- Per iniciar la sessió, escriviu "su pi" (per accedir al superusuari) i se us demanarà la contrasenya (tal com s'ha definit anteriorment)
- Cal habilitar Wormhole (per utilitzar-lo més tard)
- Necessitareu l'adreça de Wormhole per mostrar les dades més endavant (feu clic amb el botó dret per copiar quan sigui necessari)
Podeu utilitzar aquest accés remot per a tots els passos següents i és molt més fàcil copiar dades, programes, etc. que directament al RPi.
Pas 4: comproveu els sensors
Ara podeu utilitzar Dataplicity per accedir remotament a RPI per a totes les seccions següents.
Si ara tot està connectat bé, hauríeu de poder veure les temperatures que es retornen del DS18B20. Vaig treballar amb el tutorial de Pi Hut, però la major part no era necessària. Si voleu els detalls complets, els podeu trobar aquí: https://thepihut.com/blogs/raspberry-pi-tutorials …
Els bits importants són anar al directori de dispositius i assegurar-se que es mostrin 2 sensors diferents.
cd / sys / bus / w1 / dispositius /
Això hauria de mostrar 2 dispositius que comencen per 28 i el bus master. Els meus espectacles:
28-011453ebfdaa 28-0114543d5daa w1_bus_master1
Aquests 2 números d'identificació són importants i seran necessaris més endavant. A continuació, canvieu a un dels directoris del sensor:
cd 28-011453ebfdaa
(per exemple) i després per llegir el valor del sensor
gat w1_esclau
S'han de mostrar 2 línies de text:
53 01 4b 46 7f ff 0c 10 2d: crc = 2d SÍ
53 01 4b 46 7f ff 0c 10 2d t = 21187
El SÍ mostra que el sensor està llegint correctament i el 21187 mostra la temperatura en centígrads de 21.187 (divideix per 1000). Repeteix-ho per comprovar el segon sensor. Si tots dos llegeixen bé, podem passar a llegir les dades amb Python3.
Vaig copiar i adaptar el següent codi que vaig trobar al web, però no recordo d’on. Si sembla el vostre codi, em disculpeu perquè no es pretenia cap plagi; Si us plau, feu-m'ho saber i reconeixeré la vostra feina.
Creeu un directori anomenat projectes i canvieu a aquest directori.
mkdir ~ / projectes
cd ~ / projectes
En aquest directori, utilitzeu l'editor de text (nano) per crear i editar un fitxer anomenat thermo-test.py
sudo nano thermo-test.py
Això hauria d’haver obert l’editor i, com que utilitzeu Dataplicity, podeu copiar el següent codi següent (thermo-test.py) i enganxar-lo a l’editor. Haureu d’alterar els dos noms de dispositiu (a partir del 28-…) pels que s’han assenyalat anteriorment. Quan tot sembli correcte, premeu ctrl + X per acabar, Y per desar i tornar a utilitzar el nom existent. Si preferiu utilitzar la GUI, Thonny farà el mateix.
Per executar el programa de prova:
sudo python3 thermo-test.py
Tot bé, hauria d'executar el fitxer amb Python 3 i imprimir a la pantalla les 2 temperatures cada 10 segons. Podeu provar-ho tot si col·loqueu 1 sensor a l’aigua gelada o escalfeu-lo suaument amb un assecador de cabells. Si tot sembla correcte, podem continuar!
Pas 5: tallafocs UFW
Com que aquest RPi estaria connectat permanentment a Internet, vaig decidir que un tallafoc seria una bona idea i un senzill d'utilitzar és un tallafoc sense complicacions (ufw). Aquí hi ha un tutorial molt senzill
No aprofundiré en la profunditat, ja que aquest no és el propòsit d’aquest instructable, però en resum:
Instal·leu el tallafoc amb:
sudo apt-get install ufw
Definiu les regles predeterminades:
sudo ufw per defecte permet la sortida
sudo ufw per defecte denega l'entrada
Obriu el port 80 per a Dataplicity
sudo ufw permet 80
Activeu el tallafoc
sudo ufw enable
Comproveu l'estat i assegureu-vos que tot s'està executant
estat sudo ufw
Pas 6: S finalitza les dades de temperatura com a JSON
Torna al bloc i a la secció 5 de Tim Fernando.
Seguiu els passos tal com s’indica (excepte que ja hem creat el directori de projectes) i tots haurien de funcionar bé. Mitjançant GIT descarregareu els fitxers d’aplicació de Tim i el PIP s’assegurarà que tots els programes necessaris estiguin instal·lats al vostre RPi. Llavors vaig trobar que necessitava reiniciar per assegurar-me que tots els paquets estaven configurats correctament.
A continuació, executeu el programa de Tim i el vostre RPi hauria de proporcionar dades JSON per al primer sensor.
cd home / pi / projects / temperature-serve-pi
temperatura sudo gunicorn: aplicació -b 0.0.0.0:80
Podeu continuar a través del bloc fins a la secció 6, on trobareu que es proporcionen dades per a un dels sensors.
També podeu utilitzar JSON Viewer per veure les dades https://codebeautify.org/jsonviewer Feu clic al botó "carrega l'URL" i enganxeu-lo a l'adreça de Wormhole indicada anteriorment. Al tauler esquerre, hauríeu de veure dues entrades, una per Celsius i una per Fahrenheit.
Pas 7: envieu dades des dels dos sensors
Basat en el codi de temperatures.py i thermo-test.py, he creat 2temps.py Editat com abans al directori / projects / temperature-serve-pi, enganxat al codi i desat. Llavors vaig córrer
sudo gunicorn 2temps: app -b 0.0.0.0:80
Ara, quan vaig tornar a executar JSON Viewer, vaig obtenir valors per a temp1 i temp2
Èxit:)
Pas 8: Inici automàtic
Com que l'alimentació de l'hivernacle s'apaga de tant en tant, volia que l'RPi carregés automàticament el programa i comencés a provar les dades. Sembla que la forma més senzilla és editar el fitxer rc.local i afegir el codi requerit a la part inferior just a sobre de la línia de sortida 0.
cd, etc.
sudo rc.local
i després el complement
dorm 10
cd home / pi / projects / temperature-serve-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &
- El & al final indica a l'ordinador que executi l'script en un subintèrpret d'ordres perquè l'ordinador no esperi que finalitzi la funció i continuarà amb l'arrencada
- Dormir 10 [segons] assegura que totes les operacions anteriors s'hagin completat abans d'iniciar el servei.
Sortiu i deseu com abans. A continuació, reinicieu i torneu a executar JSON Viewer per comprovar que tot està bé.
Si voleu més informació sobre els programes que s’executen automàticament, aquí hi ha un gran tutorial
Pas 9: mostra les dades a Freeboard.io (1)
Els passos del bloc de Tim funcionen bé, en resum; creeu un compte a www.freeboard.io i, a continuació, creeu un Freeboard nou, que he anomenat SHEDTEMPERATURES.
En primer lloc, afegiu una font de dades, feu clic a AFEGEIX a la part superior dreta i, a la finestra emergent, seleccioneu JSON com a tipus, doneu a la font de dades un NOM, afegiu l'adreça del forat de cuc anterior com a URL i feu clic a NO per PROVAR LA PROXIMITAT. Les temperatures només canvien molt lentament i, per tant, ACTUALITZAR CADA 15 SEGONS està bé. Feu clic a DESA.
Pas 10: mostra les dades a Freeboard.io (2)
Feu clic a ADD PANE i després al + per afegir el primer widget. Podeu seleccionar i jugar amb diversos TIPUS, però he trobat que Gauge estava bé. Doneu un TÍTOL, UNITATS (C), MÍNIM i MÀXIM adequats per adaptar-vos a la vostra sol·licitud. Per al DATASOURCE, feu clic al + i apareixerà la font creada anteriorment.
El menú desplegable ara hauria de mostrar les 2 fonts de dades JSON (temp2 i temp2) creades anteriorment. Seleccioneu la font adequada i feu clic a Desa.
Repetiu això per al segon indicador i ja estem a punt.
Ara les dades s’han de mostrar als dos indicadors i, si encara teniu el PRi connectat a un monitor, hauríeu de veure les sol·licituds de Freeboard.io quan arribin.
Pas 11: Construïu el projecte en una caixa
Fins aquest moment, el RPi i la resta de components s’havien muntat al banc amb una placa. A continuació, es va utilitzar un petit tros de tauler per substituir el taulell de pa i tots els cables s’han soldat al seu lloc.
Es va trobar una petita caixa d’emmagatzematge Lego de color rosa brillant que tenia molt d’espai i on el RPI no escalfaria massa. es foradaven els laterals de la caixa i es feien servir pilars de muntatge de niló de 3 mm per mantenir el RPi i el tauler de fusta al seu lloc.
Només hi ha 3 connexions necessàries des de GPIO, 3.3v, GND i dades.
- Pin 1 de 3.3vdc
- Pin GND 6
- Pin 7 de dades (GPIO4)
També es van afegir forats a la caixa d’alimentació i cables USB als sensors de temperatura. Un cop muntat tot al seu lloc, es va afegir una petita quantitat de segellador de silicona per garantir que les aranyes no pensessin que era un bon lloc càlid per passar l'hivern.
Pas 12: finalitzat
La caixa es va col·locar a l’hivernacle i es va alimentar des d’un carregador USB. Els dos sensors es van col·locar un a prop de la part superior de l’hivernacle i l’altre en un test per comprovar el fred que feien les plàntules a la nit.
Aquest és el meu primer instructable i espero que us sembli bé. Si trobeu algun error, si us plau, aviseu-me i ho modificaré on calgui. El següent pas pot ser registrar les dades cada 60 segons, però això arribarà més tard.
Recomanat:
Com fer un registre de dades en temps real de la humitat i la temperatura amb Arduino UNO i targeta SD - Simulació de registre de dades DHT11 a Proteus: 5 passos
Com fer un registre de dades en temps real d’humitat i temperatura amb Arduino UNO i targeta SD | Simulació de registre de dades DHT11 a Proteus: Introducció: hola, aquest és Liono Maker, aquí teniu l'enllaç de YouTube. Estem fent un projecte creatiu amb Arduino i treballem en sistemes incrustats
Sistema d’assistència enviant dades RFID al servidor MySQL mitjançant Python amb Arduino: 6 passos
Sistema d’assistència mitjançant l’enviament de dades RFID al servidor MySQL mitjançant Python amb Arduino: en aquest projecte he interfaçat RFID-RC522 amb arduino i després envio dades de RFID a la base de dades phpmyadmin. A diferència dels nostres projectes anteriors, en aquest cas no utilitzem cap escut Ethernet, aquí només estem llegint les dades de sèrie provinents d'ar
Arduino envia dades de temperatura i humitat al servidor MySQL (PHPMYADMIN): 5 passos
Arduino envia dades de temperatura i humitat al servidor MySQL (PHPMYADMIN): en aquest projecte he interfaçat DHT11 amb arduino i després envio dades de dht11, que és la humitat i la temperatura, a la base de dades phpmyadmin. Aquí estem utilitzant un script PHP per enviar dades a la base de dades phpmyadmin
Visualització de temperatura i humitat i recollida de dades amb Arduino i processament: 13 passos (amb imatges)
Visualització de temperatura i humitat i recopilació de dades amb Arduino i processament: Introducció: es tracta d’un projecte que utilitza una placa Arduino, un sensor (DHT11), un ordinador Windows i un programa de processament (que es pot descarregar gratuïtament) per mostrar dades de temperatura, humitat en format digital i forma de gràfic de barres, visualització de l'hora i la data i execució d'un temps de recompte
Centre de recollida de dades del sensor habilitat per IoT amb ESP8266 i PubNub: 9 passos (amb imatges)
Centre de recollida de dades del sensor habilitat per IoT amb ESP8266 i PubNub: la majoria dels tutorials de l’ESP8266 són a nivell de principiants (parpellejant remotament un led) o massa complexos per a algú que busca alguna cosa per millorar i millorar les seves habilitats de parpelleig de leds. objectius instructius per salvar aquesta bretxa per crear