2015年5月12日 星期二

Intel IoT Solution: Edison BLE 無線控制 USB 玩具砲台 DEMO (Linux - 3, integration)

因為我們的砲台是用 python 寫的, 所以我還是希望假如可以用 python 做 BLE GATT Server 會比較方便, 因此找了一下, 有看到 bluepy 這個 python library, 不過他只可以做 host 而已, 所以目前就兩個選擇, 用 javascript 或是用 C 來寫

看起來 js 簡單多了, 所以用 js, 這邊在介紹一下:
  • bleno 可以做 BLE peripheral
  • noble 可以做 BLE Central
我是直接偷懶拿 bleno 的 battery-service 來改成我的 bomb-service











這邊改完後程式碼放在下面的 GIT, 只是先用印字串的方式: https://github.com/jackalchen737/Intel-Edison/tree/master/bomb-service-test

程式碼很簡單, 說明一下就是根據你訂的每個 service / characteristic 都開一個 js 檔案, 並且去實作他對應的內容, 例如 service 得指定他有那些 characteristics, 而 characteristics 則可以指定他的 descriptors 以及對應的 read/write handler, 細節就不多說, 建議直接看程式碼就好, 全部都放到 GitHub 上了

執行方式:
npm install
sudo node main.js


另外之前 USB 用 python, 雖然可以直接 call 但我想說好看一點都用 JS, 所以 USB 的部分也一併改用 node.js 方式來控制, 要安裝 node-usb, 參考的指令安裝方式如下:

sudo apt-get install build-essential libudev-dev
npm install usb


這網頁就有寫他的 API 怎麼用, 基本使用都很足夠, 所以我改寫 python 版本的 USB 砲台控制變成 node.js 版本, 看起來也可以正常控制, 程式碼放在以下的 GitHub 路徑: https://github.com/jackalchen737/Intel-Edison/tree/master/USB_Bomb_NodeJS

執行方式:
npm install
sudo node usb_bomb_js_keyboard.js


再來就整合, 整合完就可以動了, 直接看 DEMO, 程式碼則是放在: https://github.com/jackalchen737/Intel-Edison/tree/master/BLE_ctrl_USB_bomb_device





------------------------------------------------------
Copyright by Jackal Chen @ 2015
jackalchen737@gmail.com


相關系列文章:

1 則留言: