Tartalomjegyzék:
- 1. lépés: A projekthez szükséges dolgok
- Lépés: Töltse le és telepítse az Arduino IDE -t a Raspberry Pi -be
- 3. lépés: Az Arduino kódja
- 4. lépés: A Raspberry Pi beállítása
- 5. lépés: Python Scipt
- 6. lépés: Áramköri diagram
- 7. lépés: Eredmény
Videó: A DHT11 adatok ábrázolása a Raspberry Pi és az Arduino UNO használatával: 7 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Ez az utasítás elmagyarázza, hogyan ábrázolom a hőmérséklet -érzékelő DHT11 adatait az Arduino Uno és a Raspberry Pi segítségével. Ebben a hőmérséklet -érzékelő az Arduino Uno -hoz, az Arduino Uno pedig a Raspberry Pi -hez van csatlakoztatva. A Raspberry Pi Side matplotlib, numpy és drawow könyvtárakat használ a grafikonok ábrázolásához.
1. lépés: A projekthez szükséges dolgok
1. Málna Pi
2. Arduino Uno
3. DHT11 hőmérséklet érzékelő
4. Jumper vezetékek
5. Kenyeretábla
Lépés: Töltse le és telepítse az Arduino IDE -t a Raspberry Pi -be
Megjegyzés:- A Windows, Linux vagy Mac Arduino IDE használatával vázlatot tölthet fel az Arduino UNO-ban.
Első lépésként telepítse az Arduino IDE -t a megnyitott böngészőhöz a Raspberry Pi -ben, és nyissa meg az alábbi linket
Arduino Előző IDE
Ezután töltse le a Linux ARM verziót, és bontsa ki a paranccsal
tar -xf fájlnév
A kibontás után megjelenik egy új könyvtár. Itt az arduino-1.8.2 IDE-t használom. Ezután a paranccsal lépjen a könyvtárba.
cd arduino-1.8.1
Az Arduino IDE futtatásához használja ezt a parancsot az arduino-1.8.2 könyvtárban
./arduino
A könyvtárak használata
Az Arduino könyvtárainak telepítéséhez egyszerűen töltse le a könyvtárat, és illessze be az arduino 1.8.2 ==> libraries mappába.
MEGJEGYZÉS:-Győződjön meg arról, hogy az ex (DHT-érzékelő) könyvtármappájában nincs (-). Ha van (-), nevezze át.
ebben az utasításban két könyvtárat fogunk használni, a DHT_Sensor és az Adafruit_Sensor
3. lépés: Az Arduino kódja
Most beszéljünk együtt Python és Arduino. Először is szükségünk van egy egyszerű programra, hogy az Arduino adatokat küldjön a soros porton keresztül. A következő program egy egyszerű program, amely rendelkezik az Arduino számlálóval, és elküldi az adatokat a soros portra.
Arduino kód
#clude "DHT.h" float tempC; // Változó vagy tartási hőmérséklet C float tempF; // Változó a hőmérséklet tartásához F úszó páratartalomban; // Változó a nyomás leolvasásához
#define DHTPIN 7 // milyen digitális tűhöz vagyunk csatlakoztatva
#define DHTTYPE DHT11 // DHT 11
//#DHTTYPE DHT22 meghatározása // DHT 22 (AM2302), AM2321
//#DHTTYPE DHT21 // DHT 21 (AM2301)
// Inicializálja a DHT érzékelőt.
DHT dht (DHTPIN, DHTTYPE);
void setup () {Serial.begin (115200); // kapcsolja be a soros monitort
dht.begin (); // inicializálás dht}
void loop () {tempC = dht.readTemperature (); // Feltétlenül deklarálja a változókat
páratartalom = dht.readHumidity (); // Olvassa el a páratartalmat
Serial.print (tempC);
Serial.print (",");
Soros.nyomtatás (páratartalom);
Serial.print ("\ n"); // új linedelay (2000); // Szünet az olvasások között. }
A vázlat összeállítása után válassza ki a táblát és a portot, majd töltse fel.
4. lépés: A Raspberry Pi beállítása
A kód feltöltése után telepítsen néhány könyvtárat, hogy le tudjuk rajzolni az Arduino Uno sorozatosan érkező adatainak grafikonját.
1. A PySerial egy könyvtár, amely támogatja a soros kapcsolatokat különféle eszközökön. Telepítéséhez használja a parancsot.
Sudo apt-get install python-serial
2. A Numpy egy olyan csomag, amely többdimenziós tömbobjektumot és a hozzá tartozó gyors matematikai függvényeket határoz meg. Ezenkívül egyszerű rutinokat biztosít a lineáris algebrához és az FFT-hez (Fast Fourier Transform), valamint a kifinomult véletlenszám-generáláshoz. Sokféleképpen telepítheti az apt csomag vagy a pip használatával. Itt a pip használatával telepítem, ezért először telepítenünk kell a pip -et
sudo apt-get install python-pip python-dev build-essential
sudo pip install numpy
vagy ha apt csomagot szeretne használni
sudo apt install python-numpy
3. A Matplotlib egy 2D-s ábrázolási könyvtár, amely objektum-orientált API-t biztosít a parcellák alkalmazásba való beágyazásához olyan általános célú GUI-eszközkészletek használatával, mint a Tkinter, wxPython, Qt vagy GTK+. Telepítéséhez használja a parancsot
sudo pip install matplotlib
vagy
sudo apt install python-matplotlib
4. A Drawnow -t általában az iteráció utáni eredmények megtekintésére használják, mivel az "imshow" -t használjuk a MATLAB -ban. Telepítéséhez használja a parancsot
sudo pip install drawow
5. lépés: Python Scipt
A következő lépés egy python szkript írása, amelyhez bármely szerkesztőt használhat.
1. Ábrázolja az adatokat egy grafikonon
import serial # import Serial Library
import numpy # számjegy importálása
importálja a matplotlib.pyplot -t plt #import matplotlib könyvtárként
húzott importból *
tempC = #Empty arrayhumidity =
arduino = soros. Soros ("/dev/ttyACM0", 115200)
plt.ion () # interaktív mód az élő adatszámláláshoz = 0
def makeFig (): #Hozzon létre egy függvényt, amely a kívánt ábrát hozza létre
plt.ylim (20, 30) #Állítsa be a min és max értékeket
plt.title ('Valós idejű DHT11 adatok') #Plot a cím
plt.grid (True) #Kapcsolja be a rácsot
plt.ylabel ('Temp C') #Set ylabel
plt.plot (tempC, 'b^-', label = 'C fok') #plot a hőmérséklet
plt.legend (loc = 'jobb felső') #plot a legenda
plt2 = plt.twinx () #Hozzon létre egy második y tengelyt
plt.ylim (50, 70) #A második y tengely határainak beállítása
plt2.plot (páratartalom, 'g*-', label = 'Nedvesség') #plot nyomásadatok
plt2.set_ylabel ('Nedvesség') #label második y tengely
plt2.ticklabel_format (useOffset = False)
plt2.legend (loc = 'bal felső')
míg igaz: # Míg a hurok, amely örökké hurok
while (arduino.inWaiting () == 0): #Várjon itt, amíg nincs adat
passzol #ne csinálj semmit
arduinoString = arduino.readline ()
dataArray = arduinoString.split (',') #Ossza tömbbe
temp = lebegés (dataArray [0])
hum = lebegés (dataArray [1])
tempC.append (temp)
nedvesség. hozzá (hum)
rajzolt (makeFig)
plt.pause (.000001)
count = count+1 if (count> 20): #csak az utolsó 20 adatot vegye fel, ha több az adat, először megjelenik
tempC.pop (0)
páratartalom. pop (0)
2. Külön ábrázolja a páratartalmat és a hőmérsékletet
import serial # import Serial Library
import numpy # Import numpy
importálja a matplotlib.pyplot -t plt #import matplotlib könyvtárként
húzott importból *
tempC = #Üres tömb
páratartalom =
arduino = serial. Serial ("/dev/ttyACM0", 115200) #Soros port, amelyhez az arduino csatlakozik, és a Baudrate
plt.ion () #Tell matplotlib azt szeretné, ha interaktív módban szeretne élő adatokat ábrázolni
def CreatePlot (): #Hozzon létre egy függvényt, amely a kívánt ábrát hozza létre
plt.subplot (2, 1, 1) #Height, Width, First plot
plt.ylim (22, 34) #Állítsa be a min és max értékeket
plt.title ('Valós idejű DHT11 adatok') #Plot a cím
plt.grid (True) #Kapcsolja be a rácsot
plt.ylabel ('Temp C') #Set ylabels
plt.plot (tempC, 'b^-', label = 'C fok') #plot a hőmérséklet
plt.legend (loc = 'felső középső') #plot a legenda
plt.subplot (2, 1, 2) # Magasság, szélesség, második diagram
plt.grid (igaz)
plt.ylim (45, 70) #A második y tengely határainak beállítása
plt.plot (páratartalom, 'g*-', címke = 'Páratartalom (g/m^3)') #plot nedvesség adatok
plt.ylabel ('Páratartalom (g/m^3)') #címke második y tengely
plt.ticklabel_format (useOffset = False) #az automatikus skála y tengelyének leállításához
plt.legend (loc = 'felső közép')
míg igaz: # Míg a hurok, amely örökké hurok
while (arduino.inWaiting () == 0): #Várjon itt, amíg nincs adatátvitel #ne csináljon semmit
arduinoString = arduino.readline () #olvassa el az adatokat a soros portról
dataArray = arduinoString.split (',') #Ossza tömbbe
temp = lebegés (dataArray [0]) #Konvertálja az első elemet lebegő számmá és tegye be a temp
hum = lebegés (dataArray [1]) #Konvertálja a második elemet lebegő számmá és tegye be a hum
tempC.append (temp) #Építse fel tempC tömbünket a temp olvasás hozzáfűzésével
páratartalom.append (zümmögés) #Nedvességtömbünk felépítése a zümmögés leolvasásával
drawow (CreatePlot)
plt.pause (.000001)
szám = szám+1
if (szám> 20): #csak az utolsó 20 adatot vegye fel, ha több az adat, akkor először megjelenik
A tempC.pop (0) # kiugrik az első elemből
páratartalom. pop (0)
6. lépés: Áramköri diagram
Arduino ==> DHT11
3.3V ==> VCC
GND ==> GND
D7 ==> KI
Ajánlott:
Fény- és hőmérsékletérzékelő adatok olvasása és ábrázolása a Raspberry Pi segítségével: 5 lépés
Fény- és hőmérsékletérzékelő adatok olvasása és ábrázolása a Raspberry Pi segítségével: Ebben az utasításban megtanulja, hogyan kell fény- és hőmérséklet -érzékelőt olvasni a málna pi és az ADS1115 analóg -digitális konverter segítségével, és grafikonozni a matplotlib segítségével. Kezdjük a szükséges anyagokkal
Adatok küldése Arduino -ból Excelbe (és ábrázolása): 3 lépés (képekkel)
Adatok küldése az Arduino -ból Excelbe (és ábrázolása): Alaposan kerestem azt a módot, amellyel valós időben ábrázolhatnám az Arduino -érzékelő leolvasását. Nem csak ábrázolni, hanem megjeleníteni és tárolni is az adatokat további kísérletekhez és korrekciókhoz. A legegyszerűbb megoldás, amit találtam, az Excel használata volt, de
Fényintenzitás ábrázolása az Arduino és a Python Arduino Master Library használatával: 5 lépés
Fényintenzitás -ábrázolás az Arduino és a Python Arduino Master Library használatával: Az Arduino gazdaságos, ugyanakkor rendkívül hatékony és funkcionális eszköz, és az Embedded C -be programozva unalmassá teszi a projektek készítésének folyamatát! A Python Arduino_Master modulja leegyszerűsíti ezt, és lehetővé teszi számítások elvégzését, a szemétértékek eltávolítását
Arduino dátum/idő ábrázolása/naplózása Millis () és PfodApp használatával: 11 lépés
Arduino dátum/idő ábrázolása/naplózása Millis () és PfodApp használatával: Nincs szükség Arduino vagy Android programozásra. RTC és GPS modulok is támogatottak. Automatikus korrekció az időzónákhoz, az RTC sodródás és a hiányzó szökő másodpercek GPS Bevezetés Ez az oktatóanyag bemutatja, hogyan kell használni az Arduino millis ( ) időbélyegek az adatok ábrázolásához
Az EC/pH/ORP adatok tárolása és ábrázolása a TICK Stack és a NoCAN platform segítségével: 8 lépés
Tárolja és ábrázolja az EC/pH/ORP adatokat a TICK Stack és a NoCAN platform segítségével: Ez áttekinti, hogyan kell használni az Omzlo és az uFire szenzorok NoCAN platformját az EC, a pH és az ORP mérésére. Ahogy a honlapjukon is olvasható, néha könnyebb csak kábelt vezetni az érzékelő csomópontjaihoz. A CAN előnye a kommunikáció és az erő egy c