Indholdsfortegnelse:

Temperatur og fugtighed fra Arduino til Raspberry Pi: 6 trin
Temperatur og fugtighed fra Arduino til Raspberry Pi: 6 trin

Video: Temperatur og fugtighed fra Arduino til Raspberry Pi: 6 trin

Video: Temperatur og fugtighed fra Arduino til Raspberry Pi: 6 trin
Video: Lesson 38: Using MLX90614 Infrared Contactless Temperature Sensor | Arduino Step By Step Course 2024, November
Anonim
Temperatur og fugtighed fra Arduino til Raspberry Pi
Temperatur og fugtighed fra Arduino til Raspberry Pi

Sporing af temperatur og fugtighed er vigtig, hvis du har et drivhus eller har planer om at opgradere dit drivhus til en mini-smart-farm.

Til min første Instructable vil jeg demonstrere, hvordan man opretter en prototype:

  • Tilslut en DHT11 temperatur- og fugtighedsføler til en Arduino Mega 2560
  • Programmer Arduino i C til at læse sensordata
  • Vis temperatur- og fugtighedsdata på en LCD, der er tilsluttet Arduino
  • Instruer Arduino om at sende sensordata til en Raspberry Pi 3 Model B+
  • Skriv kode i Python for at få vist sensordata

Hvorfor bruge en RPi og Arduino sammen?

Arduino- og RPi -forbindelsen kan give store muligheder, hvis du har brug for I/O, som Arduino udmærker sig ved og netværkskommunikation/multithreading/visuals, som RPi er meget bedre til.

Med andre ord kommer vi til at bruge Arduino til kontrolintensive opgaver og bruge RPi til beregningsintensive opgaver.

Robuste versioner af Arduinos er tilgængelige på Rugged-Circuits

Trin 1: Få Arduino & RPi -hardware

Arduino starterkits er let tilgængelige og giver dig mulighed for at eksperimentere med forskellige typer sensorer og gadgets. At købe et startsæt fungerer billigere i stedet for at bestille forskellige dele separat. Jeg har leveret nogle tilknyttede links herunder, der peger på Banggood og Amazon USA.

Arduino Starter Kit (Banggood)

Arduino Starter Kit (Amazon USA)

Element14 RPi 3 B+ Bundkort (Amazon USA)

Raspberry Pi 3 B+ etui (Amazon USA)

32 GB Micro SD -kort (Amazon USA).

Trin 2: Tilslut DHT11 & LCD til Arduino

Tilslut DHT11 & LCD til Arduino
Tilslut DHT11 & LCD til Arduino

Trin 3: Programmer Arduino

#arduino-dht11-lcd2004

#Forfatter: Vasoo Veerapen

#https://www.instructables.com/member/VasooV/ #Læser data fra en DHT11 tilsluttet en Arduino, vises på en LCD2004 og sender data over serie til Raspberry Pi

#omfatte

#omfatte

// LCD -display er defineret som enhedsnummer 0x27 på I2C -bussen

LiquidCrystal_I2C lcd (0x27, 20, 4);

// DHT11 er forbundet til pin 8

dht DHT; #define sensorPin 8

// Raspberry Pi er forbundet til Serial 0

#define serialPi Serial

ugyldig opsætning () {

lcd.begin (20, 4); // Initialiserer grænsefladen til LCD -skærmen og angiver dimensioner (bredde og højde) på displayet lcd.init (); lcd.backlight (); serialPi.begin (9600); // Arduino til seriel skærm}

void loop () {

// Læs sensordata

int sensorData = DHT.read11 (sensorPin); flyde temperatur = DHT. temperatur; flydefugtighed = DHT. fugtighed;

// Udskrivningstemperatur

lcd.setCursor (0, 0); lcd.print ("temperatur"); lcd.print (temperatur); lcd.print ("C");

// Udskriv fugtighed

lcd.setCursor (0, 1); lcd.print ("Fugtighed"); lcd.print (fugtighed); lcd.print (" %");

// Send temperatur- og fugtighedsdata til Raspberry Pi

serialPi.print ("");

// Vent i 10 sekunder

forsinkelse (10000); }

Trin 4: Working Arduino, LCD & DHT11 Setup

Working Arduino, LCD & DHT11 opsætning
Working Arduino, LCD & DHT11 opsætning

Trin 5: Tilslut Raspberry Pi til Arduino

Tilslut Raspberry Pi til Arduino
Tilslut Raspberry Pi til Arduino

Trin 6: RPi Python -kode for at læse USB -portens serielle data

#rpi-arduino-dht11

#Raspberry Pi læser temperatur- og fugtighedssensordata fra Arduino

import seriel, streng, tid

#I dette eksempel bruges /dev /ttyUSB0

#Dette kan ændre sig i dit tilfælde til/dev/ttyUSB1,/dev/ttyUSB2 osv. Ser = serial. Serial ('/dev/ttyUSB0', 9600)

#Følgende kodeblok fungerer sådan:

#Hvis serielle data er til stede, skal du læse linjen, afkode UTF8 -data, #… fjerne den bageste ende af linjetegn #… opdele dataene i temperatur og fugtighed #… fjerne start- og slutpunktene () #… udskrive output, mens Sandt: hvis ser.in_waiting> 0: rawserial = ser.readline () cookedserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = cookedserial.split (',') temperatur = datasplit [0].strip ('') print (temperatur) print (fugtighed)

Anbefalede: