Начертайте данни на DHT11 с помощта на Raspberry Pi и Arduino UNO: 7 стъпки
Начертайте данни на DHT11 с помощта на Raspberry Pi и Arduino UNO: 7 стъпки
Anonim
Начертайте данни на DHT11 с помощта на Raspberry Pi и Arduino UNO
Начертайте данни на DHT11 с помощта на Raspberry Pi и Arduino UNO

Тази инструкция обяснява как нанасям данни за температурния сензор 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 в Raspberry Pi
Изтеглете и инсталирайте Arduino IDE в Raspberry Pi
Изтеглете и инсталирайте Arduino IDE в Raspberry Pi
Изтеглете и инсталирайте Arduino IDE в Raspberry Pi
Изтеглете и инсталирайте Arduino IDE в Raspberry Pi
Изтеглете и инсталирайте 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

Код за Arduino
Код за 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

Настройка на Raspberry Pi
Настройка на 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 Scipt
Python Scipt
Python Scipt
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

Препоръчано: