Arduino触って、Railsで無理やり動かしたり、その他いろいろ遊んだ話
Web×IoTメイカーズに参加してきた
インフルから完全復活したibukiです。
この土日、Web×IoTメイカーズの研修に参加したので、そこでやったいろいろを残していきます。
まず二日間...
非常に楽しかった!!今までやるやる詐欺を決めていたArduinoを初めて触ることが出来て、IoTプログラミングの学習の第一歩を踏み出せた気がします!!!
安定のLチカや、スイッチでポチポチしたり、温度センサーで室内の温度を測定、Slackの指定したチャンネルに室内温度を通知、光センサーで光測定したりとか、自由気ままに遊ばせていただきました。笑
基本的にNode.jsで書いて動かす感じだったので、これから真面目にちゃんとJavascript勉強したいなーとも思いましたね。
参考記事
・JavaScriptでArduinoをコントロール ― 第1回 Lチカ(LEDチカチカ)させてみよう!
・JavaScriptとArduinoではじめるIoT入門 〜Johnny-Fiveで温度センサーを使ってみる〜
・JavaScriptでArduinoをコントロール ― 第2回 スイッチ・センサーからの入力値を取得しよう!
・Node.jsで光センサー(LLS05-A)/CdSセル(GL5528)の値を読み取る
RailsでNode.js力づくで呼び出してArduino呼び出してLチカ
タイトルを見ると、は?って思う人も多いのではないでしょうか。それぐらい鬼畜なことをしてみました。笑
このメイカーズの研修は結構自由気ままにやっちゃって〜みたいな雰囲気で、時間が余ったのもあって試しにしてみました。
以下がcontrollerのコード
class LedlightController < ApplicationController require 'open3' def index end def create argv = params[:light] Open3.capture3("node arduino.js #{argv}") end end
そして以下がviewのコード
<h2>LEDのON/OFF</h2> <%= form_tag("/tempreture/create") do %> <button type="submit" value="ON" name="light">ON</button> <button type="submit" value="OFF" name="light">OFF</button> <% end %>
最後にこれがNodeのコード
var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { if(process.argv[2] === "ON"){ (new five.Led(13)).on(); }else{ (new five.Led(13)).off(); } });
これでどうなるのか。
結論から言うと一応動きました。一応。
ただこれだとcapture3
で無理やりnode arduino.js
っていう外部コマンド実行してなんとか動かしているって感じなので、毎度ON/OFFさせるたびにNode実行しなくちゃならないので、最初のチカチカが不可避なんですね。
そもそもこれRailsで動かす必要まったくないんだよなー。この後実際にNode.jsとHTML単体ずつで動いたし...
とは言え、Railsもまだまだ初心者なので、他にもっといいやり方があるのかも...? 知っている方ぜひ教えてください。笑
この後もNodeとHTMLでWebから色指定してLED光らせたりとかもして本当に楽しかったですね。
また、1ヶ月後にはハッカソンもあるので、Arduinoもっと勉強しないとなー。
とりあえず今後やることとしては
・引き続きRuby,Railsのスキルアップ
・Laravel始めるための色々
・ArduinoとJavascript(主にNode.js)
って感じか。正直自分のキャパとか全く考えずにとりあえずやってみるかってスタンスなので、楽しいけどいつか潰れるのかと思うとちょっと心配。笑
まあとりあえず今はこのスタンスで勉強していきやす\(^o^)/
以上です〜読んでくださってありがとうございますm( )m