Arduino 資料一覧
Node.jsでSocket.IOを使ってLEDをWebページから操作する
2017/1/14更新
対応バージョン: Node.js 4.2.6, Johnny-Five 0.10.6, Socket.IO 1.7.2
Node.jsでSocket.IOを使ってArduino UnoにつないだRGBフルカラーLED(OSTA5131A)(カソードコモン)をWebページから操作する。
Node.jsを動かす母艦はUbuntu 16.04とする。
Johnny-FiveのインストールやLED結線などの事前準備は以下を参照のこと。
関連資料・記事
Socket.IOインストール
まずSocket.IOをインストールする。Socket.IOはnpmを使って簡単にインストールできる。
% sudo npm install -g socket.io
ソース
次に以下のJavaScriptコードとHTMLを書きNode.jsで実行する。
socketio.js
var fs = require("fs"); var http = require("http"); var server = http.createServer(); var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { // Server server.on("request", function(req, res) { var stream = fs.createReadStream("index.html"); res.writeHead(200, { "Content-Type": "text/html" }); stream.pipe(res); }); // Socket.IO var io = require("socket.io").listen(server); server.listen(8000); // LED var led = new five.Led.RGB({ pins: { red: 6, green: 5, blue: 3 } }); // Control io.on("connection", function(socket) { socket.on("msg", function(color) { console.log(color); if (color == "off") { led.off(); } else { led.color(color); } }); }); });
index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>arduino-socket.io</title> <script src="/socket.io/socket.io.js"></script> <script src="//code.jquery.com/jquery-2.1.3.min.js"></script> </head> <body> <form> <p> <input type="radio" name="color" value="red">RED</input> <input type="radio" name="color" value="green">GREEN</input> <input type="radio" name="color" value="blue">BLUE</input> <input type="radio" name="color" value="off">(OFF)</input> </p> <p> <input type="submit" value="submit" /> </p> </form> <script type="text/javascript"> var socket = io(); $('form').submit(function() { socket.emit("msg", $("input[name=color]:checked").val()); return false; }); </script> </body> </html>
実行
% node socketio.js 1484404749919 Device(s) /dev/ttyACM0 1484404749927 Connected /dev/ttyACM0 1484404753174 Repl Initialized >>
Webブラウザからアクセス
localhost:8000にアクセスし、ラジオボタンで色を指定してsubmitをクリックすると指定した色でLEDが点灯する。OFFを選ぶと消灯する。
関連資料・記事
参考サイト
Arduino (Wikipedia)
Arduino技術情報 (Qiita)
Arduino関連情報 (Device Plus)
Arduino記事一覧 (Think IT)
Node.js技術情報 (Qiita)
Johnny-Five技術情報 (Qiita)
Socket.IO技術情報 (Qiita)
エレクトロニクス豆知識 (ROHM)