Sadržaj:

Temperatura i vlažnost od Arduina do Raspberry Pi: 6 koraka
Temperatura i vlažnost od Arduina do Raspberry Pi: 6 koraka

Video: Temperatura i vlažnost od Arduina do Raspberry Pi: 6 koraka

Video: Temperatura i vlažnost od Arduina do Raspberry Pi: 6 koraka
Video: Температура и влажность на Raspberry pi4 2024, Juli
Anonim
Temperatura i vlažnost od Arduina do Raspberry Pi
Temperatura i vlažnost od Arduina do Raspberry Pi

Praćenje temperature i vlažnosti važno je ako imate staklenik ili planirate u budućnosti nadograditi svoj staklenik u mini pametnu farmu.

Za svoj prvi Instructable pokazat ću kako stvoriti prototip:

  • Priključite senzor temperature i vlažnosti DHT11 na Arduino Mega 2560
  • Programirajte Arduino u C za čitanje podataka senzora
  • Prikažite podatke o temperaturi i vlažnosti na LCD -u spojenom na Arduino
  • Uputite Arduino da pošalje podatke senzora na Raspberry Pi 3 model B+
  • Napišite kôd u Pythonu za prikaz podataka senzora

Zašto koristiti RPi i Arduino zajedno?

Arduino i RPi veza mogu omogućiti velike mogućnosti ako vam je potreban I/O u čemu se Arduino ističe i mrežna komunikacija/višeslojno prikazivanje/vizualizacija u kojoj je RPi mnogo bolji.

Drugim riječima, Arduino ćemo koristiti za upravljanje intenzivnim zadacima, a RPi za izračunavanje intenzivnih zadataka.

Robusne verzije Arduinosa dostupne su na Rugged-Circuits

Korak 1: Nabavite Arduino i RPi hardver

Arduino početni setovi dostupni su i omogućuju vam eksperimentiranje s različitim vrstama senzora i naprava. Kupovinom početnog seta isplativije je umjesto naručivanja različitih dijelova zasebno. U nastavku sam naveo neke partnerske veze koje upućuju na Banggood i Amazon u SAD -u.

Arduino početni komplet (Banggood)

Arduino početni komplet (Amazon, SAD)

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

Raspberry Pi 3 B+ kućište (Amazon, SAD)

32 GB Micro SD kartica (Amazon SAD).

Korak 2: Priključite DHT11 & LCD na Arduino

Spojite DHT11 & LCD na Arduino
Spojite DHT11 & LCD na Arduino

Korak 3: Programirajte Arduino

#arduino-dht11-lcd2004

#Autor: Vasoo Veerapen

#https://www.instructables.com/member/VasooV/ #Čita podatke s DHT11 spojenog na Arduino, prikazuje se na LCD -u2004 i šalje podatke serijski na Raspberry Pi

#include

#include

// LCD zaslon je definiran kao broj uređaja 0x27 na sabirnici I2C

LiquidCrystal_I2C LCD (0x27, 20, 4);

// DHT11 je spojen na pin 8

dht DHT; #define sensorPin 8

// Raspberry Pi je povezan sa serijskim 0

#define serialPi Serial

void setup () {

lcd.begin (20, 4); // Pokreće sučelje za LCD ekran i navodi dimenzije (širinu i visinu) ekrana lcd.init (); lcd.backlight (); serialPi.begin (9600); // Arduino na serijski monitor}

void loop () {{100} {101}

// Očitavanje podataka senzora

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

// Temperatura ispisa

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

// Vlažnost štampe

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

// Slanje podataka o temperaturi i vlažnosti na Raspberry Pi

serialPi.print ("");

// Pričekajte 10 sekundi

kašnjenje (10000); }

Korak 4: Radni Arduino, LCD i DHT11 postavljanje

Radni Arduino, LCD i DHT11 postavljanje
Radni Arduino, LCD i DHT11 postavljanje

Korak 5: Povežite Raspberry Pi na Arduino

Spojite Raspberry Pi na Arduino
Spojite Raspberry Pi na Arduino

Korak 6: RPi Python kod za čitanje serijskih podataka USB porta

#rpi-arduino-dht11

#Raspberry Pi čita podatke senzora temperature i vlažnosti iz Arduina

uvoz serijskog, niza, vremena

#U ovom primjeru se koristi /dev /ttyUSB0

#Ovo se u vašem slučaju može promijeniti u/dev/ttyUSB1,/dev/ttyUSB2, itd. Ser = serial. Serial ('/dev/ttyUSB0', 9600)

#Sljedeći blok koda funkcionira ovako:

#Ako su prisutni serijski podaci, pročitajte redak, dekodirajte UTF8 podatke, #… uklonite kraj znakova kraja retka #… podijelite podatke na temperaturu i vlažnost #… uklonite početne i završne pokazivače () #… ispišite izlaz dok Tačno: ako ser.in_waiting> 0: rawserial = ser.readline () cookserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = cookserial.split (',') temperatura = datasplit [0].trakasti ('') ispis (temperatura) ispis (vlažnost)

Preporučuje se: