Mục lục:

Nhiệt độ & độ ẩm từ Arduino đến Raspberry Pi: 6 bước
Nhiệt độ & độ ẩm từ Arduino đến Raspberry Pi: 6 bước

Video: Nhiệt độ & độ ẩm từ Arduino đến Raspberry Pi: 6 bước

Video: Nhiệt độ & độ ẩm từ Arduino đến Raspberry Pi: 6 bước
Video: Gửi dữ liệu Nhiệt độ & Độ ẩm từ DHT22 đến Thingspeak với Raspberry Pi 2024, Tháng bảy
Anonim
Nhiệt độ & độ ẩm từ Arduino đến Raspberry Pi
Nhiệt độ & độ ẩm từ Arduino đến Raspberry Pi

Theo dõi nhiệt độ và độ ẩm rất quan trọng nếu bạn có một nhà kính hoặc có kế hoạch trong tương lai để nâng cấp nhà kính của bạn thành một trang trại thông minh mini.

Đối với tài liệu có thể hướng dẫn đầu tiên của tôi, tôi sẽ trình bày cách tạo một nguyên mẫu:

  • Kết nối cảm biến nhiệt độ và độ ẩm DHT11 với Arduino Mega 2560
  • Lập trình Arduino bằng C để đọc dữ liệu cảm biến
  • Hiển thị dữ liệu nhiệt độ và độ ẩm trên màn hình LCD được kết nối với Arduino
  • Hướng dẫn Arduino gửi dữ liệu cảm biến đến Raspberry Pi 3 Model B +
  • Viết mã bằng Python để hiển thị dữ liệu cảm biến

Tại sao lại sử dụng RPi và Arduino cùng nhau?

Kết nối Arduino và RPi có thể cho phép các khả năng tuyệt vời nếu bạn cần I / O mà Arduino vượt trội và giao tiếp mạng / đa luồng / hình ảnh mà RPi tốt hơn nhiều.

Nói cách khác, chúng tôi sẽ sử dụng Arduino để kiểm soát các tác vụ chuyên sâu và sử dụng RPi để tính toán các tác vụ chuyên sâu.

Các phiên bản Arduinos chắc chắn có sẵn tại Rugged-Circuits

Bước 1: Lấy phần cứng Arduino & RPi

Các bộ khởi động Arduino luôn có sẵn và cho phép bạn thử nghiệm với các loại cảm biến và tiện ích khác nhau. Mua một bộ khởi động sẽ rẻ hơn thay vì đặt hàng các bộ phận khác nhau một cách riêng lẻ. Tôi đã cung cấp một số liên kết liên kết bên dưới trỏ đến Banggood và Amazon US.

Bộ khởi động Arduino (Banggood)

Bộ khởi động Arduino (Amazon US)

Bo mạch chủ Element 14 RPi 3 B + (Amazon US)

Vỏ Raspberry Pi 3 B + (Amazon US)

Thẻ Micro SD 32GB (Amazon Mỹ).

Bước 2: Kết nối DHT11 & LCD với Arduino

Kết nối DHT11 & LCD với Arduino
Kết nối DHT11 & LCD với Arduino

Bước 3: Lập trình Arduino

# arduino-dht11-lcd2004

#Author: Vasoo Veerapen

#https://www.instructables.com/member/VasooV/ # Đọc dữ liệu từ DHT11 được kết nối với Arduino, hiển thị trên màn hình LCD2004 và gửi dữ liệu qua nối tiếp tới Raspberry Pi

#bao gồm

#bao gồm

// Màn hình LCD được định nghĩa là số thiết bị 0x27 trên bus I2C

Màn hình LCD LiquidCrystal_I2C (0x27, 20, 4);

// DHT11 được kết nối với chân 8

dht DHT; #define sensorPin 8

// Raspberry Pi được kết nối với Serial 0

#define serialPi Serial

void setup () {

lcd.begin (20, 4); // Khởi tạo giao diện với màn hình LCD và chỉ định kích thước (chiều rộng và chiều cao) của màn hình lcd.init (); LCD đèn nền(); serialPi.begin (9600); // Arduino đến màn hình nối tiếp}

void loop () {

// Đọc dữ liệu cảm biến

int sensorData = DHT.read11 (sensorPin); nhiệt độ phao = DHT. nhiệt độ; độ ẩm phao = DHT.humidity;

// Nhiệt độ in

lcd.setCursor (0, 0); lcd.print ("Nhiệt độ"); lcd.print (nhiệt độ); lcd.print ("C");

// Độ ẩm in

lcd.setCursor (0, 1); lcd.print ("Độ ẩm"); lcd.print (độ ẩm); lcd.print ("%");

// Gửi dữ liệu nhiệt độ và độ ẩm tới Raspberry Pi

serialPi.print ("");

// Chờ trong 10 giây

trì hoãn (10000); }

Bước 4: Thiết lập Arduino, LCD & DHT11 hoạt động

Thiết lập Arduino, LCD & DHT11 làm việc
Thiết lập Arduino, LCD & DHT11 làm việc

Bước 5: Kết nối Raspberry Pi với Arduino

Kết nối Raspberry Pi với Arduino
Kết nối Raspberry Pi với Arduino

Bước 6: Mã Python RPi để đọc dữ liệu nối tiếp cổng USB

# rpi-arduino-dht11

#Raspberry Pi đọc dữ liệu cảm biến nhiệt độ và độ ẩm từ Arduino

nhập nối tiếp, chuỗi, thời gian

# Trong ví dụ này / dev / ttyUSB0 được sử dụng

# Điều này có thể thay đổi trong trường hợp của bạn thành / dev / ttyUSB1, / dev / ttyUSB2, v.v. ser = serial. Serial ('/ dev / ttyUSB0', 9600)

# Khối mã sau hoạt động như thế này:

# Nếu có dữ liệu nối tiếp, hãy đọc dòng, giải mã dữ liệu UTF8, #… xóa các ký tự cuối dòng #… chia dữ liệu thành nhiệt độ và độ ẩm #… xóa các con trỏ bắt đầu và kết thúc () #… in đầu ra trong khi Đúng: nếu ser.in_waiting> 0: rawserial = ser.readline () cookserial = rawserial.decode ('utf-8'). Dải ('\ r / n') datasplit = cookserial.split (',') nhiệt độ = datasplit [0].strip ('') in (nhiệt độ) in (độ ẩm)

Đề xuất: