tettou771 が 2021年05月09日02時00分16秒 に編集
初版
タイトルの変更
「フラグが立った」ことを表現する旗
タグの変更
obnizIoTコンテスト
obniz
3Dプリンター
メイン画像の変更
本文の変更
ブラウザ上の旗と同期できる物理的な旗を作りました。 @[youtube](https://youtu.be/iJxuxPn_1WA) # 作った動機 僕は家でお風呂を洗う当番なのですが、お湯を沸かすのは僕ではない人の場合があります。すると、お湯を入れる前にもう洗ったかどうかを聞かれることになります。 洗ってすぐに「洗ったよー」と伝えることもできますがそれはそれで聞いた人も忘れそうです。 そこで少し工夫して、洗った時は洗面器を浴槽に入れておくというルールを作りましたが、洗った後で洗面器を使いたい時があり不便でした。 こんなに色々工夫したり不便を感じたりしている割には、情報量としてはたったの1bitです。1Byteですらなく、たったの1bitです! 他にも家には猫がいるのですが、食べた後でも食べてないような顔をしてねだってくることがあります。 もうご飯あげたっけ? はい、これも1bitですね。 それとヤクルトを常飲しているのですが、出かけた帰りに買うかどうか迷うことがあります。冷蔵庫に在庫があるかどうか、無かったとしてもすでにだれかが買って帰っている途中の可能性もあります。 ここまでくると物理的な目印ではどうすることもできず、クラウド化する必要がでてきます。 他にも生活していると色々なところで1bitのメモリが必要になってくるのですが、物理的に存在していてしかもブラウザでも確認・操作できるものが欲しいと思いました。 そういったアリ・ナシだけの情報をよく「フラグ」という表現をするので、物理的にも旗にするのが一番です。 # 実装 これは最初に描いた絵です。 ドーム部分が大きいのは、機構をあまり小さくできる自信が最初からなかったからです。  通信は以前Obnizを触ったことがありかなり便利な印象だったので今回も使うことにしました。機種は Obniz 1Y です。 駆動部は、単に上げ下げするだけなら実は簡単なのですが問題は手動でもそれができないといけないことです。 ステッピングモーターは制御がやや面倒なのと、立てた状態を保つために(保持トルク)電気を使いたくなかったので、一旦除外してサーボモーターで動かせないか考えてみました。 旗やボディはほとんど3Dプリンターで作りつつ、ポールだけは強度を持たせるためにアルミパイプを使います。  駆動力についてはあまり考えずに組んでみましたが、ちゃんと動くかな、、 @[youtube](https://youtu.be/pfmU5bXnZ2Q) ちゃんと動きすぎでした。あとで苦労することになります。 一旦は大丈夫そうなので、この設計でギリギリまで削ってドーム型にしてみました。 球ではなく大福のように少しふっくらした曲線になっているんですが、じつはモーターのスペースを確保しつつも小さいフットプリントになるようズルしたかったからです。  # いざ、IoT化 HTML/JSはschappeさんとsngazmさんに作ってもらいました(冒頭の動画)。ちゃんと動きが同期していてかわいいです。 旗はハード的には簡単に交換できるのですが、わざわざそれに対応できるようにURLのパラメータで旗の色を選べるようになってます。  # 勢いが強すぎて苦労する 最初は動きが激しすぎたので、ゆっくり動くようにスクリプト側で工夫してもらいました。具体的には、for文を回してちょっとずつ角度を変更しています。 サーボモータの回転角も振りすぎずほどよいバランスを探るためにトライアンドエラーの繰り返しです。 @[youtube](https://youtu.be/A-ZXLTofC1g) これはうまくいってなかったとき # 旗が上がっているかどうかのセンシング またハードの話に戻りますが、旗を上げたときには磁石を使って保持しています。 ベタっと張り付くと手で下ろすときに力が要るので、上がりきっても磁石同士の距離が開くように磁石を水平方向に使っています。隙間の大きさをいくつか試して指一本でスッと上げ下げできる強さに調整しました。 せっかく磁石があるので、上げ下げ状態のセンシングも磁気を検出できるホールICを使うことにしました。 旗が下がっている時は仕事してない磁石が降りてくるので、それを見てやれば一石二鳥ですね。 最終的には以下のような部品構成になりました。 |品目|型番|用途| |---|---|---| |マイコン|Obniz 1Y|通信、モーターの駆動| |モーター|MG90S|ブラウザでクリックされた時の旗の駆動| |センサー|SK8552G|手動で旗を動かした時のセンシング| |磁石|ネオジム φ6 x 厚さ2mm|旗の保持、センシング| |旗|3Dプリント|赤、緑など。引き抜いて別の色に変更可能| |ケーシング|3Dプリント||