Taula de continguts:
- Pas 1: Projecte de llei sobre equips imperatius
- Pas 2: connexions de maquinari per a circuits
- Pas 3: programació de Raspberry Pi a Python
- Pas 4: el codi en execució
- Pas 5: Utilització en un món pràctic
- Pas 6: Conclusió
Vídeo: Estació meteorològica que utilitza Raspberry Pi amb BME280 a Python: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
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
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
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
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ó
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:
Estació meteorològica personal que utilitza Raspberry Pi amb BME280 a Java: 6 passos
Estació meteorològica personal que utilitza Raspberry Pi amb BME280 a Java: el mal temps sempre es veu pitjor per una finestra. Sempre ens ha interessat controlar el nostre temps local i el que veiem per la finestra. També volíem un millor control sobre el nostre sistema de calefacció i aire condicionat. Construir una estació meteorològica personal és una gran cosa
Estació meteorològica NaTaLia: l'estació meteorològica amb energia solar Arduino s'ha fet correctament: 8 passos (amb imatges)
Estació meteorològica NaTaLia: Estació meteorològica amb energia solar Arduino feta de la manera correcta: després d’un any d’exitació en 2 llocs diferents, comparteixo els plans del projecte de la meva estació meteorològica amb energia solar i explico com va evolucionar cap a un sistema que realment pot sobreviure durant molt de temps períodes des de l'energia solar. Si segueixes
Estació meteorològica Amb Arduino, BME280 i pantalla per veure la tendència en els darrers 1-2 dies: 3 passos (amb imatges)
Estació meteorològica Amb Arduino, BME280 i pantalla per veure la tendència en els darrers 1-2 dies: Hola, aquí ja s'han introduït estacions meteorològiques instructives. Mostren la pressió, la temperatura i la humitat actuals de l’aire. El que els va faltar fins ara era una presentació del curs en els darrers 1-2 dies. Aquest procés tindria la
Estació meteorològica de bricolatge que utilitza DHT11, BMP180, Nodemcu amb Arduino IDE a través del servidor Blynk: 4 passos
Estació meteorològica de bricolatge que utilitza DHT11, BMP180, Nodemcu amb Arduino IDE sobre servidor Blynk: Github: DIY_Weather_Station Hackster.io: Estació meteorològica Hauríeu vist l'aplicació meteorològica, oi? Igual, quan l’obriu coneixeu les condicions meteorològiques com la temperatura, la humitat, etc. Aquestes lectures són el valor mitjà d’un gran
Estació meteorològica WiFi ESP32 amb sensor BME280: 7 passos (amb imatges)
Estació meteorològica WiFi ESP32 amb sensor BME280: Benvolguts amics, us donem la benvinguda a un altre tutorial. En aquest tutorial crearem un projecte d'estació meteorològica habilitada per a WiFi. Utilitzarem el nou i impressionant xip ESP32 per primera vegada juntament amb una pantalla Nextion. En aquest vídeo, anem