[IoT] Linkit7688 DUO 透過 firmata 來控制GPIO,LED

2016-11-25

這篇主要是基於  https://iamblue.gitbooks.io/linkit-smart-nodejs/content/zh-TW/basic/firmata.html 還有官網的資料 https://labs.mediatek.com/site/zntw/developer_tools/mediatek_linkit_smart_7688/training_docs/linkit_smart_7688_duo/firmata_nodejs/index.gsp

所組成的,但是因為中間碰到許多雷,所以筆記一下讓後面碰地的人可以快一點,這邊先感謝 iamblue 大大的無私分享

1. 首先準備  LED 燈泡 負極插入 GND  正極插入 D13

2. 安裝好Arduino 軟體 並且將 https://gist.github.com/edgarsilva/e73c15a019396d6aaef2 這邊的code 部屬進入 Linkit 7688 duo MCU  裡面
image

3. 透過 PUTTY 連入你的Linkit 7688 duo 中,因為我是windows 10 作業系統

4.建立檔案夾 名為 labfirmata

並且 進入建立的檔案夾 labfirmata 中

cd labfirmata

image

5.  建立一個node_modules 檔案夾 在 labfirmata 檔案夾裡面

mkdir node_modules

6. 透過 git 下載我建立好的 firmata 的 lib

git clone https://github.com/donma/firmata12_tmp_for_7688duo.git

image

7. 建立好後你用ls 查,你會看到有一個 firmata12_tmp_for_7688duo 的檔案夾 ,其中有一個firmata2.tar 將他搬到 node_modules 裡面
image

mv firmata12_tmp_for_7688duo/firmata2.tar node_modules/

image

8. 進入 node_modules 檔案夾後 將firmata2.tar 解開來

cd node_modules
tar -xvf firmata2.tar

image

9. 輸入 cd.. 回到  labfirmata/ 下建立一個檔案叫做 app.js 並且輸入下面的code ,我建議使用nano 

console.log('WWW blink start ...');

var ledPin = 13;
var firmata = require('firmata');

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

    var url = require('url');
    var http = require('http');

    http.createServer(function(request, response) {
        var params = url.parse(request.url, true).query;
        try {
            if (params.value.toLowerCase() == 'high') {
                board.digitalWrite(ledPin, board.HIGH);
            } else if (params.value.toLowerCase() == 'low'){
                board.digitalWrite(ledPin, board.LOW);
            }
        } catch(e) {

        }
        response.writeHead(200);
        response.write("The value written was: " + params.value);
        response.end();
    }.bind(this)).listen(8080);

    console.log('Listening on port 8080 ...');
});

10 .啟動

node app.js

image

11.  這時候你可以透過 http://mylinkit.local:8080/?value=high 打開 http://mylinkit.local:8080/?value=low 關閉LED

這邊我只是包裝跟簡化 這網站的 https://iamblue.gitbooks.io/linkit-smart-nodejs/content/zh-TW/basic/firmata.html 如果我寫得不夠詳細,可以到大大那邊看完整文章..


當麻許的超技八 2014 | Donma Hsu Design.