Taula de continguts:

Estació meteorològica que utilitza Raspberry Pi amb BME280 a Python: 6 passos
Estació meteorològica que utilitza Raspberry Pi amb BME280 a Python: 6 passos

Vídeo: Estació meteorològica que utilitza Raspberry Pi amb BME280 a Python: 6 passos

Vídeo: Estació meteorològica que utilitza Raspberry Pi amb BME280 a Python: 6 passos
Vídeo: Raspberry Pi Pico con WIFI del ESP8266 (Parte 1 comandos AT) 2024, Desembre
Anonim
Image
Image
Projecte de llei sobre equips imperatius
Projecte de llei sobre equips imperatius

is maith an scéalaí an objectivesir (El temps és un bon narrador)

Amb l’escalfament global i els problemes de canvi climàtic, el patró meteorològic global es torna erràtic a tot el món i provoca una sèrie de desastres naturals relacionats amb el clima (sequeres, temperatures extremes, inundacions, tempestes i incendis), sembla que és necessària una estació meteorològica el mal a casa. Apreneu molt sobre l’electrònica bàsica d’un projecte d’estació meteorològica amb un munt de peces i sensors barats. És bastant fàcil de configurar i en poc temps el podeu tenir.

Pas 1: Projecte de llei sobre equips imperatius

Projecte de llei sobre equips imperatius
Projecte de llei sobre equips imperatius
Projecte de llei sobre equips imperatius
Projecte de llei sobre equips imperatius
Projecte de llei sobre equips imperatius
Projecte de llei sobre equips imperatius

1. Un Raspberry Pi

Poseu les mans en un tauler Raspberry Pi. Raspberry Pi és un ordinador de placa única alimentat per Linux. El Raspberry Pi és realment barat, petit i versàtil, amb un ordinador accessible i funcional perquè els aprenents puguin exercir els fonaments bàsics de programació i desenvolupament de programari.

2. Escut I2C per a Raspberry Pi

L'INPI2 (adaptador I2C) proporciona a Raspberry Pi 2/3 un port I²C per utilitzar-lo amb diversos dispositius I2C. Està disponible a DCUBE Store.

3. Sensor digital d’humitat, pressió i temperatura, BME280

El BME280 és un sensor d’humitat, pressió i temperatura que té un temps de resposta ràpid i una alta precisió general. Hem comprat aquest sensor a DCUBE Store.

4. Cable de connexió I2C

Hem utilitzat el cable I²C disponible aquí DCUBE Store.

5. Cable micro USB

El cable micro USB és una opció ideal per alimentar el Raspberry Pi.

6. Interpretar l'accés a Internet mitjançant un adaptador EthernetCable / WiFi

L’accés a Internet es pot habilitar mitjançant un cable Ethernet connectat a una xarxa local i a Internet. Com a alternativa, podeu connectar-vos a una xarxa sense fils mitjançant un dongle sense fils USB, que necessitarà configuració.

7. Cable HDMI (cable de pantalla i connectivitat)

Qualsevol monitor HDMI / DVI i qualsevol televisor haurien de funcionar com a pantalla del Pi. Com a alternativa, podeu accedir de manera remota al Pi mitjançant SSH i negar la necessitat d’un monitor (només usuaris avançats).

Pas 2: connexions de maquinari per a circuits

Connexions de maquinari per a circuits
Connexions de maquinari per a circuits
Connexions de maquinari per a circuits
Connexions de maquinari per a circuits

Feu el circuit segons l’esquema que es mostra. En general, les connexions són molt senzilles. Mantingueu la calma i seguiu les instruccions i les imatges anteriors i no hauríeu de tenir problemes. Mentre apreníem, vam conèixer a fons els conceptes bàsics de l’electrònica pel que fa al coneixement del maquinari i el programari. Volíem elaborar un esquema electrònic senzill per a aquest projecte. Els esquemes electrònics són com a plànols. Elaboreu un plànol i seguiu amb cura el disseny. Alguns conceptes bàsics d'electrònica poden ser útils aquí.

Connexió de l’escut Raspberry Pi i I2C

Primer, agafeu el Raspberry Pi i col·loqueu-hi l’escut I²C. Premeu l'escut suaument i ja hem acabat amb aquest pas tan fàcil com el pastís (vegeu la foto).

Connexió del sensor i del gerd Pi

Agafeu el sensor i connecteu-hi el cable I²C. Assegureu-vos que la sortida I²C SEMPRE es connecti a l'entrada I²C. S'ha de seguir el mateix per al Raspberry Pi amb l'escut I²C muntat sobre els pins GPIO. Es recomana l'ús dels cables I²C, ja que nega la necessitat de llegir pinouts, soldar i malestar causat fins i tot pel mínim lliscament. Amb aquest senzill cable plug and play, podeu instal·lar, canviar taules o afegir més taules a una aplicació amb facilitat.

Nota: el cable marró sempre ha de seguir la connexió de terra (GND) entre la sortida d’un dispositiu i l’entrada d’un altre dispositiu

La connectivitat a Internet és fonamental

Aquí teniu dues opcions. Podeu connectar el Raspberry Pi a la xarxa mitjançant un cable Ethernet o utilitzar un adaptador USB a WiFi per a la connectivitat WIFI. Sigui com sigui, sempre que estigui connectat a Internet estigui cobert.

Posada en funcionament del circuit

Connecteu el cable Micro USB a la presa d’alimentació de Raspberry Pi. Punch up i voilà! La nostra plantilla és informació.

Connexió a pantalla

Podem tenir el cable HDMI connectat a un monitor o a un televisor. A més, podem accedir a un Raspberry Pi sense connectar-lo a un monitor mitjançant accés remot. SSH és una eina útil per a un accés remot segur. També podeu utilitzar el programari PUTTY. Aquesta opció és per a usuaris avançats, de manera que no la tractarem detalladament aquí.

És un mètode econòmic si no es vol gastar molt

Pas 3: programació de Raspberry Pi a Python

Programació de Raspberry Pi a Python
Programació de Raspberry Pi a Python

El codi Python per al sensor Raspberry Pi i BME280. Està disponible al nostre dipòsit de Github.

Abans d’accedir al codi, assegureu-vos de llegir les instruccions del fitxer Llegeix-me i configurar el Raspberry Pi segons el mateix. Una estació meteorològica és una instal·lació, tant terrestre com marítima, amb instruments i equips per mesurar les condicions atmosfèriques per proporcionar informació sobre les previsions meteorològiques i per estudiar el temps i el clima.

El codi està clarament davant vostre i es troba en la forma més senzilla que us podeu imaginar i no hauríeu de tenir problemes. Encara pregunteu si n’hi ha (Fins i tot si sabeu mil coses, pregunteu-ho a algú que ho sàpiga).

També podeu copiar el codi Python que funciona per a aquest sensor des d’aquí.

# Distribuïda amb una llicència de lliure voluntat. # Utilitzeu-la de la manera que vulgueu, de forma gratuïta o gratuïta, sempre que encaixi en les llicències de les obres associades. # BME280 # Aquest codi està dissenyat per funcionar amb el mini mòdul BME280_I2CS I2C disponible a ControlEverything.com. #

importar smbus

temps d'importació

# Aconsegueix un bus I2C

bus = smbus. SMBus (1)

# Adreça BME280, 0x76 (118)

# Llegir dades de 0x88 (136), 24 bytes b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Converteix les dades

# Coeficients temporals dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] si dig_T2> 32767: dig_T2 - = 65536 dig_T3 = b1 [5] * 256 + b1 [4] si dig_T3> 32767: dig_T3 - = 65536

# Coeficients de pressió

dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] si dig_P2> 32767: dig_P2 - = 65536 dig_P3 = b1 [11] * 256 + b1 [10] si dig_P3 > 32767: dig_P3 - = 65536 dig_P4 = b1 [13] * 256 + b1 [12] if dig_P4> 32767: dig_P4 - = 65536 dig_P5 = b1 [15] * 256 + b1 [14] if dig_P5> 32767: dig_P5 - = 65536 dig_P6 = b1 [17] * 256 + b1 [16] if dig_P6> 32767: dig_P6 - = 65536 dig_P7 = b1 [19] * 256 + b1 [18] if dig_P7> 32767: dig_P7 - = 65536 dig_P8 = b1 [21] * 256 + b1 [20] si dig_P8> 32767: dig_P8 - = 65536 dig_P9 = b1 [23] * 256 + b1 [22] si dig_P9> 32767: dig_P9 - = 65536

# Adreça BME280, 0x76 (118)

# Tornar a llegir les dades de 0xA1 (161), 1 byte dig_H1 = bus.read_byte_data (0x76, 0xA1)

# Adreça BME280, 0x76 (118)

# Llegir dades de 0xE1 (225), 7 bytes b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Converteix les dades

# Coeficients d'humitat dig_H2 = b1 [1] * 256 + b1 [0] si dig_H2> 32767: dig_H2 - = 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) si dig_H4> 32767: dig_H4 - = 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) si dig_H5> 32767: dig_H5 - = 65536 dig_H6 = b1 [6] si dig_H6> 127: dig_H6 - = 256

# Adreça BME280, 0x76 (118)

# Seleccioneu el registre d'humitat de control, 0xF2 (242) # 0x01 (01) Sobreexamplatge d'humitat = 1 bus.write_byte_data (0x76, 0xF2, 0x01) # Adreça BME280, 0x76 (118) # Seleccioneu Registre de mesura de control, 0xF4 (244) # 0x27 (39) Velocitat de sobree mostreig de pressió i temperatura = 1 # Mode normal bus.write_byte_data (0x76, 0xF4, 0x27) # Adreça BME280, 0x76 (118) # Selecciona registre de configuració, 0xF5 (245) # 0xA0 (00) Temps d'espera = 1000 ms bus.write_byte_data (0x76, 0xF5, 0xA0)

time.sleep (0,5)

# Adreça BME280, 0x76 (118)

# Llegiu les dades de 0xF7 (247), 8 bytes # Pressió MSB, Pressió LSB, Pressió xLSB, Temperatura MSB, Temperatura LSB # Temperatura xLSB, Humitat MSB, Humitat LSB dades = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Converteix les dades de pressió i temperatura a 19 bits

adc_p = ((dades [0] * 65536) + (dades [1] * 256) + (dades [2] i 0xF0)) / 16 adc_t = ((dades [3] * 65536) + (dades [4] * 256) + (dades [5] i 0xF0)) / 16

# Converteix les dades d'humitat

adc_h = data [6] * 256 + data [7]

# Càlculs de compensació de temperatura

var1 = ((adc_t) / 16384.0 - (dig_T1) / 1024.0) * (dig_T2) var2 = (((adc_t) / 131072.0 - (dig_T1) / 8192.0) * ((adc_t) /131072.0 - (dig_T1) /8192.0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120,0 fTemp = cTemp * 1,8 + 32

# Càlculs de compensació de pressió

var1 = (t_fine / 2.0) - 64000.0 var2 = var1 * var1 * (dig_P6) / 32768.0 var2 = var2 + var1 * (dig_P5) * 2.0 var2 = (var2 / 4.0) + ((dig_P4) * 65536.0) var1 = ((dig_P3) * var1 * var1 / 524288.0 + (dig_P2) * var1) / 524288.0 var1 = (1.0 + var1 / 32768.0) * (dig_P1) p = 1048576.0 - adc_p p = (p - (var2 / 4096.0)) * 6250.0 / var1 var1 = (dig_P9) * p * p / 2147483648.0 var2 = p * (dig_P8) / 32768.0 pressió = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100

# Càlculs de compensació d'humitat

var_H = ((t_fine) - 76800.0) var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67108864.0 * var_H))) humitat = var_H * (1.0 - dig_H1 * var_H / 524288.0) si humitat> 100,0: humitat = 100,0 elif humitat <0,0: humitat = 0,0

# Sortida de dades a la pantalla

imprimir "Temperatura en Celsius:%.2f C"% cTemp imprimir "Temperatura en Fahrenheit:%.2f F"% fTemp imprimir "Pressió:%.2f hPa"% pressió imprimir "Humitat relativa:%.2f %%"% d'humitat

Pas 4: el codi en execució

El Codi de Funcionament
El Codi de Funcionament

Ara, descarregueu (o git pull) el codi i obriu-lo al Raspberry Pi.

Executeu les ordres per compilar i penjar el codi al terminal i veure la sortida a la pantalla. Al cap de pocs segons, es mostraran tots els paràmetres. Després d'assegurar-vos que tot funciona molt bé, podeu desenvolupar-ne d'altres de més interessants.

Pas 5: Utilització en un món pràctic

El BME280 aconsegueix un alt rendiment en totes les aplicacions que requereixen mesurament d’humitat i pressió. Aquestes aplicacions emergents són el coneixement del context, per exemple. Detecció de la pell, detecció de canvis d’habitació, control de benestar / benestar, advertència sobre sequedat o altes temperatures, mesura de volum i cabal d’aire, control domòtic, control de calefacció, ventilació, aire condicionat, Internet de les coses (IoT), Millora del GPS (per exemple, millora del temps fins a la primera solució, recompte, detecció de pendents), navegació interior (detecció de canvi de pis, detecció d’ascensors), navegació exterior, aplicacions d’oci i esports, previsió meteorològica i indicació de velocitat vertical (pujada / lavabo) Velocitat).

Pas 6: Conclusió

Espero que aquest projecte inspiri més experimentació. Fer una estació meteorològica més sofisticada pot implicar alguns més sensors com ara pluviòmetre, sensor de llum, anemòmetre (velocitat del vent), etc. Podeu afegir-los i modificar el codi. Tenim un vídeo tutorial a YouTube amb el funcionament bàsic del sensor I²C amb Rasp Pi. És realment sorprenent veure els resultats i el funcionament de les comunicacions I²C. Comproveu-ho també. Diverteix-te construint i aprenent! Feu-nos saber què en penseu d’aquest instructiu. Ens agradaria fer algunes millores si cal.

Recomanat: