Innehållsförteckning:

Temperatur och luftfuktighet från Arduino till Raspberry Pi: 6 steg
Temperatur och luftfuktighet från Arduino till Raspberry Pi: 6 steg

Video: Temperatur och luftfuktighet från Arduino till Raspberry Pi: 6 steg

Video: Temperatur och luftfuktighet från Arduino till Raspberry Pi: 6 steg
Video: Высокая плотность 2022 2024, Juli
Anonim
Temperatur och luftfuktighet från Arduino till Raspberry Pi
Temperatur och luftfuktighet från Arduino till Raspberry Pi

Spåra temperatur och luftfuktighet är viktigt om du har ett växthus, eller har framtida planer på att uppgradera ditt växthus till en mini smart-farm.

För min första Instructable kommer jag att visa hur man skapar en prototyp:

  • Anslut en DHT11 temperatur- och fuktsensor till en Arduino Mega 2560
  • Programmera Arduino i C för att läsa sensordata
  • Visa temperatur- och luftfuktighetsdata på en LCD -skärm ansluten till Arduino
  • Instruera Arduino att skicka sensordata till en Raspberry Pi 3 Model B+
  • Skriv kod i Python för att visa sensordata

Varför använda en RPi och Arduino tillsammans?

Arduino- och RPi -anslutningen kan ge stora möjligheter om du behöver I/O som Arduino utmärker sig och nätverkskommunikation/multithreading/visuals som RPi är mycket bättre på.

Med andra ord kommer vi att använda Arduino för kontrollintensiva uppgifter och använda RPi för beräkningsintensiva uppgifter.

Ruggedized versioner av Arduinos är tillgängliga på Rugged-Circuits

Steg 1: Skaffa Arduino & RPi -hårdvara

Arduino startpaket är lätt tillgängliga och låter dig experimentera med olika typer av sensorer och prylar. Att köpa ett startpaket fungerar billigare istället för att beställa olika delar separat. Jag har levererat några anslutningslänkar nedan som pekar på Banggood och Amazon USA.

Arduino Starter Kit (Banggood)

Arduino startpaket (Amazon USA)

Element14 RPi 3 B+ moderkort (Amazon USA)

Raspberry Pi 3 B+ fodral (Amazon USA)

32 GB Micro SD -kort (Amazon USA).

Steg 2: Anslut DHT11 & LCD till Arduino

Anslut DHT11 & LCD till Arduino
Anslut DHT11 & LCD till Arduino

Steg 3: Programmera Arduino

#arduino-dht11-lcd2004

#Författare: Vasoo Veerapen

#https://www.instructables.com/member/VasooV/ #Läser data från en DHT11 ansluten till en Arduino, visas på en LCD2004 och skickar data över serie till Raspberry Pi

#omfatta

#omfatta

// LCD -skärm definieras som enhetsnummer 0x27 på I2C -bussen

LiquidCrystal_I2C lcd (0x27, 20, 4);

// DHT11 är ansluten till stift 8

dht DHT; #define sensorPin 8

// Raspberry Pi är ansluten till Serial 0

#define serialPi Serial

void setup () {

lcd.begin (20, 4); // Initierar gränssnittet till LCD -skärmen och specificerar måtten (bredd och höjd) på displayen lcd.init (); lcd.backlight (); serialPi.begin (9600); // Arduino till seriell bildskärm}

void loop () {

// Läs sensordata

int sensorData = DHT.read11 (sensorPin); flottörtemperatur = DHT. temperatur; flottörfuktighet = DHT. luftfuktighet;

// Utskriftstemperatur

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

// Skriv ut luftfuktighet

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

// Skicka temperatur- och luftfuktighetsdata till Raspberry Pi

serialPi.print ("");

// Vänta i 10 sekunder

fördröjning (10000); }

Steg 4: Arbetande Arduino, LCD & DHT11 -inställningar

Arbetande Arduino, LCD och DHT11 -inställningar
Arbetande Arduino, LCD och DHT11 -inställningar

Steg 5: Anslut Raspberry Pi till Arduino

Anslut Raspberry Pi till Arduino
Anslut Raspberry Pi till Arduino

Steg 6: RPi Python -kod för att läsa USB -portens seriella data

#rpi-arduino-dht11

#Raspberry Pi läser temperatur- och fuktighetssensordata från Arduino

importera serie, sträng, tid

#I det här exemplet används /dev /ttyUSB0

#Detta kan ändras i ditt fall till/dev/ttyUSB1,/dev/ttyUSB2, etc. ser = serial. Serial ('/dev/ttyUSB0', 9600)

#Följande kodblock fungerar så här:

#Om seriell data finns, läs raden, avkoda UTF8 -data, #… ta bort den bakre änden av radtecken #… dela upp data i temperatur och luftfuktighet #… ta bort start- och slutpekarna () #… skriv ut utskriften medan Sant: om ser.in_waiting> 0: rawserial = ser.readline () cookedserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = cookedserial.split (',') temperatur = datasplit [0].strip ('') tryck (temperatur) tryck (fuktighet)

Rekommenderad: