Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Ś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
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
Krok 5: 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ść)