パスコンパスの日記

何か色々作るのが好きです

【機構キーホルダ④】機構キーホルダ・カムの作り方(データDL可能)

 地味に続いている機構キーホルダ・シリーズ4作目です。 10個位まで作ったら動画にまとめてみようかなーと思います。

組み立て方

f:id:yoichi_41:20200607175824j:plain パーツを印刷します。 上がベース、左からドライバ、軸おさえ、カムフォロアです。

f:id:yoichi_41:20200607175843j:plain 最初にドライバとベースを組み立てます。

f:id:yoichi_41:20200607175956j:plain 次にカムフォロアをはめます。

f:id:yoichi_41:20200607180014j:plain 最後に軸おさえをはめ込みます。こちら固めなのでバイス等で締め付けると良いです。

f:id:yoichi_41:20200607180107j:plain 完成です。

動作の様子

データDL

 こちらからDLできます。

key_holder_of_cam_mechanism by passcompass - Thingiverse

まとめ

 今回は構造が簡単だったので設計も割とすんなりできました。また、そこそこ数も増えてきたので機構キーホルダのまとめのページもこれから作ります。読んで下さりありがとうございました。

【M5StickC】「どこからでもロボコン」のマシンの組み立て方(データDL可)

 先日こんな動画をアップロードしました。 300km以上自宅が離れた友達に、wifi機能搭載のマイコン(M5StickC)を使ってロボットを遠隔操縦してもらったといった内容です。

動画

 内容は一緒です。ニコニコの方でたくさんの宣伝とコメントをいただけたのでそちらで見ていただいた方が楽しめるかもしれません。
 本当にありがとうございます。

ニコニコ動画

YouTube


【M5StickC】300km以上離れてROBOCON

 こちら、部品と3Dプリンタが使える状況があれば実際に実施するのは非常に簡単です。
色々な方が各地で「どこからでもロボコン」を開催してくれたら良いなと思うのでモデルと組み立て方を公開させていただきます。

目次

3Dデータ

 こちらのサイトで公開させていただきました。
穴の間隔はレゴテクニックに合わせているので飾り等はつけやすいかと思います。

General-purpose robot of M5StickC and 8Servos Hat by passcompass - Thingiverse

部品一覧

マイコン周り

サーボ

 スイッチサイエンスでこちらのサーボがなかったのでこちらにしました。 バケットとアームベースの寸法は上のものに合わせているのでご注意ください。

車輪周り

 送料との兼ね合い等ありますが、上のキットではなく下記の様にバラで買った方が安いです。

ねじ

  • M3x15mm 4本(前輪駆動タイプ時 8本)  
  • M2x15mm 2本

  • M3ナット 4個(前輪駆動タイプ時 8本)

  • M2ナット 2個

 部品は都合により全てスイッチサイエンスで買いましたが、 一部は秋月電子の方が安いです。

 一覧で見るとこのような感じになります。 f:id:yoichi_41:20200529112558j:plain

 3Dプリントした部品は左から「バケット」、「ささえ」、「ブリッジ」、「おさえ」、「アームベース」で上にあるのが「ベース」です。

組み立て方

本体

①M5StickCと8Servos Hatを用意します。

f:id:yoichi_41:20200529134253j:plain

②M5StickCの頭に8Servos Hatを差し込みます。

f:id:yoichi_41:20200529134224j:plain

③「 ベース」と「おさえ」を1セット、とM3X15mmのねじとナットを2セット用意します。

f:id:yoichi_41:20200529134751j:plain

④「おさえ」にねじを通します。

f:id:yoichi_41:20200529135545j:plain

⑤ 段が付いている方をベースの内側へ向けます。

f:id:yoichi_41:20200529135817j:plain

⑥ 段が内側の状態で「おさえ」をM5SticKCと8Servos Hatを挟んだ状態で「ベース」に差し込みます。

f:id:yoichi_41:20200529154717j:plain

⑦裏には「ささえ」を差し込みます。

f:id:yoichi_41:20200529154853j:plain

⑧ナットで止めます。

f:id:yoichi_41:20200529155103j:plain

車輪の取り付け

① 次に車輪を組みます。

f:id:yoichi_41:20200529155136j:plain

②ゴムを取り付けます。

f:id:yoichi_41:20200529155728j:plain

③連続回転タイプのサーボを用意します。

f:id:yoichi_41:20200529155924j:plain

④軸を下にして「ベース」にサーボを差し込み、付属のネジで固定します。

f:id:yoichi_41:20200529160427j:plain

⑤裏から見るとこんな感じです。

f:id:yoichi_41:20200529161401j:plain

⑥黄色い信号線がタイヤから遠い方になるように差し込みます。左車輪は1番、右車輪は2番のポートに取り付けました。

f:id:yoichi_41:20200529162407j:plain

⑦車輪を取り付けます。

f:id:yoichi_41:20200529163018j:plain

⑧中心をねじ止めします。

f:id:yoichi_41:20200529163115j:plain

⑨「ブリッジ」をかぶせます。

f:id:yoichi_41:20200529163302j:plain

アームの取り付け

①「アームベース」とサーボを用意します。

f:id:yoichi_41:20200529163431j:plain

②M2X15mmのネジを「アームベース」側から差し込み固定します。

f:id:yoichi_41:20200529164031j:plain

③「 アームベース」をM3X15mmのねじで固定します。

f:id:yoichi_41:20200529164118j:plain

④サーボホーンはホーン側から見て反時計回りに最大限回した状態でホーンを上向きにした状態で取り付けています。※可動域を間違えると無理な力がかかるのでご注意ください。

f:id:yoichi_41:20200529164406j:plain

⑤横から見るとこの様な状態です。

f:id:yoichi_41:20200529165000j:plain

⑥「バケット」を取り付けて付属のねじで固定します。
※しつこい様ですがサーボの可動域とアームの取り付け位置がずれると最悪サーボが壊れるのでこちらはホーンのみでの動作確認後にねじ取り付けをおすすめします。

f:id:yoichi_41:20200529165102j:plain

⑦完成です

f:id:yoichi_41:20200529165808j:plain

前輪駆動タイプ

また、M5StickCの向きを変更し、「ささえ」を2個にすると前輪駆動タイプに変更可能です。

f:id:yoichi_41:20200529170654j:plain

裏側の様子です。

f:id:yoichi_41:20200529170701j:plain

まとめ

 3Dプリンタが使える状況にあれば、8Servos HatとM5StickCを使ったこのマシンは簡単に組めると思います。
前提条件のハードルはあるのですが...。
 また、樹脂色の違うパーツは3Dプリンタが不調な際に友人に出力してもらいました。ありがとうございました。

 次回はUI Flowを使ったプログラミングについて書こうと思います。 読んで下さりありがとうございました。

【BugC】LINEを送るとおやつを運んでくれるロボLineBugC制作②

前編はこちらです。

yoichi-41.hatenablog.com

後編では、プログラムの本体とWebサービスの連携に関して書きたいと思います。
ライントレースよりもこちらの方が正直大変でした。

目次

LINEとIFTTTの連携

ここまでは比較的簡単でした。LINE Developersに登録後にbotを作りIFTTTでWebhookをトリガと設定して 生成されたURLをLINE botのWebhookの利用をオンにして
URLを打ち込めばLINE botに何かを送信するとトリガが引かれます。

f:id:yoichi_41:20200428235409p:plain

IFは良くてもその後のThenが問題で、だいぶ苦労しました。

MQTTに関して

最初プログラムをUiFlowで作っていたのでそのまま連携を追加できないかと UiFlowにあるMQTTという通信方式のブロックを使って実現しようとしてみました。 結果から言うとこの方法は一部実行できたものの、失敗しました。
どなたかの何かに役立つ可能性も0ではないと思うので覚書として残します。

LINEに明日の天気を知らせる連携を以前にIFTTTという無料のサービスを使ってやったことがあったので IFTTTとMQTTのサービスで連携できるものがないかを調べました。

下記記事によるとどうやらCloud MQTTはできない様です。

mqtt - IFTTT Maker service and CloudMQTT - Stack Overflow

そこでもう少し調べたところBebotteというサービスがあり、そちらでは連携ができそうということがわかりました。 アカウントを作りチャンネルを作ってAccount SettingのAccess ManegementのIdentify and Access Managementの横のCreate new Tokenを押してアクセス権を設定し、トークンを作ります。

f:id:yoichi_41:20200428231142p:plain

こちらのトークンをUiFlowのトークンへ張り付けます。
※画像では空欄ですが、キーにも同様のトークンを入力します。

f:id:yoichi_41:20200428231706p:plain

これでそれぞれトピックに対してSubscribeした際に画面表示 ボタンを押したときにPublishするように設定したM5AtomとM5StickCを用意して実験したところ、相互に通信することができました。 また、IFTTTとBeebotteの連携もできました。

しかしながら、色々設定を変えてもIFTTTからのM5StickCへ送ることがどうしてもできませんでした。
おそらくですが、この記事の証明書の辺りが関係していると思われます。
証明書まわりはUiFlowのmicro pythonでは容易にいじれない設定の様です。
また、ラズパイを中継すれば実現できそうですが、手間がかかりそうなのでMQTTは諦めることにしました。

参考: IFTTT, Beebotte, Mosquitto, SSL/TLS を使って, なるべく安全に Google Home から Raspberry Pi や ESP8266 を操作する - Qiita

Blynkに関して

そこで調べていて見つけたのがBlynkというサービスでした。 こちらはArduinoで専用のライブラリを入れて連携をすると手軽にESP32等のマイコンスマホと連携できるアプリです。
面白いのがArduino側に仮想ピンというものを設定可能でBlynkからの操作でその仮想ピンの状態を変化させることができます。 今回は仮想ピンが[1]になったタイミングで状態を切り替えるプログラムにしています。

ただ、今回は譲れないところとして「LINEからメッセージを送ってLINE TRACEマシンにおやつを運んでもらう」というところがあるので一工夫が必要でした。 具体的には下記記事のAction側の設定URLの解説が大変参考になりました。ありがとうございました。

IFTTTのwebhookチャンネルでArduinoを使う(Action側) - Qiita

上記項でLINEからIFTTTの連携はできていたのでそこからついにBlynkに繋げることができました。 動画でも出しましたが構成の概要図はこんな感じです。

f:id:yoichi_41:20200429000508p:plain

こちらM5Stack、M5StickCおよびBlynkのライブラリとBugC.hとBugC.Cppが必須ですのでご注意ください。 M5StickC/examples/Hat/BUGC at master · m5stack/M5StickC · GitHub

まとめ

スタートストップだけとはいえ当初予定していた目的が果たせて達成感がありました。
先人の知恵に助けられながら電子工作を楽しめているので、もしこの記事が誰かの助けになったら嬉しいです。
読んで下さりありがとうございました。
イカーフェア京都オンライン楽しみましょう!

【BugC】LINEを送るとおやつを運んでくれるロボLineBugC制作①

こちら、Maker Faire Kyoto 2020 onlineに出展する作品です。

スマホアプリLINEでロボットにメッセージを送るとLINE TRACEをしながらおやつを運んでくれるロボLineBugCを作りました。 色々と無料のWebサービスを連携させたのは初の経験でなかなか面白かったです。 長くなりそうなので記事を分けます。

目次

動画\

動作の様子等は動画にまとめましたのでお時間ありましたら見ていただけたら幸いです。
動画の内容は同じです。
こちらのブログでは回路やプログラム等を中心に動画で紹介しづらいところを説明させていただきます。

YouTube

www.youtube.com

ニコニコ動画

BugCに関して

 メカはM5StickC向けの今回BugC Hatというものを使いました。
こちらは車輪でなく、4つのモータ軸を直接地面に当てて回転させながら動くのが特徴です。
また、意外とブログ等に情報も少なく、どの番号がどの足なのか手探りなところから始まりました。

BugC - スイッチサイエンス

f:id:yoichi_41:20200428200155p:plain

左前、右前、左後ろ、右後ろの順で引数が対応しています。
すべて時計回りが正の値でした。 UiFlow*1のブロックだと画像の様な値で直進するはずです。 はずでしたがBugCはなかなか動作が安定しません(まっすぐ進まない)。 私のマシンは右後ろの軸の接地が悪いのか値を絞ると右後ろを中心に回転が始まりました。
また、3Dプリンタでモータ軸の先端にキャップをつけたり工夫もしてみたのですが
モータのトルク不足で回転が止まったりなかなか一筋縄では解決しないという印象を受けました。

ちなみに上のプログラムはmicro pythonだとこんな感じで
参考:M5Stack Docs - The reference docs for M5Stack products.

from m5stack import *
from m5ui import *
from uiflow import *
import hat

setScreenColor(0x111111)

hat_bugc0 = hat.get(hat.BUGC)

hat_bugc0.SetAllPulse(30, -30, 30, -30)
hat_bugc0.SetRGB(0, 0xff0000)

Arduinoだとこんな感じです。

参考:M5StickC/examples/Hat/BUGC at master · m5stack/M5StickC · GitHub

#include "M5StickC.h"
#include "bugC.h"

void setup()
{
  M5.begin();
  Wire.begin(0, 26, 400000);
}

void loop()
{
  M5.update();
  BugCSetAllSpeed(30, -30, 30, -30);
  BugCSetColor(0x000000, 0x100000);
  BugCSetColor(0x100000, 0x100000);
  delay(10);
}

ライントレース基板

ネットの先人の知恵を参考に回路はそのままを配置を考えました*2

フォトリフレクタ(反射タイプ)LBR−127HLD: 半導体 秋月電子通商-電子部品・ネット通販 50円*2個

片面丸型ユニバーサル基板 32mm: パーツ一般 秋月電子通商-電子部品・ネット通販 30円*1枚

半固定ボリューム 10kΩ [103]: パーツ一般 秋月電子通商-電子部品・ネット通販 50円*2個

後ははんだ、抵抗1kΩ、47kΩ、すずメッキ線、とGroveの配線ですね。

こちら下から見た図です。
青と黄色が信号線、黒がGND、赤がVccです。

f:id:yoichi_41:20200428212049p:plain

裏面です。 f:id:yoichi_41:20200428211654j:plain

表面です。 f:id:yoichi_41:20200428212404j:plain

基板の固定

基板の固定は3Dプリンタで作ったパーツと輪ゴムで行いました。 3Dプリントのデータはこちらで公開しました。

line_trace_circuit_board_holder_for_BugC(M5stickC) by passcompass - Thingiverse

M3のネジでリングとベースを固定した後に ベースの穴に輪ゴムを通して固定しています。

f:id:yoichi_41:20200428224240j:plain

まとめ

今回の記事ではBugCの仕様とラインセンサ基板の製作に関して書きました。 次の記事では動かすプログラムとWebサービスの連携に関して書きたいと思います。 読んで下さり、ありがとうございました。

*1:Web上でブロックプログラミングやmicro pythonが書ける公式のサービスです。おすすめです。

*2:大変参考になりました。ありがとうございます。フォトリフレクタの使い方 | うしこlog

【データDL可】機構キーホルダ・バンザイを作ってみました

 先日人間味マスクというものを作ったのですが、その時に考えた機構が割と良い感じだったので機構キーホルダのシリーズに加えようと思って作ってみました。

yoichi-41.hatenablog.com

目次

組み立て

 Adventurer3という3Dプリンタを使って(調子が良いときは)サポート材無しでも出力できました。

ラフトから剥がします。

スライダとアームを最初に組み立てます。(間違ってストッパを先にはめると組めなくなるのでご注意下さい。)

スライダの軸にアームの穴を差し込みます。

表から見るとこんな感じです。

次にベースとスライダを組み立てます。

アームを閉じた状態でスライダをベースに差し込みます。

最後にベースにストッパを取り付けます。

ちょっと硬いかもしれません。

完成です。

動作の様子

工夫点

 今回もネジ等を使わない構造にしています。断面図です。左右のストッパは圧入です。
f:id:yoichi_41:20200411221053p:plain

 キーパーツはこのスライダです。4か所のリブがポイントです。 f:id:yoichi_41:20200411221507p:plain

 少しわかりづらいかもしれませんが、下から見た断面図です。赤丸部が当たることで動きを拘束します。 f:id:yoichi_41:20200411222934p:plain

 構造上ストッパを後から入れないと組めませんが、一度組めば抜けない構造になっています。

3DデータDL

 こちらからDLできます。ABSライク樹脂のラフトあり、プラットフォームにスティックのりを塗った後に出力しています。

key_holer_of_banzai_mechanism by passcompass - Thingiverse

まとめ

 扇子がない分、高さを抑えてコンパクトにできて良かったなと思います。 また、今回はスライダ部のへこみを設けたりユーザビリティ(?)にも少し気を使ってみました。
 5個か10個作れた段階でまとめて動画にしてみようかなと思います。

他の機構キーホルダ

 読んで下さり、ありがとうございました。以下、過去作です。

yoichi-41.hatenablog.com

yoichi-41.hatenablog.com

【NT京都(実質)】人間味マスクのコメント返信・他

yoichi-41.hatenablog.com

 NT京都(実質)というイベントに参加させていただき、昨日動画と記事を公開しました。詳細はそちらをご覧ください。
 諸事情により完全に遅刻ですが、コメント返信等をこちらでさせていただきます*1
30コメントもいただけて、少し会場でお話をさせていただいている様な気持ちになりました。また、いつもよりはちょっとだけフランクな感じで返信したいと思います。

目次

コメント返信

眉毛が抵抗w 00:05
→そうなんです!ありがとうございます!部品の配置にとてもこだわりました。また、こちらが記念すべき初コメントで感動しました。

部品がすべて、顔の部品にもなってるw 00:06
→当時いい感じに配置できた時のしてやったり感をコメントをいただいて久しぶりに思い出しました。ありがとうございます!

可愛い! 00:14
→ありがとうございます!そう言っていただけたのはたぶん初めてでした!

なにこれ! 00:17
→確かに何なんでしょうねwある意味「なにこれ!」と興味を持っていただけた時点で、このセンサの存在価値はあるかなと感じていたりします。

人間味の方向性間違えてないか...? 00:31
→そうかもしれません。人間味って何なんでしょう。

www 00:33
発送がすごい 00:33
アホス 00:35
→ありがとうございます!最高の誉め言葉です!

そこは継承するのかwww 00:47
→抵抗の眉毛はお気に入りポイントだったのでそのまま外装で反映しましたw

ぽいw 00:53
→やった!ありがとうございますw

楽しいwwww 01:05
→楽しい!!!!

割と本気なやつ 01:38
→そうなんです...!割と頑張りました。動画にするまでにkmodelの読み込みやサーボの動作3Dプリンタの調整等、色々失敗してます。

すげぇ 01:49
→ありがとうございます。実は安定して同時に3つ動かすまでにトラブってサーボを3個程焼いています。頑張ったかいがありました。

絵で良いんか 01:55
→試しに描いてみたら認識してくれて、私もびっくりしました。ちなみに人間味マスクで鏡を見たら人と認識したので人間味マスクには人間味がある様です(?)。

キェェェェェェアァァァァァァシャアベッタァァァァァァァ!! 01:59
→細かい所まで拾って下さりありがとうございますwwそして懐かしいw

人間味とは 02:02
→私もわかりません!

絵が良い 02:05
→ありがとうございます!!嬉しいです!!わかる人にはわかって、詳しくない人も興味を失わないポップな絵を目指しました!

どこから覗くかと思ったけど顔検出モニターから見えるのか 02:33
→そうなんです!前が見えないのは辛いのでモニターから見ます。扇子展開機構の後端がモニターに若干被るという設計ミスもあったりしますw

グルーガン便利 02:34
→これも字幕ではホットボンドと言っていないのですが、聞き取りづらいアナウンスをよく聞いて下さって本当にありがとうございます。便利すぎて私の雑な工作では引っ張りだこです。

可愛いぞw 02:44
かわいいw 02:48
→ありがとうございますw後付け効果音も相まってでしょうか。余裕があったらそのうちマイクを追加してあの音も再生したいですね。

面白いwwwww 02:48
→めちゃくちゃ嬉しいです!!

かぶってるとこ見たいと思った! 02:50
→写真を撮ってみました!安定して顔認識するものをうまく設置できず動画は諦めました。すみません。

f:id:yoichi_41:20200321213716j:plain

これは実際に見てみたい 02:48
期待! 02:52
→ありがとうございます!来年こそは現地でお会いしましょう!

888888888888888 02:55
すばらしい!! 03:02
8888888888888 03:02
88888888 03:04
GJ!!! 03:05
→暖かいお言葉ありがとうございます!!!動画投稿して良かったなと心から思いました!

また、ニコニコ広告をして下さったましぐれ( https://twitter.com/mashigure )さん、 沖川 豊( https://twitter.com/zoukeibaka )さん、 ちひろ( https://twitter.com/xVICpiXA871VCpu )さん、本当にありがとうございました。

その他

 ちなみにYouTubeの方は5再生でそのうち2回は私です(2020/3/21 22:04現在)。どなたか心優しい方がいいねとチャンネル登録してくださった様でとても嬉しいです。引き続きYouTubeにも投稿していこうと思います。
 実は前日と当日に用事やwifiのトラブル等*2が重なり前日の初期の動画を数個観たのと隙間時間にTwitterを見る位しかできていなかったで、明日ゆっくり他の方の作品を拝見したいと思います。VR会場にも参加したかった...。ワールドは残っているんでしょうか。後で調べてみます。
 私はネット上での会話がそんなに得意でないタイプの人間なので、現地で直接お会いしてお話できる価値はとても大きいと考えています。来年こそは現地でウェアラブル展示で練り歩きたいです。
 読んで下さりありがとうございました。また、参加された方はお疲れさまでした。

*1:2020/3/21 22:04までのコメント

*2:wifiのトラブルは実はまだ解決していません...

【NT京都(実質)】Maix Bitで顔認識して3つのサーボで扇子を動かすマスク

目次

背景

NT京都(実質)とは

 NT京都2020という電子工作等の展示会のイベントに出展予定でしたが、
昨今の状況でリアルイベントが中止になってしまったため急遽動画投稿という形でオンライン上でイベントを行うことになりました。
詳細は nod(YモードP) (@nod_Y) | Twitterさんのツイートをご参照ください。

動機

 akira_you (@akira_you) | Twitterさんから昨年こんなアナウンスが出ていたので
ぼんやりとウェアラブルで面白いものが作れないかと考えていました。
何も縛りがなく自由に作るのも楽しいですが、ゆるい条件があるのも経験上何かしら面白いアィディアに繋がるケースがあるので好きです。

 また、Maker Faireというイベントでも最近ウェアラブルな展示を持ってゲリラ的に会場を練り歩く「メイカーパレード」というものが行われており、参加してみたいという憧れも後押しし、お面を作ってみたというのが今回の経緯です。
それと本格的(?)な動画編集は初めてだったのですが、とても楽しかったです。
こちらのブログでは動画に載せきれなかった情報を書きたいと思います。

動画

人生初、ニコニコとYouTubeに投稿してみました。 見ていただけたらとても嬉しいです。
※ほぼ一緒なのでどちらかお好きな方でご覧ください。

niconico

YouTube

www.youtube.com

Maix Bit関連

セットアップ

 Firmwareはこの記事を参考に入れました。ありがとうございます。
また、顔認識のモデルもDLしておきます。
IDEは今までm5stickVでも使っていたMaixPyIDEを使いました。

qiita.com

Frimware https://dl.sipeed.com/MAIX/MaixPy/release/master/

Model https://dl.sipeed.com/MAIX/MaixPy/model

プログラム

 こちらの顔認識のサンプルを改造していきます。

https://maixpy.sipeed.com/en/libs/Maix/kpu.html

github.com

クリックすると展開します

import sensor
import image
import lcd
import KPU as kpu

from machine import Timer,PWM   #add
import time #add

tim0 = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
tim1 = Timer(Timer.TIMER1, Timer.CHANNEL1, mode=Timer.MODE_PWM)
tim2 = Timer(Timer.TIMER2, Timer.CHANNEL2, mode=Timer.MODE_PWM)

ch0 = PWM(tim0, freq = 50, duty = 5, pin = 6)
ch1 = PWM(tim1, freq = 50, duty = 5, pin = 7)
ch2 = PWM(tim2, freq = 50, duty = 5, pin = 8)


d0_count = 0
d1_count = 0
d2_count = 0


duty0 = 5
duty1 = 5
duty2 = 5

lcd.init()
lcd.rotation(2) #add

sensor.reset()

sensor.set_hmirror(0)   #add

sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
#task = kpu.load(0x300000) # you need put model(face.kfpkg) in flash at address 0x300000
task = kpu.load("/sd/facedetect.kmodel")
anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)
a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)

print(lcd.width())  #320 x
print(lcd.height()) #240 y

def ChangeDuty(duty_count):
    if duty_count > 0: #and duty_count < 1000:
        duty_val = 12
    else:
        duty_val = 2.5
    return duty_val


while(True):
    img = sensor.snapshot()
    code = kpu.run_yolo2(task, img)
    if code:
        for i in code:
            #print(i)
            a = img.draw_rectangle(i.rect())
            if i.x() < 80 :
                print("right")
                d0_count += 2
                if d0_count > 10:
                    d0_count = 10

            if i.x() >= 80 and i.x() < 160 :
                print("mid")
                d1_count += 2
                if d1_count > 10:
                    d1_count = 10

            if i.x() >= 160 :
                print("left")
                d2_count += 2
                if d2_count > 10:
                    d2_count = 10

    d0_count -= 1
    if d0_count < 0:
        d0_count = 0
    d1_count -= 1
    if d1_count < 0:
        d1_count = 0
    d2_count -= 1
    if d2_count < 0:
        d2_count = 0


    duty0 =ChangeDuty(d0_count)
    duty1 =ChangeDuty(d1_count)
    duty2 =ChangeDuty(d2_count)
    print(d1_count)

    ch0.duty(duty0)
    ch1.duty(duty1)
    ch2.duty(duty2)

    a = lcd.display(img)
a = kpu.deinit(task)

 SDカードに上記のコードを書き込んだmain.pyとfacedetect.kmodelの拡張子のファイルを保存したため本体のメモリにはアップロードはしていません。 この方法をとる場合のハマりどころですが、上記のface_model_at_0x300000.kfpkgをそのままSDカードに入れるのではなく、face_model_at_0x300000.kfpkgの拡張子をzipに変えて解凍して出てきた.kmodelのファイルを入れることにご注意ください。

サーボの動作に関して

 また、今回気が付いたのですが、今までのキョロキョロVのサーボの動かし方は本来の動かし方と違っていました。

SG-90 PDFデータシート http://akizukidenshi.com/download/ds/towerpro/SG90_a.pdf

 上記データシート本来50Hz固定でduty比を変えることで角度を変えるのですが、周波数を変えてしまっていました。
それでも動いてはいたのですが、dutyを0.025~0.12に変更する方が良さそうです。
昔の記事にも追記予定です。

yoichi-41.hatenablog.com

メカ関連

Adventurer3のノイズ詰まり対応

 動画では触れていませんが、3Dプリンタが不調になってだいぶ苦労しました。
湿気が原因か、コンコンとフィラメントを送るプーリが滑ってしまいノズルの手入れを何度か行いました。
公式FAQにある温度を上げてノズルの中のフィラメントを何度も押す方法と0.25㎜の針金をホームセンターで買ってきて先端から差し込む方法、ラフトの時に特に音がひどかったので厚みを上げたり、スピードを落としたりフィラメントが出やすくする調整を行いました。 f:id:yoichi_41:20200315133922p:plain

機構設計

 最初は紐を使って引く方法も検討していたのですが、煩雑になりそうなので途中でシンプルな方式に変えました。Fusion360でラックを使うのは初めてでしたがアドインを使ったら非常に簡単でした。おすすめです。

okayamalabo.hatenablog.com

f:id:yoichi_41:20200315134810p:plain

最初の試作で扇子の反対側が長いのは扇子を展開後に更に伸ばそうとしていた名残です。
ラックの長さを延長する必要があり、スペースの都合で諦めました。

f:id:yoichi_41:20200315140547p:plain

今は上の画像の真ん中位までで止めています。

ハード(エレキ)関連

 GPIOから信号を引き出して、サーボの電源をバッテリから取るように分けました。
皮膜線を使わない様に実装図は書いてみました。

f:id:yoichi_41:20200315141326j:plain

動画では説明しすぎてもくどいかと思い、ポップな感じで構成図を書いてみました。割と気に入っています。

f:id:yoichi_41:20200320001538p:plain

サーボのUSBからの電源供給はこちらのパーツを使っています。

電源用マイクロUSBコネクタDIP化キット: 組立キット 秋月電子通商-電子部品・ネット通販

動画編集関連

 使ってみたいと思って入れたものの放置してしまっていたBlenderで動画編集もできることを知り、ちょうど良いので試してみました。
以前Aviutlを少しだけ使ったことがあったのですが、そちらに比べるとblenderの動画編集機能Video Editingは日本語の情報が少な目で苦労しました。
実はエンドロール等文字をスクロールするのがきれいにできずに諦めたりしています。

アドオンに関して

デフォルトでは動画のテロップの位置などを画面上でドラッグできないのですが、以下のアドオンを入れるとできるようになります。

github.com

Intro Movieに関して

 Blenderの恩恵を受けられた点は任意の文字列のIntro Movieのテンプレートが大量にあることです。
読み込んで表示したい文字列に書き換えるだけで簡単にIntro Movieが作れます。
曲の使用許可が怪しかったりかっこよすぎたので一部いじりましたがこんなに手軽に作れるというのは衝撃的でした。

topfreeintro.com

レンダリングにノイズが乗ったときはレンダー画面のSamplesの数値を増やしたら解決しました。
Blenderモデリングしたものを今後動かしてみたいです。

BGM作曲

 数年前にゲームを作ってみたいと思い、ペンタブを買ってドット絵を描きDominoというフリーソフトでBGMを作曲してしばらくしてポシャったことがありました。
 今回ふと動画を作るにあたってBGMも自分でつけてみたいと思って作曲(?)してみました。ちなみに私は高校でも美術選択で楽譜も読めず猫ふんじゃったがギリギリ弾けるレベルです。
 その後AIきりたんでも遊んでみたので曲単体の動画をTwitterYouTubeにあげようと思います。

サムネ作成

 動画を見てもらうにはサムネが大事とどこかで聞いたのでニコニコ用とYouTube用にサムネを作ってみました。
f:id:yoichi_41:20200315154607p:plain YouTubeの方とは何となく文化が違うかなと思って微妙に変えています。右下は再生時間が表示されるとのことでスペースを開けておきました。 f:id:yoichi_41:20200315154915p:plain

今後できたら実装したいもの

  • 目を光らせる部分 完成を優先して省略してしまいました。
  • スピーカ Maix Bitにはマイクも載っているので口の部分にスピーカを埋め込みたいです。ロボット声を出したり、逆再生をしたりFFTで何やかんややってみたいですがいかんせん情報が少ないのでできるかは分かりません。

感想

 やはり〆切と出す場が決まっていると作品に対する気持ちの入れ方が全然違うと感じました。
また、動画を投稿する時はブログやTwitterとは比べ物にならない位緊張しました。
Maker Faire Kyoto 2020が中止にならなければメカトロ同好部エルチカの一員として出展予定ですので持っていく予定です。
もしその時「動画で見ました」と言ってもらえたらめちゃくちゃ嬉しいのが今からでも想像できます。 来年のNT京都では被って参加したいなぁと思います。
 かなり長文でしたが、読んでくださりありがとうございました。 当日の感想等は別途書こうと思っています。