Kazalo:

Temperatura in vlažnost od Arduina do Raspberry Pi: 6 korakov
Temperatura in vlažnost od Arduina do Raspberry Pi: 6 korakov

Video: Temperatura in vlažnost od Arduina do Raspberry Pi: 6 korakov

Video: Temperatura in vlažnost od Arduina do Raspberry Pi: 6 korakov
Video: ESP32 IoT Weather Station 2024, November
Anonim
Temperatura in vlažnost od Arduina do Raspberry Pi
Temperatura in vlažnost od Arduina do Raspberry Pi

Sledenje temperaturi in vlažnosti je pomembno, če imate rastlinjak ali načrtujete prihodnje nadgradnje svojega rastlinjaka v mini pametno kmetijo.

Za svoj prvi Instructable bom pokazal, kako ustvariti prototip:

  • Senzor temperature in vlažnosti DHT11 priključite na Arduino Mega 2560
  • Programirajte Arduino v C za branje podatkov senzorja
  • Prikažite podatke o temperaturi in vlažnosti na LCD -ju, priključenem na Arduino
  • Naročite Arduinu, naj pošlje podatke senzorja v Raspberry Pi 3 Model B+
  • Za prikaz podatkov senzorja napišite kodo v Python

Zakaj uporabljati RPi in Arduino skupaj?

Povezava Arduino in RPi lahko omogoči odlične zmogljivosti, če potrebujete V/I, v katerem se Arduino odlikuje, in omrežno komunikacijo/večnitno/vizualno podobo, v kateri je RPi veliko boljši.

Z drugimi besedami, Arduino bomo uporabili za nadzor intenzivnih nalog, RPi pa za izračun intenzivnih nalog.

Robustne različice Arduinosa so na voljo na naslovu Rugged-Circuits

1. korak: Pridobite strojno opremo Arduino & RPi

Začetni kompleti Arduino so na voljo in vam omogočajo eksperimentiranje z različnimi vrstami senzorjev in pripomočkov. Nakup začetnega kompleta je cenejši, namesto da naročite različne dele ločeno. Spodaj sem predložil nekaj partnerskih povezav, ki kažejo na Banggood in Amazon ZDA.

Začetni komplet Arduino (Banggood)

Arduino Starter Kit (Amazon ZDA)

Matična plošča Element14 RPi 3 B+ (Amazon, ZDA)

Ovitek Raspberry Pi 3 B+ (Amazon, ZDA)

32 GB kartica Micro SD (Amazon ZDA).

Korak: DHT11 in LCD priključite na Arduino

DHT11 in LCD priključite na Arduino
DHT11 in LCD priključite na Arduino

3. korak: Programirajte Arduino

#arduino-dht11-lcd2004

#Autor: Vasoo Veerapen

#https://www.instructables.com/member/VasooV/ #Bere podatke iz DHT11, povezanega z Arduinom, se prikaže na LCD -ju2004 in pošlje podatke prek Serije na Raspberry Pi

#vključi

#vključi

// LCD zaslon je definiran kot številka naprave 0x27 na vodilu I2C

LiquidCrystal_I2C LCD (0x27, 20, 4);

// DHT11 je priključen na pin 8

dht DHT; #define sensorPin 8

// Raspberry Pi je priključen na serijski 0

#define serialPi Serial

void setup () {

lcd.begin (20, 4); // Inicializira vmesnik do LCD zaslona in poda dimenzije (širino in višino) zaslona lcd.init (); lcd.backlight (); serialPi.begin (9600); // Arduino na serijski monitor}

void loop () {

// Branje podatkov senzorja

int sensorData = DHT.read11 (sensorPin); temperatura plovca = temperatura DHT; vlažnost plovca = DHT.vlažnost;

// Temperatura tiskanja

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

// Vlažnost tiskanja

lcd.setCursor (0, 1); lcd.print ("Vlažnost"); lcd.tisk (vlažnost); lcd.print (" %");

// Pošljite podatke o temperaturi in vlažnosti v Raspberry Pi

serialPi.print ("");

// Počakajte 10 sekund

zamuda (10000); }

4. korak: Delovna nastavitev Arduino, LCD in DHT11

Delovna nastavitev Arduino, LCD in DHT11
Delovna nastavitev Arduino, LCD in DHT11

5. korak: Povežite Raspberry Pi z Arduinom

Povežite Raspberry Pi z Arduinom
Povežite Raspberry Pi z Arduinom

Korak 6: Koda Python RPi za branje serijskih podatkov vrat USB

#rpi-arduino-dht11

#Raspberry Pi bere podatke senzorja temperature in vlažnosti iz Arduina

uvoz serijske, niz, čas

#V tem primeru se uporablja /dev /ttyUSB0

#To se lahko v vašem primeru spremeni v/dev/ttyUSB1,/dev/ttyUSB2 itd. Ser = serial. Serial ('/dev/ttyUSB0', 9600)

#Naslednji blok kode deluje tako:

#Če so prisotni serijski podatki, preberite vrstico, dekodirajte podatke UTF8, #… odstranite zadnji znak vrstice #… razdelite podatke na temperaturo in vlažnost #… odstranite začetni in končni kazalec () #… natisnite izhod, medtem ko Res: če ser.in_waiting> 0: rawserial = ser.readline () cookserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = cookserial.split (',') temperatura = datasplit [0].trak ('') tisk (temperatura) tisk (vlažnost)

Priporočena: