430 Views
May 03, 24
スライド概要
Mariners’ Conference ‘24 Spring にて発表した資料
https://mariconf.connpass.com/event/314987/
tomio2480 です
MOOちゃん激推しディヴァイス 工作記録 PHP でシリアル通信しようとして撃沈 24/05/03 #mariconf2024spring / Shota Nishihara @tomio2480
$ whoami ❖ Shota Nishihara @tomio2480 ❖ Cybozu, Inc. 開発本部 People Experience チーム Developer Concource Unit ✓ ✓ ✓ ✓ 高校教諭(電)→セキュリティ人材育成→現職+専門学校講師(AI:Python基礎)→今 開発本部,運用本部,サイボウズ・ラボの人の発信,IT コミュニティ出没 流氷交差点よろしく https://soundcloud.com/cybozutech/sets/drifticecrossing 情報処理学会 会誌編集委員でもある https://www.ipsj.or.jp/magazine/magazine.html ❖ 北海道旭川市からフルリモート ✓ 旭川 18 年→北見 4 年→富良野 5 年→(東京)小平 2 年半→今:旭川 ❖ ゆるい勉強会(旭川),FuraIT(富良野),Co-KoNPIle(小平) に大体いる 2
[宣伝] ブログを読む会を推している ❖ みんなでブログを読みます ✓ https://note.com/tomio2480/n/nf 909bb77b4b7 ❖ 毎週月曜 18:30-19:00 開催中 ✓ https://blogreading.connpass.com/ ✓ Discord で細々と ✓ PHPカンファレンス香川2024で ワークショップをやります 3
[宣伝] 技術書典と情報処理学会 ❖ 学会誌の特集が読めます ✓ https://techbookfest.org/organizati on/5760124647899136 ❖ 学生会員はジュニア会員になれば, 全部追加課金なしで読めます ✓ B3 相当までは会費がかからない ので積極的になってください 4
[宣伝] サイボウズ・ラボユース ❖ 通年で開発支援を受けられます ✓ https://labs.cybozu.co.jp/youth/requi rements.html ❖ 奨励金あり or なしで募集枠が別です ✓ 詳しくは Web にある募集要項をご 覧ください 5
[宣伝] 7/26-27 に旭川でカンファレンスやる ❖ https://techramenconf.net/ ✓ 100-120 人くらい入るホール を押さえました ✓ 前夜祭と本祭,(非公式) 前前夜祭,後日祭イベン ト......? ✓ 旭川・美瑛・富良野のうまい もの集合体懇親会 6
NT 函館おつかれさまでした 7
MOO ちゃん激推しディヴァイス 8
NT函館に出展しました ❖ 4/29(月祝) 出展しました ❖ MOO ちゃん激推しディヴァイス作った ✓ PHP + 電子工作を模索した 9
MOO ちゃん ❖ https://twitter.com/MOO_kushiro ✓ 釧路市にある「フィッシャーマンズワーフ MOO」のキャラ ❖ MOO ちゃんの魅力を知りたいあなた ✓ #MOOちゃん遠足シリーズ をご覧ください 10
仕組み - ソフトウェア側 11
仕組み - ソフトウェア側 ❖ Teachable Machine でターンテーブルと MOO ちゃんの画像を学習 ✓ MOO ちゃんの正面,左,右,後ろ向きと無ちゃんの 5 つ ❖ ブラウザで開ける MOO ちゃん認識システムをつくる ✓ Teachable Machine がくれた JavaScript のテンプレを改造 ✓ Fetch API を使ってサーバー側に MOO ちゃん state を渡す ❖ データを受け取りシリアル通信する機能を PHP でつくる ✓ 残念ながら断念し,データを受け取り Python に投げることに ❖ シリアル通信してくれる機能を Python でつくる ✓ 毎度繋ぎ直しになるけれど Arduino 側を sleep させないで対応 12
Teachable Machine ❖ 画像,音声,ポーズの学習モデルをいい感じに作って使わせてく れる,ブラウザだけで完結する Google のサービス ✓ Google が持つ学習済みモデルを転移学習させるため手軽 ■ 仕組みについては「高度な質問」にある 画像 : https://jp.mathworks.com/discovery/transfer-learning.html 13
Teachable Machine のテンプレ(画像識別) ❖ Web カメラから取り込んだ画像がどのクラスに分類されるかをリ アルタイムに表示してくれるものが出てくる ✓ Teachable Machine 側でモデルを更新しても URL は同じ(ラク 14
MOO ちゃんの検出とサーバーとの通信 ❖ さっきのテンプレに機能追加 ✓ MOO ちゃん検出の閾値を設け,ヒステリシスを持たせる ✓ MOO ちゃんがいるかいないかを 0/1 でサーバーに知らせる 画像 : https://www.sensorinstruments.de/whatiswhat.php?language=en&subpage=13&fl=jp 15
データの受信とシリアル通信 ❖ 受け取ったデータを解釈して 0/1 を判断( ここは PHP ❖ PHP から Python で作ったスクリプトを叩いてシリアル通信する ✓ 本当はここも PHP でやりたかった ■ https://github.com/kahagon/phpmake_serialport ■ 日曜プログラマー PHP 初心者には厳しすぎた ❖ とりあえず経験のある PySerial で誤魔化す ✓ Python はコマンドラインから 0/1 を受け取る形に ✓ PHP の shell_exec で Python の出力を php_error_log に出力した 16
XAMPP 環境でテストしてぶち当たる問題 ❖ html ファイルをダブルクリックして開くと動かない ✓ よくみると PHP にデータを渡すときにエラーがあった ❖ CORS(同一性制限ポリシー)問題に打ちあたっていた ✓ file://~ でアクセスするとこの問題にぶち当たる ✓ https://localhost/~ でアクセスするとうまく動いた 17
仕組み - ハードウェア側 18
仕組み - ハードウェア側 ❖ Arduino で MOO ちゃん激推し mode を切り替える機能をつくる ✓ PC からシリアルで飛んできた 0/1 で ON/OFF する ✓ sleep させていい感じに消費電力を抑えようと思ったが断念 ❖ MOO ちゃん激推しのための光と動きをつくる ✓ WS2812B を連結したテープ LED で激光りさせる ■ RGB をいい感じに三相交流っぽい sin カーブで変化させる ✓ 安いターンテーブルをいい感じに回してアピール ■ ON/OFF できる機構がなかったため FET をぶち込む 19
Arduino をスリープさせる ❖ set_sleep_mode(SLEEP_MODE_PWR_DOWN); ✓ 外部割り込みピンの変化で sleep が解ける ✓ 最初はこれでスリープさせておいて起こそうとした ❖ PC と通信している TX RX をジャックして起こした ✓ が,通信内容がなんであれ起き上がってしまうためボツ ✓ シリアル通信の内容いかんで起きるみたいなことをすれば...... 20
WS2812B ❖ RGB のデータを隣に渡すことのできるフルカラー LED ✓ リボン上に接続されたものが市販されている ✓ これの RGB を三相交流っぽい sin カーブで制御すると綺麗 画像 : https://www.amazon.co.jp/gp/product/B08THDHNCG/?th=1 画像 : https://www.rohm.co.jp/electronics-basics/motors/motor_what3 21
お買い得ターンテーブル ❖ 999 円で買える電池一本で動くターンテーブル ✓ 太陽電池がついているのにスイッチがついてない ■ 止められない ✓ 乾電池駆動限定の謎の LED のくせにスイッチがついている ■ いらない ✓ モーターが超原理的 ■ コイル上を磁石ディスクが走る ● ブレーキ機構がない ● すぐ逆回転する 画像 : https://www.amazon.co.jp/gp/product/B07149W3T1/ 22
MOO ちゃん激推しディヴァイス - 動作デモ https://twitter.com/tomio2480/status/1784795119058886740 23
とりあえずうごくのをアップしました https://github.com/tomio2480/moo-chan-geki-oshi 24
みんなの疑問 25
みんなの疑問 ❖ インターネット介さないなら Python+Arduino でよくないですか? ✓ そうです ✓ PHP カンファレンスによく行くので PHP を使いたくて...... ❖ Arduino 使わないでも PIC とかマイコン直で十分じゃないですか? ✓ そうです ✓ 今回は FuraIT Arduino 部の活動だったので Arduino です ❖ 別に MOO ちゃん推さなくてもよくないですか? ✓ ダメです ✓ ダメなので 26
MOOちゃん激推しディヴァイス 工作記録 PHP でシリアル通信しようとして撃沈 24/05/03 #mariconf2024spring / Shota Nishihara @tomio2480