大海で生きたいマンのブログ

大海で生きたいな〜と思い、行動したことを残していくブログ

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始めるための色々
ArduinoJavascript(主にNode.js)

って感じか。正直自分のキャパとか全く考えずにとりあえずやってみるかってスタンスなので、楽しいけどいつか潰れるのかと思うとちょっと心配。笑
まあとりあえず今はこのスタンスで勉強していきやす\(^o^)/

以上です〜読んでくださってありがとうございますm( )m