Sisällysluettelo:

Piirrä DHT11 -tiedot Raspberry Pi: n ja Arduino UNO: n avulla: 7 vaihetta
Piirrä DHT11 -tiedot Raspberry Pi: n ja Arduino UNO: n avulla: 7 vaihetta

Video: Piirrä DHT11 -tiedot Raspberry Pi: n ja Arduino UNO: n avulla: 7 vaihetta

Video: Piirrä DHT11 -tiedot Raspberry Pi: n ja Arduino UNO: n avulla: 7 vaihetta
Video: Программирование модуля датчика температуры и влажности ESP8266 ESP01 DHT11 | удаленныйXY | ФЛПрог 2024, Marraskuu
Anonim
Piirrä DHT11 -data Raspberry Pi: n ja Arduino UNO: n avulla
Piirrä DHT11 -data Raspberry Pi: n ja Arduino UNO: n avulla

Tämä opettavainen selittää, miten piirrän lämpötila -anturin DHT11 -tiedot Arduino Unon ja Raspberry Pi: n avulla. Tässä lämpötila -anturi on liitetty Arduino Unoon ja Arduino Uno on kytketty sarjaan Raspberry Pi: hen. Raspberry Pi Sivulla matplotlib-, numpy- ja drawow -kirjastoja käytetään kaavioiden piirtämiseen.

Vaihe 1: Projektissa tarvittavat asiat

Projektissa tarvittavat asiat
Projektissa tarvittavat asiat
Projektissa tarvittavat asiat
Projektissa tarvittavat asiat
Projektissa tarvittavat asiat
Projektissa tarvittavat asiat

1. Vadelma Pi

2. Arduino Uno

3. DHT11 -lämpötila -anturi

4. Hyppyjohdot

5. Leipälauta

Vaihe 2: Lataa ja asenna Arduino IDE Raspberry Pi: hen

Lataa ja asenna Arduino IDE Raspberry Pi: hen
Lataa ja asenna Arduino IDE Raspberry Pi: hen
Lataa ja asenna Arduino IDE Raspberry Pi: hen
Lataa ja asenna Arduino IDE Raspberry Pi: hen
Lataa ja asenna Arduino IDE Raspberry Pi: hen
Lataa ja asenna Arduino IDE Raspberry Pi: hen

Huomautus:- Voit käyttää luonnoksia Arduino UNO -ohjelmassa Windowsin, Linuxin tai Macin Arduino IDE: n avulla.

Ensimmäinen askel on asentaa Arduino IDE kyseiselle avoimelle selaimelle Raspberry Pi: ssä ja avata alla oleva linkki

Arduino Edellinen IDE

Lataa sitten Linux ARM -versio ja pura se komennolla

tar -xf tiedostonimi

Purkamisen jälkeen näet uuden hakemiston. Tässä käytän arduino-1.8.2 IDE: tä. Siirry sitten hakemistoon komennolla.

cd arduino-1.8.1

Jos haluat suorittaa Arduino IDE: n, käytä tätä komentoa arduino-1.8.2-hakemistossa

./arduino

Kuinka käyttää kirjastoja

Jos haluat asentaa Arduinon kirjastoja, lataa kirjasto ja liitä se arduino 1.8.2 ==> kirjastojen kansioon.

HUOMAUTUS:-Varmista, että ex (DHT-anturi) -kirjaston kansiossa ei ole (-). Jos on (-), nimeä se uudelleen.

käytämme kahta kirjastoa tässä ohjeessa, DHT_Sensor ja Adafruit_Sensor

Vaihe 3: Arduinon koodi

Arduinon koodi
Arduinon koodi

Anna nyt python ja Arduino puhua yhdessä. Ensinnäkin tarvitsemme yksinkertaisen ohjelman saadaksemme Arduinon lähettämään tietoja sarjaportin kautta. Seuraava ohjelma on yksinkertainen ohjelma, joka laskee Arduinon ja lähettää tiedot sarjaporttiin.

Arduino -koodi

#Sisällytä "DHT.h" float tempC; // Muuttuva tai pitolämpötila C float tempF; // Muuttuja lämpötilan pitämiseen F -kellun kosteudessa; // Muuttuja painelukeman pitämiseen

#define DHTPIN 7 // mihin digitaaliseen nastaan olemme yhteydessä

#define DHTTYPE DHT11 // DHT 11

//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

//#define DHTTYPE DHT21 // DHT 21 (AM2301)

// Alusta DHT -anturi.

DHT dht (DHTPIN, DHTTYPE);

void setup () {Serial.begin (115200); // kytke sarjavalvonta päälle

dht.begin (); // alustaa dht}

void loop () {tempC = dht.readTemperature (); // Muista ilmoittaa muuttujasi

kosteus = dht.readHumidity (); // Lue kosteus

Serial.print (tempC);

Serial.print (",");

Sarjajälki (kosteus);

Serial.print ("\ n"); // new linedelay (2000); // Tauko lukemien välillä. }

Kun luonnos on koottu, valitse levy ja portti ja lähetä se.

Vaihe 4: Asenna Raspberry Pi

Asenna Raspberry Pi
Asenna Raspberry Pi

Kun koodi on ladattu, asenna joitain kirjastoja, jotta voimme piirtää kaavion Arduino Unon sarjatuotteista.

1. PySerial on kirjasto, joka tukee sarjayhteyksiä useilla eri laitteilla. Asenna se komennolla.

Sudo apt-get install python-serial

2. Numpy on paketti, joka määrittää moniulotteisen taulukko-objektin ja siihen liittyvät nopeat matemaattiset funktiot. Se tarjoaa myös yksinkertaisia rutiineja lineaariselle algebralle ja FFT: lle (Fast Fourier Transform) ja hienostuneelle satunnaislukujen generoinnille. Voit asentaa sen monella tavalla joko apt -paketin tai pipin avulla. Tässä asennan pipillä, että meidän on ensin asennettava pip

sudo apt-get install python-pip python-dev build-essential

sudo pip asenna numpy

tai jos haluat käyttää apt -pakettia

sudo apt install python-numpy

3. Matplotlib on 2D-piirtokirjasto, joka tarjoaa olio-ohjelmoidun sovellusliittymän kaavioiden upottamiseen sovelluksiin käyttämällä yleiskäyttöisiä graafisia käyttöliittymiä, kuten Tkinter, wxPython, Qt tai GTK+. Asenna se komennolla

sudo pip asenna matplotlib

tai

sudo apt asentaa python-matplotlib

4. Drawnowa käytetään yleensä tulosten katsomiseen jokaisen iteroinnin jälkeen, kun käytämme "imshow" MATLABissa. Asenna se komennolla

sudo pip asenna piirustus

Vaihe 5: Python Scipt

Python Scipt
Python Scipt
Python Scipt
Python Scipt

Seuraava vaihe on kirjoittaa python -skripti, jonka voit kirjoittaa millä tahansa editorilla.

1. Piirrä tiedot yhdeksi kuvaajaksi

tuoda sarjanumero # tuoda sarjakirjasto

import numpy # Tuo numpy

Tuo matplotlib.pyplot plt #import matplotlib -kirjastoksi

vedetystä tuonnista *

tempC = #Empty arrayhumidity =

arduino = sarja. Sarja ("/dev/ttyACM0", 115200)

plt.ion () # interaktiivinen tila reaaliaikaisen datan laskemiseksi = 0

def makeFig (): #Luo funktio, joka tekee halutun juonen

plt.ylim (20, 30) #Aseta y min ja max arvot

plt.title ('Real Time DHT11 Data') #Plot the title

plt.grid (True) #Kytke ruudukko päälle

plt.ylabel ('Temp C') #Set ylabel

plt.plot (tempC, 'b^-', label = 'Degree C') #plot lämpötila

plt.legend (loc = 'oikeassa yläkulmassa') #plot selite

plt2 = plt.twinx () #Luo toinen y -akseli

plt.ylim (50, 70) #Aseta toisen y -akselin rajat

plt2.plot (kosteus, 'g*-', etiketti = 'Kosteus') #plot paineen tiedot

plt2.set_ylabel ('Kosteus') #label toinen y -akseli

plt2.ticklabel_format (useOffset = False)

plt2.legend (loc = 'vasen yläkulma')

Vaikka totta: # Vaikka silmukka, joka silmukoita ikuisesti

while (arduino.inWaiting () == 0): #Odota täällä, kunnes tietoja on

pass #älä tee mitään

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') #Split it to a array

temp = kelluva (dataArray [0])

hum = float (dataArray [1])

tempC.append (temp)

kosteus. lisäys (hum)

piirretty (makeFig)

plt.pause (.000001)

count = count+1 if (count> 20): #ota vain viimeiset 20 dataa, jos dataa on enemmän, se ponnahtaa ensin

tempC.pop (0)

kosteus. pop (0)

2. Kuvata kosteus ja lämpötila erikseen

tuoda sarjanumero # tuoda sarjakirjasto

import numpy # Tuo numpy

Tuo matplotlib.pyplot plt #import matplotlib -kirjastoksi

vedetystä tuonnista *

tempC = #Tyhjä taulukko

kosteus =

arduino = sarja. Sarja ("/dev/ttyACM0", 115200) #Sarjaportti, johon arduino on kytketty ja Baudrate

plt.ion () #Kerro matplotlib, että haluat interaktiivisen tilan piirtää reaaliaikaisia tietoja

def CreatePlot (): #Luo funktio, joka tekee halutun juonen

plt. osa (2, 1, 1) #Height, Width, First plot

plt.ylim (22, 34) #Aseta y min ja max arvot

plt.title ('Real Time DHT11 Data') #Plot the title

plt.grid (True) #Kytke ruudukko päälle

plt.ylabel ('Temp C') #Set ylabels

plt.plot (tempC, 'b^-', label = 'C-aste') #plot the temperature

plt.legend (loc = 'ylempi keskikohta') #plot selite

plt. osa (2, 1, 2) # Korkeus, Leveys, Toinen kuvaaja

plt.grid (tosi)

plt.ylim (45, 70) #Aseta toisen y -akselin rajat

plt.plot (kosteus, 'g*-', etiketti = 'Kosteus (g/m^3)') #plot kosteustiedot

plt.ylabel ('Kosteus (g/m^3)') #label toinen y -akseli

plt.ticklabel_format (useOffset = False) #lopettaaksesi automaattisen skaalauksen y -akselin

plt.legend (loc = 'ylempi keskikohta')

Vaikka totta: # Vaikka silmukka, joka silmukoita ikuisesti

while (arduino.inWaiting () == 0): #odota täällä, kunnes data on läpäissyt #älä tee mitään

arduinoString = arduino.readline () #lue tiedot sarjaportista

dataArray = arduinoString.split (',') #Split it to a array

temp = kelluva (dataArray [0]) #Muunna ensimmäinen elementti kelluvaksi numeroksi ja lisää lämpötila

hum = float (dataArray [1]) #Muunna toinen elementti kelluvaksi numeroksi ja laita hum

tempC.append (temp) #Rakenna tempC -matriisi lisäämällä temp -lukema

kosteus. liitä (hum) #Rakenna kosteusjärjestelmämme liittämällä hum -lukema

drawow (CreatePlot)

plt.pause (.000001)

count = count+1

if (count> 20): #ota vain viimeiset 20 dataa, jos dataa on enemmän, se ponnahtaa ensin

tempC.pop (0) # ponnahtaa esiin ensimmäinen elementti

kosteus. pop (0)

Vaihe 6: Piirikaavio

Piirikaavio
Piirikaavio
Piirikaavio
Piirikaavio
Piirikaavio
Piirikaavio

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> ULOS

Suositeltava: