Sommario:

Temperatura e umidità da Arduino a Raspberry Pi: 6 passaggi
Temperatura e umidità da Arduino a Raspberry Pi: 6 passaggi

Video: Temperatura e umidità da Arduino a Raspberry Pi: 6 passaggi

Video: Temperatura e umidità da Arduino a Raspberry Pi: 6 passaggi
Video: Arduino e il sensore di temperature e umidità DHT22 - Video 307 2024, Luglio
Anonim
Temperatura e umidità da Arduino a Raspberry Pi
Temperatura e umidità da Arduino a Raspberry Pi

Tenere traccia della temperatura e dell'umidità è importante se hai una serra o hai piani futuri per aggiornare la tua serra in una mini fattoria intelligente.

Per il mio primo Instructable dimostrerò come creare un prototipo:

  • Collega un sensore di temperatura e umidità DHT11 a un Arduino Mega 2560
  • Programma Arduino in C per leggere i dati del sensore
  • Visualizza i dati di temperatura e umidità su un LCD collegato ad Arduino
  • Indica ad Arduino di inviare i dati del sensore a un Raspberry Pi 3 Modello B+
  • Scrivi codice in Python per visualizzare i dati del sensore

Perché usare un RPi e Arduino insieme?

La connessione Arduino e RPi può consentire grandi capacità se hai bisogno di I/O in cui Arduino eccelle e comunicazione di rete/multithreading/visuali in cui RPi è molto meglio.

In altre parole, utilizzeremo Arduino per il controllo di attività ad alta intensità e utilizzeremo RPi per attività ad alta intensità di calcolo.

Le versioni rinforzate di Arduino sono disponibili su Rugged-Circuits

Passaggio 1: ottenere hardware Arduino e RPi

Gli starter kit Arduino sono prontamente disponibili e ti consentono di sperimentare diversi tipi di sensori e gadget. L'acquisto di uno starter kit è più economico invece di ordinare varie parti separatamente. Ho fornito alcuni link di affiliazione di seguito che puntano a Banggood e Amazon US.

Arduino Starter Kit (Banggood)

Arduino Starter Kit (Amazon USA)

Scheda madre Element14 RPi 3 B+ (Amazon USA)

Custodia Raspberry Pi 3 B+ (Amazon USA)

Scheda Micro SD da 32 GB (Amazon USA).

Passaggio 2: collega DHT11 e LCD ad Arduino

Collega DHT11 e LCD ad Arduino
Collega DHT11 e LCD ad Arduino

Passaggio 3: programma Arduino

#arduino-dht11-lcd2004

#Autore: Vasoo Veerapen

#https://www.instructables.com/member/VasooV/ #Legge i dati da un DHT11 collegato a un Arduino, visualizza su un LCD2004 e invia i dati tramite seriale a Raspberry Pi

#includere

#includere

//Il display LCD è definito come numero di dispositivo 0x27 sul bus I2C

LiquidCrystal_I2C lcd(0x27, 20, 4);

//DHT11 è collegato al pin 8

dht DHT; #define sensorPin 8

//Raspberry Pi è connesso a Serial 0

#define serialPi Serial

void setup() {

lcd.begin(20, 4); // Inizializza l'interfaccia allo schermo LCD e specifica le dimensioni (larghezza e altezza) del display lcd.init(); lcd.backlight(); serialPi.begin(9600); //Arduino al monitor seriale }

ciclo vuoto() {

//Leggi i dati del sensore

int sensorData = DHT.read11(sensorPin); temperatura galleggiante = temperatura DHT; umidità galleggiante = DHT.umidità;

//Stampa temperatura

lcd.setCursor(0, 0); lcd.print("Temperatura "); lcd.print(temperatura); lcd.print("C");

//Stampa umidità

lcd.setCursor(0, 1); lcd.print("Umidità"); lcd.print(umidità); lcd.print("%");

//Invia i dati di temperatura e umidità a Raspberry Pi

serialPi.print("");

//Aspetta 10 secondi

ritardo (10000); }

Passaggio 4: la configurazione funzionante di Arduino, LCD e DHT11

La configurazione funzionante di Arduino, LCD e DHT11
La configurazione funzionante di Arduino, LCD e DHT11

Passaggio 5: collega il Raspberry Pi ad Arduino

Collega il Raspberry Pi ad Arduino
Collega il Raspberry Pi ad Arduino

Passaggio 6: codice Python RPi per leggere i dati seriali della porta USB

#rpi-arduino-dht11

#Raspberry Pi legge i dati del sensore di temperatura e umidità da Arduino

importa seriale, stringa, ora

#In questo esempio viene utilizzato /dev/ttyUSB0

#Questo potrebbe cambiare nel tuo caso in /dev/ttyUSB1, /dev/ttyUSB2, ecc. ser = serial. Serial('/dev/ttyUSB0', 9600)

#Il seguente blocco di codice funziona in questo modo:

#Se sono presenti dati seriali, leggere la riga, decodificare i dati UTF8, #…rimuovere i caratteri di fine riga finali #…dividere i dati in temperatura e umidità #…rimuovere i puntatori iniziale e finale () #…stampare l'output mentre Vero: se ser.in_waiting > 0: rawserial = ser.readline() cottoserial = rawserial.decode('utf-8').strip('\r\n') datasplit = cottoserial.split(', ') temperatura = datasplit[0].strip('') print(temperatura) print(umidità)

Consigliato: