Cuprins:

Temperatură și umiditate de la Arduino la Raspberry Pi: 6 pași
Temperatură și umiditate de la Arduino la Raspberry Pi: 6 pași

Video: Temperatură și umiditate de la Arduino la Raspberry Pi: 6 pași

Video: Temperatură și umiditate de la Arduino la Raspberry Pi: 6 pași
Video: termostat si pentru temperaturi negative cu Arduino 2024, Iulie
Anonim
Temperatură și umiditate de la Arduino la Raspberry Pi
Temperatură și umiditate de la Arduino la Raspberry Pi

Urmărirea temperaturii și a umidității este importantă dacă aveți o seră sau aveți planuri viitoare de a vă moderniza sera într-o mini-fermă inteligentă.

Pentru primul meu instructabil voi demonstra cum să creez un prototip:

  • Conectați un senzor de temperatură și umiditate DHT11 la un Arduino Mega 2560
  • Programați Arduino în C pentru a citi datele senzorului
  • Afișați datele de temperatură și umiditate pe un ecran LCD conectat la Arduino
  • Instruiți Arduino să trimită datele senzorului către un Raspberry Pi 3 Model B +
  • Scrieți cod în Python pentru a afișa datele senzorului

De ce să folosim împreună un RPi și un Arduino?

Conexiunea Arduino și RPi vă poate oferi capabilități excelente dacă aveți nevoie de I / O la care excelează Arduino și de comunicații de rețea / multithreading / vizuale la care RPi este mult mai bun.

Cu alte cuvinte, vom folosi Arduino pentru controlul sarcinilor intensive și vom folosi RPi pentru sarcinile intensive de calcul.

Versiunile Ruggedized ale Arduinos sunt disponibile la Rugged-Circuits

Pasul 1: Obținerea hardware-ului Arduino și RPi

Kituri de pornire Arduino sunt ușor disponibile și vă permit să experimentați cu diferite tipuri de senzori și gadgeturi. Achiziționarea unui kit de pornire funcționează mai ieftin în loc să comandați diferite piese separat. Am furnizat mai jos câteva linkuri afiliate care arată către Banggood și Amazon SUA.

Kit de pornire Arduino (Banggood)

Kit de pornire Arduino (Amazon SUA)

Element14 RPi 3 B + Placă de bază (Amazon SUA)

Raspberry Pi 3 B + Case (Amazon SUA)

Card Micro SD de 32 GB (Amazon SUA).

Pasul 2: Conectați DHT11 și LCD la Arduino

Conectați DHT11 și LCD la Arduino
Conectați DHT11 și LCD la Arduino

Pasul 3: Programați Arduino

# arduino-dht11-lcd2004

#Autor: Vasoo Veerapen

#https://www.instructables.com/member/VasooV/ #Citește date de pe un DHT11 conectat la un Arduino, se afișează pe un LCD2004 și trimite date prin serial către Raspberry Pi

#include

#include

// Afișajul LCD este definit ca numărul dispozitivului 0x27 pe magistrala I2C

LiquidCrystal_I2C lcd (0x27, 20, 4);

// DHT11 este conectat la pinul 8

dht DHT; #define sensorPin 8

// Raspberry Pi este conectat la seria 0

#define serialPi Serial

configurare nulă () {

lcd.inceput (20, 4); // Inițializează interfața cu ecranul LCD și specifică dimensiunile (lățimea și înălțimea) afișajului lcd.init (); lcd.backlight (); serialPi.begin (9600); // Arduino la monitorul serial}

bucla nulă () {

// Citiți datele senzorului

int sensorData = DHT.read11 (sensorPin); temperatura plutitorului = temperatura DHT; umiditate plutitoare = DHT.umiditate;

// Temperatura de imprimare

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

// Imprimarea umidității

lcd.setCursor (0, 1); lcd.print ("Umiditate"); lcd.print (umiditate); lcd.print ("%");

// Trimiteți date despre temperatură și umiditate către Raspberry Pi

serialPi.print ("");

// Așteptați 10 secunde

întârziere (10000); }

Pasul 4: Configurarea de lucru Arduino, LCD și DHT11

Configurarea de lucru Arduino, LCD și DHT11
Configurarea de lucru Arduino, LCD și DHT11

Pasul 5: Conectați Raspberry Pi la Arduino

Conectați Raspberry Pi la Arduino
Conectați Raspberry Pi la Arduino

Pasul 6: Codul RPi Python pentru a citi datele seriale ale portului USB

# rpi-arduino-dht11

#Raspberry Pi citește datele senzorului de temperatură și umiditate de la Arduino

import serial, șir, timp

# În acest exemplu este utilizat / dev / ttyUSB0

# Acest lucru se poate schimba în cazul dvs. la / dev / ttyUSB1, / dev / ttyUSB2, etc. ser = serial. Serial ('/ dev / ttyUSB0', 9600)

# Următorul bloc de cod funcționează astfel:

#Dacă există date seriale, citiți linia, decodificați datele UTF8, # … eliminați capătul final al caracterelor de linie # … împărțiți datele în temperatură și umiditate # … eliminați indicii de început și de sfârșit () # … imprimați ieșirea în timp ce Adevărat: dacă ser.in_waiting> 0: rawserial = ser.readline () cookedserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = cookedserial.split (',') temperature = datasplit [0].strip ('') print (temperatura) print (umiditate)

Recomandat: