案例簡介
Python輕應用引擎
py_engine(Python輕應用引擎)以MicroPython為基礎打造而成,基于py_engine可以快速實現IoT場景連云、控端、AI等最常見功能??焖偕鲜治臋n和編程接口請參考Python輕應用快速上手。
連云:支持基于linkit連接阿里云物聯網平臺。
控端:支持PWD、UART、SPI、I2C、ADC、DAC、GPIO等基本硬件接口控制。
AI:支持端上AI和云端AI能力,覆蓋人臉、人體、視頻、文字等150+場景。
py_engine 默認作為一個組件存在于alios things 中。
py_engine_demo 依賴了py_engine 組件,主要功能如下:
注冊python命令。
啟動python虛擬機。
py_engine_demo 只有一個appdemo.c,注冊了python cli 命令后就退出了,等待用戶指令啟動python虛擬機。
JavaScript輕應用
JavaScript輕應用引擎是一套運行在資源受限設備上的輕量級應用軟件框架。
業務應用代碼腳本化,使用JavaScript腳本迅速構建輕應用。 嵌入式系統底座和應用完全解耦,使得IoT設備端應用生態的廣度大幅拓寬。
Runtime采用JavaScript引擎加載用戶腳本代碼并執行,配合高可用的服務和工具提供應用的在線分發、更新及運維。
Runtime采用JavaScript應用引擎加載用戶腳本代碼并執行,配合高可用的服務和工具提供應用的在線分發、更新及運維。
無需編譯、燒錄即可開發在物聯網設備上運行的輕量級應用,快速開發,高效運維。
可通過云存儲托管設備端應用和資源,也通過集成云服務API,使得云端計算能力獲得在設備端的延伸。
基礎知識
基礎目錄結構
├── haas_dev_demo.c # 該solution核心打印輸出代碼,入口**application_start**
├── k_app_config.h # 內核組件的配置開關,優先級低于**k_config.h**
├── maintask.c # 系統主任務入口處理,入口**aos_maintask**
├── Makefile # aos make編譯時入口
├── package.yaml # 編譯系統配置文件
└── SConstruct # Makefile => Scon => aostools
組件依賴方法
在package.yaml 中增加py_engine及amp組件依賴 py_engine是Python輕應用引擎的組件,amp是JavaScript輕應用引起的組件。
物料清單
HaaS100 硬件
案例實現
硬件連接
該案例只需要連接電源線以及串口線,如下圖所示:
軟件實現
AliOS Things開發環境搭建
開發環境的搭建請參考《aos-studio使用說明之搭建開發環境》,其中詳細的介紹了AliOS Things 3.3的IDE集成開發環境的搭建流程。
代碼下載 py_engine代碼下載請參考
,其中, > 選擇解決方案:"haas開發框架JS引擎及Python引擎簡單示例" > 選擇開發板:HaaS200
編譯
燒錄
由于該demo的資源文件位于/data,分區,因此燒錄的時候需要燒錄littlefs.bin,方法如下:
haas100將hardware/chip/haas1000/package.yaml文件中以下代碼段的注釋打開:
program_data_files:
- filename: release/write_flash_tool/ota_bin/littlefs.bin
address: 0xB32000
haas200將hardware/chip/rtl872xd/package.yaml文件中以下代碼段的注釋打開:
program_data_files:
- filename: prebuild/littlefs.bin
address: 0x08314000
參考[《aos-studio使用說明之燒錄固件》](https://g.alicdn.com/alios-things-3.3/doc/burn_image.html)。
驗證Python功能
連接串口,通過python命令進入python repl模式。
# python
# python on HaaS100 by 2021-03-17, press ctrl+d to exit!
>>> print("hello-world")
hello-world
驗證JavaScript功能
連接串口,通過amp_example命令進入JavaScript模式。
amp_example
執行完后,HaaS200板子上燈會開始閃爍,串口打印出led設置的信息。
總結
該demo只依賴AliOS Things,不依賴具體的硬件,通過這個demo ,默認可以將py_engine 按照兩種不同的方式運行。