Spisu treści:

Temperatura i wilgotność od Arduino do Raspberry Pi: 6 kroków
Temperatura i wilgotność od Arduino do Raspberry Pi: 6 kroków

Wideo: Temperatura i wilgotność od Arduino do Raspberry Pi: 6 kroków

Wideo: Temperatura i wilgotność od Arduino do Raspberry Pi: 6 kroków
Wideo: Kurs Arduino #4: DHT11/DHT22 - Czujnik temperatury i wilgotności + Stacja pogodowa 2024, Listopad
Anonim
Temperatura i wilgotność od Arduino do Raspberry Pi
Temperatura i wilgotność od Arduino do Raspberry Pi

Śledzenie temperatury i wilgotności jest ważne, jeśli masz szklarnię lub masz plany na przyszłość, aby zmienić swoją szklarnię w mini-inteligentną farmę.

W moim pierwszym Instructable pokażę, jak stworzyć prototyp:

  • Podłącz czujnik temperatury i wilgotności DHT11 do Arduino Mega 2560
  • Zaprogramuj Arduino w C, aby odczytać dane z czujnika
  • Wyświetlaj dane temperatury i wilgotności na wyświetlaczu LCD podłączonym do Arduino
  • Poinstruuj Arduino, aby wysłał dane z czujnika do Raspberry Pi 3 Model B+
  • Napisz kod w Pythonie, aby wyświetlić dane czujnika

Dlaczego warto używać razem RPi i Arduino?

Połączenie Arduino i RPi może zapewnić duże możliwości, jeśli potrzebujesz wejść / wyjść, w których Arduino przoduje, oraz komunikacji sieciowej / wielowątkowości / wizualizacji, w których RPi jest znacznie lepszy.

Innymi słowy, będziemy używać Arduino do zadań wymagających dużej kontroli, a RPi do zadań wymagających dużej mocy obliczeniowej.

Wzmocnione wersje Arduino są dostępne w Rugged-Circuits

Krok 1: Zdobycie sprzętu Arduino i RPi

Zestawy startowe Arduino są łatwo dostępne i pozwalają eksperymentować z różnymi rodzajami czujników i gadżetów. Zakup zestawu startowego jest tańszy niż zamawianie różnych części osobno. Poniżej podaję kilka linków partnerskich wskazujących na Banggood i Amazon US.

Zestaw startowy Arduino (Banggood)

Zestaw startowy Arduino (Amazon USA)

Płyta główna Element14 RPi 3 B+ (Amazon USA)

Obudowa Raspberry Pi 3 B+ (Amazon USA)

Karta Micro SD 32 GB (Amazon USA).

Krok 2: Podłącz DHT11 i LCD do Arduino

Podłącz DHT11 i LCD do Arduino
Podłącz DHT11 i LCD do Arduino

Krok 3: Zaprogramuj Arduino

#arduino-dht11-lcd2004

#Autor: Vasoo Veerapen

#https://www.instructables.com/member/VasooV/ #Odczytuje dane z DHT11 podłączonego do Arduino, wyświetla na LCD2004 i wysyła dane przez port szeregowy do Raspberry Pi

#włączać

#włączać

//Wyświetlacz LCD jest zdefiniowany jako numer urządzenia 0x27 na magistrali I2C

LiquidCrystal_I2C lcd (0x27, 20, 4);

//DHT11 jest podłączony do pinu 8

dht DHT; #define sensorPin 8

//Raspberry Pi jest podłączone do portu szeregowego 0

#define serialPi Serial

pusta konfiguracja () {

lcd.początek(20, 4); // Inicjuje interfejs do ekranu LCD i określa wymiary (szerokość i wysokość) wyświetlacza lcd.init(); podświetlenie LCD(); serialPi.początek(9600); //Arduino do monitora szeregowego }

pusta pętla () {

//Odczytaj dane czujnika

int sensorData = DHT.read11(sensorPin); temperatura pływaka = DHT.temperatura; wilgotność pływakowa = DHT.wilgotność;

//Temperatura druku

lcd.setCursor(0, 0); lcd.print("Temperatura"); lcd.print(temperatura); lcd.print("C");

//Drukuj wilgotność

lcd.setCursor(0, 1); lcd.print("Wilgotność"); lcd.print(wilgotność); lcd.print("%");

//Wyślij dane temperatury i wilgotności do Raspberry Pi

serialPi.print("");

//Poczekaj 10 sekund

opóźnienie (10000); }

Krok 4: Działająca konfiguracja Arduino, LCD i DHT11

Działająca konfiguracja Arduino, LCD i DHT11
Działająca konfiguracja Arduino, LCD i DHT11

Krok 5: Podłącz Raspberry Pi do Arduino

Podłącz Raspberry Pi do Arduino
Podłącz Raspberry Pi do Arduino

Krok 6: Kod RPi Python do odczytu danych szeregowych portu USB

#rpi-arduino-dht11

#Raspberry Pi odczytuje dane z czujnika temperatury i wilgotności z Arduino

importuj numer seryjny, ciąg, czas

#W tym przykładzie użyto /dev/ttyUSB0

#W twoim przypadku może się to zmienić na /dev/ttyUSB1, /dev/ttyUSB2 itd. ser = serial. Serial('/dev/ttyUSB0', 9600)

#Poniższy blok kodu działa tak:

#Jeśli obecne są dane szeregowe, odczytaj wiersz, zdekoduj dane UTF8, #…usuń końcowe znaki końca wiersza #…podziel dane na temperaturę i wilgotność #…usuń początkowe i końcowe wskaźniki () #…wydrukuj dane wyjściowe podczas Prawda: jeśli ser.in_waiting > 0: rawserial = ser.readline() cookedserial = rawserial.decode('utf-8').strip('\r\n') datasplit = cookedserial.split(', ') temperature = datasplit[0].strip('') print(temperatura) print(wilgotność)

Zalecana: