
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36

Тази инструкция обяснява как нанасям данни за температурния сензор DHT11, използвайки Arduino Uno и Raspberry Pi. В този сензор за температура е свързан с Arduino Uno и Arduino Uno е свързан последователно с Raspberry Pi. В Raspberry Pi Side библиотеките matplotlib, numpy и drawnow се използват за начертаване на графики.
Стъпка 1: Необходими неща за проекта



1. Малина Пи
2. Arduino Uno
3. DHT11 Температурен сензор
4. Кабелни проводници
5. Платформа
Стъпка 2: Изтеглете и инсталирайте Arduino IDE в Raspberry Pi



Забележка:- Можете да използвате Arduino IDE на Windows, Linux или Mac, за да качите скица в Arduino UNO.
Първата стъпка е да инсталирате Arduino IDE за този отворен браузър в Raspberry Pi и да отворите връзката, дадена по -долу
Предишна IDE на Arduino
След това изтеглете версията на 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

Сега, нека Python и Arduino разговарят заедно. Първо се нуждаем от проста програма, за да накараме Arduino да изпраща данни през серийния порт. Следващата програма е проста програма, която ще има броя на Arduino и ще изпраща данните до серийния порт.
Кодът на Arduino
#include "DHT.h" float tempC; // Променлива или задържаща температура в C float tempF; // Променлива за поддържане на температура при влажност на F поплавък; // Променлива за отчитане на налягането
#define 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 (влажност);
Serial.print ("\ n"); // за нова подплата (2000); // Пауза между показанията. }
След като скицата бъде компилирана, изберете платка и порт и я качете.
Стъпка 4: Настройка на Raspberry Pi

След като кодът бъде качен, инсталирайте някои библиотеки, за да можем да начертаем графика с данни, които идват серийно от Arduino Uno.
1. PySerial е библиотека, която осигурява поддръжка за серийни връзки през различни устройства. За да го инсталирате, използвайте команда.
Sudo apt-get install python-serial
2. Numpy е пакет, който дефинира многоизмерен масив обект и свързани с него бързи математически функции, които работят върху него. Той също така предоставя прости процедури за линейна алгебра и FFT (бързо преобразуване на Фурие) и сложно генериране на случайни числа. Можете да го инсталирате по много начини или да използвате apt package или pip. Тук инсталирам с помощта на pip за това първо трябва да инсталираме pip
sudo apt-get install python-pip python-dev build-съществен
sudo pip инсталира numpy
или ако искате да използвате apt пакет
sudo apt инсталирате python-numpy
3. Matplotlib е 2D графична библиотека, която предоставя обектно-ориентиран API за вграждане на графики в приложения, използващи инструменти с общо предназначение за графичен интерфейс като Tkinter, wxPython, Qt или GTK+. За да го инсталирате, използвайте команда
sudo pip инсталирайте matplotlib
или
sudo apt инсталирате python-matplotlib
4. Drawnow обикновено се използва, за да видите резултатите след всяка итерация, тъй като използваме "imshow" в MATLAB. За да го инсталирате, използвайте команда
sudo pip инсталирате drawnow
Стъпка 5: Python Scipt


Следващата стъпка е да напишете скрипт на python, за който можете да използвате всеки редактор, за да го напишете.
1. Начертайте данните в една графика
import serial # import серийна библиотека
import numpy # Импортиране на numpy
импортирайте matplotlib.pyplot като plt #import библиотека matplotlib
от Dranownow внос *
tempC = #Празен масив влажност =
arduino = serial. Serial ("/dev/ttyACM0", 115200)
plt.ion () # интерактивен режим за начертаване на брой данни на живо = 0
def makeFig (): #Създайте функция, която прави желания от нас график
plt.ylim (20, 30) #Задайте y мин. и макс. стойности
plt.title ('DHT11 данни в реално време') #Начертайте заглавието
plt.grid (True) #Включете мрежата
plt.ylabel ('Temp C') #Задайте ylabel
plt.plot (tempC, 'b^-', label = 'Degree C') #нанесете температурата
plt.legend (loc = 'горе вдясно') #plot легендата
plt2 = plt.twinx () #Създайте втора ос y
plt.ylim (50, 70) #Задайте граници на втора ос y
plt2.plot (влажност, 'g*-', label = 'Влажност') #данни за налягане на парцела
plt2.set_ylabel ('Влажност') #етикет втора ос y
plt2.ticklabel_format (useOffset = False)
plt2.legend (loc = 'горе вляво')
while True: # While цикъл, който се затваря завинаги
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. Начертайте отделно влажността и температурата
import serial # import серийна библиотека
import numpy # Импортиране на numpy
импортирайте matplotlib.pyplot като plt #import библиотека matplotlib
от внос на drawnow *
tempC = #Празен масив
влажност =
arduino = serial. Serial ("/dev/ttyACM0", 115200) #Сериен порт, към който е свързано arduino и скорост на предаване
plt.ion () #Кажете на matplotlib, че искате интерактивен режим за нанасяне на данни на живо
def CreatePlot (): #Създайте функция, която прави желания от нас график
plt.subplot (2, 1, 1) #Height, Width, First plot
plt.ylim (22, 34) #Задайте y min и max стойности
plt.title ('DHT11 данни в реално време') #Начертайте заглавието
plt.grid (True) #Включете мрежата
plt.ylabel ('Temp C') #Задайте ylabels
plt.plot (tempC, 'b^-', label = 'Степен C') #нанесете температурата
plt.legend (loc = 'горен център') #plot легендата
plt.subplot (2, 1, 2) # Височина, Ширина, Втори график
plt.grid (Вярно)
plt.ylim (45, 70) #Задайте граници на втора ос y
plt.plot (влажност, 'g*-', label = 'Влажност (g/m^3)') #данни за влажност на парцела
plt.ylabel ('Влажност (g/m^3)') #етикет втора ос y
plt.ticklabel_format (useOffset = False) #за спиране на автоматичното мащабиране на оста y
plt.legend (loc = 'горен център')
while 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 четене
влажност.append (hum) #Изграждане на нашия масив от влажност чрез добавяне на четене на шум
drawnow (CreatePlot)
plt.pause (.000001)
брой = брой+1
if (брой> 20): #само вземете последните 20 данни, ако данните са повече, те ще се появят първи
tempC.pop (0) # изскачащ първи елемент
Влажност.изскачане (0)
Стъпка 6: Електрическа схема



Arduino ==> DHT11
3.3V ==> VCC
GND ==> GND
D7 ==> OUT
Препоръчано:
Как да направим рекордер за данни за влажност и температура в реално време с Arduino UNO и SD-карта - DHT11 регистратор на данни Симулация в Proteus: 5 стъпки

Как да направим рекордер за данни за влажност и температура в реално време с Arduino UNO и SD-карта | DHT11 симулация на регистратор на данни в Proteus: Въведение: Здравейте, това е Liono Maker, ето линк към YouTube. Ние правим творчески проект с Arduino и работим върху вградени системи. Data-Logger: Регистратор на данни (също регистратор на данни или запис на данни) е електронно устройство, което записва данни във времето с
Как да изпращате DHT11 данни към MySQL сървъра с помощта на NodeMCU: 6 стъпки

Как да изпращаме данни на DHT11 към MySQL сървъра с помощта на NodeMCU: В този проект сме свързали DHT11 с nodemcu и след това изпращаме данни на dht11, което е влажност и температура, към базата данни phpmyadmin
Arduino изпраща Dht11 данни към MySQL сървър (PHPMYADMIN) с помощта на Python: 5 стъпки

Arduino изпраща Dht11 данни към MySQL сървъра (PHPMYADMIN) с помощта на Python: В този проект се свързах DHT11 с arduino и след това изпращам данни на dht11, което е влажност и температура, в базата данни phpmyadmin. За разлика от предишния ни проект, в този случай не използваме никакъв Ethernet щит, тук просто четем т
Регистрирайте данни и начертайте графика онлайн, използвайки NodeMCU, MySQL, PHP и Chartjs.org: 4 стъпки

Регистрирайте данни и начертайте графика онлайн, използвайки NodeMCU, MySQL, PHP и Chartjs.org: Тази инструкция описва как можем да използваме Node MCU платката за събиране на данни от множество сензори, изпращане на тези данни до хостван PHP файл, който след това добавя данните към база данни MySQL. След това данните могат да се разглеждат онлайн като графика, като се използва chart.js.A ba
Как да извлечете данни от база данни Firebase на NodeMCU: 7 стъпки

Как да извлечем данни от база данни Firebase на NodeMCU: За тази инструкция ще извличаме данни от база данни в Google Firebase и ще ги извличаме с помощта на NodeMCU за по-нататъшно разбор. акаунт за създаване на база данни на Firebase. 3) Изтеглете