1. 程式人生 > >CSDN物聯網學習1 現代物聯網應用系統構架與技術棧

CSDN物聯網學習1 現代物聯網應用系統構架與技術棧

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); } });

五、供應鏈工程

與傳統軟體工程的區別,是要交付硬體。