Sommario:

Stazione meteorologica che utilizza Raspberry Pi con BME280 in Python: 6 passaggi
Stazione meteorologica che utilizza Raspberry Pi con BME280 in Python: 6 passaggi

Video: Stazione meteorologica che utilizza Raspberry Pi con BME280 in Python: 6 passaggi

Video: Stazione meteorologica che utilizza Raspberry Pi con BME280 in Python: 6 passaggi
Video: ESP8266 MicroPython для метеостанции с использованием WeMos Micro OLED 2024, Luglio
Anonim
Image
Image
Fattura dell'attrezzatura imperativa
Fattura dell'attrezzatura imperativa

is maith an scéalaí an goalir (Il tempo è un buon narratore)

Con i problemi del riscaldamento globale e dei cambiamenti climatici, il modello meteorologico globale sta diventando irregolare in tutto il mondo portando a una serie di disastri naturali legati al clima (siccità, temperature estreme, inondazioni, tempeste e incendi), una stazione meteorologica sembra essere necessaria male in casa. Impari molto sull'elettronica di base da un progetto di stazione meteorologica utilizzando una serie di componenti e sensori economici. È abbastanza facile da configurare e in pochissimo tempo puoi averlo.

Passaggio 1: fattura dell'attrezzatura imperativa

Fattura dell'attrezzatura imperativa
Fattura dell'attrezzatura imperativa
Fattura dell'attrezzatura imperativa
Fattura dell'attrezzatura imperativa
Fattura dell'attrezzatura imperativa
Fattura dell'attrezzatura imperativa

1. Un lampone pi

Metti le mani su una scheda Raspberry Pi. Raspberry Pi è un computer a scheda singola alimentato da Linux. Il Raspberry Pi è davvero economico, piccolo e versatile, costruito con un computer accessibile e funzionale per consentire agli studenti di esercitare le basi della programmazione e dello sviluppo software.

2. Scudo I2C per Raspberry Pi

L'INPI2 (adattatore I2C) fornisce al Raspberry Pi 2/3 una porta I²C da utilizzare con più dispositivi I2C. È disponibile su DCUBE Store.

3. Sensore digitale di umidità, pressione e temperatura, BME280

Il BME280 è un sensore di umidità, pressione e temperatura che ha tempi di risposta rapidi e un'elevata precisione complessiva. Abbiamo acquistato questo sensore da DCUBE Store.

4. Cavo di collegamento I2C

Abbiamo usato il cavo I²C disponibile qui DCUBE Store.

5. Cavo micro USB

Il cavo micro USB L'alimentatore è la scelta ideale per alimentare il Raspberry Pi.

6. Interpretare l'accesso a Internet tramite cavo Ethernet/adattatore WiFi

L'accesso a Internet può essere abilitato tramite un cavo Ethernet collegato a una rete locale ea Internet. In alternativa, è possibile connettersi a una rete wireless utilizzando un dongle wireless USB, che richiederà la configurazione.

7. Cavo HDMI (cavo display e connettività)

Qualsiasi monitor HDMI/DVI e qualsiasi TV dovrebbe funzionare come display per il Pi. In alternativa, è possibile accedere in remoto al Pi tramite SSH, eliminando la necessità di un monitor (solo per utenti avanzati).

Passaggio 2: connessioni hardware per il circuito

Connessioni hardware per circuito
Connessioni hardware per circuito
Connessioni hardware per circuito
Connessioni hardware per circuito

Realizzare il circuito secondo lo schema mostrato. In generale i collegamenti sono molto semplici. Mantieni la calma e segui le istruzioni e le immagini sopra e non dovresti avere problemi. Durante l'apprendimento, abbiamo approfondito le basi dell'elettronica per quanto riguarda la conoscenza dell'hardware e del software. Volevamo redigere un semplice schema elettronico per questo progetto. Gli schemi elettronici sono come i progetti. Disegna un progetto e segui attentamente il progetto. Alcuni concetti di base dell'elettronica potrebbero essere utili qui!

Collegamento di Raspberry Pi e I2C Shield

Per prima cosa, prendi il Raspberry Pi e posizionaci sopra l'I²C Shield. Premi delicatamente lo scudo e abbiamo finito con questo passaggio facile come una torta (vedi la foto).

Collegamento del sensore e Raspberry Pi

Prendi il sensore e collega il cavo I²C con esso. Assicurati che l'uscita I²C si colleghi SEMPRE all'ingresso I²C. Lo stesso deve essere seguito per il Raspberry Pi con lo shield I²C montato sopra i pin GPIO. Raccomandiamo l'uso dei cavi I²C in quanto annulla la necessità di leggere pinout, saldature e malessere causati anche dal minimo errore. Con questo semplice cavo plug and play, puoi installare, scambiare schede o aggiungere più schede a un'applicazione con facilità.

Nota: il filo marrone dovrebbe sempre seguire la connessione di terra (GND) tra l'uscita di un dispositivo e l'ingresso di un altro dispositivo

La connettività Internet è fondamentale

Hai due scelte qui. Puoi collegare il Raspberry Pi alla rete utilizzando un cavo Ethernet o utilizzare un adattatore da USB a WiFi per la connettività WIFI. Ad ogni modo, fintanto che è connesso a Internet sei coperto.

Accensione del circuito

Collega il cavo Micro USB alla presa di alimentazione di Raspberry Pi. Dai un pugno e voilà! La nostra squadra è informazione.

Connessione allo schermo

Possiamo collegare il cavo HDMI a un monitor oa una TV. Inoltre, possiamo accedere a un Raspberry Pi senza collegarlo a un monitor utilizzando l'accesso remoto. SSH è uno strumento utile per l'accesso remoto sicuro. Puoi anche usare il software PUTTY per quello. Questa opzione è per utenti avanzati, quindi non la tratteremo in dettaglio qui.

È un metodo economico se non vuoi spendere molto

Passaggio 3: programmazione Raspberry Pi in Python

Programmazione Raspberry Pi in Python
Programmazione Raspberry Pi in Python

Il codice Python per il sensore Raspberry Pi e BME280. È disponibile nel nostro repository Github.

Prima di passare al codice, assicurati di leggere le istruzioni fornite nel file Leggimi e imposta il tuo Raspberry Pi in base ad esso. Basta poco tempo per prepararsi alla configurazione. Una stazione meteorologica è una struttura, terrestre o marittima, con strumenti e apparecchiature per misurare le condizioni atmosferiche per fornire informazioni per le previsioni del tempo e per studiare il tempo e il clima.

Il codice è chiaramente di fronte a te ed è nella forma più semplice che puoi immaginare e non dovresti avere problemi. Chiedi ancora se ce ne sono (anche se sai mille cose, chiedi ancora a qualcuno che lo sa).

Puoi anche copiare il codice Python funzionante per questo sensore da qui.

# Distribuito con una licenza di libero arbitrio.# Usalo come preferisci, a scopo di lucro o gratuito, a condizione che si adatti alle licenze delle opere associate. # BME280 # Questo codice è progettato per funzionare con il Mini Modulo BME280_I2CS I2C disponibile da ControlEverything.com. #

import smbus

tempo di importazione

# Ottieni l'autobus I2C

bus = smbus. SMBus(1)

# indirizzo BME280, 0x76(118)

# Rilegge i dati da 0x88(136), 24 byte b1 = bus.read_i2c_block_data(0x76, 0x88, 24)

# Converti i dati

# Coefficienti di temperatura dig_T1 = b1[1] * 256 + b1[0] dig_T2 = b1[3] * 256 + b1[2] if dig_T2 > 32767: dig_T2 -= 65536 dig_T3 = b1[5] * 256 + b1[4] se dig_T3 > 32767: dig_T3 -= 65536

# Coefficienti di pressione

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

# indirizzo BME280, 0x76(118)

# Rilegge i dati da 0xA1(161), 1 byte dig_H1 = bus.read_byte_data(0x76, 0xA1)

# indirizzo BME280, 0x76(118)

# Rilegge i dati da 0xE1(225), 7 byte b1 = bus.read_i2c_block_data(0x76, 0xE1, 7)

# Converti i dati

# Coefficienti di umidità dig_H2 = b1[1] * 256 + b1[0] if dig_H2 > 32767: dig_H2 -= 65536 dig_H3 = (b1[2] & 0xFF) dig_H4 = (b1[3] * 16) + (b1[4] & 0xF) se dig_H4 > 32767: dig_H4 -= 65536 dig_H5 = (b1[4] / 16) + (b1[5] * 16) se dig_H5 > 32767: dig_H5 -= 65536 dig_H6 = b1[6] se dig_H6 > 127: dig_H6 -= 256

# indirizzo BME280, 0x76(118)

# Seleziona registro di controllo dell'umidità, 0xF2(242) # 0x01(01) Humidity Oversampling = 1 bus.write_byte_data(0x76, 0xF2, 0x01) # Indirizzo BME280, 0x76(118) # Seleziona registro di misura di controllo, 0xF4(244) # 0x27(39) Frequenza di sovracampionamento pressione e temperatura = 1 # Modalità normale bus.write_byte_data(0x76, 0xF4, 0x27) # Indirizzo BME280, 0x76(118) # Seleziona registro configurazione, 0xF5(245) # 0xA0(00) Tempo di attesa = bus 1000 ms.write_byte_data(0x76, 0xF5, 0xA0)

tempo.sonno(0.5)

# indirizzo BME280, 0x76(118)

# Legge i dati da 0xF7(247), 8 byte # Pressure MSB, Pressure LSB, Pressure xLSB, Temperature MSB, Temperature LSB # Temperature xLSB, Humidity MSB, Humidity LSB data = bus.read_i2c_block_data(0x76, 0xF7, 8)

# Converti i dati di pressione e temperatura a 19 bit

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

# Converti i dati di umidità

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

# Calcoli dell'offset di 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

# Calcoli dell'offset di pressione

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 pressione = (p + (var1 + var2 + (dig_P7)) / 16,0) / 100

# Calcoli dell'offset dell'umidità

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 / var_H))) umidità = var_H * (1.0 - dig_H1 * var_H / 524288.0) se umidità > 100.0: umidità = 100.0 elif umidità < 0.0: umidità = 0.0

# Invia i dati allo schermo

print "Temperatura in Celsius: %.2f C" %cTemp print "Temperatura in Fahrenheit: %.2f F" %fTemp print "Pressione: %.2f hPa " %pressione print "Umidità relativa: %.2f %%" %humidity

Passaggio 4: il codice in esecuzione

Il codice della corsa
Il codice della corsa

Ora scarica (o git pull) il codice e aprilo nel Raspberry Pi.

Eseguire i comandi per compilare e caricare il codice sul terminale e visualizzare l'output su Display. Dopo pochi secondi verranno visualizzati tutti i parametri. Dopo esserti assicurato che tutto funzioni alla perfezione, puoi svilupparne di più interessanti.

Passaggio 5: utilizzo nel mondo pratico

Il BME280 raggiunge prestazioni elevate in tutte le applicazioni che richiedono la misurazione dell'umidità e della pressione. Queste applicazioni emergenti sono la consapevolezza del contesto, ad es. Rilevamento pelle, rilevamento cambio stanza, monitoraggio fitness/benessere, avviso per secchezza o temperature elevate, misurazione del volume e del flusso d'aria, controllo dell'automazione domestica, controllo del riscaldamento, ventilazione, aria condizionata (HVAC), Internet of Things (IoT), Miglioramento del GPS (ad es. miglioramento del tempo per la prima correzione, calcolo della stima, rilevamento della pendenza), navigazione interna (rilevamento cambio di piano, rilevamento ascensore), navigazione all'aperto, applicazioni per il tempo libero e lo sport, previsioni del tempo e indicazione della velocità verticale (aumento/discesa Velocità).

Passaggio 6: conclusione

Spero che questo progetto ispiri ulteriori sperimentazioni. Realizzare una stazione meteorologica più sofisticata può coinvolgere alcuni più sensori come pluviometro, sensore di luce, anemometro (velocità del vento) ecc. È possibile aggiungerli e modificare il codice. Abbiamo un video tutorial su YouTube con il funzionamento di base del sensore I²C con Rasp Pi. È davvero sorprendente vedere i risultati e il funzionamento delle comunicazioni I²C. Controlla anche tu. Divertiti a costruire e imparare! Fateci sapere cosa ne pensate di questo istruibile. Ci piacerebbe apportare alcuni miglioramenti, se necessario.

Consigliato: