Mục lục:

UCL - IIOT Nhà kính: 11 bước
UCL - IIOT Nhà kính: 11 bước

Video: UCL - IIOT Nhà kính: 11 bước

Video: UCL - IIOT Nhà kính: 11 bước
Video: Phiên toà xét xử vụ án g.i.ế.t chồng p.h.â.n x.á.c tại Bình Dương 2024, Tháng mười một
Anonim
UCL - IIOT Nhà kính
UCL - IIOT Nhà kính

Dự án này là một phần mở rộng của dự án trước đó của chúng tôi với Nhà kính (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

Trong dự án này, chúng tôi đã thêm một cơ sở dữ liệu, nơi chúng tôi ghi lại tất cả dữ liệu của mình và sau đó trực quan hóa nó với nút đỏ để có cái nhìn tổng quan hơn.

Nội dung chúng tôi đăng nhập vào cơ sở dữ liệu của mình là Độ ẩm, Nhiệt độ và độ ẩm của đất, được thể hiện trong các biểu đồ khác nhau.

Bên cạnh dataloggin, chúng tôi cũng có thể kiểm soát cấu hình nào đang hoạt động trong Nhà kính và điều khiển từ xa.

Sau đó, chúng tôi cũng có thể điều khiển máy bơm và quạt bằng tay.

Bước 1: Hướng dẫn cài đặt

Hướng dẫn cài đặt
Hướng dẫn cài đặt

Bước đầu tiên là cài đặt tất cả các thành phần khác nhau.

Bên trong dấu ngoặc (), chúng tôi đã liệt kê nơi thành phần được kết nối với. Vì vậy, ví dụ, Arduino được kết nối với Raspberry Pi thông qua cáp USB.

Phần cứng được sử dụng:

  • Arduino (Raspberry Pi)
  • Raspberry Pi 3 B +
  • Ẩm kế đất (Arduino)
  • Cảm biến DHT11 (Arduino)
  • Máy bơm nước chìm HG-320 (Rơ le)
  • Rơ le 5V (Arduino)
  • Quạt máy tính (Rơ le)
  • Nguồn điện 230V (Bơm)

Phần mềm được sử dụng:

  • Raspbian (Hệ điều hành cho Raspberry Pi)
  • Arduino IDE
  • Python (Raspberry Pi) - PySerial- MySQLclient
  • Node-Red (Raspberry Pi) - Pythonshell- Summariser- MySQL- Bảng điều khiển
  • Máy chủ MySQL (freemysqlhosting.net)

Trước tiên, bạn sẽ phải kết nối các thành phần phần cứng, vì vậy hãy làm theo hướng dẫn này để xây dựng nhà kính: Hướng dẫn cài đặt.

Sau đó, bạn sẽ phải cài đặt hệ điều hành Raspbian trên Raspberry Pi của mình. Sau đó, bạn sẽ phải cài đặt Python, và sau đó cài đặt các thư viện python.

Bước tiếp theo là cài đặt Node-Red trên Raspberry Pi, sau đó điều hướng đến trình quản lý pallette và cài đặt các mô-đun đã nêu trước đó.

Sau đó, truy cập trang web này Máy chủ MySQL miễn phí và tạo một máy chủ MySQL miễn phí.

Khi tất cả những việc này hoàn tất, bạn đã sẵn sàng chuyển tập lệnh python sang Raspberry Pi của mình, nhập tập lệnh Node-Red và tải lên mã cho Arduino.

Bước 2: Trưng bày quyền kiểm soát

Image
Image

Bước 3: Danh sách các bộ phận / phần mềm được sử dụng trong dự án

Chúng tôi đã sử dụng công nghệ sau để làm Nhà kính

  • Arduino
  • Raspberry Pi
  • Node-Red
  • Python
  • PHPMyAdmin

Bước 4: Danh sách I / 0

Sơ đồ hệ thống dây điện
Sơ đồ hệ thống dây điện

Bước 5: Sơ đồ đấu dây

Bước 6: Mã Arduino

Mã Arduino hoạt động bằng cách in dữ liệu, được đo bởi các cảm biến, tới kết nối nối tiếp nơi nó được đọc bởi Raspberry Pi và chuyển đến cơ sở dữ liệu.

Arduino cũng có một số đầu vào kỹ thuật số được kết nối với Raspberry Pi mà Arduino đọc và nếu một trong ba cái trở nên CAO, cấu hình sẽ thay đổi do câu lệnh IF.

Ngoài ra, chúng tôi đã nâng cấp mã để sử dụng Millis thay vì độ trễ cho phép đọc phần mông và phần còn lại của mã mọi lúc thay vì một khoảng thời gian bằng độ trễ cũ.

Bước 7: Raspberry Pi 3 B +

Raspberry Pi 3 B +
Raspberry Pi 3 B +

Chúng tôi đã sử dụng Raspberry Pi 3 B + để kết nối Arduino của chúng tôi với internet và cơ sở dữ liệu MySQL. Điều này giúp chúng tôi có thể lưu trữ dữ liệu từ các cảm biến của mình và tạo giao diện trực quan cho người dùng cuối. Đối với giao diện người dùng, chúng tôi đã sử dụng Node-Red với bảng Bảng điều khiển.

Nhưng trước khi chúng tôi có thể hiển thị dữ liệu cảm biến của mình trên Node-Red, chúng tôi cần một cách để tải dữ liệu lên cơ sở dữ liệu MySQL và để tạo một tập lệnh Python sẽ chạy trên Raspberry Pi của chúng tôi.

Bước 8: Python

Python
Python

Tập lệnh Python được sử dụng để nhận dữ liệu từ giao tiếp nối tiếp đến từ Arduino. Sau đó, tập lệnh sẽ gửi dữ liệu đến cơ sở dữ liệu MySQL.

Chúng tôi đã sử dụng hai thư viện, pyserial và mysqlclient.

Vì vậy, bước đầu tiên sẽ là tải xuống hai thư viện sau:

  1. PySerial
  2. MySQLclient

PySerial được sử dụng để thu thập dữ liệu từ Arduino thông qua giao tiếp nối tiếp.

device = '/ dev / ttyUSB0'

arduino = serial. Serial (thiết bị, 9600)

Dòng đầu tiên đang được sử dụng để xác định cổng COM của chúng tôi. Trên Raspberry Pi, nó là / dev / ttyUSB0, mà chúng tôi sử dụng cho Arduino. Dòng thứ hai là để mở cổng nối tiếp vào Arduino. Chúng tôi chỉ xác định cổng COM nào và tốc độ kết nối đang chạy.

Phần còn lại của mã đang chạy trong một vòng lặp trong khi.

Tiếp theo, chúng tôi sử dụng nhiều khối Thử và Ngoại trừ. Đầu tiên, mã đang cố gắng chạy bên trong khối Thử, nếu không thành công thì mã sẽ chạy khối Ngoại trừ. Nhưng nếu khối Thử chạy tốt, nó không chạy khối Ngoại trừ, nó chỉ chạy phần còn lại của mã.

Vì vậy, bên trong các khối Try, chúng tôi có mã sẽ đọc giao tiếp nối tiếp và sau đó gửi nó đến cơ sở dữ liệu MySQL của chúng tôi.

hygrolist = arduino.readlines (1)

templist = arduino.readlines (2) humlist = arduino.readlines (3)

Vì vậy, đoạn mã trên là để đọc các dòng trong giao tiếp nối tiếp. Số ở cuối mã xác định dòng đã được đọc trong sê-ri. Vì vậy, các dòng này đang được phân loại theo các biến khác nhau.

Khi dữ liệu từ Arduino được nhận, chúng tôi đã sử dụng mô-đun mysqlclient để gửi dữ liệu đến Máy chủ MySQL của chúng tôi.

db = _mysql.connect (host = "sql7.freemysqlhosting.net", user = "sql7256552", passwd = "3ebtbP8FQ2", db = "sql7256552")

Dòng này là để kết nối với cơ sở dữ liệu MySQL của chúng tôi. Nó chỉ định máy chủ, tên người dùng, mật khẩu và cơ sở dữ liệu nào nó sẽ kết nối bên trong máy chủ. Ở đây, bạn nên chỉ định kết nối đến MySQL DB của mình.

db.query ("INSERTINTO` TempHumid` (`nhiệt độ`,` ẩm`, `hygro`) GIÁ TRỊ (% s,% s,% s)"% (nhiệt độ, ẩm ướt, hygro))

Vì vậy, ở đây chúng tôi sử dụng kết nối DB của chúng tôi và thực hiện một truy vấn SQL. Truy vấn cho biết rằng các giá trị phải được chèn vào bên trong bảng "TempHumid" và sau đó vào các cột "nhiệt độ", "ẩm ướt" và "hygro". Phần cuối cùng “(% s,% s,% s)” là định dạng chuỗi và được sử dụng để cung cấp cho cơ sở dữ liệu một định dạng mà nó có thể đọc được.

Và tất cả hành động này được đưa vào một vòng lặp trong khi, để chúng tôi tiếp tục nhận dữ liệu được gửi đến máy chủ MySQL.

Nếu bạn muốn xem tất cả mã, hãy tải xuống tập lệnh python (TempHumid.py).

Bước 9: MySQL

MySQL
MySQL
MySQL
MySQL

Đối với máy chủ MySQL, chúng tôi đã sử dụng dịch vụ miễn phí trên www.freemysqlhosting.net. Chúng tôi có thể đã tạo một máy chủ cục bộ trên Raspberry Pi, nhưng chúng tôi đã sử dụng dịch vụ miễn phí để làm cho nó được kết nối hoàn toàn với đám mây / internet.

Để truy cập MySQL của bạn, bạn phải truy cập phpmyadmin.co và đăng nhập bằng thông tin đăng nhập từ tài khoản freemysqlhosting của bạn.

Khi vào bên trong, bạn phải tạo một bảng có tên là "TempHumid", bên trong bảng này bạn phải tạo 4 cột có tên là "ID", "temp", "ẩm" và "hygro". Cột (ID) đầu tiên bạn phải đánh dấu vào ô A_I (Auto Increment). Điều này để cột ID cung cấp cho mọi tập dữ liệu một ID. Tất cả các cột sau phải được đặt dưới dạng INT (số nguyên) và đặt giá trị tiêu chuẩn thành NULL.

Bước 10: Node-Red

Node-Red
Node-Red
Node-Red
Node-Red
Node-Red
Node-Red

Trong dự án của mình, chúng tôi đã sử dụng Node-Red để tạo giao diện đồ họa. Node-Red đang chạy trên Raspberry Pi và đang thu thập dữ liệu từ cơ sở dữ liệu MySQL của chúng tôi và đang hiển thị những dữ liệu này bằng đồng hồ đo hình bánh rán và biểu đồ đồ họa để người dùng cuối có thể theo dõi dữ liệu. Điều thông minh về Node-Red là nó có thể xem được trên bất kỳ thiết bị nào, có nghĩa là trang web sẽ được thay đổi kích thước cho thiết bị nhất định đang xem nội dung.

Để cài đặt chương trình Node-Red của chúng tôi, hãy xem Bước 1 và tải xuống tài liệu có tên "Node-Red.docx". Sau đó sao chép và dán văn bản vào Node-Red thông qua chức năng nhập ở góc trên bên phải.

Sau đó, thay đổi cài đặt DB cho MySQL DB của bạn.

Đề xuất: