CSDN物聯網學習1 現代物聯網應用系統構架與技術棧
阿新 • • 發佈:2019-01-03
WRTnode 創始人 羅未
一、物聯網技術現狀
1. 碎片化
- 作業系統不少於50種
- 晶片、開發框架眾多
2. 結果
- 碎片化造成的人員體系封閉、行業進展慢。
二、技術觀念的轉變
- 軟體定義物聯網,形成技術產業鏈劃分,行業進一步細分。
- 快速交付
- 行業角色劃分
- 統一的知識體系
- 能夠使用前人完成的成果或體系
1. 大廠商
作業系統
- Zephyr
- LiteOS (華為)
- mbedOS (ARM)
指令碼語言引擎
- JerryScript(三星)
開發者服務
- ARM
- mbedTM
- IoT裝置平臺
2. 創業公司
- 面向場景和交付的物聯網ISV
- 硬體模組,如慶科、漢楓等基於通訊的模組
- 開發者服務
三、 開發者要關注哪些事
物聯網技術架構
1. 大前端
- JavaScript
2. 新後端
- MQTT
- OTA
3. 裝置端
- 物聯網晶片
MT7697,MT7688,ESP32
四、WRTnode實踐
以JerryScript為基礎的開發框架,移植到各個硬體平臺。
有LED、紫外探測、馬達等硬體。
程式碼寫在服務端:
var gpio = require('gpio'); //gpio庫,用於GPIO的相關操作
var extint = require('extint');//外部中斷庫 感測器輸入的數字狀態需要使用這個庫
var pinmux = require('pinmux');//引腳複用庫
var rgbled = require('rgbled');//板載 RGB燈庫
var mqtt = require('mqtt')//MQTT庫,實現內部MQTT的資料傳輸
rgbled.set(0,0,255); //上電初始化RGB燈為藍色
var sensorpin = 6;//感測器的數字引腳
var motorpin = 30;//馬達的引腳
var pin = gpio.open(sensorpin);
pin.direction('in');
var motor = gpio.open(motorpin);
motor.direction('out' );
pinmux.set(sensorpin, 3);
pinmux.set(motorpin, 8);
var eintno = extint.pin2eint(sensorpin);
print('eintno: ' + eintno);
extint.init(eintno, 'both_edge', 10)
handler = extint.register(eintno, function(){
if (pin.read())
{
print('pin: ' + sensorpin + ' rising');
rgbled.set(100,0,0);
motor.write(false);
mqtt.push('status',1);
}
else
{
print('pin: ' + sensorpin + ' falling');
rgbled.set(0,100,0);
motor.write(true);
mqtt.push('status',0);
}
});
五、供應鏈工程
與傳統軟體工程的區別,是要交付硬體。