Vẽ sơ đồ dữ liệu DHT11 bằng Raspberry Pi và Arduino UNO: 7 bước
Vẽ sơ đồ dữ liệu DHT11 bằng Raspberry Pi và Arduino UNO: 7 bước

Video: Vẽ sơ đồ dữ liệu DHT11 bằng Raspberry Pi và Arduino UNO: 7 bước

Video: Vẽ sơ đồ dữ liệu DHT11 bằng Raspberry Pi và Arduino UNO: 7 bước
Video: [ARDUINO – DHT11] ĐỌC NHIỆT ĐỘ VÀ ĐỘ ẨM TỪ CẢM BIẾN DHT11 VÀ HIỂN THỊ LÊN LCD 2025, Tháng Giêng
Anonim
Vẽ dữ liệu DHT11 bằng Raspberry Pi và Arduino UNO
Vẽ dữ liệu DHT11 bằng Raspberry Pi và Arduino UNO

Tài liệu hướng dẫn này giải thích cách tôi vẽ biểu đồ dữ liệu cảm biến nhiệt độ DHT11 bằng Arduino Uno và Raspberry Pi. Trong cảm biến nhiệt độ này được kết nối với Arduino Uno và Arduino Uno được kết nối nối tiếp với Raspberry Pi. Tại Raspberry Pi Side, các thư viện matplotlib, numpy và drawnow được sử dụng để vẽ đồ thị.

Bước 1: Những điều cần thiết cho dự án

Những điều cần thiết cho dự án
Những điều cần thiết cho dự án
Những điều cần thiết cho dự án
Những điều cần thiết cho dự án
Những điều cần thiết cho dự án
Những điều cần thiết cho dự án

1. Raspberry Pi

2. Arduino Uno

3. Cảm biến nhiệt độ DHT11

4. Dây nhảy

5. Breadboard

Bước 2: Tải xuống và cài đặt Arduino IDE trong Raspberry Pi

Tải xuống và cài đặt Arduino IDE trong Raspberry Pi
Tải xuống và cài đặt Arduino IDE trong Raspberry Pi
Tải xuống và cài đặt Arduino IDE trong Raspberry Pi
Tải xuống và cài đặt Arduino IDE trong Raspberry Pi
Tải xuống và cài đặt Arduino IDE trong Raspberry Pi
Tải xuống và cài đặt Arduino IDE trong Raspberry Pi

Lưu ý: - Bạn có thể sử dụng Arduino IDE của windows, Linux hoặc Mac để tải lên bản phác thảo trong Arduino UNO.

Bước đầu tiên là cài đặt Arduino IDE cho trình duyệt đang mở đó trong Raspberry Pi và mở liên kết được cung cấp bên dưới

Arduino IDE trước

Sau đó tải xuống phiên bản Linux ARM và giải nén nó bằng lệnh

tên tệp tar -xf

Sau khi giải nén bạn sẽ thấy một thư mục mới. Ở đây tôi đang sử dụng arduino-1.8.2 IDE. Sau đó đi đến thư mục bằng cách sử dụng lệnh.

cd arduino-1.8.1

Để chạy Arduino IDE, hãy sử dụng lệnh này trong thư mục arduino-1.8.2

./arduino

Cách sử dụng thư viện

Để cài đặt bất kỳ thư viện nào trong Arduino, chỉ cần tải xuống thư viện và dán vào thư mục arduino 1.8.2 ==> Library.

LƯU Ý: - Đảm bảo không có (-) trong thư mục thư viện cho ex (DHT-sensor). Nếu có dấu (-), hãy đổi tên nó.

chúng tôi sẽ sử dụng hai thư viện trong có thể hướng dẫn này, DHT_Sensor và Adafruit_Sensor

Bước 3: Mã cho Arduino

Mã cho Arduino
Mã cho Arduino

Bây giờ, hãy để python và Arduino nói chuyện cùng nhau. Đầu tiên, chúng ta cần một chương trình đơn giản để Arduino gửi dữ liệu qua cổng nối tiếp. Chương trình sau đây là một chương trình đơn giản sẽ đếm Arduino và gửi dữ liệu đến cổng nối tiếp.

Mã Arduino

#include "DHT.h" float tempC; // Biến hoặc giữ nhiệt độ trong C float tempF; // Biến để giữ nhiệt độ trong độ ẩm F float; // Biến để đọc áp suất

#define DHTPIN 7 // loại pin kỹ thuật số mà chúng tôi đang kết nối với

#define DHTTYPE DHT11 // DHT 11

// # xác định DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

// # xác định DHTTYPE DHT21 // DHT 21 (AM2301)

// Khởi tạo cảm biến DHT.

DHT dht (DHTPIN, DHTTYPE);

void setup () {Serial.begin (115200); // bật màn hình nối tiếp

dht.begin (); // khởi tạo dht}

void loop () {tempC = dht.readTempe Heat (); // Đảm bảo khai báo các biến của bạn

độ ẩm = dht.readHumidity (); // Đọc độ ẩm

Serial.print (tempC);

Serial.print (",");

Serial.print (độ ẩm);

Serial.print ("\ n"); // cho new lineselay (2000); // Tạm dừng giữa các lần đọc. }

Sau khi bản phác thảo được biên dịch, hãy chọn bo mạch và cổng và tải nó lên.

Bước 4: Thiết lập Raspberry Pi

Thiết lập Raspberry Pi
Thiết lập Raspberry Pi

Sau khi mã được tải lên, hãy cài đặt một số thư viện để chúng tôi có thể vẽ biểu đồ dữ liệu sắp xếp từ Arduino Uno.

1. PySerial là một thư viện cung cấp hỗ trợ cho các kết nối nối tiếp trên nhiều thiết bị khác nhau. Để cài đặt nó, hãy sử dụng lệnh.

Sudo apt-get install python-serial

2. Numpy là một gói định nghĩa một đối tượng mảng đa chiều và các hàm toán học nhanh liên quan hoạt động trên nó. Nó cũng cung cấp các quy trình đơn giản cho đại số tuyến tính và FFT (Fast Fourier Transform) và tạo số ngẫu nhiên phức tạp. Bạn có thể cài đặt nó theo nhiều cách hoặc sử dụng gói apt hoặc pip. Ở đây tôi đang cài đặt bằng cách sử dụng pip, đầu tiên chúng ta phải cài đặt pip

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

sudo pip cài đặt numpy

hoặc nếu bạn muốn sử dụng gói apt

sudo apt install python-numpy

3. Matplotlib là một thư viện vẽ đồ thị 2D cung cấp một API hướng đối tượng để nhúng các đồ thị vào các ứng dụng sử dụng các bộ công cụ GUI có mục đích chung như Tkinter, wxPython, Qt hoặc GTK +. Để cài đặt nó, hãy sử dụng lệnh

sudo pip cài đặt matplotlib

hoặc

sudo apt install python-matplotlib

4. Drawnow thường được sử dụng để xem kết quả sau mỗi lần lặp khi chúng ta sử dụng "imshow" trong MATLAB. Để cài đặt nó, hãy sử dụng lệnh

sudo pip cài đặt drawnow

Bước 5: Python Scipt

Python Scipt
Python Scipt
Python Scipt
Python Scipt

Bước tiếp theo là viết một tập lệnh python mà bạn có thể sử dụng bất kỳ trình soạn thảo nào để viết nó.

1. Vẽ dữ liệu trong một biểu đồ

import serial # import Serial Library

import numpy # Import numpy

nhập matplotlib.pyplot dưới dạng plt #import matplotlib thư viện

từ nhập drawnow *

tempC = #Empty arrayhumidity =

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

plt.ion () # chế độ tương tác để vẽ số liệu trực tiếp = 0

def makeFig (): # Tạo một hàm tạo âm mưu mong muốn của chúng ta

plt.ylim (20, 30) # Đặt y giá trị tối thiểu và tối đa

plt.title ('Dữ liệu DHT11 Thời gian thực') # Đánh dấu tiêu đề

plt.grid (True) # Bật lưới

plt.ylabel ('Temp C') #Set ylabel

plt.plot (tempC, 'b ^ -', label = 'Độ C') #plot nhiệt độ

plt.legend (loc = 'phía trên bên phải') # vẽ chú giải

plt2 = plt.twinx () # Tạo trục y thứ hai

plt.ylim (50, 70) # Đặt giới hạn của trục y thứ hai

plt2.plot (độ ẩm, 'g * -', label = 'Độ ẩm') #plot dữ liệu áp suất

plt2.set_ylabel ('Độ ẩm') # nhãn trục y thứ hai

plt2.ticklabel_format (useOffset = False)

plt2.legend (loc = 'phía trên bên trái')

while True: # Vòng lặp while lặp lại mãi mãi

while (arduino.inWaiting () == 0): # Chờ ở đây cho đến khi có dữ liệu

vượt qua # không làm gì cả

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') # Ghép nó vào một mảng

temp = float (dataArray [0])

hum = float (dataArray [1])

tempC.append (tạm thời)

độ ẩm.append (hum)

drawnow (makeFig)

plt.pause (.000001)

count = count + 1 if (count> 20): # chỉ lấy 20 dữ liệu cuối cùng nếu dữ liệu nhiều hơn, nó sẽ bật ra đầu tiên

tempC.pop (0)

độ ẩm.pop (0)

2. Lập biểu đồ độ ẩm và nhiệt độ riêng biệt

import serial # import Serial Library

import numpy # Import numpy

nhập matplotlib.pyplot dưới dạng plt #import matplotlib thư viện

từ nhập drawnow *

tempC = # Mảng #Empty

độ ẩm =

arduino = serial. Serial ("/ dev / ttyACM0", 115200) Cổng #Serial mà arduino được kết nối và Baudrate

plt.ion () # Nói với matplotlib rằng bạn muốn chế độ tương tác để vẽ dữ liệu trực tiếp

def CreatePlot (): # Tạo một hàm tạo ra âm mưu mong muốn của chúng ta

plt.subplot (2, 1, 1) # Chiều cao, Chiều rộng, Biểu đồ đầu tiên

plt.ylim (22, 34) # Đặt y giá trị tối thiểu và tối đa

plt.title ('Dữ liệu DHT11 Thời gian thực') # Đánh dấu tiêu đề

plt.grid (True) # Bật lưới

plt.ylabel ('Temp C') #Set ylabels

plt.plot (tempC, 'b ^ -', label = 'Độ C') #plot nhiệt độ

plt.legend (loc = 'upper center') # vẽ chú giải

plt.subplot (2, 1, 2) # Chiều cao, Chiều rộng, Biểu đồ thứ hai

plt.grid (Đúng)

plt.ylim (45, 70) # Đặt giới hạn của trục y thứ hai

plt.plot (độ ẩm, 'g * -', label = 'Độ ẩm (g / m ^ 3)') #plot dữ liệu độ ẩm

plt.ylabel ('Độ ẩm (g / m ^ 3)') # nhãn trục y thứ hai

plt.ticklabel_format (useOffset = False) # để dừng trục y tự động chỉnh tỷ lệ

plt.legend (loc = 'phía trên trung tâm')

while True: # Vòng lặp while lặp lại mãi mãi

while (arduino.inWaiting () == 0): # Chờ ở đây cho đến khi có dữ liệu truyền # không làm gì cả

arduinoString = arduino.readline () # đọc dữ liệu từ cổng nối tiếp

dataArray = arduinoString.split (',') # Ghép nó vào một mảng

temp = float (dataArray [0]) #Chuyển đổi phần tử đầu tiên thành số thực và đưa vào tạm thời

hum = float (dataArray [1]) #Chuyển phần tử thứ hai thành số thực và đặt vào hum

tempC.append (tạm thời) # Xây dựng mảng tempC của chúng tôi bằng cách bổ sung đọc tạm thời

Moisturiser.append (hum) # Xây dựng mảng độ ẩm của chúng tôi bằng cách bổ sung đọc hum

drawnow (CreatePlot)

plt.pause (.000001)

count = count + 1

if (count> 20): # chỉ lấy 20 dữ liệu cuối cùng nếu dữ liệu nhiều hơn, nó sẽ bật ra đầu tiên

tempC.pop (0) # phần tử đầu tiên bật ra

độ ẩm.pop (0)

Bước 6: Sơ đồ mạch

Sơ đồ mạch
Sơ đồ mạch
Sơ đồ mạch
Sơ đồ mạch
Sơ đồ mạch
Sơ đồ mạch

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> HẾT