Taula de continguts:

Servidor de dades de doble temperatura IoT: 12 passos (amb imatges)
Servidor de dades de doble temperatura IoT: 12 passos (amb imatges)

Vídeo: Servidor de dades de doble temperatura IoT: 12 passos (amb imatges)

Vídeo: Servidor de dades de doble temperatura IoT: 12 passos (amb imatges)
Vídeo: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Juny
Anonim
Servidor de dades de doble temperatura IoT
Servidor de dades de doble temperatura IoT

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

Maquinari
Maquinari
Maquinari
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

Configuració del programari del sistema operatiu Raspberry Pi
Configuració del programari del sistema operatiu Raspberry Pi
Configuració del programari del sistema operatiu Raspberry Pi
Configuració del programari del sistema operatiu Raspberry Pi
Configuració del programari del sistema operatiu Raspberry Pi
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

Configureu l'aplicació de dades per permetre l'accés remot
Configureu l'aplicació de dades per permetre l'accés remot
Configureu l'aplicació de dades per permetre l'accés remot
Configureu l'aplicació de dades per permetre l'accés remot
Configureu l'aplicació de dades per permetre l'accés remot
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

Tallafocs UFW
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

S acabant les dades de temperatura com a JSON
S acabant 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

Enviar dades des dels dos sensors
Enviar 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

Inici automàtic
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)

Mostra les dades a Freeboard.io (1)
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)

Mostra les dades a Freeboard.io (2)
Mostra les dades a Freeboard.io (2)
Mostra les dades a Freeboard.io (2)
Mostra les dades a Freeboard.io (2)
Mostra les dades a Freeboard.io (2)
Mostra les dades a Freeboard.io (2)
Mostra les dades a Freeboard.io (2)
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

Construeix el projecte en una caixa
Construeix el projecte en una caixa
Construeix el projecte en una caixa
Construeix el projecte en una caixa
Construeix el projecte en una caixa
Construeix el projecte en una caixa
Construeix el projecte en una caixa
Construeix 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

Acabat
Acabat
Acabat
Acabat

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: