Inhoudsopgave:

Temperatuur en vochtigheid van Arduino naar Raspberry Pi - Ajarnpa
Temperatuur en vochtigheid van Arduino naar Raspberry Pi - Ajarnpa

Video: Temperatuur en vochtigheid van Arduino naar Raspberry Pi - Ajarnpa

Video: Temperatuur en vochtigheid van Arduino naar Raspberry Pi - Ajarnpa
Video: Arduino project - Weerstation met luchtvochtigheid, actuele temperatuur en min / max temperatuur. 2024, Juli-
Anonim
Temperatuur en vochtigheid Van Arduino tot Raspberry Pi
Temperatuur en vochtigheid Van Arduino tot Raspberry Pi

Het bijhouden van temperatuur en vochtigheid is belangrijk als u een kas heeft, of toekomstige plannen heeft om uw kas te upgraden naar een mini-smart-farm.

Voor mijn eerste Instructable zal ik laten zien hoe je een prototype kunt maken:

  • Sluit een DHT11 temperatuur- en vochtigheidssensor aan op een Arduino Mega 2560
  • Programmeer de Arduino in C om de sensorgegevens te lezen
  • Toon temperatuur- en vochtigheidsgegevens op een LCD die is aangesloten op de Arduino
  • Instrueer de Arduino om de sensorgegevens naar een Raspberry Pi 3 Model B+ te sturen
  • Schrijf code in Python om de sensorgegevens weer te geven

Waarom een RPi en Arduino samen gebruiken?

De Arduino- en RPi-verbinding kunnen geweldige mogelijkheden bieden als je I/O nodig hebt waar de Arduino in uitblinkt en netwerkcommunicatie/multithreading/visuals waar de RPi veel beter in is.

Met andere woorden, we gaan de Arduino gebruiken voor controle-intensieve taken en de RPi gebruiken voor rekenintensieve taken.

Robuuste versies van Arduino's zijn verkrijgbaar bij Rugged-Circuits

Stap 1: Arduino & RPi-hardware verkrijgen

Arduino-starterkits zijn direct beschikbaar en stellen u in staat om te experimenteren met verschillende soorten sensoren en gadgets. Een starterskit aanschaffen is voordeliger in plaats van verschillende onderdelen los te bestellen. Ik heb hieronder enkele gelieerde links geleverd die verwijzen naar Banggood en Amazon US.

Arduino Starter Kit (Banggood)

Arduino Starter Kit (Amazon VS)

Element14 RPi 3 B+ moederbord (Amazon VS)

Raspberry Pi 3 B+-behuizing (Amazon VS)

32 GB Micro SD-kaart (Amazon VS).

Stap 2: Verbind de DHT11 & LCD met de Arduino

Sluit de DHT11 & LCD aan op de Arduino
Sluit de DHT11 & LCD aan op de Arduino

Stap 3: Programmeer de Arduino

#arduino-dht11-lcd2004

#Auteur: Vasoo Veerapen

#https://www.instructables.com/member/VasooV/ #Leest gegevens van een DHT11 die is aangesloten op een Arduino, wordt weergegeven op een LCD2004 en verzendt gegevens serieel naar Raspberry Pi

#erbij betrekken

#erbij betrekken

// LCD-scherm wordt gedefinieerd als apparaatnummer 0x27 op de I2C-bus

LiquidCrystal_I2C lcd (0x27, 20, 4);

// DHT11 is verbonden met pin 8

dht-DHT; #define sensorPin 8

// Raspberry Pi is verbonden met Serial 0

#define serialPi Serial

ongeldige setup() {

lcd.begin(20, 4); // Initialiseert de interface naar het LCD-scherm en specificeert de afmetingen (breedte en hoogte) van het scherm lcd.init(); lcd.achtergrondverlichting(); serialPi.begin (9600); //Arduino naar seriële monitor}

lege lus() {

//Lees sensorgegevens

int sensorData = DHT.read11 (sensorPin); vlottertemperatuur = DHT.temperatuur; vlottervochtigheid = DHT.vochtigheid;

// Afdruktemperatuur

lcd.setCursor(0, 0); lcd.print("Temperatuur"); lcd.afdruk(temperatuur); lcd.print(" C");

//Afdrukvochtigheid

lcd.setCursor(0, 1); lcd.print("Vochtigheid "); lcd.print(vochtigheid); lcd.print(" %");

//Stuur temperatuur- en vochtigheidsgegevens naar Raspberry Pi

serialPi.print("");

//Wacht 10 seconden

vertraging (10000); }

Stap 4: De werkende Arduino, LCD & DHT11 Setup

De werkende Arduino, LCD & DHT11 setup
De werkende Arduino, LCD & DHT11 setup

Stap 5: Verbind de Raspberry Pi met de Arduino

Verbind de Raspberry Pi met de Arduino
Verbind de Raspberry Pi met de Arduino

Stap 6: RPi Python-code om de seriële gegevens van de USB-poort te lezen

#rpi-arduino-dht11

#Raspberry Pi leest temperatuur- en vochtigheidssensorgegevens van Arduino

serienummer, tekenreeks, tijd importeren

#In dit voorbeeld wordt /dev/ttyUSB0 gebruikt

#Dit kan in jouw geval veranderen in /dev/ttyUSB1, /dev/ttyUSB2, etc. ser = serial. Serial('/dev/ttyUSB0', 9600)

#Het volgende codeblok werkt als volgt:

#Als er seriële gegevens aanwezig zijn, lees dan de regel, decodeer de UTF8-gegevens, #…verwijder de tekens aan het einde van de regel #…splits de gegevens in temperatuur en vochtigheid #…verwijder de begin- en eindwijzers () #…druk de uitvoer af terwijl True: if ser.in_waiting > 0: rawserial = ser.readline() cookserial = rawserial.decode('utf-8').strip('\r\n') datasplit = cookserial.split(', ') temperatuur = datasplit[0].strip('') print(temperatuur) print(vochtigheid)

Aanbevolen: