Spisu treści:
- Krok 1: Rzeczy potrzebne do projektu
- Krok 2: Pobierz i zainstaluj Arduino IDE w Raspberry Pi
- Krok 3: Kod dla Arduino
- Krok 4: Skonfiguruj Raspberry Pi
- Krok 5: Skrypt Pythona
- Krok 6: Schemat obwodu
- Krok 7: Wynik
Wideo: Wykres danych DHT11 za pomocą Raspberry Pi i Arduino UNO: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
Ta instrukcja wyjaśnia, w jaki sposób wykreślam dane czujnika temperatury DHT11 za pomocą Arduino Uno i Raspberry Pi. W tym czujnik temperatury jest połączony z Arduino Uno a Arduino Uno jest połączony szeregowo z Raspberry Pi. W Raspberry Pi Side do tworzenia wykresów używane są biblioteki matplotlib, numpy i drawow.
Krok 1: Rzeczy potrzebne do projektu
1. Raspberry Pi
2. Arduino Uno
3. Czujnik temperatury DHT11
4. Przewody połączeniowe
5. Deska do krojenia chleba
Krok 2: Pobierz i zainstaluj Arduino IDE w Raspberry Pi
Uwaga:- Możesz użyć Arduino IDE systemu Windows, Linux lub Mac, aby przesłać szkic w Arduino UNO.
Pierwszym krokiem jest zainstalowanie Arduino IDE dla tej otwartej przeglądarki w Raspberry Pi i otwarcie linku podanego poniżej
Poprzednie IDE dla Arduino
Następnie pobierz wersję Linux ARM i rozpakuj ją za pomocą polecenia
tar -xf nazwa pliku
Po rozpakowaniu zobaczysz nowy katalog. Tutaj używam IDE arduino-1.8.2. Następnie przejdź do katalogu za pomocą polecenia.
cd arduino-1.8.1
Aby uruchomić Arduino IDE, użyj tego polecenia w katalogu arduino-1.8.2
./arduino
Jak korzystać z bibliotek
Aby zainstalować dowolne biblioteki w Arduino, wystarczy pobrać bibliotekę i wkleić do folderu arduino 1.8.2 ==> biblioteki.
UWAGA:- Upewnij się, że nie ma (-) w folderze biblioteki dla ex (czujnik DHT). Jeśli istnieje (-), zmień jego nazwę.
użyjemy w tej instrukcji dwóch bibliotek, DHT_Sensor i Adafruit_Sensor
Krok 3: Kod dla Arduino
Teraz porozmawiajmy ze sobą pytonem i Arduino. Najpierw potrzebujemy prostego programu, aby Arduino wysyłało dane przez port szeregowy. Poniższy program jest prostym programem, który będzie liczył Arduino i wysyłał dane do portu szeregowego.
Kod Arduino
#include "DHT.h" float tempC; // Zmienna lub utrzymywana temp w C float tempF; // Zmienna dla utrzymywania temp. w F wilgotnośc pływaka; //Zmienna do odczytu ciśnienia trzymania
#define DHTPIN 7 // do jakiego pinu cyfrowego jesteśmy podłączeni
#define DHTTYPE DHT11 // DHT11
//#define DHTTYPE DHT22 // DHT22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT21 (AM2301)
// Zainicjuj czujnik DHT.
DHT dht(DHTPIN, DHTTYPE);
void setup(){Serial.begin(115200); //włącz monitor szeregowy
dht.początek(); //zainicjuj dht }
void loop() {tempC = dht.odczytTemperatura(); // Pamiętaj, aby zadeklarować swoje zmienne
wilgotność = dht.odczytWilgotność(); // Czytaj wilgotność
Serial.print(tempC);
Serial.print(", ");
Serial.print(wilgotność);
Serial.print("\n"); // dla nowego opóźnienia linii(2000); //Pauza między odczytami. }
Po skompilowaniu szkicu wybierz płytę i port i prześlij go.
Krok 4: Skonfiguruj Raspberry Pi
Po przesłaniu kodu zainstaluj kilka bibliotek, abyśmy mogli wykreślić wykres danych przychodzących szeregowo z Arduino Uno.
1. PySerial to biblioteka, która zapewnia obsługę połączeń szeregowych na wielu różnych urządzeniach. Aby go zainstalować, użyj polecenia.
Sudo apt-get install python-serial
2. Numpy to pakiet, który definiuje wielowymiarowy obiekt tablicy i powiązane z nim szybkie funkcje matematyczne, które na nim operują. Zapewnia również proste procedury dla algebry liniowej i FFT (szybka transformata Fouriera) oraz wyrafinowane generowanie liczb losowych. Możesz go zainstalować na wiele sposobów, używając pakietu apt lub pip. Tutaj instaluję za pomocą pip do tego najpierw musimy zainstalować pip
sudo apt-get install python-pip python-dev build-essential
sudo pip zainstaluj numpy
lub jeśli chcesz użyć pakietu apt
sudo apt zainstaluj python-numpy
3. Matplotlib to biblioteka do kreślenia 2D, która zapewnia zorientowany obiektowo interfejs API do osadzania wykresów w aplikacjach przy użyciu zestawów narzędzi GUI ogólnego przeznaczenia, takich jak Tkinter, wxPython, Qt lub GTK+. Aby go zainstalować, użyj polecenia
sudo pip zainstaluj matplotlib
lub
sudo apt install python-matplotlib
4. Drawnow jest zwykle używany do oglądania wyników po każdej iteracji, ponieważ używamy "imshow" w MATLAB. Aby go zainstalować, użyj polecenia
sudo pip zainstalować drawow
Krok 5: Skrypt Pythona
Następnym krokiem jest napisanie skryptu Pythona, do którego możesz użyć dowolnego edytora.
1. Wykreśl dane na jednym wykresie
importuj numer seryjny importuj bibliotekę seryjną
importuj numer # Importuj numer
importuj matplotlib.pyplot jako plt #importuj bibliotekę matplotlib
z importu drawow *
tempC = #Pusta tablicawilgotność =
arduino = serial. Serial("/dev/ttyACM0", 115200)
plt.ion() # tryb interaktywny do wykreślania liczby danych na żywo = 0
def makeFig(): #Utwórz funkcję, która utworzy pożądany wykres
plt.ylim(20, 30) #Ustaw y min i max wartości
plt.title('Dane DHT11 w czasie rzeczywistym') #Wykreśl tytuł
plt.grid(True) #Włącz siatkę
plt.ylabel('Temp C') #Ustaw ylabel
plt.plot(tempC, 'b^-', label='Stopień C') #wykreśl temperaturę
plt.legend(loc='prawy górny') #wykreśl legendę
plt2=plt.twinx() #Utwórz drugą oś y
plt.ylim(50, 70) #Ustaw granice drugiej osi y
plt2.plot(wilgotność, 'g*-', label='Wilgotność') #wykres dane ciśnienia
plt2.set_ylabel('Wilgotność') #etykieta druga oś y
plt2.ticklabel_format(useOffset=False)
plt2.legend(loc='lewy górny')
while True: # Pętla While, która zapętla się w nieskończoność
while (arduino.inWaiting()==0): #Poczekaj, aż pojawią się dane
przekazać #nic nie rób
arduinoString = arduino.readline()
dataArray = arduinoString.split(', ') #Split it into array
temp = float(tablica danych[0])
szum = float(tablica danych[1])
tempC.append(temp)
wilgotność.dołącz(szum)
drawow(makeFig)
plt.pauza(.000001)
count=count+1 if(count>20): #weź tylko 20 ostatnich danych, jeśli danych jest więcej, wyskoczy jako pierwsze
tempC.pop(0)
wilgotność.pop(0)
2. Aby osobno wykreślić wilgotność i temperaturę
importuj numer seryjny importuj bibliotekę seryjną
importuj numer # Importuj numer
importuj matplotlib.pyplot jako plt #importuj bibliotekę matplotlib
z importu drawow *
tempC = #Pusta tablica
wilgotność =
arduino = serial. Serial("/dev/ttyACM0", 115200) #Port szeregowy, do którego podłączone jest arduino i szybkość transmisji
plt.ion() #Powiedz matplotlib, że chcesz, aby tryb interaktywny wykreślił dane na żywo
def CreatePlot(): #Utwórz funkcję, która utworzy pożądany wykres
plt.subplot(2, 1, 1) #Wysokość, Szerokość, Pierwsza działka
plt.ylim(22, 34) #Ustaw y min i max wartości
plt.title('Dane DHT11 w czasie rzeczywistym') #Wykreśl tytuł
plt.grid(True) #Włącz siatkę
plt.ylabel('Temp C') #Ustaw yetykiety
plt.plot(tempC, 'b^-', label='Stopień C') #wykreśl temperaturę
plt.legend(loc='upper center') #wykreśl legendę
plt.subplot(2, 1, 2) # Wysokość, Szerokość, Druga działka
plt.grid(prawda)
plt.ylim(45, 70) #Ustaw granice drugiej osi y
plt.plot(wilgotność, 'g*-', label='Wilgotność (g/m^3)') #wykreśl dane wilgotności
plt.ylabel('Wilgotność (g/m^3)') #etykieta druga oś y
plt.ticklabel_format(useOffset=False) #aby zatrzymać autoskalowanie osi y
plt.legend(loc='górny środek')
while True: # Pętla While, która zapętla się w nieskończoność
while (arduino.inWaiting()==0): #Poczekaj tutaj, aż dane zostaną przekazane #nic nie rób
arduinoString = arduino.readline() #odczytaj dane z portu szeregowego
dataArray = arduinoString.split(', ') #Split it into array
temp = float(dataArray[0]) #Konwertuj pierwszy element na liczbę zmiennoprzecinkową i umieść w temp
hum = float(dataArray[1]) #Przekształć drugi element w liczbę zmiennoprzecinkową i wstaw hum
tempC.append(temp) #Zbuduj naszą tablicę tempC, dołączając odczyt temp
wilgotność.append(hum) #Budowanie naszej tablicy wilgotności poprzez dołączenie odczytu szumu
drawow(Utwórzwykres)
plt.pauza(.000001)
liczba=liczba+1
if(count>20): #weź tylko 20 ostatnich danych, jeśli danych jest więcej, wyskoczy jako pierwsze
tempC.pop(0) # wyskocz pierwszy element
wilgotność.pop(0)
Krok 6: Schemat obwodu
Arduino ==> DHT11
3,3 V ==> VCC
GND ==> GND
D7 ==> OUT
Zalecana:
Dwukolorowy wykres słupkowy z CircuitPython: 5 kroków (ze zdjęciami)
Dwukolorowy wykres słupkowy z CircuitPython: Widziałem ten wykres słupkowy LED na stronie Pimoroni i pomyślałem, że może to być niedrogi i zabawny projekt podczas blokowania covid-19. Zawiera 24 diody LED, czerwoną i zieloną, w każdej ze swoich 12 segmentów, więc teoretycznie powinieneś być w stanie wyświetlić r
Jak zrobić rejestrator danych wilgotności i temperatury w czasie rzeczywistym za pomocą Arduino UNO i karty SD - Symulacja rejestratora danych DHT11 w Proteus: 5 kroków
Jak zrobić rejestrator danych wilgotności i temperatury w czasie rzeczywistym za pomocą Arduino UNO i karty SD | Symulacja rejestratora danych DHT11 w Proteus: Wstęp: cześć, tu Liono Maker, tutaj link do YouTube. Tworzymy kreatywne projekty z Arduino i pracujemy na systemach wbudowanych.Data-Logger: Rejestrator danych (również rejestrator danych lub rejestrator danych) to urządzenie elektroniczne, które rejestruje dane w czasie w
Wykres natężenia światła za pomocą Arduino i biblioteki Arduino Master Library: 5 kroków
Wykres natężenia światła za pomocą Arduino i Arduino Master Library: Arduino jest ekonomicznym, ale bardzo wydajnym i funkcjonalnym narzędziem, programowanie go w Embedded C sprawia, że proces tworzenia projektów jest nudny! Moduł Arduino_Master w Pythonie upraszcza to i pozwala nam wykonywać obliczenia, usuwać wartości śmieci
Interfejs wielu wyświetlaczy LCD do Arduino Uno za pomocą wspólnej linii danych: 5 kroków
Interfejs wielu wyświetlaczy LCD do Arduino Uno przy użyciu wspólnej linii danych: Dzisiaj w tej instrukcji pokażę, jak połączyć wiele modułów LCD 16x2 z płytą arduino uno za pomocą wspólnej linii danych. Najbardziej interesującą rzeczą w tym projekcie jest to, że wykorzystuje wspólną linię danych i wyświetla różne dane w e
Rejestruj dane i kreśl wykres online za pomocą NodeMCU, MySQL, PHP i Chartjs.org: 4 kroki
Rejestruj dane i kreśl wykres online za pomocą NodeMCU, MySQL, PHP i Chartjs.org: Ta instrukcja opisuje, w jaki sposób możemy używać płyty Node MCU do zbierania danych z wielu czujników, wysyłania tych danych do hostowanego pliku PHP, który następnie dodaje dane do baza danych MySQL. Dane można następnie przeglądać online w postaci wykresu, używając chart.js.A ba