
Სარჩევი:
2025 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2025-01-23 14:50

ეს ინსტრუქცია განმარტავს, თუ როგორ ვხატავ ტემპერატურის სენსორის DHT11 მონაცემებს Arduino Uno და Raspberry Pi გამოყენებით. ამ ტემპერატურის სენსორი უკავშირდება Arduino Uno– ს და Arduino Uno სერიულად Raspberry Pi– ს. Raspberry Pi Side– ში, matplotlib, numpy და drawnow ბიბლიოთეკები გამოიყენება გრაფიკების დასადგენად.
ნაბიჯი 1: ყველაფერი რაც საჭიროა პროექტისათვის



1. ჟოლო პი
2. არდუინო უნო
3. DHT11 ტემპერატურის სენსორი
4. ჯუმბერის მავთულები
5. პურის დაფა
ნაბიჯი 2: ჩამოტვირთეთ და დააინსტალირეთ Arduino IDE Raspberry Pi– ში



შენიშვნა:- თქვენ შეგიძლიათ გამოიყენოთ Arduino IDE ფანჯრების, Linux ან Mac– ის ესკიზის ასატვირთად Arduino UNO– ში.
პირველი ნაბიჯი არის დააინსტალიროთ Arduino IDE იმ ღია ბრაუზერისთვის Raspberry Pi– ში და გახსენით ქვემოთ მოცემული ბმული
Arduino წინა IDE
შემდეგ გადმოწერეთ Linux ARM ვერსია და ამოიღეთ იგი ბრძანების გამოყენებით
tar -xf ფაილის სახელი
ამოღების შემდეგ ნახავთ ახალ დირექტორიას. აქ მე ვიყენებ arduino-1.8.2 IDE- ს. შემდეგ გადადით დირექტორიაში ბრძანების გამოყენებით.
cd arduino-1.8.1
Arduino IDE- ს გასაშვებად გამოიყენეთ ეს ბრძანება arduino-1.8.2 დირექტორიაში
./არდუინო
როგორ გამოვიყენოთ ბიბლიოთეკები
Arduino– ში ნებისმიერი ბიბლიოთეკის დასაყენებლად, უბრალოდ გადმოწერეთ ბიბლიოთეკა და ჩასვით arduino 1.8.2 ==> ბიბლიოთეკების საქაღალდეში.
შენიშვნა:-დარწმუნდით, რომ ბიბლიოთეკის საქაღალდეში არ არის (-) ყოფილი (DHT- სენსორი). თუ არსებობს რაიმე (-), გადაარქვით მას სახელი.
ჩვენ გამოვიყენებთ ორ ბიბლიოთეკას ამ სასწავლო ინსტრუქციაში, DHT_Sensor და Adafruit_Sensor
ნაბიჯი 3: კოდი Arduino– სთვის

მოდით, პითონი და არდუინო ერთად ვისაუბროთ. პირველ რიგში, ჩვენ გვჭირდება მარტივი პროგრამა Arduino– ს მონაცემების სერიული პორტის გასაგზავნად. შემდეგი პროგრამა არის მარტივი პროგრამა, რომელსაც ექნება Arduino– ს დათვლა და მონაცემების სერიულ პორტში გაგზავნა.
არდუინოს კოდი
#მოიცავს "DHT.h" float tempC; // ცვლადი ან შენახვის ტემპერატურა C float tempF- ში; // ცვლადი ტემპერატურის შესანარჩუნებლად F float ტენიანობაში; // ცვლადი წნევის კითხვის შესანარჩუნებლად
#განსაზღვრეთ DHTPIN 7 // რომელ ციფრულ პინთან ვართ დაკავშირებული
#განსაზღვრეთ DHTTYPE DHT11 // DHT 11
//#განსაზღვრეთ DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#განსაზღვრეთ DHTTYPE DHT21 // DHT 21 (AM2301)
// DHT სენსორის ინიციალიზაცია.
DHT dht (DHTPIN, DHTTYPE);
void setup () {Serial.begin (115200); // სერიული მონიტორის ჩართვა
dht. დაწყება (); // ინიციალიზაცია dht}
void loop () {tempC = dht.readTemperature (); // აუცილებლად გამოაცხადეთ თქვენი ცვლადები
ტენიანობა = dht.readHumidity (); // წაიკითხეთ ტენიანობა
Serial.print (tempC);
Serial.print (",");
სერიული. ბეჭდვა (ტენიანობა);
Serial.print ("\ n"); // ახალი ხაზისათვის (2000); // კითხვას შორის პაუზა. }
ესკიზის შედგენის შემდეგ შეარჩიეთ დაფა და პორტი და ატვირთეთ იგი.
ნაბიჯი 4: დააინსტალირეთ Raspberry Pi

მას შემდეგ, რაც კოდი აიტვირთება, დააინსტალირეთ რამდენიმე ბიბლიოთეკა ისე, რომ ჩვენ შეგვიძლია დავხატოთ მონაცემთა გრაფიკი, რომელიც სერიულად მოდის Arduino Uno– დან.
1. PySerial არის ბიბლიოთეკა, რომელიც უზრუნველყოფს სერიული კავშირების მხარდაჭერას სხვადასხვა მოწყობილობებზე. მისი ინსტალაციისთვის გამოიყენეთ ბრძანება.
Sudo apt-get დააინსტალირეთ პითონი-სერიული
2. Numpy არის პაკეტი, რომელიც განსაზღვრავს მასივის მრავალგანზომილებიან ობიექტს და მასთან დაკავშირებულ სწრაფ მათემატიკურ ფუნქციებს. ის ასევე იძლევა მარტივ რუტინას ხაზოვანი ალგებრისა და FFT (სწრაფი ფურიეს ტრანსფორმაციის) და დახვეწილი შემთხვევითი რიცხვების წარმოქმნისათვის. თქვენ შეგიძლიათ დააინსტალიროთ იგი მრავალი გზით ან გამოიყენოთ apt პაკეტი ან pip. აქ მე ვაყენებ pip– ის გამოყენებით, რომ ჯერ ჩვენ უნდა დავაყენოთ pip
sudo apt-get დააინსტალირეთ python-pip python-dev build-essential
sudo pip დააინსტალირეთ numpy
ან თუ გსურთ გამოიყენოთ შესაფერისი პაკეტი
sudo apt დააინსტალირეთ python-numpy
3. Matplotlib არის 2D შეთქმულების ბიბლიოთეკა, რომელიც უზრუნველყოფს ობიექტზე ორიენტირებულ API- ს, ნაკვეთების ჩასაშენებლად პროგრამებში ზოგადი დანიშნულების GUI ინსტრუმენტების გამოყენებით, როგორიცაა Tkinter, wxPython, Qt, ან GTK+. მისი ინსტალაციისთვის გამოიყენეთ ბრძანება
sudo pip დააინსტალირეთ matplotlib
ან
sudo apt დააინსტალირეთ python-matplotlib
4. Drawnow ზოგადად გამოიყენება შედეგების სანახავად ყოველი გამეორების შემდეგ, როგორც ჩვენ ვიყენებთ "imshow" - ს MATLAB– ში. მისი ინსტალაციისთვის გამოიყენეთ ბრძანება
sudo pip დააინსტალირეთ drawnow
ნაბიჯი 5: პითონის სკიპტი


შემდეგი ნაბიჯი არის პითონის სკრიპტის დაწერა, რომლის დასაწერად შეგიძლიათ გამოიყენოთ ნებისმიერი რედაქტორი.
1. შეადგინეთ მონაცემები ერთ გრაფაში
იმპორტი სერიული # იმპორტი სერიული ბიბლიოთეკა
იმპორტის numpy # იმპორტის numpy
იმპორტი matplotlib.pyplot როგორც plt #იმპორტი matplotlib ბიბლიოთეკა
უშუალო იმპორტიდან *
tempC = #ცარიელი მასივი ტენიანობა =
arduino = სერიული. სერიული ("/dev/ttyACM0", 115200)
plt.ion () # ინტერაქტიული რეჟიმი ცოცხალი მონაცემის = 0 -ის გამოსახვისთვის
def makeFig (): #შექმენით ფუნქცია, რომელიც ქმნის ჩვენს სასურველ ნაკვეთს
plt.ylim (20, 30) #მითითებული წთ და მაქსიმალური მნიშვნელობები
plt.title ("რეალურ დროში DHT11 მონაცემები") #სათაური
plt.grid (მართალია) #ჩართეთ ქსელი
plt.ylabel ('Temp C') #დააყენეთ ylabel
plt.plot (tempC, 'b^-', label = 'ხარისხი C') #შეადგინეთ ტემპერატურა
plt.legend (loc = 'ზედა მარჯვენა') #დავხატოთ ლეგენდა
plt2 = plt.twinx () #შექმენით მეორე y ღერძი
plt.ylim (50, 70) #მეორე y ღერძის ლიმიტების დაყენება
plt2.plot (ტენიანობა, 'g*-', label = 'ტენიანობა') #ნაკვეთი წნევის მონაცემები
plt2.set_ylabel ('Humidity') #label მეორე y ღერძი
plt2.ticklabel_format (useOffset = ყალბი)
plt2.legend (loc = 'ზედა მარცხენა')
ხოლო True: # while მარყუჟი რომ მარყუჟებს სამუდამოდ
while (arduino.inWaiting () == 0): #დაელოდეთ აქ სანამ არ იქნება მონაცემები
გაიაროს #არაფერი
arduinoString = arduino.readline ()
dataArray = arduinoString.split (',') #გაყოფა მასივში
temp = float (dataArray [0])
hum = float (dataArray [1])
tempC.append (temp)
ტენიანობა. დამატება (ჰუმ)
drawnow (makeFig)
pl. პაუზა (.000001)
ითვლიან = ითვლიან+1 თუ (ითვლიან> 20): #მიიღეთ მხოლოდ ბოლო 20 მონაცემი, თუ მონაცემები მეტია, ის პირველად გამოჩნდება
tempC.pop (0)
ტენიანობა. პოპ (0)
2. ტენიანობისა და ტემპერატურის ცალკე შედგენა
იმპორტი სერიული # იმპორტი სერიული ბიბლიოთეკა
იმპორტის numpy # იმპორტის numpy
იმპორტი matplotlib.pyplot როგორც plt #იმპორტი matplotlib ბიბლიოთეკა
უშუალო იმპორტიდან *
tempC = #ცარიელი მასივი
ტენიანობა =
arduino = სერიული. სერიული ("/dev/ttyACM0", 115200) #სერიული პორტი, რომელთანაც დაკავშირებულია arduino და Baudrate
plt.ion () #უთხარი matplotlib გსურთ ინტერაქტიული რეჟიმი ცოცხალი მონაცემების გამოსახატად
def CreatePlot (): #შექმენით ფუნქცია, რომელიც ქმნის ჩვენს სასურველ ნაკვეთს
plt.subplot (2, 1, 1) #სიმაღლე, სიგანე, პირველი ნაკვეთი
plt.ylim (22, 34) #მითითებული წთ და მაქსიმალური მნიშვნელობები
plt.title ("რეალურ დროში DHT11 მონაცემები") #სათაური
plt.grid (მართალია) #ჩართეთ ქსელი
plt.ylabel ('Temp C') #დააყენეთ ილაბელები
plt.plot (tempC, 'b^-', label = 'ხარისხი C') #შეადგინეთ ტემპერატურა
plt.legend (loc = 'ზედა ცენტრი') #დავხატოთ ლეგენდა
plt.subplot (2, 1, 2) # სიმაღლე, სიგანე, მეორე ნაკვეთი
plt.grid (მართალია)
plt.ylim (45, 70) #მეორე y ღერძის ლიმიტების დაყენება
plt.plot (ტენიანობა, 'g*-', label = 'ტენიანობა (გ/მ^3)') #ნაკვეთი ტენიანობის მონაცემები
plt.ylabel ("ტენიანობა (გ/მ^3)" #ეტიკეტი მეორე y ღერძი
plt.ticklabel_format (useOffset = false) #ავტომატური მასშტაბის y ღერძის შესაჩერებლად
plt.legend (loc = 'ზედა ცენტრი')
ხოლო True: # while მარყუჟი რომ მარყუჟებს სამუდამოდ
while (arduino.inWaiting () == 0): #დაელოდეთ აქ სანამ არ იქნება მონაცემთა გადაცემა #არაფერი
arduinoString = arduino.readline () #წაიკითხეთ მონაცემები სერიული პორტიდან
dataArray = arduinoString.split (',') #გაყოფა მასივში
temp = float (dataArray [0]) #გადააკეთეთ პირველი ელემენტი მცურავ რიცხვად და ჩადეთ temp
hum = float (dataArray [1]) #გადააკეთეთ მეორე ელემენტი მცურავ რიცხვში და ჩადეთ hum
tempC.append (temp) #ავაშენოთ ჩვენი tempC მასივი temp კითხვის დამატებით
ტენიანობა. დამატება (hum) #ჩვენი ტენიანობის მასივის აშენება დამატებით კითხვის დამატებით
drawnow (CreatePlot)
pl. პაუზა (.000001)
დათვლა = დათვლა+1
if (რაოდენობა> 20): #მიიღეთ მხოლოდ ბოლო 20 მონაცემი, თუ მონაცემები მეტია, ის პირველად გამოჩნდება
tempC.pop (0) # ამოიღეთ პირველი ელემენტი
ტენიანობა. პოპ (0)
ნაბიჯი 6: წრიული დიაგრამა



არდუინო ==> DHT11
3.3V ==> VCC
GND ==> GND
D7 ==> OUT
გირჩევთ:
როგორ წავიკითხოთ DHT მონაცემები LCD– ზე ჟოლოს Pi გამოყენებით: 6 ნაბიჯი

როგორ წავიკითხოთ DHT მონაცემები LCD– ზე ჟოლოს პი გამოყენებით: ტემპერატურა და ფარდობითი ტენიანობა არის მნიშვნელოვანი ამინდის პირობები გარემოში. ეს ორი შეიძლება იყოს მონაცემები, რომელსაც მინი ამინდის სადგური აწვდის. თქვენი ტემპერატურისა და შედარებით ტენიანობის წაკითხვა ჟოლოს პიით შესაძლებელია მიღწეული იქნას სხვადასხვა სახის
ამინდის სადგური: ESP8266 ღრმა ძილით, SQL, გრაფიკული შეფუთვა და ნაკვეთი: 3 ნაბიჯი

მეტეოროლოგიური სადგური: ESP8266 ღრმა ძილით, SQL, გრაფიკული შეფუთვა და ნაკვეთი: სასიამოვნო იქნება იცოდეთ ტემპერატურა, ტენიანობა ან სინათლის ინტენსივობა თქვენს აივანზე? ვიცი რომ გავაკეთებ. ასე რომ, მე გავაკეთე მარტივი ამინდის სადგური ასეთი მონაცემების შესაგროვებლად. შემდეგი სექციები არის ის ნაბიჯები, რომლებიც მე გადავიღე ერთის ასაშენებლად. მოდი დავიწყოთ
ამინდის მონიტორინგის სისტემა ჟოლოს Pi3 და DHT11 სენსორის გამოყენებით: 4 ნაბიჯი

ამინდის მონიტორინგის სისტემა ჟოლოს Pi3 და DHT11 სენსორის გამოყენებით: ამ გაკვეთილში მე გაჩვენებთ, თუ როგორ უნდა დაუკავშიროთ DHT11 ჟოლოს Pi და გამოუშვათ ტენიანობა და ტემპერატურის მაჩვენებლები LCD– ზე. DHT11 ტემპერატურისა და ტენიანობის სენსორი ლამაზი პატარა მოდულია რომელიც უზრუნველყოფს ციფრულ ტემპერატურას და ტენიანობას
3-ღერძიანი აქსელერომეტრი, ADXL345 ჟოლოს პიტონის გამოყენებით პითონის გამოყენებით: 6 ნაბიჯი

3-ღერძიანი ამაჩქარებელი, ADXL345 ჟოლოს პიტონის გამოყენებით: ფიქრი გაჯეტზე, რომელსაც შეუძლია შეამოწმოს ის წერტილი, რომლისკენაც თქვენი Offroader გადახრილია. არ იქნება ეს სასიამოვნო იმ შემთხვევაში, როდესაც ვიღაც მორგებულია, როდესაც არსებობს გადატრიალების შესაძლებლობა? ცხადია დიახ. მართალი იქნებოდა
როგორ გავაგზავნოთ DHT11 მონაცემები MySQL სერვერზე NodeMCU გამოყენებით: 6 ნაბიჯი

როგორ გავაგზავნოთ DHT11 მონაცემები MySQL სერვერზე NodeMCU გამოყენებით: ამ პროექტში ჩვენ DHT11– ს დავურეკეთ nodemcu– ს და შემდეგ ჩვენ ვაგზავნით dht11– ის მონაცემებს, რაც არის ტენიანობა და ტემპერატურა phpmyadmin მონაცემთა ბაზაში