Obsah:

Teplota a vlhkosť od Arduina po Raspberry Pi: 6 krokov
Teplota a vlhkosť od Arduina po Raspberry Pi: 6 krokov

Video: Teplota a vlhkosť od Arduina po Raspberry Pi: 6 krokov

Video: Teplota a vlhkosť od Arduina po Raspberry Pi: 6 krokov
Video: Raspberry Pi fan air direction and its effect on CPU temperature, what is better? push vs pull 2024, Júl
Anonim
Teplota a vlhkosť od Arduino po Raspberry Pi
Teplota a vlhkosť od Arduino po Raspberry Pi

Sledovanie teploty a vlhkosti je dôležité, ak máte skleník alebo máte v budúcnosti v pláne upgradovať svoj skleník na mini inteligentnú farmu.

Pre môj prvý Instructable ukážem, ako vytvoriť prototyp:

  • Pripojte snímač teploty a vlhkosti DHT11 k Arduino Mega 2560
  • Naprogramujte Arduino v C tak, aby čítalo údaje zo senzorov
  • Zobrazte údaje o teplote a vlhkosti na LCD displeji pripojenom k Arduinu
  • Požiadajte Arduino, aby odoslalo údaje zo senzora na Raspberry Pi 3 Model B+
  • Na zobrazenie údajov senzora napíšte kód v Pythone

Prečo používať RPi a Arduino spoločne?

Pripojenie Arduino a RPi môže poskytnúť veľké možnosti, ak potrebujete I/O, v ktorých Arduino vyniká, a sieťovú komunikáciu/viacvláknové/vizuály, v ktorých je RPi oveľa lepší.

Inými slovami, použijeme Arduino na riadenie náročných úloh a RPi na výpočet náročných úloh.

Robustné verzie Arduinos sú k dispozícii na Rugged-Circuits

Krok 1: Získanie hardvéru Arduino a RPi

Štartovacie sady Arduino sú ľahko dostupné a umožňujú vám experimentovať s rôznymi druhmi senzorov a pomôcok. Kúpa štartovacej sady vyjde lacnejšie, ako objednávať rôzne diely samostatne. Ďalej som uviedol niekoľko odkazov na pobočky, ktoré odkazujú na Banggood a Amazon USA.

Štartovacia sada Arduino (Banggood)

Štartovacia sada Arduino (Amazon USA)

Základná doska Element14 RPi 3 B+ (Amazon USA)

Puzdro Raspberry Pi 3 B+ (Amazon USA)

32 GB karta Micro SD (Amazon USA).

Krok 2: Pripojte DHT11 a LCD k Arduinu

Pripojte DHT11 a LCD k Arduinu
Pripojte DHT11 a LCD k Arduinu

Krok 3: Naprogramujte Arduino

#arduino-dht11-lcd2004

#Autor: Vasoo Veerapen

#https://www.instructables.com/member/VasooV/ #Číta údaje z DHT11 pripojeného k Arduinu, zobrazuje sa na LCD2004 a odosiela sériové údaje na Raspberry Pi

#zahrnúť

#zahrnúť

// LCD displej je definovaný ako číslo zariadenia 0x27 na zbernici I2C

LiquidCrystal_I2C lcd (0x27, 20, 4);

// DHT11 je pripojený k pinu 8

dht DHT; #definovať senzorPin 8

// Raspberry Pi je pripojené k sériovej 0

#define serialPi Serial

neplatné nastavenie () {

lcd.begin (20, 4); // Inicializuje rozhranie na obrazovku LCD a určuje rozmery (šírku a výšku) displeja lcd.init (); lcd.backlight (); serialPi.begin (9600); // Arduino na sériový monitor}

prázdna slučka () {

// Prečítajte si údaje senzora

int sensorData = DHT.read11 (sensorPin); plávajúca teplota = DHT.teplota; plaváková vlhkosť = DHT.vlhkosť;

// Teplota tlače

lcd.setCursor (0, 0); lcd.print („teplota“); lcd.print (teplota); lcd.print ("C");

// Vlhkosť tlače

lcd.setCursor (0, 1); lcd.print („Vlhkosť“); lcd.print (vlhkosť); lcd.print (" %");

// Odoslanie údajov o teplote a vlhkosti do Raspberry Pi

serialPi.print ("");

// Počkajte 10 sekúnd

oneskorenie (10 000); }

Krok 4: Fungujúce nastavenie Arduina, LCD a DHT11

Fungujúce nastavenie Arduino, LCD a DHT11
Fungujúce nastavenie Arduino, LCD a DHT11

Krok 5: Pripojte Raspberry Pi k Arduinu

Pripojte Raspberry Pi k Arduinu
Pripojte Raspberry Pi k Arduinu

Krok 6: RPi Python kód na čítanie sériových údajov portu USB

#rpi-arduino-dht11

#Raspberry Pi číta údaje senzora teploty a vlhkosti z Arduina

import seriálu, reťazca, času

#V tomto prípade sa používa /dev /ttyUSB0

#To sa môže vo vašom prípade zmeniť na/dev/ttyUSB1,/dev/ttyUSB2 atď. Ser = serial. Serial ('/dev/ttyUSB0', 9600)

#Nasledujúci blok kódu funguje takto:

#Ak sú k dispozícii sériové údaje, prečítajte si riadok, dekódujte údaje UTF8, #… odstráňte koncový koniec znakov riadka #… rozdeľte údaje na teplotu a vlhkosť #… odstráňte počiatočné a koncové ukazovatele () #… vytlačte výstup, kým Pravda: ak ser.in_waiting> 0: rawserial = ser.readline () brewserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = brewserial.split (',') teplota = datasplit [0].strip ('') tlač (teplota) tlač (vlhkosť)

Odporúča: