資料介紹
描述
四川雅安東北部的蒙頂山,山巒起伏,自西向東,掩映在一片綠海之中。這是 36 歲的鄧先生最熟悉的景象,他是他那一代為數不多的蒙頂茶師之一,擁有 50 畝(=3.3 公頃)的種植園,海拔 1100 米。鄧出身于制茶世家,但繼承家族遺產并非易事。“我們的茶葉生長在高海拔的有機環境中,以確保其卓越的品質。但同時生長密度低,成本高,出芽不均勻,茶葉采收困難。這就是為什么高山茶通常是小收成,它們的價值在市場上沒有體現。” 過去兩年,鄧一直在努力提高消費者對高山茶的認識,以提升其價值。而當他遇到范主時,
硬件連接
該項目的硬件可以分為 4 個部分:電源、傳感器、節點和網關。以下文章將向您展示如何逐步完成它。
電源部分
電源部分主要包含一塊太陽能電池板和一塊鋰電池,如果你只是為了演示而搭建這個項目,可以忽略它們。或者您可以按照上一教程安裝節點電源。
傳感器部分
在傳感器部分,由于傳感器較多,我們使用了一個氣象站,還做了一個亞克力支架來安裝它們。
如上圖所示,Digital Light Sensor 始終位于頂部,以便它可以收集照明信息。會產生熱量的傳感器安裝在亞克力支架的中間,例如 O2 傳感器、灰塵傳感器和 CO2 傳感器。最后,亞克力支架底部的溫濕度傳感器。
此外,土壤溫度和濕度傳感器單獨安裝在土壤中。
節點部分
節點部分是一個安裝在防水??盒中的 Seeeduino LoRaWan,它通過水接頭連接到電源和傳感器。其中,灰塵傳感器連接到LoRaWan的數字引腳D3,二氧化碳傳感器連接到引腳D4和D5,土壤傳感器連接到引腳D6和D7,O2傳感器連接到模擬引腳A1,光傳感器和氣壓傳感器連接到I2C端口。
注意:應在土壤傳感器的藍色(數據)電纜和紅色(Vcc)電纜之間添加一個 10k 電阻器。
Seeeduino LoRaWan 偶爾收集傳感器值,并通過 LoRa 將它們發送到網關。數據格式如下:
?
{ [0], /* Air tempreature(℃) */ [1], /* Air humidity(%) */ [2], /* Altitude(m) high byte */ [3], /* Altitude(m) low byte */ [4], /* CO2 concentration(PPM) high byte */ [5], /* CO2 concentration(PPM) low byte */ [6], /* Dust concentration(pcs/0.01cf) high byte */ [7], /* Dust concentration(pcs/0.01cf) low byte */ [8], /* Light intensity(lux) high byte */ [9], /* Light intensity(lux) low byte */ [10], /* O2 concentration(%) */ [11], /* Soil temperature(℃) */ [12], /* Soil humidity(%) */ [13], /* Battery voltage(V) */ [14] /* Sensor error code */ }
?
Sensor Error Code 字節中的每一位都有不同的含義,如下所示:
?
{ bit0: 1; /* Barometer Sensor Error */ bit1: 1; /* CO2 Sensor Error */ bit2: 1; /* Dust Sensor Error */ bit3: 1; /* Light Sensor Error */ bit4: 1; /* O2 Sensor Error */ bit5: 1; /* Soil Sensor Error */ reserved: 2; /* Reserved */ }
?
網關部分
網關部分是一個Raspberry Pi,它插入了網關模塊RHF0M301-868和PRI 2 Bridge RHF4T002,它安裝在防水??盒中并通過水接頭連接到電源和USB攝像頭。因為它使用專門的固件,請按照Seeed Wiki進行配置。
軟件編程
作為Hardware Connection,Software Programming也可以拆分,可以拆分為3個部分:Node、Gateway和Website。
節點部分
大部分 Node Part 需要的驅動已經包含在 origin_driver 中
文件夾。下面的庫需要手動安裝:
Adafruit_ASFcore
由于項目復雜,我們建議您使用 Microsoft Visual Studio 而不是 Arduino IDE。一個名為 Visual Micro 的插件可以幫助您使用 Visual Studio 構建 Arduino 項目,單擊此處了解更多信息。
為了更好的可讀性和可維護性,我們這次使用面向對象編程。該項目的類圖如下所示:
對于那些已經有 OOP 驅動程序的傳感器,我們重新打包以適應這個項目,對于其他傳感器,我們使用 OOP 重寫了它們的驅動程序。中間件層的Sensor類用于統一實際傳感器的接口,例如氣壓計傳感器可以同時采集溫度、濕度和高度,所以它有3個接口分別獲取溫度、濕度和高度。但是他們有不同的方法名,這會使獲取傳感器值的程序更加復雜,就像這樣:
?
barometer->getTemperature(); barometer->getHumidity(); barometer->getAltitude(); // ... another_sensor->getSomeValue(); // ...
?
但是使用 OOP,它看起來像這樣:
?
for (auto i = 0; i < SENSORS_COUNT; i++) { sensors[i]->getValue(); }
?
我們還打包了一個Application類,它實現了IApplication接口,IoTea.ino中的setup()和loop()方法可以調用Application對象中的setup()和loop()方法。
注意:USB 串行僅用于調試。調試后,請注釋掉setup()方法中的初始化代碼。
網關部分
Gateway Part 在主文件夾中的 Python 程序用于每小時拍照并上傳到 Amazon S3 服務器。在你使用它之前,確保 fswebcam 已經安裝在你的 Raspberry Pi 中:
?
sudo apt-get update && sudo apt-get install fswebcam
?
如果要上傳照片,請按照以下步驟配置您的 AWS。首先,使用以下命令將 AWS SDK 和 AWS CLI 安裝到您的 Raspberry Pi:
?
sudo pip install boto3 sudo pip install awscli
?
然后,運行 AWS CLI:
?
sudo aws configure
?
配置您的 AWS 訪問密鑰 ID、AWS 秘密訪問 ID 和默認區域名稱。
如果你不喜歡上傳你的照片,你可以跳過 AWS 配置步驟和 photo.py 中關于上傳的注釋代碼。為了每次啟動樹莓派后運行這個程序,可以在/etc/init.d中創建一個名為photo的文件,并寫入如下代碼。
?
#!/bin/bash # /etc/init.d/photo ### BEGIN INIT INFO # Provides: seeed_photo # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: photo taking initscript # Description: This service is used to manage photo taking ### END INIT INFO case "$1" in start) echo "Start taking photo" /home/rxhf/photo.py & ;; stop) echo "Stop taking photo" kill $(ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{ print $2 }') ;; *) echo "Usage: service photo start|stop" exit 1 ;; esac exit 0
?
設置執行權限
?
sudo chmod 777 /etc/init.d/photo sudo chmod 777 /home/rxhf/photo.py
?
并測試它
?
sudo /etc/init.d/photo start
?
如果沒有問題,將其停止并將其添加到啟動應用程序中
?
sudo /etc/init.d/photo stop sudo update-rc.d photo defaults
?
注意:如果你想在 Raspberry Pi 啟動后啟動網關,請將 Seeed Wiki 中的網關啟動代碼添加到 /etc/rc.local,如下所示:
?
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %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-risinghf-rhf2s008-rhf1257-SPI-0-latest.bin -O loriot-gw.bin chmod +x loriot-gw.bin ./loriot-gw.bin -f -s cn1.loriot.io exit 0
?
網站
我們把網站部署在CentOS7上。以下步驟將向您展示如何部署。
步驟 1. 安裝 Python3
?
sudo yum -y install epel-release sudo yum -y install python36
?
步驟 2. 安裝 Python pip 和虛擬環境
?
wget https://bootstrap.pypa.io/get-pip.py sudo python36 get-pip.py sudo pip install virtualenv
?
Setp 3. 從 GitHub 克隆我們的網站
?
sudo yum -y install git git clone https://github.com/SeeedDocument/iotea-hb.git
?
步驟 4. 創建并激活虛擬環境
?
virtualenv -p python36 iotea-hb cd iotea-hb source bin/activate
?
Step 5. 安裝依賴庫
?
pip install pymysql pip install dbutils pip install flask pip install websocket-client pip install cofigparser
?
步驟 6. 創建數據庫
?
sudo yum -y install mariadb mariabd-server sudo systemctl enable mariadb sudo systemctl start mariadb mysql -uroot -p
?
然后使用 iotea_hb.sql 創建表。
Step 7. 創建db.ini,將這些代碼寫入其中
?
[db] db_port = 3306 db_user = root db_host = localhost db_pass = db_name = iotea
?
在 db.py 中更改 db.ini 的路徑
?
# in db.py #cf.read("/data/www/python3_iotea_hb/iotea/conf/db.ini") cf.read("/home//iotea-hb/db.ini")
?
步驟 8. 在 app.py 中更改端口并啟動網站:
?
# in app.py #app.run(debug=True, port=6000) app.run(debug=True, port=8080)
?
?
# in terminal pip install gunicorn gunicorn -w 5 -b 0.0.0.0:8080 app:app
?
現在用瀏覽器訪問127.0.0.1:8080,可以看到網站,但是看不到實時數據。
步驟 9. 獲取洛里奧特數據
打開另一個終端,重新進入虛擬環境并啟動loriot app:
?
cd iotea-hb source bin/activate gunicorn loriot:app
?
稍等片刻,您會看到網站顯示數據,或者您可以在 loriot.py 中更改 wss:
?
# in loriot.py #ws = create_connection("wss://cn1.loriot.io/app?token=vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w==") ws = create_connection()
?
?
- Seeed Wio終端開源分享
- NET Core LoRaWAN客戶端使用Seeed LoRa E5模塊
- POL全光醫院解決方案 光纖到病房解決方案 光纖到診室解決方案(最新版)
- POL全光校園解決方案 光纖到教室解決方案 光纖到宿舍解決方案(最新版)
- 智慧水務解決方案
- 汽車解決方案概述 21次下載
- 詳談NB-IoT和LoRa的區別及應用 107次下載
- SI4432.SI4463.SI4438和LORA方案對比 33次下載
- NB-IoT和LoRa二者的區別資料下載
- NB-IoT和LoRa二者的特點和商業模式資料下載
- 一文讀懂:LoRa模塊使用原理資料下載
- LoRa技術網絡架構及與NB-IoT的對比資料下載
- LoRa芯片應用:自組網透傳、LoRaNET和LoRaWAN三種協議資料下載
- 基于LoRa智能路燈解決方案的相關案例
- 關于SMT回流焊中出現的缺陷及其解決方案資料下載 30次下載
- 怎么通過NFC輕松配置LoRa呢? 807次閱讀
- 智能LoRa水表ESD靜電浪涌保護方案說明 877次閱讀
- 基于LoRa實現的智慧農場設計方案 4353次閱讀
- LoRa組網結構和典型應用 7515次閱讀
- 星翼電子:LORA模塊ATK-LORA-01相關信息描述 6660次閱讀
- 無線遠傳水表LoRa存在哪些技術問題 2723次閱讀
- Axino:基于Semtech LoRa技術的集成智能制冷解決方案 1245次閱讀
- Semtech的LoRa技術在航空航天制造業實現創新的資產追蹤解決方案 1414次閱讀
- Semtech簡化LoRa?應用的地理定位開發 1667次閱讀
- Semtech與SK Telecom采用LoRa技術監測牲畜健康情況 2646次閱讀
- 智能節能路燈LoRa解決方案 1518次閱讀
- LoRa設計的常見10大問 6263次閱讀
- 深度解析LoRa和LoRaWAN的區別 9w次閱讀
- 基于Semtech的LoRa擴頻通信技術實現的超長距離低功耗物聯網解決方案 1149次閱讀
- 了解LoRa聯盟最新白皮書以及31個LoRa的問答 5801次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論