Мазмұны:
- 1 -қадам: Жобаға қажетті заттар
- 2 -қадам: Raspberry Pi ішіне Arduino IDE жүктеп, орнатыңыз
- 3 -қадам: Arduino коды
- 4 -қадам: Raspberry Pi орнату
- 5 -қадам: Python скрипті
- 6 -қадам: схема
- 7 -қадам: Нәтиже
Бейне: Raspberry Pi және Arduino UNO көмегімен DHT11 мәліметтерін құрыңыз: 7 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:25
Бұл нұсқаулық 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 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 коды
#«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 орнату
Код жүктелгеннен кейін, 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 скрипті
Келесі қадам - питон сценарийін жазу, оны жазу үшін кез келген редакторды қолдануға болады.
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 ==> ШЫҚҚАН
Ұсынылған:
Raspberry Pi көмегімен жарық пен температура сенсорының мәліметтерін оқу және сызу: 5 қадам
Raspberry Pi көмегімен жарық пен температура сенсорының деректерін оқу және сызу: Бұл нұсқаулықта сіз таңқурай pi мен ADS1115 аналогы бар жарық пен температура сенсорын цифрлық түрлендіргішке қалай оқуға болатынын және оны matplotlib көмегімен диаграммалауды үйренесіз. Қажетті материалдардан бастайық
NBIoT мәліметтерін беру BC95G модеміне негізделген қалқандарды қалай қолдануға болады - UDP тестісі және желі күйінің сигнализациясы: 4 қадам
NBIoT деректерді беру BC95G модем негізіндегі қалқандарды қалай қолдану керек - UDP тесті және желі күйінің сигнализациясы: Бұл жобалар туралы: Quectel BC95G модемімен жабдықталған itbrainpower.net қалқаны арқылы xyz -mIoT көмегімен NB IoT желісінің мүмкіндіктері мен шикізат UDP деректерін жіберуді тексеріңіз. 10-15 минут. Қиындық: орташа. Ремарк: дәнекерлеу дағдылары қажет
PiFace және Ubidots көмегімен қашықтан іске қосылатын шашыратқыш құрыңыз: 13 қадам
PiFace және Ubidots көмегімен қашықтан іске қосылатын жаңбырлатқыш құрыңыз: Бұл сізге бақшаңызды алыстан суару үшін Raspberry Pi, PiFace және Ubidots қалай қолдануға болатынын үйрететін керемет мысал. Сіз телефонды пайдаланып, кез келген жерден өсімдіктерді суару үшін электр клапанын қашықтықтан басқара аласыз
Raspberry Pi мен RTL-SDR Dongle көмегімен жарты сағаттан аз уақыт ішінде APRS RX Only IGate әуесқойлық радио құрыңыз: 5 қадам
Raspberry Pi мен RTL-SDR Dongle көмегімен жарты сағаттан аз уақыт ішінде APRS RX Only IGate әуесқойлық радио құрыңыз: бұл қазірдің өзінде ескі, сондықтан кейбір бөліктері дұрыс емес және ескірген. Өңдеу қажет файлдар өзгерді. Мен сізге суреттің соңғы нұсқасын беру үшін сілтемені жаңарттым (оны ашу үшін 7-zip пайдаланыңыз), бірақ толық нұсқаулық үшін
TICK Stack және NoCAN платформасында EC/pH/ORP мәліметтерін сақтау және диаграмма: 8 қадам
EC/pH/ORP мәліметтерін TICK Stack және NoCAN платформасында сақтаңыз және диаграмма жасаңыз: Бұл жерде NoCAN платформасын Omzlo мен uFire датчиктерінің көмегімен EC, pH және ORP өлшеу әдістері қарастырылады. Олардың веб -сайтында айтылғандай, кейде сенсорлық түйіндерге бірнеше кабельді қосу оңайырақ. CAN бір уақытта байланыс пен қуаттың артықшылығына ие