支持移远EC600S的SmartDtu平台,基于QuecPython
前言
本文的主要目的是說明青石SmartDtu到底做了哪些工作?我們在移遠硬件平臺EC600S上做了哪些支持?為什么說這套平臺是硬件開發(fā)者的福音?我們的初衷是解放廣大硬件開發(fā)者的雙手,提供一套成熟的嵌入式軟硬件解決方案,讓開發(fā)者尤其是硬件開發(fā)者專注于硬件本身。
基礎支持指我們的軟件和平臺支持移遠EC600S的基礎功能,比如定時器、溫濕度、PWM、GPIO、UART和FOTA。
資源管理是指通過軟件平臺可以通過串口和MQTT指令來管理EC600S系統(tǒng)上的資源,實現(xiàn)遠程數(shù)據(jù)采集和遠程控制,目前支持有遠程開啟定時器采集溫濕度,遠程控制GPIO引腳的開啟和關閉等等。
平臺支持是借助騰訊云平臺作為中間平臺,將EC600S硬件和青石的平臺連通起來,既可以滿足大量數(shù)據(jù)的穩(wěn)定性交互能力,又可以保障數(shù)據(jù)和通信的安全性。
硬件平臺
開發(fā)環(huán)境
代碼架構
定時器
溫濕度
GPIO
UART
FOTA
使用流程
版權信息
1 硬件平臺
我們的代碼運行在移遠的EC600S平臺上,開發(fā)語言是QuecPython,這是移遠官方基于MicroPython擴展的開發(fā)語言,專門用于移遠平臺的嵌入式開發(fā),在功能接口定義還是目錄結構形式都與MicroPython保持高度的一致。兩者同樣應用于嵌入式場景開發(fā),輕Python開發(fā)語言使得開發(fā)者上手更快,開發(fā)門檻大大降低。
2 開發(fā)環(huán)境
| 名稱 | 工具名稱 | 備注 |
|---|---|---|
| visual stutio code | QuecPython開發(fā) | 開發(fā) |
| QCOM | 串口工具 | 串口調試 |
| QPYcom | 燒錄工具和執(zhí)行環(huán)境 | 開發(fā)調試 |
3 代碼架構
3.1 代碼結構圖
bluestone_commom.py
這個文件是整個項目的公共文件,主要有一些獲取網(wǎng)絡狀態(tài)、設置網(wǎng)絡狀態(tài)、檢查文件是否存在和判斷路徑是否為URL等方法。
bluestone_config.py
這個文件主要是用于處理系統(tǒng)正常運行過程中用到的參數(shù),包括從文件中讀取參數(shù)、向文件中寫入?yún)?shù)和默認參數(shù)配置項等等。
bluestone_daemon.py
守護文件,主要目的是保證嵌入式系統(tǒng)在運行過程中的健康,一旦發(fā)生異常中斷或者斷線無法恢復的情況就會嘗試重啟系統(tǒng),目前還在開發(fā)中。
bluestone_fota.py
主要用來管理應用程序和固件的升級,其中應用程序支持多個文件路徑,固件包升級僅支持單個文件。
bluestone_gpio.py
主要用來管理系統(tǒng)中所有GPIO引腳的狀態(tài),包括讀取和寫入。
bluestone_main.py
系統(tǒng)的入口文件,負責啟動網(wǎng)絡守護線程、初始化配置文件、數(shù)據(jù)文件、初始化系統(tǒng)服務、MQTT服務、串口服務、定時器服務和看門狗服務。
bluestone_mqtt.py
MQTT客戶端管理工具,負責啟動MQTT,監(jiān)聽回調并解析回調指令和參數(shù),根據(jù)解析出的回調指令和參數(shù)執(zhí)行相對應的命令。
bluestone_mqtt_tencent.py
Tencent MQTT客戶端管理工具,負責啟動MQTT,監(jiān)聽回調并解析回調指令和參數(shù),根據(jù)解析出的回調指令和參數(shù)執(zhí)行相對應的命令。
bluestone_pwm.py
PMW控制邏輯,負責打開和關閉PMW端口,可以模擬實現(xiàn)呼吸燈。
bluestone_socket.py
用于初始化TCP/IP socket,連接客戶端并接收和發(fā)送指令,未完待續(xù)。
bluestone_temperature.py
采集板載溫濕度傳感器的數(shù)值。
bluestone_timer.py
管理定時器,按照一定參數(shù)啟動或停止定時器。
bluestone_uart.py
管理串口,按照傳入的參數(shù)啟動串口,讀取串口參數(shù)并解析命令,如果有滿足條件的命令就去執(zhí)行,包括重啟系統(tǒng)等。
bluestone_config.json
默認配置文件,文件內有關于UART0~2的配置參數(shù)和Tencent MQTT的啟動參數(shù),用戶可以按照自己的實際情況進行修改。
{
"uart2": {
"parity": 0,
"baud_rate": 115200,
"flow_control": 0,
"stop_bits": 1,
"data_bits": 8
},
"mqtt_tencent": {
"product_id": "輸入你在騰訊云上的產(chǎn)品編號",
"pub_topic": "event",
"product_secret": "輸入你在騰訊云上的產(chǎn)品密鑰",
"sub_topic": "control"
},
"uart1": {
"parity": 0,
"flow_control": 0,
"baud_rate": 115200,
"stop_bits": 1,
"data_bits": 8
},
"uart0": {
"baud_rate": 115200,
"parity": 0,
"flow_control": 0,
"stop_bits": 1,
"data_bits": 8
}
}
4 定時器
傳入指令如下:
{
"timer1": {
"status": 1,
"period": 5000,
"mode": 1,
"callback": "aht10"
}
}
timer1: EC600S有四個定時器,分別是timer0,timer1,timer2,timer3,其中timer0被系統(tǒng)占用,僅可以使用timer1~timer3;
status: 定時器任務的狀態(tài);0表示關閉,1表示啟動;
period: 定時器運行周期,單位是毫秒;服務端支持的周期是5000~30000毫秒;
mode: 定時器運行模式,0表示僅運行一次,1表示周期運行;
callback: 定時器每循環(huán)一次要執(zhí)行的函數(shù)名稱,目前僅支持"aht10"和"gpio",分別表示采集溫濕度和讀取GPIO引腳狀態(tài);多個回調函數(shù)之間用逗號分隔。
注:定時器參數(shù)配置成功后系統(tǒng)會自動重啟。
5 溫濕度
溫濕度的采集是通過定時器執(zhí)行的,按照如上配置,只要在callback中填寫"aht10"即可。
6 GPIO
控制指令如下:
{
"gpio": {
"gpio1": 1,
"gpio2": 1,
"gpio3": 0,
"gpio4": 1,
"gpio5": 1,
"gpio6": 1,
"gpio7": 1,
"gpio8": 1,
"gpio9": 0,
"gpio10": 1,
"gpio11": 0,
"gpio12": 1,
"gpio13": 1,
"gpio14": 1
}
}
gpio: 表示當前指令是用于控制GPIO的;
gpio1: 表示控制GPIO1號引腳,0表示低電平,1表示高電平,以此類推;
7 UART
{
"uart1": {
"baud_rate": 115200,
"data_bits": 8,
"flow_control": 0,
"parity": 0,
"stop_bits": 1
}
}
uart1: 表示當前串口編號,支持uart0,uart1,uart2;
baud_rate: 串口波特率;
data_bits: 串口數(shù)據(jù)位;
flow_control: 流量控制;
parity: 校驗位;
stop_bits: 停止位;
注:串口參數(shù)配置成功后系統(tǒng)會自動重啟。
8 FOTA
{
"fota": {
"mode": 0,
"url": "http://app.com/download"
}
}
fota: 表示升級配置參數(shù);
mode: 0表示升級應用程序,在這種模式下url可以支持多個,不同url之間以逗號分隔;1表示升級固件包,在這種模式下僅支持一個url地址;
url: 應用程序或固件包的地址,不支持https;
注:升級成功后系統(tǒng)會自動重啟。
9 系統(tǒng)使用
下面將從新建產(chǎn)品到設備數(shù)據(jù)等8個環(huán)節(jié)來演示系統(tǒng)使用方法。
青石SmartDtu平臺,登錄賬號:dtu, 登陸密碼:d123qwe
9.1 新建產(chǎn)品
1.點擊左側菜單欄進入產(chǎn)品列表頁
2.點擊新建打開新建產(chǎn)品窗口,填寫產(chǎn)品信息
3.產(chǎn)品創(chuàng)建成功
9.2 設備硬件配置
9.2.1 驅動安裝
進入移遠官方下載頁面,下載 USB驅動 ,如下圖:
注意操作系統(tǒng),目前來看是沒有找到 Mac 和 Linux 下的驅動,暫不知道是沒有提供還是根本不需要。
雙擊安裝即可。
驗證是否安裝成功
將電腦與開發(fā)板連接,會發(fā)現(xiàn)電源狀態(tài)燈亮起(為紅色),之后長按開機按鈕,大約 5秒 后松手,稍等 5秒 左右,發(fā)現(xiàn)NET狀態(tài)燈開始閃爍(移遠COM端口驅動,間隔大約2秒),進入電腦的 設備管理器 ,查看 端口(COM 和 LPT) 項,發(fā)現(xiàn)如下圖所示設備即表示安裝成功!
溫馨提示: 在官方文檔中,這里寫的比較簡陋,只說了將開發(fā)板與電腦連接后就能看到設備,實際發(fā)現(xiàn)如果不開機,是看不到設備的!還有,官方文檔中的配圖顯示有三個設備,實際發(fā)現(xiàn)只有兩個,并沒有配圖中提到的指令交互串口,產(chǎn)生這個現(xiàn)象的原因是設備在出廠的時候燒錄的固件不是
Python固件,在燒錄完Python固件后就能看到
9.2.2 QPYcom圖形化工具安裝
進入移遠官方下載頁面,下載 QPYcom 圖形化工具 ,如下圖:
這個下載完成后是一個壓縮包,解壓后雙擊 QPYcom.exe 可執(zhí)行文件即可。
溫馨提示:這個軟件運行完成后會在相同路徑下生成一些其他文件,如:
Config.ini等,建議將其按照習慣整理到一個空文件夾下。
QPYcom 軟件運行結果如下所示:
9.2.3 設備配置
選擇串口為圖中串口
打開下載頁,點擊創(chuàng)建按鈕新建項目
進入移遠官方下載頁面,下載 固件包 ,
下載后解壓為QPY_V0004_EC600S_FW.zip文件,選擇固件
點擊下載固件,將固件包下載至開發(fā)板
進入控制程序下載頁面,下載 控制程序 ,解壓,
將bluestone_config.json文件中的product_id和product_secret替換為新建產(chǎn)品的產(chǎn)品id與密鑰(從產(chǎn)品列表頁獲取)
導入圖中所選代碼文件
點擊下載腳本,將控制程序下載至開發(fā)板
點擊文件,關閉串口后重新打開,如圖所示啟動設備
9.3 新建設備
本系統(tǒng)采用動態(tài)注冊邏輯,配置好設備參數(shù)之后,只要設備上線,即可注冊至系統(tǒng),無需手動創(chuàng)建或導入設備
9.4 設備管理
點擊左側菜單欄中設備列表,進入設備列表頁面后點擊設備行內管理按鈕即可管理設備
9.4.1 編輯設備
如圖,點擊編輯按鈕即可編輯設備,目前僅支持修改設備備注
9.4.2 刪除設備
點擊刪除按鈕,即可刪除設備
注:由于使用動態(tài)注冊,若刪除后設備仍然存在,收到設備信號后設備將會重新注冊,所以刪除設備前請確保設備已物理刪除
9.4.3 狀態(tài)重置
點擊狀態(tài)重置按鈕,可將設備狀態(tài)重置為未激活狀態(tài)
9.4.4 設備禁用
點擊設備啟用禁用的滑塊開關,可更改設備的啟用狀態(tài),設備禁用后,將不再收取該設備的消息
9.5 設備溫濕度管理
點擊左側菜單欄中設備列表,進入設備列表頁面后點擊設備行內溫濕度按鈕即可進行設備溫濕度管理
注:設備狀態(tài)為離線或未激活時無法進行溫濕度管理
9.5.1 查看設備溫濕度數(shù)據(jù)
9.5.2 查看溫濕度變化趨勢
點擊左上數(shù)據(jù)圖表按鈕,可切換至圖表顯示,查看設備溫濕度變化趨勢
9.5.3 溫濕度采集配置
更改采集相關參數(shù)后同步設置,可調整設備是否上報或設備上報周期(最小60s,最大15min)
9.6 設備GPIO管理
點擊左側菜單欄中設備列表,進入設備列表頁面后點擊設備行內GPIO按鈕即可進行設備GPIO管理
注:設備狀態(tài)為離線或未激活時無法進行GPIO管理
點擊單個GPIO滑塊開關或者點擊一鍵開啟、一鍵關閉按鈕,即可更改設備GPIO狀態(tài)
9.7 設備UART管理
點擊左側菜單欄中設備列表,進入設備列表頁面后點擊設備行內UART按鈕即可進行設備UART管理
注:設備狀態(tài)為離線或未激活時無法進行UART管理
注:使用UART功能需要UART與TTL轉USB模塊連接,詳細內容參照 官方文檔
9.7.1 設備UART數(shù)據(jù)
9.7.2 設備UART串口配置
如圖所示,進入UART參數(shù)設置
選擇串口更改參數(shù)保存后,可實現(xiàn)設備UART串口配置的修改
9.7.3 設備UART下發(fā)自定義json數(shù)據(jù)
進入移遠官方下載頁面,下載 QCOM 串口調試工具 ,如下圖:
解壓后雙擊 QCOM_V1.6.exe 可執(zhí)行文件即可,下圖為初始頁面:
接下來按照官方文檔測試一下
在 設備管理器 --> 端口(COM 和 LPT) 中找到 Quectel USB AT Port 的端口值,并在 QCOM 中選擇端口,打開,發(fā)送發(fā)送測試指令: AT+GMR,注意先不要修改其他配置。如下所示:
溫馨提示:如果打開的時候打開失敗,按一下復位按鈕,帶復位后再嘗試連接。拿到全新開發(fā)板后未做其他修改,實測連不上,需要復位。
測試結果
如上所示,能夠返回固件版本號即表示測試成功!
接下來通過UART下發(fā)自定義json數(shù)據(jù)在 設備管理器 --> 端口(COM 和 LPT) 中找到 USB-SERIAL CH340 的端口值,并在 QCOM 中選擇端口打開,
回到UART參數(shù)設置頁面,輸入隨機json數(shù)據(jù),點擊發(fā)送,
自定義數(shù)據(jù)下發(fā)成功
9.8 設備數(shù)據(jù)
9.8.1 設備歷史數(shù)據(jù)
點擊左側菜單欄中設備數(shù)據(jù),可查看設備所有歷史消息數(shù)據(jù)
9.8.2 首頁統(tǒng)計
數(shù)量概況
數(shù)量變化趨勢
排行榜
10 版權信息
MIT
作者:DanielWise
出處:http://www.cnblogs.com/danielWise/
本文版權歸作者和博客園共有,歡迎轉載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
總結
以上是生活随笔為你收集整理的支持移远EC600S的SmartDtu平台,基于QuecPython的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webrtc源码分析- jitter d
- 下一篇: PHP加密JS解密