概要
Facebookグループ「obnizファン」が主催するmeetup第1回です。
obnizとは
obnizは、WiFI経由でコントロールできる開発ボードで、IoT(Internet of Things)が手軽に開発出来ます。
プログラムはJavaScriptやPythonなどに加え、「○○したら▲▲する」といったブロックプログラミングで開発も可能です。
大電流が必要なモータを制御する場合、通常のマイコンでは外部にモータードライバーなどを設ける必要がありますが、obnizは最大1Aまでのモータードライブ機能も備えているため、出力端子から直接モーターを制御する事が可能です。
そのため、電子工作を始めたいWebプログラマーなどにオススメな開発ボードです。
日時
2019年3月20日(水)19:30~21:30
場所
Connecting The Dots YOYOGI (東京都渋谷区代々木1-29-5YKビル 地下1F)
タイムテーブル
時間 | 内容 |
---|---|
19:00~19:15 | 会場設営 |
19:15~19:30 | 受付 |
19:30~19:35 | 主催者からの案内 |
19:35~19:45 | 講演1:株式会社CambrianRoboticsさん |
19:45~20:20 | 講演2:グーグルホーマーさん |
20:20~20:55 | 講演3:新井孔明さん |
20:55~21:00 | スポンサー:株式会社ポケットチェンジさん |
21:00~21:30 | 懇親会 |
講演1:株式会社CambrianRoboticsさん
obnizを製造販売されている株式会社CambrianRoboticsの佐藤さんによる講演。
気になった話題をいくつかピックアップ。
- obnizの概要説明
- 会社のメンバーが増え、クラウドが強化される!?
- 別タイプのobnizが販売される!?
講演2:グーグルホーマーさん
グーグルホーマーさんについて
グーグルホーマーさんは
- 4足歩行ロボット
- 2足歩行ロボット
- スマートスピーカー連携
などobnizの性能限界ギリギリを攻める作品を作ってらっしゃいます。[引用]connpassページ
通常のobnizはPWM機能が6つまでですが、obnizをハックして12ライン動かすという荒技まで…
グーグルホーマーさんのQiita:https://qiita.com/Google_Homer
グーグルホーマーさんのtwitter:https://twitter.com/google_homer_
グーグルホーマーさんの講演内容
作品例-1:Radik_o_bniz
AMラジオキットをサーボモータを使って、音量/選局/方向を切り替えるとのこと。
音量調整やラジオの周波数を変更するバリコン・可変抵抗などを物理的にサーボモーターで動かし、ラジオを選局すると、AMラジオキット自体も回転しているようです。(間違っていたらご指摘ください)
また、スマートスピーカーのGoogle Homeから、Radik_o_bnizも操作されたそうです。
課題とその解決方法について
obnizはプログラムを終了すると、初期化がかかるそうです。
初期化されると、出力電圧なども元に戻り、PWMなどの動作も停止してしまうそう。
プログラム終了時のobnizの挙動
■電圧出力やDisplayの初期化タイミング
- Event closeあり → 即時リセット
- Event closeなし → 30秒後リセット(グーグルホーマーさんはこの30秒後に停止していたとのこと)
- HTML → 即時リセット
■obnizプログラム終了時の初期化を無効にする設定方法
LEDつけっぱなしの例
obniz.resetOnDisconnect(false);
~
LED.on();
~
obniz.close();
}
上記のように、「obniz.resetOnDisconnect(false);」とすることで、websoket接続が0本になった際、obnizがリセットかかるのを回避できるとの事です。
作品例-2:Secure Display
obnizを立ち上げた際、obnizの固有IDを表したQRコードが表示されると思いますが、そのobniz IDを非表示にし、自作の待ち受けを表示するもの。
作品例-3:待ち受け⇔ID表示切替
「 作品2-Secure Display」の応用で、待ち受け画面と、obnizのID表示画面を切り替えるというもの。
左上のジョグダイヤルでON/OFFをさせるべく、出力状態の記憶と参照が必要。
■状態の記憶
- ioX.output(0/3/5V)で状態(電圧)設定
- resetOnDisconnect(false)で出力保持
■状態の参照
- adX.getWait()で状態(電圧)読込
作品例-4:2足歩行ロボット
グーグルホーマーさんの2足歩行ロボットの自由度説明
下半身に使用しているサーボモータは下記の通り。
- 足首の左右のひねり(ロール軸)
- 脚の付け根のZ軸の回転(ヨー軸)
それぞれ左右でサーボモータは4つ。
こちらに腕を付けたいと思ったところ、obnizの出力端子は12ポートに対し、Vcc、GND、信号線の3本×4サーボモータの計12本なのでポートが足りないという事態に。
電源・GNDラインを含めると4サーボまでになってしまう
モーター種別 | Vcc | 信号 | GND |
---|---|---|---|
左足首(ロール軸、左右) | 1 | 1 | 1 |
右足首(ロール軸、左右) | 1 | 1 | 1 |
左脚付け根(ヨー軸、Z軸回転) | 1 | 1 | 1 |
右足付け根(ヨー軸、Z軸回転) | 1 | 1 | 1 |
そこで、グーグルホーマーさんが対応した内容は下記のように、電源とGNDラインを外部から供給し、信号線のみをobnizの端子から供給するという方法。
■電源線(VccおよびGND)を外部供給に変更後のアサイン
VccとGNDを外部供給で共通化、信号のみ出力で6個のサーボモータが制御可能に!
モーター種別 | Vcc | 信号 | GND |
---|---|---|---|
左足首(ロール軸、左右) | 1 | 1 | 1 |
右足首(ロール軸、左右) | 1 | ||
左脚付け根(ヨー軸、Z軸回転) | 1 | ||
右足付け根(ヨー軸、Z軸回転) | 1 | ||
左腕(ピッチ軸、前後) | 1 | ||
右腕(ピッチ軸、前後) | 1 |
こうする事により、腕のサーボも追加する事が可能になったとのことです。
2足歩行ロボットを歩かせるために
2足歩行ロボットを歩かせるために、片足に重心を乗せ、反対側の足を上げる。
上げた足を下ろし、その下ろした足に重心をかけるという方法で歩かせたとのこと。
(このように足の裏から重心を外れないようにする歩き方を「静歩行」と言います。)
作品例-5:アバター2足歩行ロボット
スマートフォンの加速度センサを使用し、スマートフォン2台でロボットをリンクさせて歩かせるというもの。
そして、腕の動きもリンクさせたいという事で追加されたのがコチラ。
それは、micro:bitをBLE(Bluetooth Low Energy)の加速度センサーとして使用するという方法。
micro:bitは基板上に25個のLED、タクトスイッチ2個、光・加速度・温度・コンパスといったセンサー、Bluetoothを備えたプログラマブルなボードです。
BLEでmicro:bitの加速度センサーの値を取得
BLEでmicro:bitの加速度センサーの値を取得するサンプルコードはコチラ(グーグルホーマーさん)
BLEでの通信は難しいと思っていたとの事ですが、意外と簡単に通信できたそうです。
peripheral = await obniz.ble.scan.startOneWait(MICROBIT);
connected = await periperal.connectWait();
data = await peripehral.getService(UID).getCharacterristic(CID).readWait();
しかし、思った以上に腕の動きが追従してくれなかったとのこと。
そこで、処理を分散して高速化するという試みをされたそうです。
リベンジ:分散処理で高速化するぞ!
足の追従はスマートフォンの加速度センサーで操作(プログラム2、3)、それらを統合するプログラム1、
腕の追従をmicro:bitの加速度センサーを使用してそれぞれプログラム4、5と分散させて処理。
うーん、obnizが悲鳴を上げそうな(^^;
■分散処理Tips
- 高速同期処理
- 複数処理でサーボ
1.高速同期処理(プログラム間の高速同期処理方法)
左足の動作を制御しているスマートフォンのプログラム4から、それらを統括して歩行制御しているプログラム1への伝達方法として、空いているポートを使用するというもの。
左足プログラム4から出力し、その出力を歩行制御しているプログラム1が入力として受け、外部割込のような形で高速同期処理を行うというもの。
2.複数処理でサーボ(複数プログラムでサーボを動かす方法)
複数のプログラムからサーボモータを動かそうとすると、うまく動作しないようです。
原因を話すと長くなるという事で、解決方法だけ説明して頂きました。
プログラム同時起動でもサーボモータを正常に動かす方法は「全プログラムで全てのサーボモータのwiredを書く」ことだそうです。
最後に格言(努力の報酬は成功ではなく成長)と、obnizのハッキング(^^)を紹介して、グーグルホーマーさんの講演は終了しました。
大変参考になるお話、ありがとうございました!
講演3:新井孔明さん
続いて新井孔明さんの講演。
新井孔明さんはハンドルネームではなく、本名だそうです。
新井孔明さんについて
新井孔明さんは、
- IoTロボットアーム
- 地震を検知してブレーカーを落とす装置
- 画像認識を使用したバナナ迎撃システム
- 視覚障がい者向け帽子
など、ユニークな作品を大量に作成していらっしゃいます。[引用]connpassページ
製作物は100円ショップのDAISOで調達された物ばかりで、金銭的にも社会的にも優しい作品を製作されています。
新井孔明さんのQiita:https://qiita.com/keicafeblack
新井孔明さんの講演内容
資料をアップロードしてくださったので、詳細は資料をご覧くださいm(_ _)m
新井孔明さんの講演資料:https://speakerdeck.com/keicafeblack/obnizdejiao-yu-ke-ti-jie-jue-xin-zuo-obniz-lens
その上で、紹介して頂いた作品をピックアップしてご紹介したいと思います。
作品例:IoTラジコン
このトミカ風おもちゃもDAISOで購入されたとのこと。しかもモーター付きで100円!?
私は2,000円のタミヤの4輪駆動車工作キットをラジコン化しました…
このトミカ風おもちゃを2個並列に連結させているので、前進/後退はもちろん、旋回も出来るかと思います。
ただ、それだけではお子さんの反応が良くなかったという事で、サーボモータで割りばし鉄砲のゴムを発射するようにしたとのこと。
私も真似させてもらいます。
作品例:IoT自動ドア
obnizでサーボモータを動かし、それによってペットボトルの重りが落ち、引き戸が開くというIoT自動ドア。
これの動作トリガーとして、人感センサーが反応したら自動で開く等出来たら面白そうですね。
作品例:自動水やり機
植木鉢に釘を刺し、植木鉢の湿度データを30分毎に送信し、「ThinkSpeak」で植木の健康状態をグラフ化、乾燥状態に応じて電動ポンプで自動水やりをするシステムとのこと。
これは実家に帰省したときや旅行時に便利ですね。
社会:障害者を支援する取り組み
①緊急地震速報の可視化装置で、聴覚障害の方へ地震があったことを知らせるためとのこと。
詳しくはコチラに(https://qiita.com/keicafeblack/items/a21fba0b5014e2b0cfc2)
②視覚障害者向けの補助器具で、赤外線測距センサで障害物までの距離を振動の強弱で伝える帽子とのこと。
詳しくはコチラに(https://qiita.com/keicafeblack/items/1760ce787d3a269e9e27)
新作:obniz-lens
使用した材料はやっぱりDAISOで購入とのこと。DAISOでこれだけ揃える探求心、尊敬します。
obniz-lensの課題
obniz-lensを開発する上で、下記の課題があったとのこと。
- 距離を稼ぐ必要がある
- モニターに表示させる文字の反転(鏡文字)
人間の目がピントを合わせられる最短距離は25cmとのことで、焦点距離を稼ぐ必要があり、下記で距離を稼いだとのこと。
- 3倍レンズで距離を詰める
- obnizを帽子のツバに取り付け、鏡を斜めに取り付け、反射させて距離を稼ぐ
上記の過程において、鏡で反射しているため、obnizに表示させる文字を鏡文字にして映す必要があり、そちらはプログラムで対応。
最後に今後の予定として、「ハーフミラーで透過」と「Google Glassのような眼鏡型」を開発したいという事でした。
スポンサー:ポケットチェンジさん
https://www.pocket-change.jp/ja/
外貨を電子マネーに交換する「Pocket Change」のご紹介。
中国・香港などのアジア方面への海外出張も多いので、個人的に興味あります。
まとめ
記念すべき第1回の「obnizファンmeetup」に参加でき、色々と勉強させて頂きました。
物作りはやっぱり楽しいし、グーグルホーマーさんや新井孔明さんのように様々な物を作られているのを拝見するとモチベーションが上がりました。
私も製作物を増やし、そのうち登壇させて頂けたらと思っております。
なお、obnizの講座をブログで公開しておりますので、ご覧頂けますと幸いです。
obniz講座
記事 | 内容 |
---|---|
obnizでIoT電子工作を始めよう!【第1回】 | obnizのモニターに「Hellow World」を表示します |
obnizでLEDを光らせよう!【第2回】 | obnizでLEDを点灯させます |
ソフトウェアボタンでLEDをON/OFFしよう!【第3回】 | HTMLのinputボタンでLEDを点灯/消灯します |
obnizのPWM制御でLEDを調光しよう!【第4回】 | PWM機能を使って、LEDを調光させます |
obnizでフルカラーLEDをグラデーション点灯しよう!【第5回】 | フルカラーLEDをグラデーション点灯します |
obnizで圧電ブザーを鳴らそう!【第6回】 | obnizで圧電ブザーを鳴らします |
obnizでミニ4駆をラジコン化しよう!【第7回】 | obnizでミニ四駆をラジコンのように制御します |
Youtube
Youtubeに製作物を公開&追加していきますので、宜しければ視聴&チャンネル登録お願いします。
obnizでタミヤ4駆キットをラジコン化してみた