2016年7月10日 星期日

[IoT(Linkit_7688_Duo)]聯發科Linkit_7688_Duo IoT開發板初勘

聯發科Linkit 7688跟7688_Duo最大差別在於7688不含arduino但7688_Duo是含有Arduino雙晶片的

到台灣IoT買張板子跟連接板吧
https://www.taiwaniot.com.tw/products-tag/linkit/

Linkit 7688 Duo : https://www.taiwaniot.com.tw/shop/mcuboard/linkit-one/%E8%81%AF%E7%99%BC%E7%A7%91-linkit-smart-7688-duo-%E9%9B%99%E8%99%95%E7%90%86%E5%99%A8%E9%96%8B%E7%99%BC%E6%9D%BF/

7688 Duo擴充版 : https://www.taiwaniot.com.tw/shop/mcuboard/linkit-one/arduino-linkit-smart-7688-duo/

感測器入門套件 : https://www.taiwaniot.com.tw/shop/mcuboard/linkit-one/grove-starter-kit-for-linkit-7688-duo-%E6%8F%92%E5%BA%A7%E6%84%9F%E6%B8%AC%E5%99%A8%E5%85%A5%E9%96%80%E5%A5%97%E4%BB%B6-for-%E8%81%AF%E7%99%BC%E7%A7%91-linkit-7688-duo/

7688Duo pin out :




















================///=============================
我們可以看看網路先驅們的投影片
http://www.slideshare.net/NissinAllelujahnissin/linkit-smart-7688-duo-and-mcs-basics?ref=http://blog.cavedu.com/%E6%B4%BB%E5%8B%95%E5%BF%AB%E5%A0%B1%E8%88%87%E7%B4%80%E9%8C%84/151229-linkit-smart-7688-duo-%E7%89%A9%E8%81%AF%E7%B6%B2-iot-%E9%AB%94%E9%A9%97%E5%A4%9C/

來去了解
================================================

本範例將介紹如何在 LinkIt Smart 7688 Duo上藉由一個 node.js 小程式來控制板載的 LED。首先請確認您的 LinkIt 7688 與 7688 DUO 已經可以經由 SSH 連線來登入了。以下步驟是在 Windows 中藉由 puTTy 來操作。(LinkIt Smart 7688 作為 Arduino 來使用相當直觀, 容我們後續範例再述. ) 詳細的資料請參考  MediaTek Labs 所提供的相關文件

在物聯網的世界裡,有人是從硬體連上網路,

也有人是從網路擁抱硬體

不同領域的人看待硬體控制的角度也不一樣,對於能用更多元的方式來控制開發板,不失為一種樂趣喔
12289697_10206637202302186_6327610817805487711_n
阿吉老師家的牙牙, 我咬!

node.js helloworld on 7688

1)  SSh 登入您的7688之後,使用 vim 文字編輯器新增一個名為 app.js 的檔案,並輸入以下內容: console.log('Hello World nodejs')b02在 vim 中先按 ESC,再按 :w 存檔之後離開 vim,接著輸入: #node app.js 就可以看到以下結果b03
 

控制 7688 板載 LED

本段要說明如何使用 mraa 套件函式庫來控制 7688 的腳位,為了簡易起見,我們要控制的是 7688 板載的 Wifi status LED。後續範例會說明如何搭配麵包板或擴充板來讓 7688 控制更多周邊。
程式碼中有個自訂的 blink()函式中,使用了 led.write()指令來控制指定腳位(Gpio(44))的高低電位。這樣的概念如果改接繼電器,就可以用來控制電燈或風扇等電器了喔。
var m = require('mraa');
var ledStatus = true;
var led = new m.Gpio(44);

led.dir(m.DIR_OUT);

function blink(){
        led.write(ledStatus ?1:0);
        ledStatus = !ledStatus;
        setTimeout(blink, 100);
}

blink();
nodejs 7688 LED

b04
接著在終端機輸入以下指令就可以看到 7688 上的 Wifi LED(下圖紅色箭頭)快速閃動囉,您成功了嗎?
#node led.js
b09


=================================================

最近聯發科推出了強打:LinkIt 7688官網介紹請點我,大致上就是一款價錢平易近人(不到台幣五百),軟體開發上又支援多種程式語言的新板子,並且採用OpenWrt的Linux系統,使用上可以直接從電腦連到7688發出的WiFi,再用SSH登入,對於資深玩家而言,許多細部的網路設定都可以在OpenWrt上著墨(OpenWrt官網介紹)
Screen Shot 2015-12-14 at 9.42.03 PM
 
 
同時有別於之前LinkIt One的地方,7688本身就可以當作是一個AP來使用,甚至當你想要在7688上寫程式或傳輸檔案時,只要透過無線網路連到板子即可,好比說影像串流範例(影片中有詳細介紹喔),https://www.youtube.com/watch?v=iDvKmrPzqrM,雖然7688板子本身又小又薄,但還是可以透過上面的micro usb接出攝影機,然後再將自己當作是AP發送到電腦端,一個簡單的區網影像傳輸就可以輕鬆完成了,過程中完全不需要經由網際網路!
a03
 
此外,聯發科還有跟SeeedStduio合作,推出各種的Grove套件組,無論是使用或教學應用都相當方便,搭配上Grove的各種感測器以及7688強大的連網功能,還有聯發科自家開發的免費雲端平台MediaTek Cloud Sandbox,https://mcs.mediatek.com/,詳細應用可以參考這篇教學範例,想入門物聯網實作的朋友們,不妨可以來試試看這片板子!
a02
 
雖然說linux的系統以及支援多種語言(例如:C, node.js, python),造福了許多已經習慣程式語言的工程師,但對於大多數剛入門不久的maker,主要會關心的還是我可以在7688上面寫時下熱門的Arduino嗎?
答案是當然是可以的!7688有分為兩種版本,一種是單純只有聯發科自家的晶片(Linux核心),另外一種則是Duo板,他就有額外多一個晶片,沒錯,就是Arduino系列常用的ATmega,同時也是可以直接透過micro usb傳輸線直接接到電腦上,然後用Arduino IDE來寫或燒錄程式,使用方法幾乎跟一般的Arduino以及LinkIt ONE是一模一樣的,而對於有沒有支援Arduino,兩者價錢只差不到兩百塊台幣。
Screen Shot 2015-12-15 at 3.04.14 AM
 
而Arduino  IDE要安裝7688的SDK(也就是7688會用到的一些函式庫)步驟相當簡單,只要IDE中打開preferences(偏好設定),把以下的網址貼在Boards Manager URLs那一欄,(http://download.labs.mediatek.com/package_mtk_linkit_smart_7688_test_index.json)
Screen Shot 2015-12-15 at 2.49.01 AM
再到Tools -> Board Manager那邊找到7688並下載就行了!
Screen Shot 2015-12-15 at 2.52.16 AM
Screen Shot 2015-12-15 at 2.51.29 AM
 
如果一切順利的話,就可以看到我們的IDE上面成功地抓到我們的7688了,接下來就請各位動手玩一玩它裡面的各種範例吧!敬請期待我們接下來對於7688的介紹與教學吧!
Screen Shot 2015-12-14 at 9.33.02 PM
 
 








================================================

本篇要介紹的是結合 MCS 雲服務來控制 7688 上的 LED,這樣一來不論您身在何方都能藉由 MCS 來連到 7688 開發板來控制/監看開發板,還能多人同時透過網頁與 Android app 來控制它,很棒吧。 詳細資料請參考 MCS 的 7688 教學 以及 [LinkIt Smart 7688教學] 登入7688 後使用 nodejs 控制板載LED
首先請到 MediaTek Cloud Sandbox 建立一個 prototype,接著新增一個 On/Off 的 Controller 與 Display 資料頻道,channel id 分別命名為 LED_Control  LED_Display。您當然可以為資料頻道取不同的名稱,記得在程式中修改就好。
新增data channel  完成之後,就要為這個 prototype 建立一個 test device,在此才會取得DeviceId 與 DeviceKey,如下圖右上角處。這兩個值需要寫在 7688 端的程式碼中,請不要忘了修改這個值喔。
一般來說,程式無法作動的原因大致上有以下:
  1. 7688 沒有連上網際網路
  2. DeviceId 與 DeviceKey 忘了改或錯誤
  3. channel id 錯誤
002
使用node.js
  1. 登入 7688 之後, 使用以下語法建立一個名為 mcs_led.js 的檔案: #vim mcs_led.js
  2. 輸入以下內容. 請注意在#5, #6 行需要改為您方才好不容易申請到的 DeviceId 與 DeviceKey。
  3. #18行則是 channel id,如果您建立的 channel id 不是 LED_Control 的話,就要修改這裡。
  4. 接著使用以下語法來執行這個檔案: #node mcs_led
  5. 回到 MCS 的 test device 頁面,點選那個 On/Off controller,您板子上的燈是否有亮起來了呢?
var ledPin = 13;
var firmata = require('firmata');
var mcs = require('mcsjs');
var myApp = mcs.register({
   deviceId: 'XXXXXX',    //輸入您的deviceId'
   deviceKey: 'YYYYYY',  //輸入您的deviceKey'
});
var board = new firmata.Board("/dev/ttyS0", function(err) {
   if (err) {
      console.log(err);
      board.reset();
      return;
   }
   console.log('connected...');
   console.log('board.firmware: ', board.firmware);
   board.pinMode(ledPin, board.MODES.OUTPUT); //將LED所連接的腳位模式設為OUTPUT

   myApp.on('LED_Control', function(data, time) {
       if (Number(data) != NaN) {
          board.digitalWrite(ledPin, board.HIGH); //LED亮起
 console.log('LED HIGH');
       } else {
          board.digitalWrite(ledPin, board.LOW);  //LED熄滅
 console.log('LED LOW');
       }
   });
});

沒有留言:

張貼留言