Estació meteorològica

Noaman El Bachiri Barkani

La Oracle Raspberry Pi Weather Station 

El 2016, Oracle i Raspberry Pi van tenir la idea de crear un kit per muntar estacions meteorològiques basades en la placa base integrada Raspberry Pi. El propòsit era oferir aquest kit a centres educatius per ensenyar computació, enginyeria i processament de dades . El projecte va arribar a 1.000 escoles de 78 països diferents i compta amb la seva pàgina dedicada on trobaràs preguntes i respostes sobre el projecte.

Hardware i Software

Un Raspberry Pi, ja sigui un que tingui connectivitat sense fil integrada o que tingui un dongle WiFi
Un sensor de pressió, temperatura i humitat BME280
Una sonda tèrmica digital DS18B20 (amb cable d'1 m)
Dues resistències de 4,7 KOhm
Alguns blocs de terminals de cargol de muntatge de PCB de pas de 5 mm
Una placa de prova, alguns cables de pont
Un anemòmetre, una veleta i un pluviòmetre
Dues plaques d'interrupció RJ11 (opcional)
Un circuit integrat convertidor analògic a digital MCP3008
Tancaments impermeables; Els productes recomanats són aquesta caixa de 75x75x37mm per al BME280 i aquesta caixa més gran de 150x110x70mm per al Pi i un HAT soldat; si us quedeu amb una solució només de placa de prova menys duradora, és possible que necessiteu un recinte més gran com aquest de 190 x 140 x 70 mm .

.

El programari Oracle Raspberry Pi Weather Station. No cal que l'instal·leu, però utilitzareu alguns dels programes de Python. Cloneu el dipòsit de GitHub obrint una finestra de terminal i escrivint:
git clone https://github.com/RaspberryPiFoundation/weather-station
La biblioteca BME280 Python:
sudo pip3 install RPi.bme280
El programari del servidor de bases de dades MariaDB:
sudo apt-get install -y mariadb-server mariadb-client libmariadbclient-dev
sudo pip3 install mysqlclient
.

Procediment

Creeu un fitxer Python nou, deseu-lo com a /home/username/weather-station/bme280_sensor.py. Substituïu-lo usernamepel vostre nom d'usuari al vostre Raspberry Pi i afegiu-hi el codi següent:

import bme280
import smbus2
from time import sleep

port = 1
address = 0x77 # Adafruit BME280 address. Other BME280s may be different
bus = smbus2.SMBus(port)

bme280.load_calibration_params(bus,address)

while True:
bme280_data = bme280.sample(bus,address)
humidity = bme280_data.humidity
pressure = bme280_data.pressure
ambient_temperature = bme280_data.temperature
print(humidity, pressure, ambient_temperature)
sleep(1)

Ara proveu el codi: mentre el codi s'està executant, exhaleu al sensor. Hauríeu de veure com augmenten els valors d'humitat (i possiblement els valors de temperatura). Quan hàgiu acabat de provar, finalitzeu el codi escrivint ctrl+cel shell de Python.
Una vegada que estigueu satisfet que el sensor estigui enregistrant valors sensibles, podeu modificar el programa perquè estigui llest per utilitzar-lo com a part de tota l'operació de l'estació meteorològica més endavant.

Substituïu el while Truebucle per una funció anomenada read_all()que retorni les lectures d'humitat, pressió i temperatura, en aquest ordre.

Temperatura del sòl
El BME280 informarà de la temperatura de l'aire, però aquesta pot ser significativament més càlida que la del sòl, sobretot si està gelada. Una sonda tèrmica enganxada al sòl és una mesura de temperatura suplementària útil i es pot utilitzar per indicar la presència de gel/gel a l'hivern. El sensor de temperatura Dallas DS18B20 es presenta en moltes formes, inclosa una versió de sonda tèrmica impermeable, i aquest és el sensor que s'utilitza a l'estació meteorològica Oracle Raspberry Pi.

Connectant el sensor

Normalment, el DS18B20 ve amb tres cables nus, de manera que la manera més senzilla de prototipar i provar el sensor és utilitzar blocs de terminals de cargol de muntatge de PCB que també es poden connectar a plaques de prova. Afegiu el vostre DS18B20 al vostre circuit tal com es mostra al diagrama següent. Tingueu en compte que esteu configurant rails de 3,3 V i de terra al costat de la placa. Aquests s'utilitzaran més tard quan afegiu sensors addicionals al circuit
.

Obriu el fitxer /boot/config.txt:

sudo nano /boot/config.txt 

Editeu-lo afegint la línia següent a la part inferior: 

dtoverlay=w1-gpio










Després obre /etc/modules. 

sudo nano /etc/modules 

Afegiu les línies següents a la part inferior del fitxer: 

w1-gpio
w1-therm















Reinicieu el Raspberry Pi.

Obriu el fitxer /home/pi/weather-station/ds18b20_therm.pya IDLE i executeu-lo. Hauríeu de veure la temperatura impresa a la finestra de l'intèrpret d'ordres de Python.

Posa la sonda en un got d'aigua freda i torna a executar el programa. La nova temperatura informada hauria de ser més baixa (tret que en primer lloc estiguéssiu treballant en una habitació molt freda!). 

Resolució de problemes 

Si no podeu fer lectures del sensor DS18B20, comproveu que els cables de la sonda estiguin ben connectats als terminals de cargol i que hàgiu modificat i /etc/modulescorrectament /boot/config.txt.

Obriu una finestra de terminal i escriviu:
ls /sys/bus/w1/devices/

Hauríeu de veure dos fitxers llistats. Si no es mostren, torneu a comprovar el cablejat.

Estació meteorològica

Noaman El Bachiri Barkani