Оглавление:
- Шаг 1. Вещи, необходимые для проекта
- Шаг 2: Загрузите и установите Arduino IDE в Raspberry Pi
- Шаг 3: Код для Arduino
- Шаг 4: Настройте Raspberry Pi
- Шаг 5: Python Scipt
- Шаг 6: Принципиальная схема
- Шаг 7: Результат
Видео: Постройте график данных DHT11 с помощью Raspberry Pi и Arduino UNO: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
В этом руководстве объясняется, как я строю данные датчика температуры DHT11 с помощью Arduino Uno и Raspberry Pi. В этом датчик температуры подключен к Arduino Uno, а Arduino Uno последовательно подключен к Raspberry Pi. На стороне Raspberry Pi для построения графиков используются библиотеки matplotlib, numpy и drawnow.
Шаг 1. Вещи, необходимые для проекта
1. Raspberry Pi
2. Arduino Uno
3. Датчик температуры DHT11
4. Проволочные перемычки.
5. Макетная плата
Шаг 2: Загрузите и установите Arduino IDE в Raspberry Pi
Примечание: - Вы можете использовать Arduino IDE для Windows, Linux или Mac для загрузки скетча в Arduino UNO.
Первый шаг - установить Arduino IDE для этого открытого браузера в Raspberry Pi и открыть ссылку, приведенную ниже.
Arduino Предыдущая IDE
Затем загрузите версию Linux для ARM и извлеките ее с помощью команды
tar -xf имя файла
После распаковки вы увидите новый каталог. Здесь я использую IDE arduino-1.8.2. Затем перейдите в каталог с помощью команды.
cd arduino-1.8.1
Чтобы запустить Arduino IDE, используйте эту команду в каталоге arduino-1.8.2
./arduino
Как использовать библиотеки
Чтобы установить любые библиотеки в Arduino, просто загрузите библиотеку и вставьте в папку arduino 1.8.2 ==> библиотеки.
ПРИМЕЧАНИЕ: - Убедитесь, что в папке библиотеки нет (-), например (датчик DHT). Если есть (-), переименуйте его.
в этом руководстве мы будем использовать две библиотеки: DHT_Sensor и Adafruit_Sensor.
Шаг 3: Код для Arduino
Теперь давайте поговорим между Python и Arduino. Во-первых, нам нужна простая программа, чтобы Arduino отправлял данные через последовательный порт. Следующая программа представляет собой простую программу, которая будет иметь счетчик Arduino и отправлять данные в последовательный порт.
Код Arduino
#include "DHT.h" float tempC; // Переменная или удерживаемая температура в C float tempF; // Переменная для выдержки температуры в F float влажность; // Переменная для показания давления удержания
#define DHTPIN 7 // к какому цифровому выводу мы подключены
#define 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}
пустой цикл () {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 - это пакет, который определяет объект многомерного массива и связанные с ним быстрые математические функции. Он также предоставляет простые процедуры для линейной алгебры и БПФ (быстрое преобразование Фурье) и сложную генерацию случайных чисел. Вы можете установить его разными способами, используя пакет apt или pip. Здесь я устанавливаю, используя pip, для этого сначала мы должны установить pip
sudo apt-get install python-pip python-dev build-essential
sudo pip установить numpy
или если вы хотите использовать пакет apt
sudo apt установить python-numpy
3. Matplotlib - это библиотека двухмерных графиков, которая предоставляет объектно-ориентированный API для встраивания графиков в приложения с использованием универсальных инструментов графического интерфейса пользователя, таких как Tkinter, wxPython, Qt или GTK +. Для его установки используйте команду
sudo pip установить matplotlib
или
sudo apt install python-matplotlib
4. Drawnow обычно используется для просмотра результатов после каждой итерации, поскольку мы используем «imshow» в MATLAB. Для его установки используйте команду
sudo pip install drawow
Шаг 5: Python Scipt
Следующим шагом будет написание скрипта на Python, для которого вы можете использовать любой редактор.
1. Постройте данные на одном графике
import serial # import Serial Library
import numpy # Импортировать numpy
импортировать matplotlib.pyplot как plt # импортировать библиотеку matplotlib
из оттянутого импорта *
tempC = # Пустой массивhumidity =
arduino = serial. Serial ("/ dev / ttyACM0", 115200)
plt.ion () # интерактивный режим для построения графика live datacount = 0
def makeFig (): # Создать функцию, которая делает желаемый график
plt.ylim (20, 30) # Установить минимальные и максимальные значения y
plt.title ('Real Time DHT11 Data') # Построить заголовок
plt.grid (True) # Включаем сетку
plt.ylabel ('Temp C') # Установить ylabel
plt.plot (tempC, 'b ^ -', label = 'Degree C') # график температуры
plt.legend (loc = 'upper right') # построить легенду
plt2 = plt.twinx () # Создать вторую ось y
plt.ylim (50, 70) # Устанавливаем пределы второй оси y
plt2.plot (влажность, 'g * -', label = 'Humidity') # график данных давления
plt2.set_ylabel ('Humidity') # метка второй оси 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 (темп)
влажность.приложение (гул)
нарисованный (makeFig)
plt.pause (.000001)
count = count + 1 if (count> 20): # брать только последние 20 данных, если данных больше, оно появится первым
tempC.pop (0)
влажность.pop (0)
2. Построение графика влажности и температуры отдельно
import serial # import Serial Library
import numpy # Импортировать numpy
импортировать matplotlib.pyplot как plt # импортировать библиотеку matplotlib
из оттянутого импорта *
tempC = # Пустой массив
влажность =
arduino = serial. Serial ("/ dev / ttyACM0", 115200) # Последовательный порт, к которому подключен arduino, и скорость передачи
plt.ion () # Сообщите matplotlib, что вы хотите, чтобы интерактивный режим отображал данные в реальном времени
def CreatePlot (): # Создать функцию, которая делает желаемый график
plt.subplot (2, 1, 1) # Высота, Ширина, Первый график
plt.ylim (22, 34) # Установить минимальные и максимальные значения y
plt.title ('Real Time DHT11 Data') # Построить заголовок
plt.grid (True) # Включаем сетку
plt.ylabel ('Temp C') # Установить метки
plt.plot (tempC, 'b ^ -', label = 'Degree C') # график температуры
plt.legend (loc = 'upper center') # построить легенду
plt.subplot (2, 1, 2) # Высота, Ширина, Второй график
plt.grid (Истина)
plt.ylim (45, 70) # Устанавливаем пределы второй оси y
plt.plot (влажность, 'g * -', label = 'Humidity (g / m ^ 3)') # построить данные о влажности
plt.ylabel ('Humidity (г / м ^ 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]) # Преобразуйте второй элемент в плавающее число и вставьте гул
tempC.append (temp) # Создайте наш массив tempC, добавив временное чтение
влажность.append (hum) # Создаем наш массив влажности, добавляя гул чтения
нарисованный (CreatePlot)
plt.pause (.000001)
count = count + 1
if (count> 20): # брать только последние 20 данных, если данных больше, оно появится первым
tempC.pop (0) # вывести первый элемент
влажность.pop (0)
Шаг 6: Принципиальная схема
Ардуино ==> DHT11
3,3 В ==> VCC
GND ==> GND
D7 ==> ВЫХОД
Рекомендуемые:
Чтение и отображение данных датчика освещенности и температуры с помощью Raspberry Pi: 5 шагов
Чтение и отображение данных датчика освещенности и температуры с помощью Raspberry Pi: в этом руководстве вы узнаете, как считывать данные датчика освещенности и температуры с помощью Raspberry Pi и аналого-цифрового преобразователя ADS1115 и строить график с помощью matplotlib. Начнем с необходимых материалов
Как сделать регистратор данных влажности и температуры в реальном времени с Arduino UNO и SD-картой - Моделирование регистратора данных DHT11 в Proteus: 5 шагов
Как сделать регистратор данных влажности и температуры в реальном времени с Arduino UNO и SD-картой | Моделирование регистратора данных DHT11 в Proteus: Введение: привет, это Liono Maker, вот ссылка на YouTube. Мы делаем творческий проект с Arduino и работаем над встраиваемыми системами. Регистратор данных: Регистратор данных (также регистратор данных или регистратор данных) - это электронное устройство, которое записывает данные с течением времени
Простое построение удаленных данных с помощью Android / Arduino / PfodApp: 6 шагов
Простое построение графиков удаленных данных с использованием Android / Arduino / PfodApp: для построения графика данных по дате / времени с использованием только миллис () Arduino см. Этот InstructableArduino Построение / регистрация даты / времени с использованием Millis () и PfodApp. Android на мобильном устройстве и снимите его для
Чтение и запись данных во внешнюю EEPROM с помощью Arduino: 5 шагов
Чтение и запись данных во внешнюю EEPROM с использованием Arduino: EEPROM - это электрически стираемая программируемая постоянная память. EEPROM очень важна и полезна, потому что это энергонезависимая форма памяти. Это означает, что даже когда плата выключена, микросхема EEPROM все еще сохраняет программу, которая
Сохранение данных датчика Arduino в MYsql с помощью обработки: 6 шагов
Сохранение данных датчика Arduino в MYsql с помощью обработки: честно говоря, трудно хранить данные Arduino в MySQL напрямую, поэтому, пристрастившись к IDE Arduino, я использовал IDE обработки, которая похожа на IDE Arduino, но с большим количеством различных вариантов использования, и вы можете закодировать ее в java.Note: не запускайте серийный мони Arduino