Innholdsfortegnelse:

Temperatur og fuktighet fra Arduino til Raspberry Pi: 6 trinn
Temperatur og fuktighet fra Arduino til Raspberry Pi: 6 trinn

Video: Temperatur og fuktighet fra Arduino til Raspberry Pi: 6 trinn

Video: Temperatur og fuktighet fra Arduino til Raspberry Pi: 6 trinn
Video: Using Melexis MLX90614 Non-Contact Infrared Thermometer with Arduino 2024, Juli
Anonim
Temperatur og fuktighet fra Arduino til Raspberry Pi
Temperatur og fuktighet fra Arduino til Raspberry Pi

Sporing av temperatur og fuktighet er viktig hvis du har et drivhus, eller har planer om å oppgradere drivhuset ditt til en mini smart-farm.

For min første Instructable vil jeg demonstrere hvordan jeg lager en prototype:

  • Koble en DHT11 temperatur- og fuktighetssensor til en Arduino Mega 2560
  • Programmer Arduino i C for å lese sensordata
  • Vis temperatur- og fuktighetsdata på en LCD som er koblet til Arduino
  • Instruer Arduino om å sende sensordata til en Raspberry Pi 3 Model B+
  • Skriv kode i Python for å vise sensordata

Hvorfor bruke en RPi og Arduino sammen?

Arduino- og RPi -tilkoblingen kan gi store muligheter hvis du trenger I/O som Arduino utmerker seg med og nettverkskommunikasjon/multithreading/visuals som RPi er mye bedre på.

Med andre ord, vi kommer til å bruke Arduino for kontrollintensive oppgaver og bruke RPi for beregningsintensive oppgaver.

Robuste versjoner av Arduinos er tilgjengelig på Rugged-Circuits

Trinn 1: Skaff deg Arduino & RPi -maskinvare

Arduino startpakker er lett tilgjengelige og lar deg eksperimentere med forskjellige typer sensorer og gadgets. Å kjøpe et startsett fungerer billigere i stedet for å bestille forskjellige deler separat. Jeg har levert noen tilknyttede lenker nedenfor som peker på Banggood og Amazon USA.

Arduino Starter Kit (Banggood)

Arduino Starter Kit (Amazon USA)

Element14 RPi 3 B+ Hovedkort (Amazon USA)

Raspberry Pi 3 B+ etui (Amazon USA)

32 GB Micro SD -kort (Amazon USA).

Trinn 2: Koble DHT11 og LCD til Arduino

Koble DHT11 og LCD til Arduino
Koble DHT11 og LCD til Arduino

Trinn 3: Programmer Arduino

#arduino-dht11-lcd2004

#Forfatter: Vasoo Veerapen

#https://www.instructables.com/member/VasooV/ #Leser data fra en DHT11 koblet til en Arduino, vises på en LCD2004 og sender data over seriell til Raspberry Pi

#inkludere

#inkludere

// LCD -skjerm er definert som enhetsnummer 0x27 på I2C -bussen

LiquidCrystal_I2C lcd (0x27, 20, 4);

// DHT11 er koblet til pin 8

dht DHT; #define sensorPin 8

// Raspberry Pi er koblet til Serial 0

#define serialPi Serial

ugyldig oppsett () {

lcd.begin (20, 4); // Initialiserer grensesnittet til LCD -skjermen, og spesifiserer dimensjonene (bredden og høyden) på skjermen lcd.init (); lcd.backlight (); serialPi.begin (9600); // Arduino til seriell skjerm}

void loop () {

// Les sensordata

int sensorData = DHT.read11 (sensorPin); flyte temperatur = DHT. temperatur; flyte fuktighet = DHT. fuktighet;

// Utskriftstemperatur

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

// Skriv ut fuktighet

lcd.setCursor (0, 1); lcd.print ("Fuktighet"); lcd.print (fuktighet); lcd.print (" %");

// Send temperatur- og fuktighetsdata til Raspberry Pi

serialPi.print ("");

// Vent i 10 sekunder

forsinkelse (10000); }

Trinn 4: Working Arduino, LCD og DHT11 -oppsettet

Oppsett av Working Arduino, LCD og DHT11
Oppsett av Working Arduino, LCD og DHT11

Trinn 5: Koble Raspberry Pi til Arduino

Koble Raspberry Pi til Arduino
Koble Raspberry Pi til Arduino

Trinn 6: RPi Python -kode for å lese USB -portens serielle data

#rpi-arduino-dht11

#Raspberry Pi leser temperatur- og fuktighetssensordata fra Arduino

importer serie, streng, tid

#I dette eksemplet /dev /ttyUSB0 brukes

#Dette kan endres i ditt tilfelle til/dev/ttyUSB1,/dev/ttyUSB2, etc. ser = serial. Serial ('/dev/ttyUSB0', 9600)

#Følgende kodeblokk fungerer slik:

#Hvis serielle data er tilstede, les linjen, dekod UTF8 -dataene, #… fjern bakenden av linjetegn #… del dataene i temperatur og fuktighet #… fjern start- og sluttpekene () #… skriv ut utskriften mens Sant: hvis ser.in_waiting> 0: rawserial = ser.readline () cookedserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = cookedserial.split (',') temperatur = datasplitt [0].strip ('') utskrift (temperatur) utskrift (fuktighet)

Anbefalt: