Përmbajtje:

Komplotoni të dhënat DHT11 duke përdorur Raspberry Pi dhe Arduino UNO: 7 hapa
Komplotoni të dhënat DHT11 duke përdorur Raspberry Pi dhe Arduino UNO: 7 hapa

Video: Komplotoni të dhënat DHT11 duke përdorur Raspberry Pi dhe Arduino UNO: 7 hapa

Video: Komplotoni të dhënat DHT11 duke përdorur Raspberry Pi dhe Arduino UNO: 7 hapa
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Nëntor
Anonim
Komplotoni të dhënat DHT11 duke përdorur Raspberry Pi dhe Arduino UNO
Komplotoni të dhënat DHT11 duke përdorur Raspberry Pi dhe Arduino UNO

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

Gjërat e nevojshme për projektin
Gjërat e nevojshme për projektin
Gjërat e nevojshme për projektin
Gjërat e nevojshme për projektin
Gjërat e nevojshme për projektin
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

Shkarkoni dhe instaloni Arduino IDE në Raspberry Pi
Shkarkoni dhe instaloni Arduino IDE në Raspberry Pi
Shkarkoni dhe instaloni Arduino IDE në Raspberry Pi
Shkarkoni dhe instaloni Arduino IDE në Raspberry Pi
Shkarkoni dhe instaloni Arduino IDE në Raspberry Pi
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

Kodi për Arduino
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

Konfiguroni Raspberry Pi
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

Python Scipt
Python Scipt
Python Scipt
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

Diagrami i qarkut
Diagrami i qarkut
Diagrami i qarkut
Diagrami i qarkut
Diagrami i qarkut
Diagrami i qarkut

Arduino ==> DHT11

3.3V ==> KQV

GND ==> GND

D7 ==> JASHT

Recommended: