Mục lục:

Đã xem Giải pháp IoTea LoRa (Bản cập nhật 1811): 5 bước
Đã xem Giải pháp IoTea LoRa (Bản cập nhật 1811): 5 bước

Video: Đã xem Giải pháp IoTea LoRa (Bản cập nhật 1811): 5 bước

Video: Đã xem Giải pháp IoTea LoRa (Bản cập nhật 1811): 5 bước
Video: Hiện tượng chữa bệnh - Phim tài liệu - Phần 3 2024, Tháng bảy
Anonim
Đã xem Giải pháp IoTea LoRa (Cập nhật 1811)
Đã xem Giải pháp IoTea LoRa (Cập nhật 1811)

Internet + là một khái niệm phổ biến hiện nay. Lần này chúng tôi đã thử Internet cộng với nông nghiệp để làm cho vườn chè phát triển ra Internet Tea.

Bước 1: Những thứ được sử dụng trong dự án này

Các thành phần phần cứng

  • Grove - Cảm biến Carbon Dioxide (MH-Z16)
  • Grove - Cảm biến ánh sáng kỹ thuật số
  • Grove - Cảm biến bụi (PPD42NS)
  • Grove - Cảm biến oxy (ME2-O2-Ф20)
  • Cảm biến nhiệt độ & độ ẩm của đất
  • LoRa LoRaWAN Gateway - 868MHz Kit với Raspberry Pi 3
  • Grove - Cảm biến nhiệt độ & độ ẩm & khí áp kế (BME280)

Ứng dụng phần mềm và dịch vụ trực tuyến

Microsoft Visual Studio 2015

Bước 2: Câu chuyện

Trên núi Mengding ở phía đông bắc Ya’an, Tứ Xuyên, sườn núi chạy từ tây sang đông trong một biển xanh. Đây là cảnh tượng quen thuộc nhất đối với Deng, 36 tuổi, một trong số rất ít người làm trà Mengding ở thế hệ của anh, với đồn điền rộng 50mu (= 3,3 ha) nằm ở độ cao 1100m so với mực nước biển. Deng xuất thân từ một gia đình làm trà, nhưng việc gánh vác di sản của gia đình không phải là một việc dễ dàng. “Các loại trà của chúng tôi được trồng ở độ cao trong một môi trường hữu cơ để đảm bảo chất lượng tuyệt vời của nó. Song song đó, mật độ sinh trưởng thấp, chi phí cao và nảy chồi không đồng đều khiến chè khó thu hoạch. Đó là lý do tại sao trà núi cao thường thu hoạch nhỏ và giá trị của chúng không được phản ánh trên thị trường.”Trong hai năm qua, Deng đã cố gắng nâng cao nhận thức của người tiêu dùng về trà núi cao để quảng bá giá trị của chúng. Và khi anh ấy gặp Fan, người đang tìm kiếm một đồn điền để triển khai công nghệ Seeed’s IoTea, một giải pháp hoàn hảo đã được đưa ra.

Bước 3: Kết nối phần cứng

Phần cứng của dự án này có thể được chia thành 4 phần: Nguồn, Cảm biến, Nút và Cổng. Bài viết sau đây sẽ hướng dẫn bạn cách hoàn thành từng bước.

Phần điện

Power Part chủ yếu chứa Bảng điều khiển năng lượng mặt trời và Pin Lithium, nếu bạn chỉ xây dựng dự án này để trình diễn, bạn có thể bỏ qua chúng. Hoặc bạn có thể làm theo hướng dẫn trước để cài đặt nguồn nút.

Phần cảm biến

Trong Phần cảm biến, vì có nhiều cảm biến, chúng tôi đã sử dụng một trạm thời tiết và cũng làm một giá đỡ bằng Acrylic để lắp đặt chúng.

Hình ảnh
Hình ảnh

Như bạn thấy trong hình trên, Cảm biến ánh sáng kỹ thuật số luôn ở trên cùng, để nó có thể thu thập thông tin ánh sáng. Các cảm biến sẽ tạo ra nhiệt được lắp đặt ở giữa khung Acrylic, chẳng hạn như Cảm biến O2, Cảm biến bụi và Cảm biến CO2. Cuối cùng, Cảm biến nhiệt độ và độ ẩm ở dưới cùng của khung Acrylic.

Bên cạnh đó, cảm biến nhiệt độ và độ ẩm của đất được cài đặt một mình trong đất. Phần nút

Hình ảnh
Hình ảnh

Node Part là Seeeduino LoRaWan được lắp đặt trong Hộp chống thấm nước, nó kết nối với nguồn và cảm biến thông qua Khớp nối nước. Trong số đó, Cảm biến bụi kết nối với chân kỹ thuật số D3 của LoRaWan, Cảm biến CO2 kết nối với chân D4 & D5, Cảm biến đất kết nối với chân D6 & D7, Cảm biến O2 kết nối với chân tương tự A1 và Cảm biến ánh sáng & Cảm biến khí áp kết nối với cổng I2C.

LƯU Ý: Nên thêm Điện trở 10k vào giữa cáp Màu xanh lam (Dữ liệu) của Cảm biến đất và cáp Màu đỏ (Vcc).

Seeeduino LoRaWan thỉnh thoảng thu thập giá trị cảm biến và gửi chúng đến Gateway thông qua LoRa. Định dạng dữ liệu như dưới đây:

{

[0], / * Nhiệt độ không khí (℃) * / [1], / * Độ ẩm không khí (%) * / [2], / * Độ cao (m) byte cao * / [3], / * Độ cao (m) byte thấp * / [4], / * Nồng độ CO2 (PPM) byte cao * / [5], / * Nồng độ CO2 (PPM) byte thấp * / [6], / * Nồng độ bụi (chiếc / 0,01cf) byte cao * / [7], / * Nồng độ bụi (chiếc / 0,01cf) byte thấp * / [8], / * Cường độ sáng (lux) byte cao * / [9], / * Cường độ sáng (lux) byte thấp * / [10], / * Nồng độ O2 (%) * / [11], / * Nhiệt độ đất (℃) * / [12], / * Độ ẩm đất (%) * / [13], / * Điện áp pin (V) * / [14] / * Mã lỗi cảm biến * /}

Mỗi bit trong byte Mã lỗi cảm biến có một ý nghĩa khác nhau, giống như bên dưới:

{

bit0: 1; / * Lỗi cảm biến khí áp kế * / bit1: 1; / * Lỗi cảm biến CO2 * / bit2: 1; / * Lỗi cảm biến bụi * / bit3: 1; / * Lỗi cảm biến ánh sáng * / bit4: 1; / * Lỗi cảm biến O2 * / bit5: 1; / * Lỗi cảm biến đất * / dành riêng: 2; /* Để dành */ }

Phần cổng vào

Hình ảnh
Hình ảnh

Gateway Part là một Raspberry Pi cắm mô-đun Gateway RHF0M301–868 và PRI 2 Bridge RHF4T002, nó được lắp đặt trong Hộp chống thấm nước và kết nối với nguồn & Máy ảnh USB thông qua khớp nối nước. Vì nó sử dụng phần sụn chuyên dụng, vui lòng làm theo Seeed Wiki để định cấu hình nó.

Bước 4: Lập trình phần mềm

Như Kết nối Phần cứng, Lập trình Phần mềm cũng có thể được chia nhỏ, nó có thể được chia thành 3 phần: Nút, Cổng và Trang web.

Phần nút

Hầu hết các trình điều khiển mà Phần Node yêu cầu đã được chứa trong thư mục origin_driver. Các thư viện sau đây cần được cài đặt thủ công:

Adafruit_ASFcore

Vì dự án phức tạp, chúng tôi khuyên bạn nên sử dụng Microsoft Visual Studio thay vì Arduino IDE. Một plugin có tên Visual Micro có thể giúp bạn lập dự án Arduino bằng cách sử dụng Visual Studio, hãy nhấp vào đây để biết thêm thông tin.

Để có khả năng đọc và bảo trì tốt hơn, chúng tôi sử dụng Lập trình hướng đối tượng lần này. Sơ đồ lớp của dự án này trông giống như dưới đây:

Hình ảnh
Hình ảnh

Đối với những cảm biến đã có trình điều khiển OOP, chúng tôi đã đóng gói lại nó để điều chỉnh dự án này, đối với những cảm biến khác, chúng tôi viết lại trình điều khiển của chúng bằng cách sử dụng OOP. Lớp Cảm biến trong lớp phần mềm trung gian được sử dụng để thống nhất các giao diện của cảm biến thực, ví dụ, cảm biến phong vũ biểu có thể thu thập nhiệt độ, độ ẩm và độ cao cùng một lúc, vì vậy nó có 3 giao diện để thu nhiệt độ, độ ẩm và độ cao. Nhưng chúng có tên phương pháp khác nhau, điều này sẽ làm cho chương trình thu được giá trị của cảm biến phức tạp hơn, giống như sau:

phong vũ biểu-> getTempe Heat ();

phong vũ biểu-> getHumidity (); phong vũ biểu-> getAltitude (); //… another_sensor-> getSomeValue (); //…

Nhưng sử dụng OOP, nó trông như thế này:

for (auto i = 0; i getValue ();

}

Chúng tôi cũng đóng gói một lớp Ứng dụng, nó triển khai giao diện IApplication, phương thức setup () và loop () trong IoTea.ino có thể gọi phương thức setup () và loop () trong đối tượng Application.

LƯU Ý: Sê-ri USB CHỈ được sử dụng để gỡ lỗi. Sau khi gỡ lỗi, vui lòng nhận xét nó khởi tạo mã trong phương thức setup ().

Phần cổng vào

Chương trình Python của Gateway Part trong thư mục chính được sử dụng để chụp ảnh và tải chúng lên Máy chủ Amazon S3 mỗi giờ. Trước khi sử dụng, hãy đảm bảo rằng fswebcam đã được cài đặt trong Raspberry Pi của bạn:

sudo apt-get update && sudo apt-get install fswebcam

Nếu bạn muốn tải ảnh lên, hãy định cấu hình AWS của bạn theo các bước sau. Trước tiên, hãy cài đặt AWS SDK và AWS CLI vào Raspberry Pi của bạn bằng cách sử dụng các lệnh sau:

sudo pip cài đặt boto3

sudo pip cài đặt awscli

và sau đó, chạy AWS CLI:

sudo aws config

Định cấu hình ID khóa truy cập AWS, ID truy cập bí mật AWS và tên vùng mặc định của bạn.

Nếu bạn không thích tải ảnh của mình lên, bạn có thể bỏ qua các bước cấu hình AWS và mã nhận xét về cách tải lên trong photo.py. Để chạy chương trình này sau khi khởi động Raspberry Pi mọi lúc, bạn có thể tạo ảnh tên tệp trong /etc/init.d và viết mã sau vào đó.

#! / bin / bash

# /etc/init.d/photo ### BEGIN INIT INFO # Cung cấp: seeed_photo # Bắt buộc-Bắt đầu: $ remote_fs $ syslog # Bắt buộc-Dừng: $ remote_fs $ syslog # Mặc định-Bắt đầu: 2 3 4 5 # Mặc định-Dừng: 0 1 6 # Mô tả ngắn gọn: chụp ảnh initscript # Mô tả: Dịch vụ này được sử dụng để quản lý việc chụp ảnh ### END INIT INFO trường hợp "$ 1" khi bắt đầu) echo "Bắt đầu chụp ảnh" /home/rxhf/photo.py &;; stop) echo "Dừng chụp ảnh" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) echo "Cách sử dụng: bắt đầu | dừng dịch vụ" thoát ra 1;; esac thoát 0

thiết lập quyền thực thi

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

và kiểm tra nó

sudo /etc/init.d/photo start

Nếu không có vấn đề gì, hãy dừng nó lại và thêm nó vào ứng dụng khởi động

sudo /etc/init.d/photo stop

mặc định ảnh sudo update-rc.d

LƯU Ý: Nếu bạn muốn khởi động cổng vào sau khi khởi động Raspberry Pi, hãy thêm mã khởi động cổng trong Wiki đã xem vào /etc/rc.local, giống như sau:

#! / bin / sh -e

# # rc.local # # Tập lệnh này được thực thi ở cuối mỗi cấp chạy nhiều người dùng. # Đảm bảo rằng tập lệnh sẽ "thoát 0" khi thành công hoặc bất kỳ giá trị # nào khác khi bị lỗi. # # Để bật hoặc tắt tập lệnh này, chỉ cần thay đổi # bit thực thi. # # Theo mặc định, tập lệnh này không làm gì cả. # In địa chỉ IP _IP = $ (tên máy-I) || true if ["$ _IP"]; sau đó printf "Địa chỉ IP của tôi là% s / n" "$ _IP" fi cd /home/rxhf/loriot/1.0.2 sudo systemctl stop pktfwd sudo gwrst wget https://cn1.loriot.io/home/gwsw/loriot -reatehf-r… -O loriot-gw.bin chmod + x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io thoát 0

Trang mạng

Chúng tôi đã triển khai trang web trên CentOS 7. Các bước sau sẽ hướng dẫn bạn cách triển khai.

Bước 1. Cài đặt Python3

sudo yum -y cài đặt epel-release

sudo yum -y cài đặt python36

Bước 2. Cài đặt pip Python và môi trường ảo

wget

sudo python36 get-pip.py sudo pip cài đặt virtualenv

Setp 3. Sao chép trang web của chúng tôi từ GitHub

sudo yum -y install git

git clone

Bước 4. Tạo và kích hoạt môi trường ảo

virtualenv -p python36 iotea-hb

cd iotea-hb nguồn bin / kích hoạt

Bước 5. Cài đặt các thư viện phụ thuộc

pip cài đặt pymysql

pip cài đặt dbutils pip cài đặt bình pip cài đặt websocket-client pip cài đặt cofigparser

Bước 6. Tạo cơ sở dữ liệu

sudo yum -y cài đặt mariadb mariabd-server

sudo systemctl kích hoạt mariadb sudo systemctl start mariadb mysql -uroot -p

và sau đó sử dụng iotea_hb.sql để tạo bảng.

Bước 7. Tạo db.ini và viết các mã này vào nó

[db]

db_port = 3306 db_user = root db_host = localhost db_pass = db_name = iotea

thay đổi đường dẫn của db.ini trong db.py

# trong db.py

# cf.read ("/ data / www / python3_iotea_hb / iotea / conf / db.ini") cf.read ("/ home // iotea-hb / db.ini")

Bước 8. Thay đổi cổng trong app.py và khởi động trang web:

# trong app.py

# app.run (debug = True, port = 6000) app.run (debug = True, port = 8080)

# trong thiết bị đầu cuối

pip cài đặt gunicorn gunicorn -w 5 -b 0.0.0.0:8080 app: app

bây giờ hãy truy cập 127.0.0.1:8080 trong trình duyệt web của bạn, bạn có thể thấy trang web, nhưng dữ liệu thời gian thực không được hiển thị.

Bước 9. Nhận dữ liệu loriot

Mở một thiết bị đầu cuối khác, nhập lại môi trường ảo và bắt đầu ứng dụng loriot:

cd iotea-hb

nguồn bin / kích hoạt gunicorn loriot: app

Chờ một lúc, bạn sẽ thấy dữ liệu hiển thị trên trang web, hoặc bạn có thể thay đổi wss trong loriot.py:

# trong loriot.py

#ws = create_connection ("wss: //cn1.loriot.io/app? token = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")

ws = create_connection ()

Bước 5: Hoạt động

Bạn có thể truy cập trang web của chúng tôi để xem dữ liệu thời gian thực:

  • Ở Ya'an
  • Để trình diễn

Đề xuất: