Raspberry Pi болон Arduino UNO ашиглан DHT11 өгөгдлийг төлөвлөх: 7 алхам
Raspberry Pi болон Arduino UNO ашиглан DHT11 өгөгдлийг төлөвлөх: 7 алхам
Anonim
Raspberry Pi болон Arduino UNO ашиглан DHT11 өгөгдлийг төлөвлөх
Raspberry Pi болон Arduino UNO ашиглан DHT11 өгөгдлийг төлөвлөх

Энэхүү зааварчилгаа нь би Arduino Uno болон Raspberry Pi ашиглан DHT11 температур мэдрэгчийн өгөгдлийг хэрхэн яаж гаргахыг тайлбарласан болно. Энэ температурын мэдрэгч нь Arduino Uno -тэй, Arduino Uno нь Raspberry Pi -тэй холбогддог. Raspberry Pi Side дээр matplotlib, numpy, drawow номын санг график байгуулахад ашигладаг.

Алхам 1: Төсөлд шаардлагатай зүйлс

Төсөлд шаардлагатай зүйлс
Төсөлд шаардлагатай зүйлс
Төсөлд шаардлагатай зүйлс
Төсөлд шаардлагатай зүйлс
Төсөлд шаардлагатай зүйлс
Төсөлд шаардлагатай зүйлс

1. Raspberry Pi

2. Ардуино Уно

3. DHT11 температур мэдрэгч

4. Холбогч утас

5. Талхны самбар

Алхам 2: Raspberry Pi дээр Arduino IDE татаж аваад суулгана уу

Raspberry Pi дээр Arduino IDE татаж аваад суулгаарай
Raspberry Pi дээр Arduino IDE татаж аваад суулгаарай
Raspberry Pi дээр Arduino IDE татаж аваад суулгаарай
Raspberry Pi дээр Arduino IDE татаж аваад суулгаарай
Raspberry Pi дээр Arduino IDE татаж аваад суулгаарай
Raspberry Pi дээр Arduino IDE татаж аваад суулгаарай

Тэмдэглэл:- Та Arduino UNO дээр ноорог байршуулахын тулд Windows, Linux эсвэл Mac-ийн Arduino IDE програмыг ашиглаж болно.

Эхний алхам бол Raspberry Pi дээрх нээлттэй хөтөч дээр Arduino IDE суулгаж, доорх линкийг нээх явдал юм

Arduino Өмнөх IDE

Дараа нь Linux ARM хувилбарыг татаж аваад командыг ашиглан задлаарай

tar -xf файлын нэр

Олборлосны дараа та шинэ лавлахыг харах болно. Энд би arduino-1.8.2 IDE ашиглаж байна. Дараа нь тушаалыг ашиглан директор руу очно уу.

cd arduino-1.8.1

Arduino IDE-ийг ажиллуулахын тулд энэ тушаалыг arduino-1.8.2 директорт ашиглана уу

./arduino

Номын санг хэрхэн ашиглах талаар

Arduino -д ямар ч номын сан суулгахын тулд номын санг татаж аваад arduino 1.8.2 ==> library сангийн хавтсанд буулгаарай.

ТАЙЛБАР:-Номын сангийн хавтсанд (DHT-мэдрэгч) байхгүй (-) байгаа эсэхийг шалгаарай. Хэрэв (-) байгаа бол нэрийг нь өөрчилнө үү.

Бид энэхүү зааварчилгаа бүхий DHT_Sensor ба Adafruit_Sensor гэсэн хоёр номын санг ашиглах болно

Алхам 3: Arduino -д зориулсан код

Arduino код
Arduino код

Одоо питон, Ардуино нар хамтдаа ярилцъя. Нэгдүгээрт, Arduino -ийг цуваа портоор дамжуулахын тулд бидэнд энгийн програм хэрэгтэй. Дараахь програм бол Arduino тоолох, өгөгдлийг цуваа порт руу илгээх энгийн програм юм.

Arduino код

#"DHT.h" float tempC оруулах; // C float tempF дахь хувьсах эсвэл барих температур; // F хөвөх чийгшил дэх температурыг хадгалах хувьсагч; // Даралтын уншилтыг хадгалах хувьсагч

#тодорхойлох 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.begin (); // эхлүүлэх dht}

void loop () {tempC = dht.readTemperature (); // Хувьсагчаа зарлахаа мартуузай

чийгшил = dht.readHumidity (); // Чийглэгийг уншина уу

Цуваа.хэвлэх (tempC);

Serial.print (",");

Цуврал хэвлэх (чийгшил);

Serial.print ("\ n"); // шинэ доторлогчийн хувьд (2000); // Унших хооронд завсарлага аваарай. }

Ноорог эмхэтгэсний дараа самбар, портыг сонгоод байршуулна уу.

Алхам 4: Raspberry Pi -ийг тохируулна уу

Raspberry Pi -ийг тохируулах
Raspberry Pi -ийг тохируулах

Код байршуулсны дараа Arduino Uno -с цувралаар ирж буй өгөгдлийн графикийг гаргахын тулд зарим номын санг суулгаарай.

1. PySerial бол төрөл бүрийн төхөөрөмжүүд дээр цуваа холболт хийх боломжийг олгодог номын сан юм. Үүнийг суулгахын тулд командыг ашиглана уу.

Sudo apt-get python-serial суулгах

2. Numpy бол олон хэмжээст массивын объект болон түүн дээр ажилладаг хурдан математикийн функцуудыг тодорхойлдог багц юм. Энэ нь шугаман алгебр ба FFT (Fast Fourier Transform) болон энгийн санамсаргүй тоо үүсгэх энгийн горимуудыг өгдөг. Та үүнийг олон янзаар суулгаж болно: apt багц эсвэл pip ашиглана уу. Энд би pip ашиглан суулгаж байна, үүний тулд бид эхлээд pip суулгах ёстой

sudo apt-get python-pip python-dev install-essential суулгах

sudo pip суулгах numpy

эсвэл хэрэв та apt багц ашиглахыг хүсч байвал

sudo apt install python-numpy

3. Matplotlib бол 2D график номын сан бөгөөд Tkinter, wxPython, Qt, GTK+гэх мэт ерөнхий зориулалттай GUI багаж хэрэгслийг ашиглан програмуудыг програмд оруулах зориулалттай объектод чиглэсэн API өгдөг. Үүнийг суулгахын тулд командыг ашиглана уу

sudo pip суулгах matplotlib

эсвэл

sudo apt суулгах python-matplotlib

4. Drawnow нь ерөнхийдөө давталт бүрийн дараа үр дүнг харахын тулд MATLAB -д "imshow" -г ашигладаг. Үүнийг суулгахын тулд командыг ашиглана уу

sudo pip install drawow

Алхам 5: Python Scipt

Python скрипт
Python скрипт
Python скрипт
Python скрипт

Дараагийн алхам бол python скрипт бичих бөгөөд та үүнийг ямар ч засварлагч ашиглаж болно.

1. Өгөгдлийг нэг графикаар зур

цуваа # импорт Цуваа номын сан

импортлох numpy # Импортлох

matplotlib.pyplot -ийг plt болгон импортлох #matplotlib номын сан

татаж авах импортоос *

tempC = #Хоосон массивын чийгшил =

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

plt.ion () # интерактив горим нь өгөгдлийн шууд өгөгдлийг төлөвлөх = 0

def makeFig (): #Бидний хүссэн схемийг хийх функцийг бий болго

plt.ylim (20, 30) #y мин ба хамгийн их утгыг тохируулна уу

plt.title ('Real Time DHT11 Data') #Гарчигийг зур

plt.grid (Үнэн) #Сүлжээг асаана уу

plt.ylabel ('Temp C') #Ylabel тохируулах

plt.plot (tempC, 'b^-', шошго = 'Зэрэг С') #температурын график

plt.legend (loc = 'баруун дээд') #домог зохиох

plt2 = plt.twinx () #Хоёрдахь y тэнхлэг үүсгэх

plt.ylim (50, 70) #Хоёр дахь тэнхлэгийн хязгаарыг тохируулна уу

plt2.plot (чийгшил, 'g*-', шошго = 'Чийгшил') #талбайн даралтын өгөгдөл

plt2.set_ylabel ('Чийглэг') #шошго хоёр дахь y тэнхлэг

plt2.ticklabel_format (useOffset = Худал)

plt2.legend (loc = 'зүүн дээд')

while True: # үүрд гогцоо

while (arduino.inWaiting () == 0): #Мэдээлэл гарах хүртэл энд хүлээнэ үү

өнгөрөх #юу ч хийхгүй

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') #Үүнийг массив болгон хуваах

temp = float (dataArray [0])

hum = float (dataArray [1])

tempC.append (temp)

чийгшил.

зурсан (makeFig)

plt. түр зогсоох (.000001)

count = count+1 if (count> 20): #өгөгдөл илүү байвал зөвхөн сүүлийн 20 өгөгдлийг авна

tempC.pop (0)

чийгшил.pop (0)

2. Чийглэг ба температурыг тусад нь төлөвлөх

цуваа # импорт Цуваа номын сан

импортлох numpy # Импортлох

matplotlib.pyplot -ийг plt болгон импортлох #matplotlib номын сан

татаж авах импортоос *

tempC = #Хоосон массив

чийгшил =

arduino = serial. Serial ("/dev/ttyACM0", 115200) #arduino холбогдсон цуваа порт ба Baudrate

plt.ion () #Интерпактив горимд амьд өгөгдлийг төлөвлөхийг хүсч байгаагаа matplotlib хэлээрэй

def CreatePlot (): #Бидний хүссэн схемийг бий болгох функцийг бий болго

plt.subplot (2, 1, 1) #Өндөр, Өргөн, Эхний хэсэг

plt.ylim (22, 34) #y мин ба хамгийн их утгыг тохируулна уу

plt.title ('Real Time DHT11 Data') #Гарчигийг зур

plt.grid (Үнэн) #Сүлжээг асаана уу

plt.ylabel ('Temp C') #Шошго тавих

plt.plot (tempC, 'b^-', шошго = 'Зэрэг С') #температурын график

plt.legend (loc = 'дээд төв') #домог бичих

plt.subplot (2, 1, 2) # Өндөр, Өргөн, Хоёрдугаар зураг

plt.grid (Үнэн)

plt.ylim (45, 70) #Хоёр дахь тэнхлэгийн хязгаарыг тохируулна уу

plt.plot (чийгшил, 'g*-', шошго = 'Чийглэг (g/m^3)') #талбай чийгшлийн өгөгдөл

plt.ylabel ('Чийглэг (g/m^3)') #шошго хоёр дахь y тэнхлэг

plt.ticklabel_format (useOffset = False) #автомат хэмжигдэхүүн y тэнхлэгийг зогсоох

plt.legend (loc = 'дээд төв')

while True: # үүрд гогцоо

while (arduino.inWaiting () == 0): #Мэдээлэл дамжих хүртэл энд хүлээ #юу ч хийхгүй

arduinoString = arduino.readline () #өгөгдлийг цуваа портоос унших

dataArray = arduinoString.split (',') #Үүнийг массив болгон хуваах

temp = float (dataArray [0]) #Эхний элементийг хөвөгч тоо болгон хөрвүүлж, температурыг оруулна уу

hum = float (dataArray [1]) #Хоёр дахь элементийг хөвөгч тоо болгон хөрвүүлээд hum -д оруулна уу

tempC.append (temp) #Temp уншуулалтыг нэмж манай tempC массивыг үүсгээрэй

чийгшил.append (hum) #Хум уншихыг нэмж бидний чийгшлийн массивыг бүтээх

drawow (CreatePlot)

plt. түр зогсоох (.000001)

тоолох = тоолох+1

if (count> 20): #өгөгдөл илүү байвал зөвхөн эхний 20 өгөгдлийг авна

tempC.pop (0) # гарч ирэх эхний элемент

чийгшил.pop (0)

Алхам 6: Хэлхээний диаграм

Хэлхээ диаграм
Хэлхээ диаграм
Хэлхээ диаграм
Хэлхээ диаграм
Хэлхээ диаграм
Хэлхээ диаграм

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> OUT

Зөвлөмж болгож буй: