Obsah:

Teplota a vlhkost od Arduina po Raspberry Pi: 6 kroků
Teplota a vlhkost od Arduina po Raspberry Pi: 6 kroků

Video: Teplota a vlhkost od Arduina po Raspberry Pi: 6 kroků

Video: Teplota a vlhkost od Arduina po Raspberry Pi: 6 kroků
Video: Arduino návody | Raspberry Pi: Teplotní senzor DHT11/22/AM2302 2024, Červenec
Anonim
Teplota a vlhkost od Arduina po Raspberry Pi
Teplota a vlhkost od Arduina po Raspberry Pi

Sledování teploty a vlhkosti je důležité, pokud máte skleník nebo máte plány do budoucna upgradovat svůj skleník na mini chytrou farmu.

Pro svůj první Instructable předvedu, jak vytvořit prototyp:

  • Připojte snímač teploty a vlhkosti DHT11 k Arduino Mega 2560
  • Naprogramujte Arduino v C tak, aby četlo data ze senzorů
  • Zobrazte údaje o teplotě a vlhkosti na LCD připojeném k Arduinu
  • Požádejte Arduino, aby odeslalo data ze senzoru na Raspberry Pi 3 Model B+
  • Chcete -li zobrazit data senzorů, napište kód v Pythonu

Proč používat RPi a Arduino společně?

Připojení Arduino a RPi může poskytnout velké možnosti, pokud potřebujete I/O, v nichž Arduino vyniká, a síťovou komunikaci/vícevláknové/vizuály, ve kterých je RPi mnohem lepší.

Jinými slovy, budeme používat Arduino pro úkoly náročné na ovládání a RPi pro úkoly náročné na výpočet.

Robustní verze Arduinos jsou k dispozici na Rugged-Circuits

Krok 1: Získání hardwaru Arduino a RPi

Startovací sady Arduino jsou snadno dostupné a umožňují experimentovat s různými typy senzorů a pomůcek. Nákup startovací sady vychází levněji, místo objednání různých dílů samostatně. Níže jsem uvedl některé odkazy na pobočky směřující na Banggood a Amazon USA.

Startovací sada Arduino (Banggood)

Startovací sada Arduino (Amazon USA)

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

Pouzdro Raspberry Pi 3 B+ (Amazon USA)

32 GB karta Micro SD (Amazon USA).

Krok 2: Připojte DHT11 a LCD k Arduinu

Připojte DHT11 a LCD k Arduinu
Připojte DHT11 a LCD k Arduinu

Krok 3: Naprogramujte Arduino

#arduino-dht11-lcd2004

#Autor: Vasoo Veerapen

#https://www.instructables.com/member/VasooV/ #Čte data z DHT11 připojeného k Arduinu, zobrazuje se na LCD2004 a odesílá data přes sériový port na Raspberry Pi

#zahrnout

#zahrnout

// LCD displej je definován jako číslo zařízení 0x27 na sběrnici I2C

LiquidCrystal_I2C lcd (0x27, 20, 4);

// DHT11 je připojen na pin 8

dht DHT; #definovat senzorPin 8

// Raspberry Pi je připojeno k Serial 0

#define serialPi Serial

neplatné nastavení () {

lcd.begin (20, 4); // Inicializuje rozhraní na obrazovku LCD a určuje rozměry (šířku a výšku) displeje lcd.init (); lcd.backlight (); serialPi.begin (9600); // Arduino na sériový monitor}

prázdná smyčka () {

// Přečíst data ze senzoru

int sensorData = DHT.read11 (sensorPin); plovoucí teplota = DHT. teplota; plovoucí vlhkost = DHT. vlhkost;

// Teplota tisku

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

// Vlhkost tisku

lcd.setCursor (0, 1); lcd.print („Vlhkost“); lcd.print (vlhkost); lcd.print (" %");

// Odeslání údajů o teplotě a vlhkosti do Raspberry Pi

serialPi.print ("");

// Počkejte 10 sekund

zpoždění (10 000); }

Krok 4: Pracovní nastavení Arduina, LCD a DHT11

Pracovní nastavení Arduino, LCD a DHT11
Pracovní nastavení Arduino, LCD a DHT11

Krok 5: Připojte Raspberry Pi k Arduinu

Připojte Raspberry Pi k Arduinu
Připojte Raspberry Pi k Arduinu

Krok 6: RPi Python kód pro čtení sériových dat portu USB

#rpi-arduino-dht11

#Raspberry Pi čte data ze snímače teploty a vlhkosti z Arduina

importovat seriál, řetězec, čas

#V tomto příkladu se používá /dev /ttyUSB0

#To se může ve vašem případě změnit na/dev/ttyUSB1,/dev/ttyUSB2 atd. Ser = serial. Serial ('/dev/ttyUSB0', 9600)

#Následující blok kódu funguje takto:

#Pokud jsou k dispozici sériová data, přečtěte si řádek, dekódujte data UTF8, #… odeberte koncový konec znaků řádku #… rozdělte data na teplotu a vlhkost #… odstraňte počáteční a koncové ukazatele () #… vytiskněte výstup, zatímco Pravda: pokud ser.in_waiting> 0: rawserial = ser.readline () brewserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = brewserial.split (',') teplota = datasplit [0].strip ('') tisk (teplota) tisk (vlhkost)

Doporučuje: