Innehållsförteckning:
- Steg 1: Saker som behövs för projektet
- Steg 2: Ladda ner och installera Arduino IDE i Raspberry Pi
- Steg 3: Kod för Arduino
- Steg 4: Konfigurera Raspberry Pi
- Steg 5: Python Scipt
- Steg 6: Kretsdiagram
- Steg 7: Resultat
Video: Plotta DHT11 -data med Raspberry Pi och Arduino UNO: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
Denna instruerbara förklarar hur jag plottar temperatursensor DHT11 -data med Arduino Uno och Raspberry Pi. I denna temperatursensor är ansluten till Arduino Uno och Arduino Uno är seriellt ansluten med Raspberry Pi. På Raspberry Pi Side används matplotlib-, numpy- och drawow -bibliotek för att plotta diagram.
Steg 1: Saker som behövs för projektet
1. Hallon Pi
2. Arduino Uno
3. DHT11 temperatursensor
4. Bygeltrådar
5. Brödbräda
Steg 2: Ladda ner och installera Arduino IDE i Raspberry Pi
Obs:- Du kan använda Arduino IDE för Windows, Linux eller Mac för att ladda upp skiss i Arduino UNO.
Första steget är att installera Arduino IDE för den öppna webbläsaren i Raspberry Pi och öppna länken nedan
Arduino Tidigare IDE
Ladda sedan ner Linux ARM -versionen och extrahera den med kommandot
tar -xf filnamn
Efter extrahering ser du en ny katalog. Här använder jag arduino-1.8.2 IDE. Gå sedan till katalogen med kommandot.
cd arduino-1.8.1
För att köra Arduino IDE, använd det här kommandot i arduino-1.8.2-katalogen
./arduino
Hur man använder bibliotek
För att installera alla bibliotek i Arduino, ladda bara ner biblioteket och klistra in i arduino 1.8.2 ==> biblioteksmappen.
OBS:-Se till att det inte finns (-) i biblioteksmappen för ex (DHT-sensor). Om det finns något (-), byt namn på det.
vi kommer att använda två bibliotek i denna instruerbara, DHT_Sensor och Adafruit_Sensor
Steg 3: Kod för Arduino
Nu kan vi få python och Arduino att prata tillsammans. För det första behöver vi ett enkelt program för att få Arduino att skicka data över serieporten. Följande program är ett enkelt program som har Arduino -räkningen och skickar data till serieporten.
Arduino -kod
#inkludera "DHT.h" float tempC; // Variabel eller hållande temp i C float tempF; // Variabel för att hålla temp i F floatfuktighet; // Variabel för tryckavläsning
#define DHTPIN 7 // vilken digital pin vi är anslutna till
#define DHTTYPE DHT11 // DHT 11
//#definiera DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#definiera DHTTYPE DHT21 // DHT 21 (AM2301)
// Initiera DHT -sensorn.
DHT dht (DHTPIN, DHTTYPE);
void setup () {Serial.begin (115200); // slå på seriell bildskärm
dht.begin (); // initiera dht}
void loop () {tempC = dht.readTemperature (); // Var noga med att deklarera dina variabler
fuktighet = dht.readHumidity (); // Läs Luftfuktighet
Serial.print (tempC);
Serial.print (",");
Seriellt tryck (luftfuktighet);
Serial.print ("\ n"); // för nytt linjedelay (2000); // Pausa mellan avläsningarna. }
När skissen har sammanställts väljer du tavla och port och laddar upp den.
Steg 4: Konfigurera Raspberry Pi
När koden har laddats upp installerar du några bibliotek så att vi kan plotta diagram över data som kommer seriellt från Arduino Uno.
1. PySerial är ett bibliotek som ger stöd för seriella anslutningar över en mängd olika enheter. Använd kommandot för att installera det.
Sudo apt-get install python-serial
2. Numpy är ett paket som definierar ett flerdimensionellt arrayobjekt och tillhörande snabbmatematiska funktioner som fungerar på det. Det ger också enkla rutiner för linjär algebra och FFT (Fast Fourier Transform) och sofistikerad slumpgenerering. Du kan installera det på många sätt, antingen använda apt -paket eller pip. Här installerar jag med pip för att först måste vi installera pip
sudo apt-get install python-pip python-dev build-essential
sudo pip installera numpy
eller om du vill använda apt -paketet
sudo apt installera python-numpy
3. Matplotlib är ett 2D-plottbibliotek som tillhandahåller ett objektorienterat API för att bädda in tomter i applikationer med hjälp av GUI-verktygssatser för allmänna ändamål som Tkinter, wxPython, Qt eller GTK+. Använd kommandot för att installera det
sudo pip installera matplotlib
eller
sudo apt installera python-matplotlib
4. Drawnow används vanligtvis för att se resultaten efter varje iteration eftersom vi använder "imshow" i MATLAB. Använd kommandot för att installera det
sudo pip installera drawow
Steg 5: Python Scipt
Nästa steg är att skriva ett python -skript för att du kan använda valfri editor för att skriva det.
1. Plotta data i en graf
import serial # import Serial Library
import numpy # Import numpy
importera matplotlib.pyplot som plt #import matplotlib bibliotek
från import från *
tempC = #Tom matrisfuktighet =
arduino = serial. Serial ("/dev/ttyACM0", 115200)
plt.ion () # interaktivt läge för att plotta levande datakonto = 0
def makeFig (): #Skapa en funktion som gör vår önskade tomt
plt.ylim (20, 30) #Ställ in y min och max värden
plt.title ('Real Time DHT11 Data') #Plotta titeln
plt.grid (True) #Slå på rutnätet
plt.ylabel ('Temp C') #Set ylabel
plt.plot (tempC, 'b^-', label = 'Degree C') #tomt temperaturen
plt.legend (loc = 'övre högra') #planera legenden
plt2 = plt.twinx () #Skapa en andra y -axel
plt.ylim (50, 70) #Ställ in gränser för andra y -axeln
plt2.plot (luftfuktighet, 'g*-', etikett = 'Luftfuktighet') #tomttrycksdata
plt2.set_ylabel ('Luftfuktighet') #etikett andra y -axeln
plt2.ticklabel_format (useOffset = False)
plt2.legend (loc = 'övre vänster')
medan det är sant: # Medan slingan som går för alltid
while (arduino.inWaiting () == 0): #Vänta här tills det finns data
klara #gör ingenting
arduinoString = arduino.readline ()
dataArray = arduinoString.split (',') #Split den i en array
temp = float (dataArray [0])
hum = float (dataArray [1])
tempC.append (temp)
fuktighet. lägg till (hum)
drawow (makeFig)
plt.paus (.000001)
count = count+1 if (count> 20): #bara ta de senaste 20 data om data är mer kommer det att dyka upp först
tempC.pop (0)
fuktighet.pop (0)
2. Att rita luftfuktighet och temperatur separat
import serial # import Serial Library
import numpy # Import numpy
importera matplotlib.pyplot som plt #import matplotlib bibliotek
från import från *
tempC = #Tom matris
luftfuktighet =
arduino = serial. Serial ("/dev/ttyACM0", 115200) #Seriell port som arduino är ansluten till och Baudrate
plt.ion () #Tala om för matplotlib att du vill att interaktivt läge ska rita levande data
def CreatePlot (): #Skapa en funktion som gör vår önskade tomt
plt.subplot (2, 1, 1) #Höjd, Bredd, Första tomten
plt.ylim (22, 34) #Ställ in y min och max värden
plt.title ('Real Time DHT11 Data') #Plotta titeln
plt.grid (True) #Slå på rutnätet
plt.ylabel ('Temp C') #Set ylabels
plt.plot (tempC, 'b^-', label = 'Degree C') #tomt temperaturen
plt.legend (loc = 'övre mitten') #planera legenden
plt. delplot (2, 1, 2) # Höjd, bredd, andra tomt
plt.grid (sant)
plt.ylim (45, 70) #Ställ in gränser för andra y -axeln
plt.plot (luftfuktighet, 'g*-', etikett = 'Luftfuktighet (g/m^3)') #tomtfuktighetsdata
plt.ylabel ('Luftfuktighet (g/m^3)') #etikett andra y -axeln
plt.ticklabel_format (useOffset = False) #t för att stoppa autoskalering av y -axeln
plt.legend (loc = 'övre mitten')
medan det är sant: # Medan slingan som går för alltid
while (arduino.inWaiting () == 0): #Vänta här tills det finns data pass #gör ingenting
arduinoString = arduino.readline () #läs data från seriell port
dataArray = arduinoString.split (',') #Split den i en array
temp = float (dataArray [0]) #Konvertera första elementet till flytande tal och sätt in temp
hum = float (dataArray [1]) #Konvertera det andra elementet till flytande tal och sätt in hum
tempC.append (temp) #Bygg vår tempC -array genom att lägga till temp -läsning
luftfuktighet. lägg till (hum) #Bygga vår fuktighetsgrupp genom att lägga till brumläsning
drawow (CreatePlot)
plt.paus (.000001)
count = count+1
if (count> 20): #bara ta de senaste 20 data om data är mer kommer det att dyka upp först
tempC.pop (0) # pop -out första element
fuktighet.pop (0)
Steg 6: Kretsdiagram
Arduino ==> DHT11
3.3V ==> VCC
GND ==> GND
D7 ==> UT
Rekommenderad:
Automatisk kylfläkt med servo och DHT11 temperatur- och fuktsensor med Arduino: 8 steg
Automatisk kylfläkt med servo och DHT11 temperatur- och luftfuktighetssensor med Arduino: I denna handledning lär vi oss hur man startar & rotera en fläkt när temperaturen stiger över en viss nivå
Plotta realtidsgraf på Android från Arduino till HC-05: 3 steg
Plotta realtidsgraf på Android Från Arduino Genom HC-05: Hej, här är en handledning om hur man plottar en realtidsdiagram av värden från en mikrokontroller som en Arduino till appen. Den använder en Bluetooth-modul som HC-05 för att fungera som en meddelandeenhet för att överföra och ta emot data mellan Ar
ESP32 -baserad M5Stack M5stick C -vädermonitor med DHT11 - Övervaka temperaturfuktighet och värmeindex på M5stick-C med DHT11: 6 steg
ESP32 -baserad M5Stack M5stick C -vädermonitor med DHT11 | Övervaka temperaturfuktighet och värmeindex på M5stick-C med DHT11: Hej killar, i denna instruktion lär vi oss hur du kopplar DHT11 temperatursensor med m5stick-C (ett utvecklingsbord av m5stack) och visar det på displayen på m5stick-C. Så i denna handledning kommer vi att läsa temperaturen, luftfuktigheten & värme jag
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR
Temperatur och fuktighet Display och datainsamling med Arduino och bearbetning: 13 steg (med bilder)
Temperatur- och luftfuktighetsvisning och datainsamling med Arduino och bearbetning: Intro: Detta är ett projekt som använder ett Arduino -kort, en sensor (DHT11), en Windows -dator och ett bearbetningsprogram (ett gratis nedladdningsbart) för att visa temperatur, luftfuktighetsdata i digital och stapeldiagramform, visa tid och datum och kör en räkningstid