摘要:安裝完成后,在的左下角選擇創(chuàng)建項目,具體操作如下圖所示項目創(chuàng)建頁面會出現(xiàn)很多模板庫,如果只有兩個或者沒有模版,可以嘗試點擊左下角的刷新模板信息按鈕。
目錄
IoT Pi 是一塊小巧的物聯(lián)網(wǎng)開發(fā)板,開發(fā)者們可以把它入門級開發(fā)板來使用,通過它熟悉和掌握 MS-RTOS 的開發(fā)實戰(zhàn)技能。今天就來介紹一下如何使用 Spirit 1 配合?IoT Pi 開發(fā)板開發(fā)一個 LED 燈控制系統(tǒng)。
IoT Pi 開發(fā)板內(nèi)置了主頻高達100MHz的 Cortex-M4 處理器,包含512KB的 FLASH 儲存空間和256KB的RAM空間,通過燒錄系統(tǒng),能夠保證流暢的運行 MS-RTOS 和多個應(yīng)用程序。另外,IoT Pi 開發(fā)板還搭載了 EEPROM 和 SD 卡插座,可用于儲存數(shù)據(jù)和與 PC 機交互文件。 同時,還支持 WiFi 功能。IoT Pi 還板載了三個按鍵和三個 LED 及一個 USB 轉(zhuǎn)串口,使用USB線供電的同時也能與 PC 機進行串口通信。講了這么多,讓我們來看看 IoT Pi 開發(fā)板長什么樣吧,如下圖所示:
再來看一下官方給出?IoT Pi 產(chǎn)品的詳細參數(shù):
主芯片 | STM32F412RET6,512KB FLASH,256KB RAM |
EEPROM | FT24C02 |
SD 卡 | 板載 TF 卡座 |
下載接口 | SWD 下載調(diào)試接口,2.54mm插針 |
USB 通信 | 5V供電,和 USB 串口通信 |
按鍵 | 3個用戶自定義按鍵,1個復(fù)位功能按鍵 |
LED 燈 | 3個用戶自定義 LED,1個電源指示燈 |
IO 接口 | 兩排2.54mm,20PIN 插針接口,其中24個通用 IO, 4個5V,4個3.3V,6個GND |
如果想更加直觀的了解上述硬件模塊,請參看下圖:
好了,通過上面的介紹,我們基本上對 IoT Pi 開發(fā)板有了大致的認識。接下來就讓我們基于它開發(fā)一個 LED 燈智能控制程序吧。
首先,給 IoT Pi 開發(fā)板安裝四個塑料銅柱,方便固定和散熱。接下來,使用電源線?連接?IoT Pi 開發(fā)板和 PC 電腦。
然后,電腦連接 Spirit 1 的 wifi,同時,連續(xù)按?IoT Pi 開發(fā)板的 key1 鍵三次,啟動設(shè)備發(fā)現(xiàn)模式,此時,開發(fā)板的三個 LED 燈會不斷閃爍,表明已經(jīng)進入發(fā)現(xiàn)模式。之后,我們在瀏覽器中輸入地址:https://192.168.128.1/#/desktop,進入?Spirit 1 界面,打開“設(shè)備”,進入應(yīng)用內(nèi)選擇添加設(shè)備,具體操作如下圖所示:
當然,我們也可以在手機端操作添加設(shè)備,在下圖中點擊“添加設(shè)備”按鈕。
點擊“添加設(shè)備”按鈕后進入掃描設(shè)備頁面,具體情況如下圖所示:
在掃描設(shè)備頁面打開“高級設(shè)置”,啟動“SmartConfig”開關(guān),輸入SSID和密碼后,點擊“完成”按鈕,比如下圖所示:
在掃描設(shè)備頁面提示我們發(fā)現(xiàn)了 IoT?Pi 開發(fā)板,我們選擇“添加”,操作如下圖所示:??
在添加?IoT?Pi 開發(fā)板的過程中需要輸入設(shè)備密碼,這是系統(tǒng)燒錄時寫死的,目前官方默認開發(fā)板的密碼是1234567890,如果輸入錯誤會給出“設(shè)備拒絕連接,請重試”的提示,具體如下圖所示:
完成添加后,我們在設(shè)備列表中就可以看到?IoT?Pi 開發(fā)板的設(shè)備了,如下圖所示:
完成設(shè)備添加后,我們開始進行開發(fā)環(huán)境的搭建工作。?
在 PC 端搭建愛智系統(tǒng)的開發(fā)環(huán)境還是非常方便的,可以直接使用 VSCode 開發(fā)工具,再安裝一個 EdgerOS 開發(fā)插件。插件的安裝也非常方便,在 VSCode 中擴展程序中搜索 edger 關(guān)鍵字,會出現(xiàn)下圖所示的插件工具,點擊“安裝”即可。
安裝完成后,在 VSCode 的左下角選擇“創(chuàng)建項目”,具體操作如下圖所示:?
項目創(chuàng)建頁面會出現(xiàn)很多模板庫,如果只有兩個或者沒有模版,可以嘗試點擊左下角的“刷新模板信息”按鈕。如果還是沒有,可以切換倉庫源為 Gitee,因為開發(fā)插件默認的倉庫源在?Github 上,國內(nèi)很多用戶可能會因為網(wǎng)絡(luò)問題導(dǎo)致無法訪問,具體操作可以參考下圖:
獲取全部模板庫之后,我們可以從中看到一個名為“IoT Pi”的模板庫,因為我們設(shè)備就是 IoT Pi 開發(fā)板,因此選擇這個模板庫初始化項目工程,選擇“立即應(yīng)用”,具體操作請看下圖:
點擊“立即應(yīng)用”后,我們進入了項目信息頁面,可以參考下圖完成項目配置,然后選擇“立即創(chuàng)建”。? ?
工程創(chuàng)建后,我們可以看到一個前后端分離的工程目錄,其中,iotpi目錄是后端邏輯部分,web目錄中是前端頁面部分。?
引入依賴庫和定義部分變量,代碼如下:
const Web = require("webapp");var Device = require("device");/* IoT Pi device */var iotpi = undefined;/* IoT Pi devices */var iotpis = new Map();const app = Web.createApp();app.use(Web.static("./public", { index: ["index.html", "index.htm"] }));
選擇設(shè)備服務(wù)接口,代碼如下:
app.post("/api/select/:devid", function(req, res) { iotpi = new Device(); iotpi.request(req.params.devid, function(error) { if (error) { res.send({ result: false, code: 50004, message: `設(shè)備錯誤:${error.message}` }); iotpi = undefined; } else { res.send({ result: true, code: 20000, message: "success" }); iotpi.on("lost", iotpiRemove); iotpi.on("message", function(msg) { io.emit("iotpi-message", msg); }); iotpi.send({ query: true }, function(error) { if (error) { console.error("Query IoT Pi error:", error.message); } else { console.log("Query IoT Pi Ok!"); } }, 3); } });});
啟動?Socket IO 通道,用來完成前后端的消息通訊,代碼如下:
/* Socket IO */var io = require("socket.io")( app, { path: "/iotpi", serveClient: false, pingInterval: 10000, pingTimeout: 5000, cookie: false });// 客戶端連接或者斷開io.on("connection", function(sockio) { sockio.on("iotpi-control", function(msg) { if (iotpi && iotpi.devid) { console.log("Client send message:", JSON.stringify(msg)); iotpi.send(msg, function(error) { if (error) { console.error("Send message to IoT Pi error:", error.message); } }, 3); } else { sockio.emit("iotpi-error", { code: 50002, error: "無效設(shè)備!" }); } }); sockio.on("iotpi-list", function(result) { var devs = []; iotpis.forEach(function(iotpi) { devs.push(iotpi); }); result(devs); });});
監(jiān)控設(shè)備的連接狀態(tài),可能設(shè)備會有熱插拔的操作,代碼如下:
// 移除設(shè)備Device.on("lost", function(devid) { if (iotpis.has(devid)) { iotpis.delete(devid); if (iotpi && iotpi.devid === devid) { iotpiRemove(); } io.emit("iotpi-lost", devid); }});// 添加設(shè)備Device.on("join", function(devid, info) { if (info.report.name === "IoT Pi") { var devobj = { devid: devid, alias: info.alias, report: info.report }; iotpis.set(devid, devobj); io.emit("iotpi-join", devobj); }});function iotpiRemove() { if (iotpi) { iotpi.release(); iotpi.removeAllListeners(); }}
其實,前后端目錄可以理解成兩個多帶帶的 Node.js 工程,在 iotpi 和 web 目錄中分別執(zhí)行如下命令:
npm install
執(zhí)行成功后,兩個目錄中各自生成了自己的 node_modules 目錄。
進入 web 目錄,執(zhí)行如下命令進行編譯打包:
npm run build
命令執(zhí)行成功后,會生成對應(yīng)的 dist 目錄。最后,需要將其中的文件拷貝到 iotpi 的 public 目錄中。
在安裝應(yīng)用程序之前,我們可以參考下圖添加新的 IoT Pi 設(shè)備選項。
添加設(shè)備之后,我們選擇“安裝 EdgerOS APP”,具體操作如下圖所示:
安裝過程中可能會遇到如下兩個問題,這里記錄一下。
問題1. Install EdgerOS App : Error: edger connect illegalConnect
這個錯誤不用擔(dān)心,其實是你沒有連接 Spirit 1 的 wifi,切換 wifi 網(wǎng)絡(luò)就好了。
問題2. Install EdgerOS App : Error: edger connect wrongPassword?
這個問題其實是設(shè)備開發(fā)密碼寫錯了,需要重新填寫一遍,具體可以參考下圖獲取。
正確安裝應(yīng)用程序后,會給出如下提示:?
Install app success
具體如下圖所示:
程序安裝成功后,我們回到瀏覽器頁面(https://192.168.128.1/#/desktop)中, 會發(fā)現(xiàn)主頁中新增了一個 IoT Pi Trying 的應(yīng)用圖標,具體如下圖所示:
點擊圖標進入應(yīng)用程序中,在設(shè)備列表中選擇 IoT Pi 設(shè)備,此時,可能會出現(xiàn)設(shè)備權(quán)限問題,如下圖所示:
那么,我們可以在系統(tǒng)設(shè)置中進行授權(quán),如下圖所示:
完成授權(quán)后,就可以進入設(shè)備操作界面了,在界面中控制三個 LED 燈的打開和關(guān)閉,同時,手動操作開發(fā)板的開關(guān),操作頁面也會隨著變化,具體如下所示:
為了更加形象的展示實現(xiàn)效果,我們來看一段視頻:
IoT Pi 開發(fā)板 LED 燈控制演示
其實,我們還可以進一步修改程序,在頁面左上角添加一個總的開關(guān)按鈕,同時控制開發(fā)板上三個 LED 燈的打開和關(guān)閉。編碼實現(xiàn)也非常簡單,開關(guān)時分別發(fā)送三條控制就可以了,下面看一下實現(xiàn)效果:
全部 LED 燈都打開的情況:
全部 LED 燈都關(guān)閉的情況:?
在開發(fā)過程中發(fā)現(xiàn),系統(tǒng)是支持設(shè)備熱插拔的,我非常好奇其中的實現(xiàn)機制,因此自己特別留意了一下。最終發(fā)現(xiàn),系統(tǒng)檢測設(shè)備的連接和斷開狀態(tài)是通過心跳包機制來實現(xiàn)的,這符合我們常規(guī)的做法。通過每15秒一次的 ping 請求來判斷設(shè)備是否在線,具體如下圖所示:?
設(shè)備離線時的彈窗提醒:
設(shè)備上線時的彈窗提醒:
好了,本次利用?Spirit 1 配合 IoT Pi 開發(fā)板開發(fā)一個 LED 燈控制系統(tǒng)的實戰(zhàn)經(jīng)歷就介紹完了,是不是非常精彩?自己非常喜歡在 EdgerOS 系統(tǒng)上開發(fā)物聯(lián)網(wǎng)應(yīng)用的感覺,架構(gòu)設(shè)計清晰合理,技術(shù)棧簡單易學(xué),設(shè)備性能也非常給力,總之是一次非常愉快的開發(fā)體驗。如果你感興趣的話,也來一期參與吧!一起為國產(chǎn)操作系統(tǒng)加油助力!
【本文正在參與"2021愛智先行者-征文大賽"活動】,活動鏈接:https://bbs.csdn.net/topics/602601454?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/123451.html
摘要:一個物聯(lián)網(wǎng)操作系統(tǒng)是否能夠流行,其與其他設(shè)備的友好連接性會是一個非常重要的衡量指標。內(nèi)置了眾多安全存儲與安全通訊技術(shù),能夠鑒別可信硬件,識別并拒絕未經(jīng)授權(quán)的設(shè)備或用戶訪問系統(tǒng)應(yīng)用和數(shù)據(jù),把安全措施不足的普通物聯(lián)網(wǎng)設(shè)備置于強大的保護之下。 ...
摘要:有鑒于此,本文以未安裝工具軟件的計算機未激活的愛智設(shè)備為例,實戰(zhàn)解說零基礎(chǔ)小白的愛智開發(fā)過程。愛智設(shè)備斷開互聯(lián)網(wǎng)也可以運行,但本文中的開發(fā)部署等功能無法操作。 【本...
摘要:是下一代面向物聯(lián)網(wǎng)和邊緣計算的智能操作系統(tǒng),可廣泛應(yīng)用于面向個人家庭和行業(yè)的物聯(lián)網(wǎng)產(chǎn)品和解決方案,有效降低開發(fā)門檻縮短開發(fā)周期。 一、前言 ① 智能邊緣計算操作系統(tǒng)...
摘要:證書安裝步驟我也是跟著官方給的教程一步一步來,可以參考安裝成功如下所示三應(yīng)用開發(fā)到這里軟硬件方面的部署已經(jīng)基本完成,現(xiàn)在讓我來帶大家用愛智系統(tǒng)做一個小游戲。 本文正...
閱讀 917·2021-11-24 09:38
閱讀 925·2021-11-23 09:51
閱讀 2939·2021-11-16 11:44
閱讀 1761·2021-09-22 15:52
閱讀 1626·2021-09-10 11:20
閱讀 1361·2019-08-30 13:47
閱讀 1291·2019-08-29 12:36
閱讀 3293·2019-08-26 10:43