Мазмұны:

Raspberry Pi және Arduino UNO көмегімен DHT11 мәліметтерін құрыңыз: 7 қадам
Raspberry Pi және Arduino UNO көмегімен DHT11 мәліметтерін құрыңыз: 7 қадам

Бейне: Raspberry Pi және Arduino UNO көмегімен DHT11 мәліметтерін құрыңыз: 7 қадам

Бейне: Raspberry Pi және Arduino UNO көмегімен DHT11 мәліметтерін құрыңыз: 7 қадам
Бейне: Программирование модуля датчика температуры и влажности ESP8266 ESP01 DHT11 | удаленныйXY | ФЛПрог 2024, Қараша
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 жүктеп, орнатыңыз

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 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 ==> кітапханалар қалтасына қойыңыз.

ЕСКЕРТПЕ:-ex (DHT-сенсор) кітапхана қалтасында (-) жоқ екеніне көз жеткізіңіз. Егер (-) болса, оның атын өзгертіңіз.

Біз бұл нұсқаулықта екі кітапхананы қолданамыз, DHT_Sensor және Adafruit_Sensor

3 -қадам: Arduino коды

Arduino коды
Arduino коды

Енді питон мен Ардуино бірге сөйлесейік. Біріншіден, бізге Arduino -ны сериялық порт арқылы жіберу үшін қарапайым бағдарлама қажет. Келесі бағдарлама - бұл Arduino есептелетін және деректерді сериялық портқа жіберетін қарапайым бағдарлама.

Arduino коды

#«DHT.h» өзгермелі 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 (); // Ылғалдылықты оқыңыз

Serial.print (tempC);

Serial.print («,»);

Сериялық баспа (ылғалдылық);

Serial.print («\ n»); // жаңа жолға қойылған күн үшін (2000); // Оқулар арасындағы үзіліс. }

Эскиз құрастырылғаннан кейін тақта мен портты таңдап, оны жүктеңіз.

4 -қадам: Raspberry Pi орнату

Raspberry Pi орнату
Raspberry Pi орнату

Код жүктелгеннен кейін, Arduino Uno -дан дәйекті түрде келетін деректердің графигін салу үшін кейбір кітапханаларды орнатыңыз.

1. PySerial - бұл әр түрлі құрылғыларда сериялық қосылыстарды қолдауды қамтамасыз ететін кітапхана. Оны орнату үшін пәрменді пайдаланыңыз.

Sudo apt-get install python-serial

2. Numpy-бұл көпөлшемді массив объектісін және онымен байланысты жылдам математикалық функцияларды анықтайтын пакет. Ол сондай-ақ сызықтық алгебра мен FFT (Fast Fourier Transform) және қарапайым кездейсоқ сандар генерациясының қарапайым тәртібін ұсынады. Сіз оны apt пакетін немесе pip көмегімен көптеген жолдармен орната аласыз. Мұнда мен pip көмегімен орнатып жатырмын, алдымен біз pip орнатуымыз керек

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

sudo pip install numpy

немесе егер сіз apt пакетін қолданғыңыз келсе

sudo apt install python-numpy

3. Matplotlib-бұл TKinter, wxPython, Qt немесе GTK+сияқты жалпы мақсаттағы GUI құралдар жиынтығының көмегімен сюжеттерді қосымшаларға ендіруге арналған объектіге бағытталған API ұсынатын 2D графикалық кітапханасы. Оны орнату үшін пәрменді пайдаланыңыз

sudo pip matplotlib орнатыңыз

немесе

sudo apt install python-matplotlib

4. Drawnow әдетте MATLAB -те «imshow» қолданатын кезде әр қайталаудан кейін нәтижелерді көру үшін қолданылады. Оны орнату үшін пәрменді пайдаланыңыз

sudo pip install drawow

5 -қадам: Python скрипті

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

Келесі қадам - питон сценарийін жазу, оны жазу үшін кез келген редакторды қолдануға болады.

1. Мәліметтерді бір графикке салыңыз

сериялық импорт # сериялық кітапхана

numpy импорттау # numpy импорттау

matplotlib.pyplot файлын plt #import matplotlib кітапханасы ретінде импорттаңыз

тартылған импорттан *

tempC = #Бос массив ылғалдылығы =

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

plt.ion () # интерактивті режимде тірі деректер есептік жазбасы = 0

def makeFig (): #Біз қалаған сюжетті жасайтын функция жасаңыз

plt.ylim (20, 30) #y min және max мәндерін орнатыңыз

plt.title ('Нақты уақыттағы DHT11 деректері') #Тақырыпты салыңыз

plt.grid (True) #Торды қосыңыз

plt.ylabel ('Temp C') #Ylabel орнату

plt.plot (tempC, 'b^-', label = 'C дәрежесі') #температура кестесі

plt.legend (loc = 'жоғарғы оң жақ') #аңызды құрастыр

plt2 = plt.twinx () #Екінші у осін жасаңыз

plt.ylim (50, 70) #Екінші у осінің шектерін орнатыңыз

plt2.plot (ылғалдылық, 'g*-', жапсырма = 'Ылғалдылық') #алаңдағы қысым туралы деректер

plt2.set_ylabel ('Ылғалдылық') #белгісі екінші у осі

plt2.ticklabel_format (useOffset = False)

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.pause (.000001)

count = count+1 if (count> 20): #тек соңғы 20 деректерді ал, егер деректер көп болса, ол бірінші шығады

tempC.pop (0)

ылғалдылық.оп (0)

2. Ылғалдылық пен температураны бөлек сызу

сериялық импорт # сериялық кітапхана

numpy импорттау # numpy импорттау

matplotlib.pyplot файлын plt #import 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 min және max мәндерін орнатыңыз

plt.title ('Нақты уақыттағы DHT11 деректері') #Тақырыпты салыңыз

plt.grid (True) #Торды қосыңыз

plt.ylabel ('Temp C') #Белгілерді орнату

plt.plot (tempC, 'b^-', label = 'C дәрежесі') #температура кестесі

plt.legend (loc = 'жоғарғы орталық') #аңызды құрастыр

plt.subplot (2, 1, 2) # Биіктігі, Ені, Екінші сюжет

plt.grid (True)

plt.ylim (45, 70) #Екінші у осінің шектерін орнатыңыз

plt.plot (ылғалдылық, 'g*-', label = 'Ылғалдылық (г/м^3)') #учаске ылғалдылығы туралы мәліметтер

plt.ylabel ('Ылғалдылық (г/м^3)') #белгісі екінші у осі

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]) #Бірінші элементті өзгермелі санға түрлендіріп, temp қойыңыз

hum = float (dataArray [1]) #Екінші элементті өзгермелі санға түрлендіріп, hum қойыңыз

tempC.append (temp) #tempC массивін уақытша оқуды қосу арқылы құрыңыз

ылғалдылық.append (hum) #Ылғалдылықты қосу арқылы ылғалдылық массивін құрамыз

drawow (CreatePlot)

plt.pause (.000001)

санау = санау+1

if (count> 20): #тек соңғы 20 деректерді алыңыз, егер деректер көбірек болса, ол бірінші шығады

tempC.pop (0) # бірінші элементті шығарады

ылғалдылық.оп (0)

6 -қадам: схема

Схема диаграммасы
Схема диаграммасы
Схема диаграммасы
Схема диаграммасы
Схема диаграммасы
Схема диаграммасы

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> ШЫҚҚАН

Ұсынылған: