Kazalo:
- 1. korak: Stvari, potrebne za projekt
- Korak: Prenesite in namestite Arduino IDE v Raspberry Pi
- 3. korak: Koda za Arduino
- 4. korak: Namestite Raspberry Pi
- 5. korak: Python Scipt
- Korak 6: Shema vezja
- 7. korak: Rezultat
Video: Narišite podatke DHT11 z uporabo Raspberry Pi in Arduino UNO: 7 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Ta navodila pojasnjujejo, kako s pomočjo Arduino Uno in Raspberry Pi narišem podatke senzorja temperature DHT11. V tem temperaturnem senzorju je povezan z Arduino Uno in Arduino Uno je serijsko povezan z Raspberry Pi. V Raspberry Pi Side se za risanje grafov uporabljajo knjižnice matplotlib, numpy in drawnow.
1. korak: Stvari, potrebne za projekt
1. Malina Pi
2. Arduino Uno
3. Temperaturni senzor DHT11
4. Mostične žice
5. Ogledna plošča
Korak: Prenesite in namestite Arduino IDE v Raspberry Pi
Opomba:- Arduino IDE za Windows, Linux ali Mac lahko uporabite za nalaganje skice v Arduino UNO.
Prvi korak je namestitev Arduino IDE za ta odprti brskalnik v Raspberry Pi in odprite spodnjo povezavo
Arduino Prejšnji IDE
Nato prenesite različico Linux ARM in jo izvlecite z ukazom
tar -xf ime datoteke
Po ekstrahiranju boste videli nov imenik. Tukaj uporabljam arduino-1.8.2 IDE. Nato pojdite v imenik z ukazom.
cd arduino-1.8.1
Če želite zagnati Arduino IDE, uporabite ta ukaz v imeniku arduino-1.8.2
./arduino
Kako uporabljati knjižnice
Če želite v Arduino namestiti knjižnice, preprosto prenesite knjižnico in prilepite v mapo knjižnic arduino 1.8.2 ==>.
OPOMBA:-Prepričajte se, da v mapi knjižnice za (DHT-senzor) ni (-). Če obstaja (-), ga preimenujte.
v tem navodilu bomo uporabili dve knjižnici, DHT_Sensor in Adafruit_Sensor
3. korak: Koda za Arduino
Zdaj pa pojdimo skupaj python in Arduino. Najprej potrebujemo preprost program, da Arduino pošlje podatke prek serijskih vrat. Naslednji program je preprost program, ki bo meril Arduino in pošiljal podatke na serijska vrata.
Koda Arduino
#vključi "DHT.h" plavajočo tempC; // spremenljiva ali zadrževalna temp v C float tempF; // spremenljivka za zadrževanje temperature pri F plavajoči vlažnosti; // Spremenljivka za odčitavanje tlaka
#define DHTPIN 7 // s katerim digitalnim zatičem smo povezani
#define DHTTYPE DHT11 // DHT 11
//#definiraj DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#definiraj DHTTYPE DHT21 // DHT 21 (AM2301)
// Inicializirajte senzor DHT.
DHT dht (DHTPIN, DHTTYPE);
void setup () {Serial.begin (115200); // vklop serijskega monitorja
dht.begin (); // inicializira dht}
void loop () {tempC = dht.readTemperature (); // Ne pozabite prijaviti spremenljivk
vlažnost = dht.readHumidity (); // Preberite Vlažnost
Serial.print (tempC);
Serial.print (",");
Serijski.tisk (vlažnost);
Serial.print ("\ n"); // za novo podlogo (2000); // Premor med branji. }
Ko je skica sestavljena, izberite ploščo in vrata ter jo naložite.
4. korak: Namestite Raspberry Pi
Ko je koda naložena, namestite nekaj knjižnic, da lahko narišemo graf podatkov, ki serijsko prihaja iz Arduino Uno.
1. PySerial je knjižnica, ki nudi podporo za serijske povezave na različnih napravah. Če ga želite namestiti, uporabite ukaz.
Sudo apt-get install python-serial
2. Numpy je paket, ki definira večdimenzionalni objekt matrike in s tem povezane hitre matematične funkcije, ki delujejo na njem. Ponuja tudi preproste rutine za linearno algebro in FFT (Fast Fourier Transform) ter prefinjeno generiranje naključnih števil. Namestite ga lahko na več načinov, bodisi z uporabo paketa apt ali pip. Tukaj nameščam s pipom, najprej moramo namestiti pip
sudo apt-get install python-pip python-dev build-bistveno
sudo pip install numpy
ali če želite uporabiti paket apt
sudo apt namestite python-numpy
3. Matplotlib je 2D grafična knjižnica, ki ponuja objektno usmerjen API za vdelavo ploskev v aplikacije z uporabo splošnih orodij grafičnega vmesnika, kot so Tkinter, wxPython, Qt ali GTK+. Če ga želite namestiti, uporabite ukaz
sudo pip namestite matplotlib
ali
sudo apt namestite python-matplotlib
4. Drawnow se običajno uporablja za ogled rezultatov po vsaki ponovitvi, saj uporabljamo "imshow" v MATLAB -u. Če ga želite namestiti, uporabite ukaz
sudo pip namestite drawnow
5. korak: Python Scipt
Naslednji korak je, da napišete skript python, za katerega lahko uporabite kateri koli urejevalnik.
1. Podatke vnesite v en graf
import serijski # uvoz serijska knjižnica
import numpy # Uvoz numpy
uvozite matplotlib.pyplot kot plt #import knjižnice matplotlib
iz drawnow uvoza *
tempC = #Prazen niz vlažnost =
arduino = serial. Serial ("/dev/ttyACM0", 115200)
plt.ion () # interaktivni način za načrtovanje podatkovnih podatkov v živo = 0
def makeFig (): #Ustvarite funkcijo, ki naredi želeno ploskev
plt.ylim (20, 30) #Nastavite vrednosti y min in max
plt.title ('Podatki DHT11 v realnem času') #Narišite naslov
plt.grid (True) #Vklopite mrežo
plt.ylabel ('Temp C') #Nastavi ylabel
plt.plot (tempC, 'b^-', label = 'Stopnja C') #plot temperature
plt.legend (loc = 'zgoraj desno') #plot legenda
plt2 = plt.twinx () #Ustvarite drugo os y
plt.ylim (50, 70) #Nastavi meje druge osi y
plt2.plot (vlažnost, 'g*-', label = 'Vlažnost') #podatki tlaka plota
plt2.set_ylabel ('Humidity') #label druga os y
plt2.ticklabel_format (useOffset = False)
plt2.legend (loc = 'zgoraj levo')
medtem ko je True: # zanka while, ki se večno zapira
while (arduino.inWaiting () == 0): #Počakajte tukaj, dokler ni podatkov
podaj #ne naredi nič
arduinoString = arduino.readline ()
dataArray = arduinoString.split (',') #Razdelite ga v matriko
temp = float (podatkovni niz [0])
hum = float (dataArray [1])
tempC.append (temp)
vlažnost. dodajanje (brujanje)
drawnow (makeFig)
plt.pause (.000001)
count = count+1 if (count> 20): #only zadnjih 20 podatkov, če je podatkov več, bodo prvi prikazani
tempC.pop (0)
vlažnost.pop (0)
2. Ločeno narišite vlago in temperaturo
import serial # import Serial Library
import numpy # Uvoz numpy
uvozite matplotlib.pyplot kot plt #import knjižnice matplotlib
iz drawnow uvoza *
tempC = #Prazna matrika
vlažnost =
arduino = serial. Serial ("/dev/ttyACM0", 115200) #Serijska vrata, na katera je povezan arduino in hitrost prenosa
plt.ion () #Povejte matplotlibu, da želite, da interaktivni način zapiše podatke v živo
def CreatePlot (): #Ustvarite funkcijo, ki naredi želeno ploskev
plt.subplot (2, 1, 1) #Height, Width, First plot
plt.ylim (22, 34) #Nastavite vrednosti min in max
plt.title ('Podatki DHT11 v realnem času') #Narišite naslov
plt.grid (True) #Vklopite mrežo
plt.ylabel ('Temp C') #Nastavi ylabels
plt.plot (tempC, 'b^-', label = 'Stopnja C') #plot temperature
plt.legend (loc = 'zgornji center') #plot legendo
plt.subplot (2, 1, 2) # Višina, širina, druga ploskev
plt.grid (True)
plt.ylim (45, 70) #Nastavi meje druge osi y
plt.plot (vlažnost, 'g*-', label = 'Vlažnost (g/m^3)') #podatki o vlažnosti parcele
plt.ylabel ('Vlažnost (g/m^3)') #oznaka druge osi y
plt.ticklabel_format (useOffset = False) #za ustavitev samodejnega spreminjanja osi y
plt.legend (loc = 'zgornje središče')
while True: # zanka While, ki se za vedno zavije
while (arduino.inWaiting () == 0): #Počakajte tukaj, dokler ne pride do prenosa podatkov #ne naredite nič
arduinoString = arduino.readline () #preberite podatke s serijskih vrat
dataArray = arduinoString.split (',') #Razdelite ga v matriko
temp = float (dataArray [0]) #Pretvori prvi element v plavajočo številko in vstavi v temp
hum = float (dataArray [1]) #Pretvori drugi element v plavajoče število in vstavi v hum
tempC.append (temp) #Ustvarite našo matriko tempC tako, da dodate branje temp
vlažnost.append (hum) #Ustvarjanje našega niza vlažnosti z dodajanjem branja
drawnow (CreatePlot)
plt.pause (.000001)
count = count+1
if (count> 20): #samo vzemite zadnjih 20 podatkov, če je podatkov več, bodo prvi prikazani
tempC.pop (0) # pop out prvi element
vlažnost.pop (0)
Korak 6: Shema vezja
Arduino ==> DHT11
3.3V ==> VCC
GND ==> GND
D7 ==> OUT
Priporočena:
(Projekt IOT) Pridobite vremenske podatke z uporabo ESP8266 in API -ja Openweather: 5 korakov
(Projekt IOT) Pridobite vremenske podatke z uporabo ESP8266 in API -ja Openweather: V tem navodilu bomo zgradili preprost projekt IOT, v katerem bomo z openweather.com/api pridobili vremenske podatke našega mesta in jih prikazali s programsko opremo za obdelavo
Kako brati podatke DHT na LCD -ju z uporabo Raspberry Pi: 6 korakov
Kako brati podatke DHT na LCD -ju z uporabo Raspberry Pi: Temperatura in relativna vlažnost sta pomembna vremenska podatka v okoljih. To sta lahko podatka, ki jih prinaša mini vremenska postaja. Branje vaše temperature in relativne vlažnosti z Raspberry Pi lahko dosežete z različnimi sortami
Kako poslati podatke DHT11 na strežnik MySQL z uporabo NodeMCU: 6 korakov
Kako poslati podatke DHT11 na strežnik MySQL z uporabo NodeMCU: V tem projektu smo povezali DHT11 z nodemcu in nato v bazo podatkov phpmyadmin pošiljamo podatke o dht11, kar je vlažnost in temperatura
Arduino pošilja podatke Dht11 na strežnik MySQL (PHPMYADMIN) z uporabo Pythona: 5 korakov
Arduino pošilja podatke Dht11 na strežnik MySQL (PHPMYADMIN) z uporabo Pythona: V tem projektu sem povezal DHT11 z arduinom in nato pošiljam podatke dht11, ki so vlažnost in temperatura, v bazo podatkov phpmyadmin. Za razliko od našega prejšnjega projekta v tem primeru ne uporabljamo nobenega ethernetnega ščita, tukaj beremo samo
Arduino: Narišite semafor: 9 korakov
Arduino: Ustvarjanje sklopa semaforjev: TAJ PROJEKT JE ŠE VEDNO DELO V POTEKU POHVATEN POHVAT !!! Ta vadnica vas bo vodila skozi postopek ustvarjanja nabora nadzornih in nastavljivih semaforjev, hkrati pa vas bo naučila osnov Arduina. Potrebno je nekaj znanja