Përmbajtje:
- Hapi 1: Gjërat e nevojshme për projektin
- Hapi 2: Shkarkoni dhe instaloni Arduino IDE në Raspberry Pi
- Hapi 3: Kodi për Arduino
- Hapi 4: Konfiguroni Raspberry Pi
- Hapi 5: Python Scipt
- Hapi 6: Diagrami i Qarkut
- Hapi 7: Rezultati
Video: Komplotoni të dhënat DHT11 duke përdorur Raspberry Pi dhe Arduino UNO: 7 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:20
Ky udhëzues shpjegon se si komplotoj të dhënat e sensorit të temperaturës DHT11 duke përdorur Arduino Uno dhe Raspberry Pi. Në këtë sensor të temperaturës është i lidhur me Arduino Uno dhe Arduino Uno është i lidhur në mënyrë serike me Raspberry Pi. Në Raspberry Pi Side, bibliotekat matplotlib, numpy dhe drawnow përdoren për të vizatuar grafikë.
Hapi 1: Gjërat e nevojshme për projektin
1. Raspberry Pi
2. Arduino Uno
3. Sensori i temperaturës DHT11
4. Telat Jumper
5. Tabela e bukës
Hapi 2: Shkarkoni dhe instaloni Arduino IDE në Raspberry Pi
Shënim:- Ju mund të përdorni Arduino IDE të dritareve, Linux ose Mac për të ngarkuar skicën në Arduino UNO.
Hapi i parë është të instaloni Arduino IDE për atë shfletues të hapur në Raspberry Pi dhe të hapni lidhjen e dhënë më poshtë
Arduino IDE e mëparshme
Pastaj shkarkoni versionin Linux ARM dhe nxirreni duke përdorur komandën
tar -xf emri i skedarit
Pas nxjerrjes do të shihni një drejtori të re. Këtu po përdor arduino-1.8.2 IDE. Pastaj shkoni te drejtoria duke përdorur komandën.
cd arduino-1.8.1
Për të ekzekutuar Arduino IDE, përdorni këtë komandë në drejtorinë arduino-1.8.2
./arduino
Si të përdorni bibliotekat
Për të instaluar ndonjë bibliotekë në Arduino, thjesht shkarkoni bibliotekën dhe ngjiteni në dosjen e bibliotekave arduino 1.8.2 ==>.
SH NOTNIM:-Sigurohuni që nuk ka (-) në dosjen e bibliotekës për ex (DHT-sensor). Nëse ka ndonjë (-), riemërtojeni atë.
ne do të përdorim dy biblioteka në këtë udhëzues, DHT_Sensor dhe Adafruit_Sensor
Hapi 3: Kodi për Arduino
Tani, le t'i bëjmë python dhe Arduino të flasin së bashku. Së pari ne kemi nevojë për një program të thjeshtë për të marrë Arduino duke dërguar të dhëna mbi portin serik. Programi i mëposhtëm është një program i thjeshtë që do të ketë numërimin Arduino dhe do të dërgojë të dhënat në portën serike.
Kodi Arduino
#përfshi "DHT.h" float tempC; // Temperatura e ndryshueshme ose mbajtëse në C float tempF; // Variabël për mbajtjen e temperaturës në lagështi F noton; // Variabël për mbajtjen e leximit të presionit
#define DHTPIN 7 // me cilën pin dixhital jemi lidhur
#përcaktoni DHTTYPE DHT11 // DHT 11
//#përcakto DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#përcakto DHTTYPE DHT21 // DHT 21 (AM2301)
// Filloni sensorin DHT.
DHT dht (DHTPIN, DHTTYPE);
void setup () {Serial.begin (115200); // ndizni monitorin serik
dht.filloj (); // inicializo dht}
lak void () {tempC = dht.readTemperature (); // Sigurohuni që të deklaroni ndryshoret tuaja
lagështia = dht.readHumidity (); // Lexoni Lagështia
Serial.print (tempC);
Serial.print (",");
Serial.print (lagështia);
Serial.print ("\ n"); // për vonesën e re të linjës (2000); // Ndalo mes leximeve. }
Pasi të përpilohet skica, zgjidhni tabelën dhe portin dhe ngarkoni atë.
Hapi 4: Konfiguroni Raspberry Pi
Pasi të ngarkohet kodi, instaloni disa biblioteka në mënyrë që të mund të vizatojmë grafikun e të dhënave që vjen në mënyrë serike nga Arduino Uno.
1. PySerial është një bibliotekë e cila siguron mbështetje për lidhjet serike mbi një sërë pajisjesh të ndryshme. Për ta instaluar, përdorni komandën.
Sudo apt-get install python-serial
2. Numpy është një paketë që përcakton një objekt shumëdimensional të grupit dhe funksionet matematikore të shpejta që lidhen me të. Ai gjithashtu siguron rutina të thjeshta për algjebrën lineare dhe FFT (Transformimi i shpejtë i Furierit) dhe gjenerimin e sofistikuar të numrave të rastit. Mund ta instaloni në shumë mënyra ose të përdorni paketën e duhur ose pip. Këtu po instaloj duke përdorur pip për atë që së pari ne duhet të instalojmë pip
sudo apt-get install python-pip python-dev build-thelbësore
sudo pip install numpy
ose nëse doni të përdorni një paketë të përshtatshme
sudo apt install python-numpy
3. Matplotlib është një bibliotekë komplotimi 2D e cila siguron një API të orientuar nga objekti për ngulitjen e komploteve në aplikacione duke përdorur vegla GUI të përdorimit të përgjithshëm si Tkinter, wxPython, Qt, ose GTK+. Për ta instaluar, përdorni komandën
sudo pip instaloni matplotlib
ose
sudo apt instaloni python-matplotlib
4. Drawnow përgjithësisht përdoret për të parë rezultatet pas çdo përsëritjeje ndërsa ne përdorim "imshow" në MATLAB. Për ta instaluar, përdorni komandën
sudo pip instaloni drawnow
Hapi 5: Python Scipt
Hapi tjetër është të shkruani një shkrim python për të cilin mund të përdorni çdo redaktues për ta shkruar atë.
1. Komplotoni të dhënat në një grafik
import serial # import Biblioteka Seriale
import numpy # Import numpy
import matplotlib.pyplot si plt #import bibliotekë matplotlib
nga importi i menjëhershëm *
tempC = #lagështi e zbrazët e ajrit =
arduino = serial. Serial ("/dev/ttyACM0", 115200)
plt.ion () # mënyra interaktive për të vizatuar llogaritjen e të dhënave drejtpërdrejt = 0
def makeFig (): #Krijo një funksion që e bën komplotin tonë të dëshiruar
plt.ylim (20, 30) #Set y min dhe vlerat maksimale
plt.title ('Të dhënat DHT11 në kohë reale') #Ploto titullin
plt.grid (E vërtetë) #Ndizni rrjetin
plt.ylabel ('Temp C') #Cakto ylabel
plt.plot (tempC, 'b^-', label = 'Degree C') #plotoni temperaturën
plt.legend (loc = 'right right') #plotoni legjendën
plt2 = plt.twinx () #Krijo një aks të dytë y
plt.ylim (50, 70) #Vendosni kufijtë e boshtit të dytë y
plt2.plot (lagështia, 'g*-', etiketa = 'Lagështia') #të dhëna mbi presionin
plt2.set_ylabel ('Lagështia') #etiketa boshti i dytë y
plt2.ticklabel_format (useOffset = E gabuar)
plt2.legend (loc = 'majtas lart')
ndërsa True: # Ndërsa lak që bën sythe përgjithmonë
ndërsa (arduino.inPritja () == 0): #Prisni këtu derisa të ketë të dhëna
kalo #mos bëj asgjë
arduinoString = arduino.readline ()
dataArray = arduinoString.split (',') #Ndajeni atë në një grup
temp = noton (dataArray [0])
hum = noton (dataArray [1])
tempC.append (temp)
lagështia. shtoj (hum)
tërheqje (makeFig)
plt. pauzë (.000001)
numëroni = numëroni+1 nëse (numëroni> 20): #merrni vetëm 20 të dhënat e fundit nëse të dhënat janë më shumë do të shfaqen së pari
tempC.pop (0)
lagështia. pop (0)
2. Për të vizatuar lagështinë dhe temperaturën veç e veç
import serial # import Biblioteka Seriale
import numpy # Import numpy
import matplotlib.pyplot si plt #import bibliotekë matplotlib
nga importi i menjëhershëm *
tempC = #varg i zbrazët
lagështia =
arduino = serial. Serial ("/dev/ttyACM0", 115200) #Porti serial me të cilin arduino është i lidhur dhe Baudrate
plt.ion () #Tregoni matplotlib që dëshironi që modaliteti interaktiv të vizatojë të dhëna të drejtpërdrejta
def CreatePlot (): #Krijo një funksion që e bën komplotin tonë të dëshiruar
plt. nënplot (2, 1, 1) #Lartësia, Gjerësia, Komploti i parë
plt.ylim (22, 34) #Cakto vlerat y min dhe max
plt.title ('Të dhënat DHT11 në kohë reale') #Thotoni titullin
plt.grid (E vërtetë) #Ndizni rrjetin
plt.ylabel ('Temp C') #Vendos ylabels
plt.plot (tempC, 'b^-', label = 'Degree C') #plotoni temperaturën
plt.legend (loc = 'qendra e sipërme') #plotoni legjendën
plt. nënplot (2, 1, 2) # Lartësia, Gjerësia, Komploti i dytë
plt.grid (E vërtetë)
plt.ylim (45, 70) #Vendosni kufijtë e boshtit të dytë y
plt.plot (lagështia, 'g*-', etiketa = 'Lagështia (g/m^3)') #të dhëna për lagështinë e komplotit
plt.ylabel ('Lagështia (g/m^3)') #etiketa boshti i dytë y
plt.ticklabel_format (useOffset = False) #për të ndaluar aksin y të shkallës automatike
plt.legend (loc = 'qendra e sipërme')
ndërsa e vërtetë: # Ndërsa lak që bën sythe përgjithmonë
ndërsa (arduino.inPritja () == 0): #Prisni këtu derisa të ketë kalim të të dhënave #mos bëni asgjë
arduinoString = arduino.readline () #lexoni të dhënat nga porti serik
dataArray = arduinoString.split (',') #Ndajeni atë në një grup
temp = float (dataArray [0]) #Shndërrojeni elementin e parë në numër lundrues dhe vendoseni në temp
hum = float (dataArray [1]) #Shndërroje elementin e dytë në numër lundrues dhe vendos në hum
tempC.append (temp) #Ndërtoni grupin tonë tempC duke shtuar leximin e temp
lagështia.shtoj (hum) #Ndërtimi i grupit tonë të lagështisë duke shtuar leximin e zhurmës
drawnow (KrijoPlot)
plt. pauzë (.000001)
numërim = numërim+1
nëse (numëroni> 20): #vetëm merrni 20 të dhënat e fundit nëse të dhënat janë më shumë do të shfaqen së pari
tempC.pop (0) # dal elementin e parë
lagështia. pop (0)
Hapi 6: Diagrami i Qarkut
Arduino ==> DHT11
3.3V ==> KQV
GND ==> GND
D7 ==> JASHT
Recommended:
(Projekti IOT) Merrni të dhënat e motit duke përdorur ESP8266 dhe Openweather API: 5 hapa
(Projekti IOT) Merrni të dhënat e motit duke përdorur ESP8266 dhe Openweather API: Në këtë udhëzues do të ndërtojmë një projekt të thjeshtë IOT në të cilin do të marrim të dhënat e motit të qytetit tonë nga openweather.com/api dhe do t'i shfaqim duke përdorur softuer përpunimi
Bëni komplote të bukura nga të dhënat e drejtpërdrejta të Arduino (dhe ruani të dhënat në Excel): 3 hapa
Bëni komplote të bukura nga të dhënat e drejtpërdrejta të Arduino (dhe ruani të dhënat në Excel): Të gjithëve na pëlqen të luajmë me funksionin tonë të lotarisë P … në Arduino IDE. Megjithatë, ndërsa mund të jetë e dobishme për aplikacionet bazë, të dhënat fshihen sa më shumë shtohen pikë dhe nuk është veçanërisht e këndshme për sytë. Komploti i Arduino IDE nuk
Të dhënat e vibruesit pa tel dhe sensorit të temperaturës në MySQL duke përdorur Nyjen-RED: 40 hapa
Të dhënat e dridhjeve pa tel dhe sensorit të temperaturës në MySQL duke përdorur Node-RED: Prezantimi i sensorit të dridhjeve dhe temperaturës pa tela të NCD's Long Range IoT Industrial, i cili mburret deri në një distancë prej 2 kilometrash duke përdorur strukturën e rrjetit me rrjetë pa tel. Përfshirë një sensor dridhjeje dhe temperature të saktë 16-bit, kjo pajisje kalon
Të dhënat e motit duke përdorur Google Sheets dhe Google Script: 7 hapa
Të dhënat e motit duke përdorur Google Sheets dhe Google Script: Në këtë Blogtut, ne do të dërgojmë leximet e sensorit SHT25 në fletët e Google duke përdorur Adafruit huzzah ESP8266 i cili ndihmon në dërgimin e të dhënave në internet. Dërgimi i të dhënave në qelizën e fletëve të Google është shumë i dobishëm dhe mënyra themelore që ruan të dhënat në
Regjistroni të dhënat dhe hartoni një grafik në internet duke përdorur NodeMCU, MySQL, PHP dhe Chartjs.org: 4 hapa
Regjistroni të dhënat dhe hartoni një grafik në internet duke përdorur NodeMCU, MySQL, PHP dhe Chartjs.org: Ky udhëzues përshkruan se si mund të përdorim bordin Node MCU për të mbledhur të dhëna nga sensorë të shumtë, t'i dërgojmë këto të dhëna në një skedar PHP të pritur i cili më pas i shton të dhënat një bazë të dhënash MySQL. Të dhënat mund të shihen në internet si një grafik, duke përdorur tabelën.js.A ba