Mục lục:

Giải pháp LoRa IoTea đã xem: 5 bước
Giải pháp LoRa IoTea đã xem: 5 bước

Video: Giải pháp LoRa IoTea đã xem: 5 bước

Video: Giải pháp LoRa IoTea đã xem: 5 bước
Video: Hướng dẫn train Lora Kiến trúc, Nội ngoại thất với Stable Diffusion chi tiết, dễ hiểu 2024, Tháng bảy
Anonim
Đã xem giải pháp LoRa IoTea
Đã xem giải pháp LoRa IoTea

Một hệ thống thu thập thông tin tự động được áp dụng cho trồng chè. Nó là một phần của thu thập thông tin nông nghiệp thông minh.

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

Nông nghiệp thông minh là ứng dụng công nghệ Internet of Things vào nông nghiệp truyền thống, sử dụng cảm biến và phần mềm để điều khiển sản xuất nông nghiệp thông qua nền tảng di động hoặc máy tính, làm cho nông nghiệp truyền thống trở nên “thông minh” hơ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 trên mặt 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 được thu hoạch nhỏ và giá trị của chúng không được phản ánh trên thị trường.” Hai năm nay, họ Đặng đã cố gắng nâng cao nhận thức của người tiêu dùng về chè núi cao để phát huy 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. Giải pháp Seeed IoTea nhằm mục đích hỗ trợ nông dân trồng chè quản lý tốt hơn các đồn điền mà không làm thay đổi các tập quán trồng chè truyền thống và cung cấp dữ liệu môi trường theo thời gian thực từ đồn điền trên một nền tảng mở.

Bao gồm các cảm biến, nút và cổng, IoTea thu thập dữ liệu thời gian thực về các yếu tố có thể ảnh hưởng đến chất lượng trà trong quá trình canh tác và sản xuất, bao gồm nhiệt độ và độ ẩm, CO2, O2, PM và tiếp xúc với ánh sáng. Dữ liệu được thu thập bởi các cảm biến, được gửi bởi các nút tới cổng và cuối cùng là đám mây và có thể truy cập được đối với khách hàng cuối trên trang web.

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

Bước 1: Kết nối Gateway

Cổng được cài đặt riêng trong một hộp. Xem xét vấn đề tản nhiệt, chúng tôi đã bổ sung thêm 2 quạt. Một là để tản nhiệt cho Raspberry Pi, còn lại là để lưu thông không khí bên trong và bên ngoài. Hộp cổng được đặt trong nhà của một nông dân, vì vậy chúng tôi không cần xem xét vấn đề về nguồn điện của nó.

Hình ảnh
Hình ảnh

Bước 2: Kết nối nút

Nút là đầu cuối của dữ liệu và tất cả dữ liệu gốc được lấy từ đây. Có 6 cảm biến được kết nối với nút, ngoài cảm biến nhiệt độ và độ ẩm của đất, chúng tôi đặt các cảm biến khác bên trong hộp cửa gió.

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Nút được đặt trong một hộp không thấm nước. Để có kết nối tốt hơn với nút, chúng tôi tạo một bảng điều hợp. Cuối cùng, chúng tôi sẽ cung cấp liên kết tải xuống sơ đồ của bảng này. Như hình dưới đây, cáp của các cảm biến được cắm vào bảng mạch bộ điều hợp thông qua các khối thiết bị đầu cuối. Chúng tôi sử dụng 3 ống MOS (SI2301) để xây dựng các mạch công tắc để điều khiển bật tắt các cảm biến và quạt. Quạt được dùng để hạ nhiệt. Chúng tôi có một cảm biến nhiệt độ (DS18B20) được gắn trên bảng. Nó có thể cho chúng ta biết nhiệt độ bên trong của hộp và sau đó vi điều khiển quyết định có bật quạt hay không. Chúng tôi sử dụng một số điện trở để làm một mạch phân áp để đo điện áp acquy axit-chì. Cuối cùng, chúng tôi dành 3 giao diện IIC và cổng nối tiếp trên bo mạch để mở rộng và gỡ lỗi sau này.

Hình ảnh
Hình ảnh

Hãy nói về vấn đề cung cấp điện của nút. Nút được đặt ngẫu nhiên trong đồn điền chè, vì vậy phương pháp cấp điện truyền thống không còn được áp dụng. Sử dụng giải pháp điện mặt trời là một ý kiến hay. Có rất nhiều giải pháp được cung cấp trên thị trường hiện tại. Chúng tôi có thể chọn một trong số chúng đáp ứng nhu cầu của chúng tôi. Có 3 phần trong giải pháp mà chúng tôi đã chọn: bảng điều khiển năng lượng mặt trời, bộ điều khiển sạc năng lượng mặt trời và pin axit chì. Để thu năng lượng mặt trời tốt hơn, chúng tôi đặt tấm pin mặt trời lên trên cùng của giá đỡ và điều chỉnh góc của nó để đảm bảo rằng nó hướng ra mặt trời. Chúng tôi đã đặt bộ điều khiển sạc năng lượng mặt trời vào cùng một hộp với nút. Vì không có thêm chỗ bên trong hộp, chúng tôi phải tìm một hộp chống thấm mới để đặt pin axit chì.

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Bước 4: Cấu hình phần mềm

Nút

Trong phần này, chúng tôi sẽ giới thiệu cấu hình phần mềm chủ yếu của nút.

DataFormat

Dữ liệu được nút tải lên cổng:

unsigned char Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};

Ý nghĩa của từng bit dữ liệu:

Lora_data [0] : Nhiệt độ không khí, ℃

Lora_data [1] : Độ ẩm không khí,%

Lora_data [2] : Độ cao 8, m

Lora_data [3] : Độ cao thấp 8

Lora_data [4] : Nồng độ CO2 cao tám, ppm

Lora_data [5] : Nồng độ CO2 thấp tám

Lora_data [6] : Nồng độ bụi cao tám, chiếc / 0,01cf

Lora_data [7] : Nồng độ bụi thấp tám

Lora_data [8] : Cường độ ánh sáng cao 8, lux

Lora_data [9] : Cường độ ánh sáng thấp 8

Lora_data [10] : Nồng độ O2,% (dữ liệu thô chia cho 1000)

Lora_data [11] : Nhiệt độ đất, ℃

Lora_data [12] : Độ ẩm đất,%

Lora_data [13] : Điện áp pin, v

Lora_data [14] : Mã lỗi cảm biến

Mã lỗi:

Lora_data [14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]

Ý nghĩa của từng bit:

bit 0: 1 ---- Lỗi cảm biến nhiệt độ & độ ẩm & khí áp kế (BME280)

bit 1: 1 ---- Lỗi cảm biến carbon Dioxide (MH-Z16)

bit 2: 1 ---- Lỗi cảm biến bụi (PPD42NS)

bit 3: 1 ---- Lỗi cảm biến ánh sáng kỹ thuật số

bit 4: 1 ---- Lỗi cảm biến oxy (ME2-O2-Ф20)

bit 5: 1 ---- Lỗi cảm biến nhiệt độ & độ ẩm của đất

bit 6: Dành riêng

bit 7: Dành riêng

Chúng tôi đã tạo một Error_code_transform.exe, hãy mở nó và nhập mã lỗi ở dạng thập lục phân, bạn sẽ nhanh chóng biết được cảm biến nào đang bị lỗi. Liên kết tải xuống ở cuối bài viết này.

Điều chỉnh tham số: a) Chu kỳ truyền dữ liệu

// seeedtea.ino

#defineinterval_time 600 // giây

Tham số này có thể thay đổi để thay đổi chu kỳ truyền dữ liệu. Trong mỗi chu kỳ, việc thu thập dữ liệu mất khoảng 1 phút. Vì vậy, không nên thay đổi giá trị này xuống dưới 60 giây.

b) Thời gian khởi động cảm biến bụi

//seeedtea.ino

#definePeriat_time 30000 // Thời gian khởi động DustSensor, milise giây //Dust_other.cpp #definesampletime_ms 30000 // samplingtime30 giây

c) Hệ số điện áp

//POWER_Ctrl.cpp

#defineBattery_coe Hệ số 0,159864 // Giá trị ADC × Hệ số pin = pin_voltage #defineSolar_coe Hệ số 0,22559 // Giá trị ADC × Hệ số năng lượng mặt trời = solar_voltage

Hai thông số này được tính toán dựa trên mạch phân áp.

d) Ngưỡng nhiệt độ mở quạt

//POWER_Ctrl.cpp

#defineFan_start_temp 45 // ngưỡng nhiệt độ #defineFan_start_light 500 // cường độ ánh sáng

Khi nhiệt độ thực tế vượt quá ngưỡng, quạt sẽ bắt đầu hạ nhiệt.

e) Tham số khởi tạo cảm biến O2

//Oxygen.cpp

# defineO2_percentage 208,00 //20,8%

f) Công tắc macro

//seeedtea.ino

#defineLORA_RUN // Sau khi nhận xét, quá trình khởi tạo Lora và quá trình truyền dữ liệu sẽ dừng #defineSENSOR_RUN // Sau khi nhận xét, các bộ cảm biến bên ngoài sẽ ngừng hoạt động //POWER_Ctrl.cpp #defineFAN_ON // Chỉ thử nghiệm, Ứng dụng thực tế cần được nhận xét / **** *** Chế độ điều khiển DS18B20 ********************** / #defineSlower_Mode // Chế độ chậm để chọn nhiệt độ. Nhận xét là chế độ nhanh

g) Ánh xạ ghim

D2: Đèn báo LED và bộ vi điều khiển đặt lại bên ngoàiIIC: SCL và SDA

//Dust_other.h

#defineDust_pin 3 // Cảm biến bụi //CO2.cpp # defineCO2_serial Serial1 // sử dụng cổng phần cứng (D0 & D1) //seeedtea.ino #definedataPin 6 // Chân dữ liệu đất #defineclockPin 7 // Chân đồng hồ đất // POWER_Ctrl. h # defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Fan #defineAir_CtrlPin 10 // Chân điều khiển cho các cảm biến đặt trong louverbox #defineSoil_CtrlPin 11 // Chân công tắc cảm biến độ ẩm và nhiệt độ đất #defineBattery_pin A2 // Đo điện áp pin #define /Solar_pin A3 // Đo điện áp pin #define /Solar_pin A3 / Đo điện áp bảng điều khiển năng lượng mặt trời // Oxygen.h # defineO2_pin A1 // Cảm biến O2

h) Bộ đếm thời gian cho cơ quan giám sát

Bộ đếm thời gian của cơ quan giám sát được sử dụng để theo dõi trạng thái hoạt động của hệ thống. Khi hệ thống hoạt động không bình thường, nút sẽ được thiết lập lại để nó có thể chạy liên tục trong thời gian dài.

Thư viện được tham chiếu:

  • Adafruit_SleepyDog.h đã được thêm vào dự án
  • Adafruit_ASFcore-master.zip được đóng gói trong thư mục dự án và cần được thêm thủ công vào Arduino IDE.

Các chức năng liên quan:

Bật cơ quan giám sát

int WatchdogSAMD:: enable (int maxPeriodMS, bool isForSleep)

Thông số đầu vào:

Int maxPeriodMS: Thời gian chờ tính bằng mili giây. Tối đa cho phép là 16000 mili giây.

giá trị trả về:

Loại int, trả về thời gian chờ thực tế

Đặt lại cơ quan giám sát

void WatchdogSAMD:: reset ()

Gọi chức năng này để đặt lại bộ hẹn giờ cho chó giám sát, được gọi là "cho chó ăn." Vượt quá thời gian chờ mà không đặt lại sẽ khiến nút khởi động lại.

Dừng cơ quan giám sát

void WatchdogSAMD:: disable ()

Cổng vào

Trong phần này, chúng tôi sẽ giới thiệu cách kết nối với máy chủ Loriot.

Bước 1: Đăng ký Loriot Server Gateway

a) Người dùng mới cần đăng ký tài khoản trước, nhấp vào địa chỉ đăng ký. Điền UserName, Password và địa chỉ email để đăng ký, sau khi đăng ký sẽ có email gửi cho bạn, vui lòng làm theo hướng dẫn trong email để kích hoạt.

b) Sau khi kích hoạt thành công, nhấp vào đây để đăng nhập. Tầng mặc định là “Mạng cộng đồng”, hỗ trợ 1 Gateway (RHF2S001) và 10 nút.

c) Vào Dashboard -> Gateway, nhấp vào Add Gateway start để thêm Gateway.

d) Chọn Raspberry Pi 3

e) Đặt như sau:

  • Đầu cuối vô tuyến -> RHF2S001 868/915 MHz (SX1257)
  • XE BUÝT -> SPI

f) Điền địa chỉ MAC của RHF2S001 của bạn, phải ở định dạng b8: 27: eb: xx: xx: xx. Và cũng nhập thông tin Vị trí Cổng vào.

g) Nhấp vào “Đăng ký cổng Raspberry Pi” để hoàn tất quá trình đăng ký.

Hình ảnh
Hình ảnh

h) Nhấp vào cổng đã đăng ký để vào trang cấu hình, chuyển đổi “Gói tần suất” theo cách thủ công, gói của bạn ở đây do loại RHF2S001 của bạn quyết định, gói có sẵn là CN470 , CN473 , CN434 , CN780 , EU868, sau khi được chọn, vui lòng làm mới trang để có được kênh chính xác. Trong wiki này, chúng tôi chọn EU868.

i) Chạy lệnh trong thiết bị đầu cuối putty :

cd /home/rxhf/loriot/1.0.2

sudo systemctl dừng pktfwd sudo gwrst wget > -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io

j) Finish gateway registration. You will see the gateway is Connected now. Next is to register node.

Hình ảnh
Hình ảnh

Bước 2: Thiết bị nút kết nối máy chủ Loriot

a) Nhận các kênh cổng có sẵn

Các kênh cổng hiện tại có thể được lấy từ Bảng điều khiển -> Cổng -> Cổng của bạn, bạn có thể xem các kênh có sẵn như hình bên dưới.

Hình ảnh
Hình ảnh

b) Cấu hình Seeeduino LoRAWAN GPS (RHF3M076)

Mở màn hình nối tiếp của ArduinoIDE, nhấn vào lệnh bên dưới.

tại + ch

Để xác nhận kênh mặc định của GPS Seeeduino_LoRAWAN, bạn sẽ nhận được 3 kênh. Nếu không có kênh khả dụng, bạn có thể thay đổi các kênh của Seeeduino_LoRAWAN bằng lệnh bên dưới.

tại + ch = 0, 868,1

at + ch = 1, 868,3 at + ch = 2, 868,5

Sau đó, bạn có thể sử dụng tại + ch một lần nữa để kiểm tra.

c) Thêm Seeeduino_LoRAWAN GPS làm ABP NodeLog trong máy chủ Loriot, Nhấp vào Bảng điều khiển -> Ứng dụng -> SimpleApp. Nhấp vào Nhập ABP , đầu vào bên dưới các mục

  • DevAddr: Seeeduino_LoRAWAN GPS nhận được thông qua lệnh "AT + ID" (Lưu ý: Loriot không hỗ trợ trình kết nối dấu hai chấm, cần phải xóa thủ công)
  • FCntUp : Setto 1
  • FCntDn : Setto 1
  • NWKSKEY : Giá trị mặc định 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY : Giá trị mặc định 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI : DEVEUI, Seeeduino_LoRAWAN GPS thông qua lệnh "AT + ID"
Hình ảnh
Hình ảnh

Nhấp vào nút Nhập thiết bị để kết thúc quá trình nhập thiết bị. Bây giờ chọn Dashboard-> Applications -> SampleApp, bạn sẽ thấy ABP Node mới mà bạn vừa thêm vào.

Hình ảnh
Hình ảnh

d) Gửi dữ liệu từ Seeeduino_LoRAWAN

CHÚ Ý! Đây chỉ là một bài kiểm tra.

Quay lại màn hình nối tiếp của ArduinoIDE, gửi lệnh:

AT + CMSGHEX = "0a 0b 0c 0d 0e"

Sau đó vào Dashboard -> Applications -> SampleApp -> Device, nhấn vào Node Device EUI hoặc DevAddr, bạn sẽ tìm thấy dữ liệu vừa gửi tại đây.

Hình ảnh
Hình ảnh

Để biết chi tiết, vui lòng tham khảo wiki này.

Bước 5: Xây dựng trang web

Công cụ liên quan

  • virtualenv
  • Python3
  • Gunicorn
  • Người giám sát
  • Nginx
  • MySQL

Chúng tôi sử dụng CentOS7 làm môi trường triển khai thử nghiệm

virtualenv

Sử dụng virtualenv để xây dựng một môi trường sản xuất python3 độc lập

a) cài đặt

pip cài đặt virtualenv

b) tạo môi trường ảo python3

virtualenv -p python3 iotea

c) khởi động môi trường ảo và nhập thư mục iotea

bin nguồn / kích hoạt

d) môi trường tồn tại

hủy kích hoạt

Python3

a) cài đặt

yum cài đặt epel-release

yum cài đặt python36

b) cài đặt thư viện phụ thuộc PyMySQL, DBUtils, Flask, websocket-client, configparser

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 configparser

Gunicorn

a) cài đặt (trong môi trường Python3)

pip cài đặt gunicorn

b) chạy dự án bình (trong thư mục dự án iotea)

gunicorn -w 5 -b 0.0.0.0:5000 app: ứng dụng

c) chạy websocket-clint để lấy dữ liệu loriot

gunicorn loriot: ứng dụng

d) xem cây quy trình Gunicorn

pstree -ap | grep gunicorn

Người giám sát

a) cài đặt (người dùng gốc)

người giám sát cài đặt pip

b) tạo tệp cấu hình

echo_supervisord_conf> /etc/supervisord.conf

c) tạo một thư mục và giới thiệu cấu hình thư mục

mkdir -p /etc/supervisor/conf.d

Chỉnh sửa /etc/supervisord.conf và sửa đổi trường tệp trong [bao gồm] ở cuối tệp.

Lưu ý rằng bạn cần loại bỏ dấu ';' phía trước hai dòng này, là ký tự bình luận.

[bao gồm]

Files = /etc/supervisor/conf.d/*.conf

Có nghĩa là để giới thiệu /etc/supervisor/conf.d/. Tệp cấu hình sau được sử dụng làm tệp cấu hình quy trình (được giám sát bởi người giám sát).

d) cấu hình đến (trong thư mục iotea)

cp iotea.conf /etc/supervisor/conf.d/

cp loriot.conf /etc/supervisor/conf.d/

e) mở phục vụ iotea

superviosrctl tải lại # tải lại tệp cấu hình

superviosrctl start loriot # mở tiếp nhận dữ liệu loriot superviosrctl start iotea # mở ứng dụng iotea flask

f) các hoạt động phổ biến khác

supervisorctl reload # tải lại tệp cấu hình

supervisorctl update supervisorctl start xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl help # view more command

Nginx

a) cài đặt

yum install -y nginx

b) cấu hình

cp NginxIotea.conf /etc/nginx/conf.d/

c) bắt đầu Nginx

systemctl start nginx.service

MySQL

a) các thông số liên quan

user = 'root'

passwd = '1234' db = 'iotea' port = 3306

b) tệp

iotea_iotea.sql

c) tệp cấu hình

db.ini

Đề xuất: