4
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

Waffleハンズオンに参加してのTips

先日、Waffleのハンズオンに参加してきましたので、その時の様子と学んだことなどを記録しつつシェアしたいと思います。

なお、すでに記事にした内容は割愛させていただきます。

参加者

今回は6名参加者がいました。(+サポート2名+講師1名)

お名前 備考
TN氏 回路設計のお仕事をしている方
U氏 Webデザインをやられている方
M氏 ITコンサルをされている方
TK氏 大学でコンピュータの管理をされている方
Y氏 HoloLensをやられている方
元アプリケーションエンジニア

サポートはわみさん(Nefryの方)とのびすけさん(IoTLT主催)、講師は浜谷さん(Waffle開発)です。

参加者のスキルやレベルはバラバラでしたので、講義内容は基礎的なところから始まりました。

Arduinoについて

まずはArduinoに関するお話からスタートしました。
結構昔(2005年)からあったようで、イタリアの方が開発したということです。

いろいろな製品の開発時に利用され、実際に製品化されたあとも組み込まれている例もあるそうです。

基板の構成は以下のようになっています。

  • 電源
  • USBポート
  • アナログ入力(6ピン、0~5Vの1024段階)
  • デジタル入出力(14ピン、0/5V)

Waffleについて

Waffleは、前述の全てのピンにつなげるわけではなく、

  • A0
  • A5 or I2C
  • D5
  • D9
  • D13(基板上のLEDに接続済み)

だけ用意されています。

またリセットボタンが用意されています。起動中でも押すことが出来ます。
(硬いです ^^;)

なお、ファームウェア(?)の書き込みは、6つ(3x2)並んだ穴のところで繋いで書き込むそうです。
DSC_0021.JPG

Arduinoプログラムについて

プログラムの口(呼び出される関数)は2つあります。

  • setup()
    • 起動時に1回だけ呼び出されます
  • loop()
    • 起動後、ひたすら何度も呼び出されます

1つのプログラムしか実行できず、電源が入っている間はひたすら動き続けます。
(LEDとか、すぐに劣化して壊れるんじゃないかと心配になります(笑))

Arduino IDEのスケッチ例に大量のサンプルが用意されているため、こちらを参考にしながらやりたいことを実現するのが良いとのことでした。
image.png

サンプル:Blink

今回はまず、スケッチ例から「Blink」を試してみました。
(いわゆる「Lチカ」です)

また、LEDの明るさを変えるテクニックとして、ON/OFFの合計がだいたい20ms(人がON/OFFを感知できない)の間に切り替える量を変更(PWM(パルス幅変調)と言うそうです)してみました。

サンプル:AnalogReadSerial

次に、スケッチ例から「AnalogReadSerial」を試してみました。
そのために、全員にGroveセンサーの「Rotary Analog Sensor」が貸し出されました。
(これ、今度買ってきます!)
grove-rotary-angle-sensor.jpg
Waffleから送られてくるデータは、シリアルモニター(またはシリアルプロッタ)で確認ができます。

なお、サンプルでは値を数値のまま送っていましたが、これを受け取り側が使いやすいようにJSON形式に変換してみました。

String msg = "{\"A0\":\"";
msg += analogRead(A0);
msg +="\"}";

Serial.println(msg);

analogRead()は、受け取り側の方に合わせてintやStringで出力してくれます。

が、いちいち文字列を作成するのが面倒なので、ライブラリを使用して楽をします。
今回はArduinoJsonをいうものを使用しました。
ライブラリの管理で検索してインストールします。
image2.png

image3.png

するとこんな感じに楽に書けます。

sensorValue = analogRead(A0);
json["A0"] = sensorValue;

json.printTo(Serial);
Serial.println();

おすすめの本

ここでちょっと休憩。
Waffle(Arduino)開発で、おすすめの本の紹介がありました。

Arduinoプログラムについて(つづき)

今までは「Waffle→PC」でしたが、いよいよAndroidにつなぎ、さらにインターネットにもつなぎます。

Androidへの接続

Google StoreからWaffleのサンプルアプリを取得します。
こちらは別の記事に書いたので省略。
なお、Androidのバージョンや機器によってはつながらないことがあるので注意です。

インターネットへの接続

今回はMilkcocoaにデータを送ります。
実は以前、Milkcocoaを試したことがあるので、登録の仕方等はこちらを参照。

で、送り込まれ側のアプリを作成します。
今回は「Waffle」という名前のアプリを作成します。
image4.png

Androidのサンプルアプリで、作成したアプリのapp_idを設定すると、5秒間隔で値が送信されるようになります。
Screenshot_20170619-001124.png Screenshot_20170619-001108.png

image.png

そこでデータストアで「bucket」を見ると、値が送られてきているのが確認できます。
※「bucket」という名前は固定になっています。
image5.png

さらにFreeBoardで可視化出来ます。
まずDATASOURCESにデータストアを設定(ADD)します。
image6.png

次にPAINを追加(ADD)します。
image7.png

すると、いい感じのグラフが表示され、リアルタイムに更新されます。
image8.png

これでIoTが出来たことになります!!!

最後に

ハンズオンの最後に、他のセンサー類の紹介やQ&Aなどを行い、アンケートを記入して終了となりました。

なお、Android側のプログラミングの参考として、

  • Arduinoからのシリアル通信を受ける部分は、「PocketDuino Tutorial」が参考になる
  • データをMilkcocoaに送る部分は、Milkcocoaのサンプルコード(Android/Java)が参考になる

とのことでした。
また、インターネットに送る部分は各種チャットのコードを参考にするのが良いとのことでした。

あと、Groveセンサーの購入ですが、秋葉原の実店舗であれば、以下が良いとのことでした。

  • マルツ(品揃えは豊富だが、少々お高め)
  • 千石電商(あまり品揃えは良くないが、マルツよりは安い)
  • 秋月電子通商(ほとんど置かれていないが、マルツよりは安い)

おまけ

懇親会も盛り上がりました!
(アルコールセンサーを動かすのに、えらい苦労していましたが(苦笑))

感想

これでWaffle(Arduino)のプログラムが書けそうな気がしてきました。
まずは色々とセンサーを購入するところから始めたいと思います。
あとは、Android側のプログラミングをお勉強しないと...

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
4
Help us understand the problem. What are the problem?