Kazalo:

Narišite podatke DHT11 z uporabo Raspberry Pi in Arduino UNO: 7 korakov
Narišite podatke DHT11 z uporabo Raspberry Pi in Arduino UNO: 7 korakov

Video: Narišite podatke DHT11 z uporabo Raspberry Pi in Arduino UNO: 7 korakov

Video: Narišite podatke DHT11 z uporabo Raspberry Pi in Arduino UNO: 7 korakov
Video: Программирование модуля датчика температуры и влажности ESP8266 ESP01 DHT11 | удаленныйXY | ФЛПрог 2024, November
Anonim
Narišite podatke DHT11 z uporabo Raspberry Pi in Arduino UNO
Narišite podatke DHT11 z uporabo Raspberry Pi in Arduino UNO

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

Stvari, potrebne za projekt
Stvari, potrebne za projekt
Stvari, potrebne za projekt
Stvari, potrebne za projekt
Stvari, potrebne za projekt
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

Prenesite in namestite Arduino IDE v Raspberry Pi
Prenesite in namestite Arduino IDE v Raspberry Pi
Prenesite in namestite Arduino IDE v Raspberry Pi
Prenesite in namestite Arduino IDE v Raspberry Pi
Prenesite in namestite Arduino IDE v Raspberry Pi
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

Koda za Arduino
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

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

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

Shema vezja
Shema vezja
Shema vezja
Shema vezja
Shema vezja
Shema vezja

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> OUT

Priporočena: