Category Archives: Arduino

Heroku MQTT server

Rails

  • アプリケーション作成

Heroku

  • アプリケーション作成
  • cloudmqtt アドオン追加
// アドオン追加
heroku addons:create cloudmqtt

// URL確認(このURLをRailsに設定する)
heroku config:get CLOUDMQTT_URL

// 開発環境で動くように設定
heroku config -s | grep CLOUDMQTT_URL >> .env
more .env

Rails

rakeファイル作成

配置場所: lib > tasks
* publish.rake
* subscribe.rake

各コード

subscribe.rb

task :mqtt_publish do
  # Create a hash with the connection parameters from the URL
  uri = URI.parse ENV['CLOUDMQTT_URL'] || '{MQTT URL設定}'
  conn_opts = {
    remote_host: uri.host,
    remote_port: uri.port,
    username: uri.user,
    password: uri.password,
  }

  MQTT::Client.connect(conn_opts) do |c|
    # publish a message to the topic 'test'
    c.publish('test', 'Hello World')
    sleep 1
  end
end

publish.rb

task :mqtt_subscribe do

  # Create a hash with the connection parameters from the URL
  uri = URI.parse ENV['CLOUDMQTT_URL'] || '{MQTT URL設定}'
  conn_opts = {
    remote_host: uri.host,
    remote_port: uri.port,
    username: uri.user,
    password: uri.password,
  }

  MQTT::Client.connect(conn_opts) do |c|
    # The block will be called when you messages arrive to the topic
    loop do
      c.get('test') do |topic, message|
        puts "#{topic}: #{message}"
      end
    end
  end

end

実行

以下2つを別々のターミナルで実行

// subscribe実行
rake subscribe

// 送信 (送信内容を確認できる)
rake publish

参考

  • Heroku
    https://devcenter.heroku.com/articles/cloudmqtt

  • 参考ブログ
    http://kakakikikeke.blogspot.jp/2015/02/cloudmqtt.html

Arduino 初期設定

開発アプリケーション インストール

Arduino 1.6.7
https://www.arduino.cc/en/Main/Software

インストール後以下のフォルダが生成される
documents > arduino

ESP8266インストール

  1. additional boards manager urls 設定
    arduino > preferences > additional boards manager urls
    以下のURLを記述
http://arduino.esp8266.com/stable/package_esp8266com_index.json
  1. ボードインストール
    arduino > tool > board > board manage
    「esp8266」を検索しインストール
    ※上記1の手順でURLを設定するとesp8266が検索結果に出てくるようになる

  2. ボード選択
    Tools > board > generic esp8266

  • 参考
    gitを使うインストール方法配下。(pythonが必要っぽい)
    https://github.com/esp8266/Arduino

pubsubclient(MQTTクライアント)のインストール

  1. 以下からsource codeをダウンロード
    https://github.com/knolleary/pubsubclient/releases

  2. arduinoアプリでインポート
    sketch > include library > add .zip library

マイコンとのUSB接続

arduinoアプリケーションでポートを設定しておく必要がある
tools > port

テストコード

以下を記述して、アップロードを実行。
ランプが点滅する。

void setup() {
  // put your setup code here, to run once:
  pinMode(13,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000); 
}