Mündəricat:

Raspberry Pi və Arduino UNO -dan istifadə edərək DHT11 məlumatlarını tərtib edin: 7 addım
Raspberry Pi və Arduino UNO -dan istifadə edərək DHT11 məlumatlarını tərtib edin: 7 addım

Video: Raspberry Pi və Arduino UNO -dan istifadə edərək DHT11 məlumatlarını tərtib edin: 7 addım

Video: Raspberry Pi və Arduino UNO -dan istifadə edərək DHT11 məlumatlarını tərtib edin: 7 addım
Video: Arduino ilə uzaqdan idarə olunan maşın | Arduino car with Remote control | PART 2 2024, Noyabr
Anonim
Raspberry Pi və Arduino UNO istifadə edərək DHT11 Məlumatlarını tərtib edin
Raspberry Pi və Arduino UNO istifadə edərək DHT11 Məlumatlarını tərtib edin

Bu təlimat, Arduino Uno və Raspberry Pi istifadə edərək DHT11 temperatur sensoru məlumatlarını necə qurduğumu izah edir. Bu vəziyyətdə sensor Arduino Uno ilə, Arduino Uno isə Raspberry Pi ilə ardıcıl olaraq bağlanır. Raspberry Pi Side -də matplotlib, numpy və drawow kitabxanaları qrafik qurmaq üçün istifadə olunur.

Addım 1: Layihə üçün lazım olan şeylər

Layihə üçün lazım olan şeylər
Layihə üçün lazım olan şeylər
Layihə üçün lazım olan şeylər
Layihə üçün lazım olan şeylər
Layihə üçün lazım olan şeylər
Layihə üçün lazım olan şeylər

1. Moruq Pi

2. Arduino Uno

3. DHT11 Temperatur Sensoru

4. Jumper Telləri

5. Çörək lövhəsi

Addım 2: Raspberry Pi -də Arduino IDE -ni yükləyin və quraşdırın

Raspberry Pi -də Arduino IDE -ni yükləyin və quraşdırın
Raspberry Pi -də Arduino IDE -ni yükləyin və quraşdırın
Raspberry Pi -də Arduino IDE -ni yükləyin və quraşdırın
Raspberry Pi -də Arduino IDE -ni yükləyin və quraşdırın
Raspberry Pi -də Arduino IDE -ni yükləyin və quraşdırın
Raspberry Pi -də Arduino IDE -ni yükləyin və quraşdırın

Qeyd:- Arduino UNO-da eskiz yükləmək üçün Windows, Linux və ya Mac Arduino IDE-dən istifadə edə bilərsiniz.

İlk addım, Raspberry Pi -də həmin açıq brauzer üçün Arduino IDE -ni qurmaq və aşağıda göstərilən linki açmaqdır

Arduino Əvvəlki IDE

Sonra Linux ARM versiyasını yükləyin və əmrdən istifadə edərək çıxarın

tar -xf fayl adı

Çıxardıqdan sonra yeni bir kataloq görəcəksiniz. Burada arduino-1.8.2 IDE istifadə edirəm. Sonra əmrdən istifadə edərək qovluğa gedin.

cd arduino-1.8.1

Arduino IDE-ni işə salmaq üçün bu əmri arduino-1.8.2 qovluğunda istifadə edin

./arduino

Kitabxanalardan necə istifadə etmək olar

Arduino -da hər hansı bir kitabxana qurmaq üçün sadəcə kitabxananı yükləyin və arduino 1.8.2 ==> kitabxana qovluğuna yapışdırın.

QEYD:-Kitabxana qovluğunda (DHT sensoru) (-) olmadığından əmin olun. Əgər (-) varsa, adını dəyişin.

bu təlimat verən iki kitabxanadan istifadə edəcəyik, DHT_Sensor və Adafruit_Sensor

Addım 3: Arduino üçün kod

Arduino kodu
Arduino kodu

Gəlin python və Arduino ilə birlikdə danışaq. Birincisi, Arduino -nun serial port üzərindən məlumat göndərməsi üçün sadə bir proqrama ehtiyacımız var. Aşağıdakı proqram Arduino sayacaq və məlumatları serial portuna göndərəcək sadə bir proqramdır.

Arduino kodu

#"DHT.h" float tempC daxil edin; // C float tempF -də dəyişkən və ya saxlama tempi; // F float rütubətində tempi saxlamaq üçün dəyişən; // Təzyiq oxunuşunu saxlamaq üçün dəyişən

#deftine DHTPIN 7 // hansı rəqəmsal pinlə bağlıyıq

#DHTTYPE DHT11 // DHT 11 təyin edin

//#DHTTYPE DHT22 təyin edin // DHT 22 (AM2302), AM2321

//#DHTTYPE DHT21 təyin edin // DHT 21 (AM2301)

// DHT sensorunu işə salın.

DHT dht (DHTPIN, DHTTYPE);

void setup () {Serial.begin (115200); // serial monitoru yandırın

dht.begin (); // başlat dht}

void loop () {tempC = dht.readTemperature (); // Dəyişənlərinizi elan etdiyinizə əmin olun

rütubət = dht.readHumidity (); // Nəmliyi oxuyun

Serial.print (tempC);

Serial.print (",");

Serial çap (rütubət);

Serial.print ("\ n"); // yeni gün üçün (2000); // Oxumalar arasında fasilə verin. }

Eskiz tərtib edildikdən sonra lövhəni və portu seçin və yükləyin.

Addım 4: Raspberry Pi qurun

Raspberry Pi qurmaq
Raspberry Pi qurmaq

Kod yükləndikdən sonra Arduino Uno -dan ardıcıl olaraq gələn məlumatların qrafikini qura biləcəyimiz üçün bəzi kitabxanaları quraşdırın.

1. PySerial, müxtəlif qurğular üzərində ardıcıl bağlantılara dəstək verən bir kitabxanadır. Qurmaq üçün əmrdən istifadə edin.

Sudo apt-get python-serial yükləyin

2. Numpy, çoxölçülü bir sıra obyekti və üzərində işləyən əlaqəli sürətli riyazi funksiyaları təyin edən bir paketdir. Həm də xətti cəbr və FFT (Fast Fourier Transform) və mürəkkəb təsadüfi ədədlər istehsalı üçün sadə rutinlər təqdim edir. Apt paketi və ya pip istifadə edərək bir çox şəkildə qura bilərsiniz. Burada pip istifadə edərək quraşdırıram, bunun üçün əvvəlcə pip quraşdırmalıyıq

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

sudo pip install numpy

və ya apt paketindən istifadə etmək istəyirsinizsə

sudo apt install python-numpy

3. Matplotlib, Tkinter, wxPython, Qt və ya GTK+kimi ümumi təyinatlı GUI alət dəstlərindən istifadə edərək, proqramların arasına proqramlar yerləşdirmək üçün obyekt yönümlü bir API təmin edən 2D təsvir kitabxanasıdır. Qurmaq üçün əmrdən istifadə edin

sudo pip matplotlib quraşdırın

və ya

sudo apt install python-matplotlib

4. Drawnow ümumiyyətlə MATLAB -da "imshow" istifadə etdiyimiz üçün hər bir təkrarlamadan sonra nəticələri görmək üçün istifadə olunur. Qurmaq üçün əmrdən istifadə edin

sudo pip drawow quraşdırın

Addım 5: Python Scipt

Python skript
Python skript
Python skipti
Python skipti

Növbəti addım, hər hansı bir redaktordan istifadə edə biləcəyiniz bir python skriptini yazmaqdır.

1. Verilənləri bir qrafikdə qurun

serial # idxal Serial Kitabxana

idxal numpy # İdxal numpy

matplotlib.pyplot'u plt kimi #idxal matplotlib kitabxanasına daxil edin

çəkilmiş idxaldan *

tempC = #Boş arrayhumidity =

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

plt.ion () # interaktiv rejim canlı datacount = 0 qurmaq üçün

def makeFig (): #İstədiyimiz planı yaradan bir funksiya yaradın

plt.ylim (20, 30) #Min və maksimum dəyərləri təyin edin

plt.title ('Real Time DHT11 Data') #Başlığı tərtib edin

plt.grid (True) #Şəbəkəni yandırın

plt.ylabel ('Temp C') #Etiket et

plt.plot (tempC, 'b^-', label = 'C dərəcəsi') #temperaturun ölçüsü

plt.legend (loc = 'yuxarı sağ') #əfsanəni qur

plt2 = plt.twinx () #İkinci y oxu yaradın

plt.ylim (50, 70) #İkinci y oxunun sərhədlərini təyin edin

plt2.plot (rütubət, 'g*-', etiket = 'Rütubət') #sahə təzyiq məlumatları

plt2.set_ylabel ('Nəmlik') #etiket ikinci y oxu

plt2.ticklabel_format (useOffset = False)

plt2.legend (loc = 'yuxarı sol')

while True: # Əbədi döngə edən loop

while (arduino.inWaiting () == 0): #Məlumat olana qədər burada gözləyin

#heç nə etmə

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') #Bir sıra bölün

temp = float (dataArray [0])

hum = float (dataArray [1])

tempC.append (temp)

rütubət

çəkilmiş (makeFig)

plt.pause (.000001)

count = count+1 if (count> 20): #data daha çox olarsa ilk olaraq son 20 məlumatı götür

tempC.pop (0)

rütubət.pop (0)

2. Rütubət və temperaturu ayrıca qurmaq

serial # idxal Serial Kitabxana

idxal numpy # İdxal numpy

matplotlib.pyplot'u plt kimi #idxal matplotlib kitabxanasına daxil edin

çəkilmiş idxaldan *

tempC = #Boş massiv

rütubət =

arduino = serial. Serial ("/dev/ttyACM0", 115200) #Arduinonun qoşulduğu seriya portu və Baudrate

plt.ion () #İnteraktiv rejimin canlı məlumatları qurmasını istədiyiniz matplotlib deyin

def CreatePlot (): #İstədiyimiz planı yaradan bir funksiya yaradın

plt.subplot (2, 1, 1) #Hündürlük, Genişlik, İlk süjet

plt.ylim (22, 34) #Min və maksimum dəyərləri təyin et

plt.title ('Real Time DHT11 Data') #Başlığı tərtib edin

plt.grid (True) #Şəbəkəni yandırın

plt.ylabel ('Temp C') #Etiketləri təyin edin

plt.plot (tempC, 'b^-', label = 'C dərəcəsi') #temperaturun ölçüsü

plt.legend (loc = 'üst mərkəz') #əfsanəni qur

plt.subplot (2, 1, 2) # Boy, Genişlik, İkinci sahə

plt.grid (Doğru)

plt.ylim (45, 70) #İkinci y oxunun sərhədlərini təyin et

plt.plot (rütubət, 'g*-', etiket = 'Rütubət (g/m^3)') #plot rütubət məlumatları

plt.ylabel ('Rütubət (g/m^3)') #etiket ikinci y oxu

plt.ticklabel_format (useOffset = False) #avtomatik ölçülü y oxunu dayandırmaq üçün

plt.legend (loc = 'yuxarı mərkəz')

while True: # Əbədi döngə edən loop

while (arduino.inWaiting () == 0): #Məlumat ötürülənə qədər burada gözlə #heç nə etmə

arduinoString = arduino.readline () #serial portundan məlumatları oxuyun

dataArray = arduinoString.split (',') #Bir sıra bölün

temp = float (dataArray [0]) #İlk elementi üzən nömrəyə çevirin və temp qoyun

hum = float (dataArray [1]) #İkinci elementi üzən nömrəyə çevirin və zümzümə edin

tempC.append (temp) #temp oxu əlavə edərək tempC cərgəmizi yaradın

moist.append (hum) #Zümzümə oxumasını əlavə edərək rütubət cərgəmizi qurun

Drawow (CreatePlot)

plt.pause (.000001)

say = say+1

if (count> 20): #yalnız son 20 məlumatı götürün, əgər məlumat daha çox olarsa, ilk olaraq açılacaq

tempC.pop (0) # ilk elementi çıxarın

rütubət.pop (0)

Addım 6: Dövrə Şeması

Dövrə diaqramı
Dövrə diaqramı
Dövrə diaqramı
Dövrə diaqramı
Dövrə diaqramı
Dövrə diaqramı

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> Çıxdı

Tövsiyə: