Turinys:

Nubraižykite DHT11 duomenis naudodami „Raspberry Pi“ir „Arduino UNO“: 7 žingsniai
Nubraižykite DHT11 duomenis naudodami „Raspberry Pi“ir „Arduino UNO“: 7 žingsniai

Video: Nubraižykite DHT11 duomenis naudodami „Raspberry Pi“ir „Arduino UNO“: 7 žingsniai

Video: Nubraižykite DHT11 duomenis naudodami „Raspberry Pi“ir „Arduino UNO“: 7 žingsniai
Video: G23 3 2024, Lapkritis
Anonim
Nubraižykite DHT11 duomenis naudodami Raspberry Pi ir Arduino UNO
Nubraižykite DHT11 duomenis naudodami Raspberry Pi ir Arduino UNO

Ši pamoka paaiškina, kaip aš nubraižau temperatūros jutiklio DHT11 duomenis naudodami „Arduino Uno“ir „Raspberry Pi“. Šiame temperatūros jutiklyje yra prijungtas „Arduino Uno“, o „Arduino Uno“yra nuosekliai prijungtas prie „Raspberry Pi“. „Raspberry Pi Side“grafikų braižymui naudojamos matplotlib, numpy ir drawow bibliotekos.

1 žingsnis: Projektui reikalingi dalykai

Projektui reikalingi dalykai
Projektui reikalingi dalykai
Projektui reikalingi dalykai
Projektui reikalingi dalykai
Projektui reikalingi dalykai
Projektui reikalingi dalykai

1. Avietė Pi

2. Arduino Uno

3. DHT11 temperatūros jutiklis

4. Trumpieji laidai

5. Duonos lenta

2 veiksmas: atsisiųskite ir įdiekite „Arduino IDE“į „Raspberry Pi“

Atsisiųskite ir įdiekite „Arduino IDE“į „Raspberry Pi“
Atsisiųskite ir įdiekite „Arduino IDE“į „Raspberry Pi“
Atsisiųskite ir įdiekite „Arduino IDE“į „Raspberry Pi“
Atsisiųskite ir įdiekite „Arduino IDE“į „Raspberry Pi“
Atsisiųskite ir įdiekite „Arduino IDE“į „Raspberry Pi“
Atsisiųskite ir įdiekite „Arduino IDE“į „Raspberry Pi“

Pastaba:- Norėdami įkelti eskizą į „Arduino UNO“, galite naudoti „Windows“, „Linux“ar „Mac“„Arduino IDE“.

Pirmasis žingsnis yra įdiegti „Arduino IDE“tai atidarytai naršyklei „Raspberry Pi“ir atidaryti žemiau pateiktą nuorodą

Arduino Ankstesnis IDE

Tada atsisiųskite „Linux ARM“versiją ir išskleiskite ją naudodami komandą

tar -xf failo pavadinimas

Ištraukę pamatysite naują katalogą. Čia aš naudoju arduino-1.8.2 IDE. Tada eikite į katalogą naudodami komandą.

cd arduino-1.8.1

Norėdami paleisti „Arduino IDE“, naudokite šią komandą kataloge arduino-1.8.2

./arduino

Kaip naudotis bibliotekomis

Norėdami įdiegti visas „Arduino“bibliotekas, tiesiog atsisiųskite biblioteką ir įklijuokite į arduino 1.8.2 ==> bibliotekų aplanką.

PASTABA:-Įsitikinkite, kad bibliotekos aplanke nėra (-) ex (DHT jutiklis). Jei yra (-), pervardykite.

šioje instrukcijoje naudosime dvi bibliotekas: DHT_Sensor ir Adafruit_Sensor

3 žingsnis: „Arduino“kodas

„Arduino“kodas
„Arduino“kodas

Dabar leiskite Python ir Arduino kalbėtis kartu. Pirmiausia mums reikia paprastos programos, kad „Arduino“siustų duomenis per nuoseklųjį prievadą. Ši programa yra paprasta programa, kuri turės „Arduino“skaičių ir siunčia duomenis į nuoseklųjį prievadą.

Arduino kodas

#įtraukti „DHT.h“plūdės tempC; // Kintama arba laikymo temperatūra C float tempF; // Kintamasis temperatūros palaikymui F plūdės drėgmėje; // Kintamasis slėgio rodmenims palaikyti

#define DHTPIN 7 // prie kokio skaitmeninio kaiščio esame prisijungę

#define DHTTYPE DHT11 // DHT 11

//#apibrėžti DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

//#apibrėžti DHTTYPE DHT21 // DHT 21 (AM2301)

// Inicijuokite DHT jutiklį.

DHT dht (DHTPIN, DHTTYPE);

void setup () {Serial.begin (115200); // įjunkite serijinį monitorių

dht.begin (); // inicijuoti dht}

void loop () {tempC = dht.readTemperature (); // Būtinai deklaruokite savo kintamuosius

drėgmė = dht.readHumidity (); // Skaitykite Drėgmė

Serial.print (tempC);

Serial.print (",");

Serijinis atspaudas (drėgmė);

Serial.print ("\ n"); // new linedelay (2000); // Pauzė tarp skaitymų. }

Kai eskizas bus sudarytas, pasirinkite lentą ir prievadą ir įkelkite jį.

4 žingsnis: nustatykite „Raspberry Pi“

Nustatykite „Raspberry Pi“
Nustatykite „Raspberry Pi“

Įkėlę kodą, įdiekite kai kurias bibliotekas, kad galėtume sudaryti nuosekliai iš „Arduino Uno“gaunamų duomenų grafiką.

1. „PySerial“yra biblioteka, palaikanti serijinius ryšius naudojant įvairius įrenginius. Norėdami jį įdiegti, naudokite komandą.

Sudo apt-get install python-serial

2. „Numpy“yra paketas, kuris apibrėžia daugiamatį masyvo objektą ir su juo susijusias greitos matematikos funkcijas. Jame taip pat pateikiamos paprastos linijinės algebros ir FFT (greito Furjė transformacijos) bei sudėtingos atsitiktinių skaičių generavimo procedūros. Galite ją įdiegti įvairiais būdais naudodami apt paketą arba pip. Čia aš diegiu naudodamas pip, kad pirmiausia turėtume įdiegti pip

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

sudo pip įdiegti numpy

arba jei norite naudoti apt paketą

sudo apt įdiegti python-numpy

3. „Matplotlib“yra 2D braižymo biblioteka, kurioje pateikiama į objektą orientuota API, skirta įterpti sklypus į programas naudojant bendrosios paskirties GUI įrankių rinkinius, tokius kaip „Tkinter“, „wxPython“, „Qt“ar „GTK+“. Norėdami jį įdiegti, naudokite komandą

sudo pip įdiegti matplotlib

arba

sudo apt įdiegti python-matplotlib

4. „Drawnow“paprastai naudojamas rezultatams pamatyti po kiekvienos iteracijos, nes MATLAB naudojame „imshow“. Norėdami jį įdiegti, naudokite komandą

sudo pip įdiegti ištraukiamas

5 veiksmas: „Python Scipt“

„Python Scipt“
„Python Scipt“
„Python Scipt“
„Python Scipt“

Kitas žingsnis yra parašyti „python“scenarijų, kuriam parašyti galite naudoti bet kurį redaktorių.

1. Nubraižykite duomenis vienoje diagramoje

importuoti serijos numerį # importuoti serijos biblioteką

import numpy # Importuoti numpy

importuokite matplotlib.pyplot kaip plt #import matplotlib biblioteką

iš ištraukto importo *

tempC = #Empty arrayhumidity =

arduino = serial. Serial ("/dev/ttyACM0", 115200)

plt.ion () # interaktyvusis režimas, skirtas nubrėžti tiesioginį duomenų skaičių = 0

def makeFig (): #Sukurkite funkciją, kuri sukuria norimą brėžinį

plt.ylim (20, 30) #Nustatykite y min ir max reikšmes

plt.title („Realiojo laiko DHT11 duomenys“) #Plot the title

plt.grid (tiesa) #Įjunkite tinklelį

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

plt.plot (tempC, 'b^-', label = 'C laipsnis') #plot temperatūra

plt.legend (loc = 'viršutinė dešinė') #plot legenda

plt2 = plt.twinx () #Sukurkite antrąją y ašį

plt.ylim (50, 70) #Nustatykite antrosios y ašies ribas

plt2.plot (drėgmė, 'g*-', etiketė = 'drėgmė') #plot slėgio duomenys

plt2.set_ylabel ('Drėgmė') #label antroji y ašis

plt2.ticklabel_format (useOffset = False)

plt2.legend (loc = 'viršutinis kairysis')

Nors tiesa: # Nors kilpa, kuri tęsiasi amžinai

while (arduino.inWaiting () == 0): #Palaukite, kol bus duomenų

praeiti #nieko nedaryti

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') #Skaidykite jį į masyvą

temp = plūdė (dataArray [0])

hum = plūdė (dataArray [1])

tempC.append (temp)

drėgmė. pridėti (hum)

ištrauktas (makeFig)

plt.pause (.000001)

skaičius = skaičius+1, jei (skaičius> 20): #tik paimkite paskutinius 20 duomenų, jei duomenų yra daugiau, jie pirmiausia pasirodys

tempC.pop (0)

drėgmė.pop (0)

2. Atskirai pavaizduoti drėgmę ir temperatūrą

importuoti serijos numerį # importuoti serijos biblioteką

import numpy # Importuoti numpy

importuokite matplotlib.pyplot kaip plt #import matplotlib biblioteką

iš ištraukto importo *

tempC = #Tuščias masyvas

drėgmė =

arduino = serial. Serial ("/dev/ttyACM0", 115200) #Serijos prievadas, prie kurio prijungtas arduino ir Baudrate

plt.ion () #Pasakykite matplotlib, kad norite, kad interaktyvusis režimas sudarytų tiesioginius duomenis

def CreatePlot (): #Sukurkite funkciją, kuri sukuria norimą brėžinį

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

plt.ylim (22, 34) #Nustatykite y min ir max reikšmes

plt.title („Realiojo laiko DHT11 duomenys“) #Plot the title

plt.grid (tiesa) #Įjunkite tinklelį

plt.ylabel ('Temp C') #Nustatyti etiketes

plt.plot (tempC, 'b^-', label = 'C laipsnis') #plot temperatūra

plt.legend (loc = 'viršutinis centras') #plot legenda

plt.subplot (2, 1, 2) # Aukštis, plotis, antrasis brėžinys

plt.grid (tiesa)

plt.ylim (45, 70) #Nustatykite antrosios y ašies ribas

plt.plot (drėgmė, 'g*-', etiketė = 'Drėgmė (g/m^3)') #plot drėgmės duomenys

plt.ylabel ('Drėgmė (g/m^3)') #etiketė antroji y ašis

plt.ticklabel_format (useOffset = False) #, kad sustabdytumėte automatinę mastelio y ašį

plt.legend (loc = 'viršutinis centras')

Nors tiesa: # Nors kilpa, kuri tęsiasi amžinai

Nors (arduino.inWaiting () == 0): #Palaukite, kol bus perduoti duomenys #nieko nedaryti

arduinoString = arduino.readline () #perskaitykite duomenis iš nuoseklaus prievado

dataArray = arduinoString.split (',') #Skaidykite jį į masyvą

temp = plūdė (dataArray [0]) #Konvertuokite pirmąjį elementą į kintantį skaičių ir įveskite temp

hum = plūdė (dataArray [1]) #Konvertuokite antrąjį elementą į kintantį skaičių ir įdėkite hum

tempC.append (temp) #Sukurkite mūsų tempC masyvą pridėdami temp rodmenį

drėgmė.pridėti (hum) #Kuriant mūsų drėgmės masyvą pridedant triukšmo rodmenis

drawow („CreatePlot“)

plt.pause (.000001)

skaičiuoti = skaičiuoti+1

jei (skaičius> 20): #tik paimkite paskutinius 20 duomenų, jei duomenų yra daugiau, jie pirmiausia pasirodys

tempC.pop (0) # pasirodo pirmasis elementas

drėgmė.pop (0)

6 žingsnis: grandinės schema

Grandinės schema
Grandinės schema
Grandinės schema
Grandinės schema
Grandinės schema
Grandinės schema

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> OUT

Rekomenduojamas: