今年のマイクロマウス振り返り
これはマイクロマウスアドベントカレンダー2025の14日目の記事です.
マイクロマウス Advent Calendar 2025 - Adventar
昨日の記事はロングシリーズさんの"今年の新型機について"でした.新入社員ですら開発の時間が減ったなぁという感じなのに、さらに子育てもしながら新作を2台も作るとは... 持続可能な社会人マウサーのお手本として参考にしたいと思います.(むしろ参考にしてはいけない?普通は無理では??
まともに書いた前回の記事は去年のアドベントカレンダーになってしまった,xfa273です.今年から北九州の某電機機器メーカーに入社したので,地方移住した新社会人のマウス開発がどんな感じだったか振り返りたいと思います.
開発環境構築
ハード編
https://x.com/xfa273/status/1906607231778578519?s=20
My New 寮… pic.twitter.com/hhgdiEeaw2
— xfa273 (@xfa273) 2025年3月31日
弊社は新入社員は全員寮に入るので,こんな感じの部屋に住んでいます.最初は何もありませんでしたが,散財の限りを尽くし,デスク環境を整えました.31インチ4Kモニタと18インチの縦モニタ(モバイルモニタ流用)で複数ウインドウでも快適です.
デュアルモニタ設置した
— xfa273 (@xfa273) 2025年9月23日
4K 31.5" + FHD 18.3" pic.twitter.com/AjMdtkNDAh
・32GS95UV 31.5" 4K240Hz
・InnoView 18.5" FHD
・BenQ ScreenBar Pro
マイコン在庫切れだったので取り敢えず剥がして確保
— xfa273 (@xfa273) 2025年9月14日
ホットプレート便利だね pic.twitter.com/RakiAoCrHP
寮の狭さからハーフサイズがメインになるので,裏面パッドの表面実装ができるようにはんだ付け用ホットプレートも買いました.これで4000dps対応IMU ISM330DHCXも無事付けられました.
・ALIENTEK HP15
九州大会前のマウスはここまで
— xfa273 (@xfa273) 2025年10月20日
壁切れを追加したおかげで距離ズレする無茶な加速度でも割と走れるようになった pic.twitter.com/9d5RNjIVNr
そして当然9x9迷路も購入.板は穴あけまで外注して学生のうちに自分で塗ったものですが,壁柱だけで5万円ぐらいかかりました.3Dプリント製の壁柱でも普通に走れますが,しきい値の調整などが大会と合わなくなるので,ちゃんと競技やろうと思ったら大人しく買ったほうが良いと思います.
ソフト編
アドカレ用に振り返り
— xfa273 (@xfa273) 2025年12月13日
Windsurf 使用状況 pic.twitter.com/n9rAjKVXYo
まず,最近流行りのAIコーディングを本格的に始めました.色んなツールがありますが,ソフト初心者向けってどこかで見かけたWindsurfを使っています.土日メインでマウス開発なら月$15ぐらいのプランでThinking付きモデルをがっつり使っても大体足りるみたいです.
ログ取り用にAIに作らせたツール
— xfa273 (@xfa273) 2025年12月13日
これでExcel脱却 pic.twitter.com/zqnykrYMX4
そしてこのAIたちに作ってもらって良かったのがログ取得&描画ツール.予め決めておいたフォーマットのログデータをUARTで受信すると自動的にCSVファイルで保存し,それを描画ツールからダブルクリックだけで表示できます.本当はSRAMを積むとかしてもっと沢山ログを取りたいですが,普通にRAMに収まる範囲のログ取りならこれで用が足りそうです.これで学生ライセンスがなくなってExcel使えなくてもやっていける...
機体紹介

今シーズン製作したハーフサイズマイクロマウスが"Nightfall-mini"です.設計は学生のうちに行いましたが,引っ越し前々日ぐらいに部品が届いたので,製作は全て社会人になってからです.3機目のハーフマウス,2機目のDCハーフマウス,初めての吸引ハーフマウスです.
<コンセプト>
前作"CyberRat"の部品構成を引き継いで無難に動かしつつ,大電流の構成によりそれなりに速くする.
既成品のネミコン7Sエンコーダを使った足回りやクラシックから流用し続けているSTM32F405RGTは続投し,バッテリーも無難に1セルです.しかしそれだけでは面白くないし戦えないので,
IMU: ISM330DHCX 4000dps対応
MD: MP6551 最大5A対応
モータ: NFP-D0612-2-3.4 みんな使ってるモータの1.7Ω版
バッテリ: Palm Beach Bots 100/180mAh 45C
を採用しています.
最近はPOWERが全てとか言われていますが,POWERとは電力なので,1セルでも大電流を流せればPOWERを手に入れられるはずです.まだ安定していませんが,ターン速度1.4m/s,加速度18m/ss,吸引力100g,程度を発揮できるようです.これは1セル機としては強い方ではないかと思います.
大電流を流せるバッテリはChatGPT(5 Thinking)に聞いたところPalm Beachのが良さそうとのことだったので,送料を9,000円ぐらい払ってフロリダから購入しました.モータも1.7Ω版はNFP公式から買って,結局2.5万円ぐらい使ってしまいました.まだそんなに社会人パワーないのに...
・Palm Beach Bots Li-Po
・NFP-D0612
といったところで,0時を回ってしまったので,ここまでとします.機体情報など,もっと知りたいことがあればコメント貰えれば追記したいと思います.
明日はコヒロさんの「C++に乗り換えた話」です.マウスのコードをC++に変えた/変えたいという話はよく聞く気がしますが,実際どうなんでしょう?お楽しみに.
status/1906607231778578519?s=20
VSCode系エディタでSTM32HALプロジェクトのビルド環境を作るメモ
はじめに
最近はマイクロマウスのコードの大半をAIで書いているので,エディタとしてCubeIDEではなくWindsurfを使っています.しかし,ビルドにはCubeIDEを使っていたため,コード変更と書込みを繰り返すと操作が煩雑になっていました.これを解決するため,VSCode系のエディタにSTM32HAL向けビルド環境を作成してみました.
ただし,自分の機体がST-Link/J-Link等のデバッガ非対応なので,これらを使った書込み・デバッグについては触れていません.たぶん出来ると思いますが...
自分の環境
ThinkPad X1C 10th
Ubuntu 24.04.2 LTS
以下の記事を参考に,Windsurf上のClaude Sonnet 4 (Thinking) にほぼ丸投げし,以下の内容も同AIが作成しています.内容チェックはあまりしていないので,自己責任で参考にしてください.
VSCodeと新拡張機能によるSTM32開発環境の構築 (2025年5月時点) | eyrin.jp
STM32開発環境セットアップマニュアル
📋 概要
このマニュアルでは、Ubuntu 24.04環境でSTM32マイクロコントローラ開発環境を構築する手順を説明します。 Windsurfエディタを中心とした統合開発環境により、ビルド・書き込み・シリアル監視を一元化できます。
💻 対象環境
- OS: Ubuntu 24.04 LTS(推奨)
- エディタ: Windsurf(VSCodeベース)
- 開発対象: STM32F4シリーズ(F405/F407など)
- 書き込み方式: UART経由(ST-Link不要)
🔧 必要な準備
ハードウェア要件
- UART-USB変換器(CP2102、FT232など)
- STM32マイコンボード
- 適切な配線
ソフトウェア要件
- インターネット接続
- 管理者権限(sudo)
📦 Step 1: 基本パッケージのインストール
1.1 システム更新
sudo apt update && sudo apt upgrade -y
1.2 開発ツールの導入
# 基本開発ツール sudo apt install -y curl wget git build-essential # CMakeとNinja(ビルドシステム) sudo apt install -y cmake ninja-build # ARM GCCツールチェーン sudo apt install -y gcc-arm-none-eabi gdb-arm-none-eabi # シリアル通信ツール sudo apt install -y minicom cu # ユーティリティ sudo apt install -y psmisc # fuser コマンド用
1.3 ユーザー権限設定(シリアルポートアクセス)
# dialoutグループに追加(シリアルポート使用権限) sudo usermod -a -G dialout $USER # 設定反映のため再ログインまたは再起動 echo "再ログインまたは再起動してください"
🖥️ Step 2: Windsurfエディタのインストール
2.1 Windsurfダウンロード・インストール
公式サイトからWindsurfをダウンロードしてインストールしてください。
# 例:.debパッケージの場合 sudo dpkg -i windsurf_*.deb sudo apt install -f # 依存関係の解決
🔌 Step 3: Windsurf拡張機能のインストール
Windsurfを起動後、以下の拡張機能をインストール:
3.1 STM32関連拡張機能
- STMicroelectronics.stm32cube-ide-bundles-manager
- STMicroelectronics.stm32cube-ide-debug-stlink-gdbserver
3.2 開発支援拡張機能
インストール方法:
- Ctrl+Shift+X で拡張機能パネルを開く
- 上記拡張機能名で検索してインストール
🛠️ Step 4: STM32開発ツールのインストール
4.1 STM32CubeMXのインストール
方法1: ZIPファイルから(推奨)
# STMicroelectronics公式サイトからZIPファイルダウンロード # 例:STM32CubeMX-Lin-v6-14-1.zip cd ~/Downloads unzip STM32CubeMX-Lin-v*-*.zip cd STM32CubeMX ./SetupSTM32CubeMX-*.linux # デフォルトインストール先: ~/STMicroelectronics/STM32Cube/STM32CubeMX
方法2: 自動インストーラー(オプション)
# Javaが必要 sudo apt install -y openjdk-11-jdk # .linuxファイルを直接実行 chmod +x SetupSTM32CubeMX-*.linux ./SetupSTM32CubeMX-*.linux
4.2 STM32CubeProgrammerのインストール
# STMicroelectronics公式サイトからダウンロード # 例:en.stm32cubeprg-lin-v2-19-0.zip cd ~/Downloads unzip en.stm32cubeprg-lin-v*.zip cd STM32CubeProgrammer-* ./SetupSTM32CubeProgrammer-*.linux # デフォルトインストール先: ~/STMicroelectronics/STM32Cube/STM32CubeProgrammer
4.3 パス設定(オプション)
# .bashrcまたは.zshrcに追加 echo 'export PATH="$HOME/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin:$PATH"' >> ~/.bashrc source ~/.bashrc
🏗️ Step 5: プロジェクトセットアップ
5.1 プロジェクトディレクトリ作成
mkdir -p ~/STM32Workspace cd ~/STM32Workspace
5.2 STM32CubeMXでプロジェクト生成
- STM32CubeMX起動
~/STMicroelectronics/STM32Cube/STM32CubeMX/STM32CubeMX
新規プロジェクト作成
File→New Project- マイコン選択(例:STM32F405RGT6)
- ピン設定、クロック設定を実施
プロジェクト設定
Project→Settings- Project Name: 任意の名前
- Toolchain/IDE: CMake を選択
- Project Location:
~/STM32Workspace
コード生成
Project→Generate Code
5.3 Windsurfでプロジェクトを開く
cd ~/STM32Workspace/[プロジェクト名] windsurf .
🔨 Step 6: ビルド環境の設定
6.1 CMake設定確認
プロジェクトルートに以下のファイルが存在することを確認:
- CMakeLists.txt
- CMakePresets.json
6.2 初回ビルド
# CMakeプロジェクト初期化 cmake --preset Debug # ビルド実行 cmake --build build/Debug
6.3 ビルド成功確認
以下のファイルが生成されることを確認:
- build/Debug/[プロジェクト名].bin
- build/Debug/[プロジェクト名].hex
- build/Debug/[プロジェクト名].elf
📝 Step 7: 書き込みスクリプトの作成
7.1 UART書き込みスクリプト
flash_uart.sh を作成:
cat > flash_uart.sh << 'EOF'
#!/bin/bash
# STM32 UART Flash Script
# Usage: ./flash_uart.sh [UART_PORT] [BAUD_RATE]
# デフォルト設定
DEFAULT_PORT="/dev/ttyUSB0"
DEFAULT_BAUD="115200"
DEFAULT_FLASH_ADDRESS="0x08000000"
# パラメータ設定
UART_PORT=${1:-$DEFAULT_PORT}
BAUD_RATE=${2:-$DEFAULT_BAUD}
FLASH_ADDRESS=${3:-$DEFAULT_FLASH_ADDRESS}
# CubeProgrammer CLIパス
PROGRAMMER_CLI="$HOME/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/STM32_Programmer_CLI"
# プロジェクト名を自動検出(CMakeLists.txtから)
PROJECT_NAME=$(grep -oP 'project\(\K[^)]+' CMakeLists.txt | head -1)
BIN_FILE="build/Debug/${PROJECT_NAME}.bin"
echo "=== STM32 UART Flash Script ==="
echo "Port: $UART_PORT"
echo "Baud Rate: $BAUD_RATE"
echo "Binary File: $BIN_FILE"
echo "Flash Address: $FLASH_ADDRESS"
# ファイル存在確認
if [ ! -f "$BIN_FILE" ]; then
echo "❌ Error: Binary file not found: $BIN_FILE"
echo "💡 Please run: cmake --build build/Debug"
exit 1
fi
# CubeProgrammer CLI存在確認
if [ ! -f "$PROGRAMMER_CLI" ]; then
echo "❌ Error: STM32CubeProgrammer CLI not found: $PROGRAMMER_CLI"
exit 1
fi
echo "Starting UART flash programming..."
echo ""
# UART経由でのフラッシュ書き込み実行
timeout 60s $PROGRAMMER_CLI \
-c port=$UART_PORT br=$BAUD_RATE \
-d $BIN_FILE $FLASH_ADDRESS
PROG_EXIT_CODE=$?
echo ""
echo "Programming exit code: $PROG_EXIT_CODE"
# UARTポートを使用しているプロセスがあれば強制終了
echo "Ensuring UART port is released..."
fuser -k $UART_PORT 2>/dev/null || true
# 短時間待機してポートの完全開放を確認
sleep 1
if [ $PROG_EXIT_CODE -eq 0 ]; then
echo "✅ Flash programming completed successfully!"
echo "✅ UART port $UART_PORT has been released."
echo "💡 To monitor serial output, use: ./serial_minicom.sh"
else
echo "❌ Flash programming failed or timed out (exit code: $PROG_EXIT_CODE)"
echo "✅ UART port $UART_PORT has been released."
fi
EOF
chmod +x flash_uart.sh
7.2 シリアル監視スクリプト(オプション)
serial_minicom.sh を作成:
cat > serial_minicom.sh << 'EOF'
#!/bin/bash
# STM32 Serial Monitor using minicom
# Usage: ./serial_minicom.sh [UART_PORT] [BAUD_RATE]
# デフォルト設定
DEFAULT_PORT="/dev/ttyUSB0"
DEFAULT_BAUD="115200"
# パラメータ設定
UART_PORT=${1:-$DEFAULT_PORT}
BAUD_RATE=${2:-$DEFAULT_BAUD}
echo "=== STM32 Serial Monitor (minicom) ==="
echo "Port: $UART_PORT"
echo "Baud Rate: $BAUD_RATE"
echo "Exit: Ctrl+A then X"
echo "====================================="
echo ""
# UARTポートの存在確認
if [ ! -e "$UART_PORT" ]; then
echo "Error: UART port not found: $UART_PORT"
exit 1
fi
# minicomでシリアル監視開始
minicom -D $UART_PORT -b $BAUD_RATE -8 -o
EOF
chmod +x serial_minicom.sh
✅ Step 8: 動作確認
8.1 ビルドテスト
cmake --build build/Debug
8.2 書き込みテスト
# STM32をUARTブートモードに設定してから実行 ./flash_uart.sh
8.3 シリアル監視テスト(オプション)
./serial_minicom.sh
🎯 完成後の基本ワークフロー
日常開発
# ビルド → 書き込み cmake --build build/Debug && ./flash_uart.sh
新機能開発時
# ビルド → 書き込み → シリアル監視 cmake --build build/Debug && ./flash_uart.sh && ./serial_minicom.sh
🛠️ トラブルシューティング
よくある問題
1. シリアルポートのアクセス権限エラー
# dialoutグループ確認 groups $USER # dialoutが含まれていない場合 sudo usermod -a -G dialout $USER # 再ログイン必要
2. ARM GCCツールチェーンが見つからない
# インストール確認 arm-none-eabi-gcc --version # インストールされていない場合 sudo apt install -y gcc-arm-none-eabi
3. STM32CubeProgrammer CLIが見つからない
# パス確認 ls ~/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/STM32_Programmer_CLI # パスが異なる場合はflash_uart.sh内のPROGRAMMER_CLI変数を修正
4. UARTポートデバイスが見つからない
# 接続デバイス確認 ls -la /dev/ttyUSB* /dev/ttyACM* # dmesgでUSBデバイス確認 dmesg | grep -i usb
📋 必要ファイルチェックリスト
セットアップ完了後、以下のファイル・ディレクトリが存在することを確認:
ソフトウェア
- [ ] Windsurf エディタ
- [ ] STM32CubeMX (
~/STMicroelectronics/STM32Cube/STM32CubeMX/) - [ ] STM32CubeProgrammer (
~/STMicroelectronics/STM32Cube/STM32CubeProgrammer/) - [ ] ARM GCC (
arm-none-eabi-gccコマンド) - [ ] CMake + Ninja (
cmake,ninjaコマンド)
拡張機能(Windsurf内)
- [ ] STMicroelectronics.stm32cube-ide-bundles-manager
- [ ] STMicroelectronics.stm32cube-ide-debug-stlink-gdbserver
- [ ] ms-vscode.cpptools
- [ ] ms-vscode.vscode-serial-monitor
プロジェクトファイル
- [ ]
CMakeLists.txt - [ ]
CMakePresets.json - [ ]
flash_uart.sh(実行権限付き) - [ ]
serial_minicom.sh(実行権限付き)
🎉 セットアップ完了
おめでとうございます!STM32統合開発環境のセットアップが完了しました。
効率的なSTM32開発をお楽しみください!
作成日: 2025年6月29日
対象環境: Ubuntu 24.04 + Windsurf
バージョン: v1.0
Ubuntu/Mozcの挙動をGoogle日本語入力に近づける設定のメモ
最近,開発用PCをUbuntuにしたのですが,AIとの対話で日本語を以前より圧倒的に沢山打つようになったので,タイプミスが気になるようになりました.Mozcの日本語入力はCapslock周りの挙動がWindows環境のGoogle日本語入力と違うので,IMEのオンオフのつもりで無意識にCapslockを押して,いつの間にか大文字小文字が入れ替わっていたりします.これを解決すべく色々いじっていたら良い感じになったので,やり方を残しておきます.
環境
ThinkPad X1C 10th
Ubuntu 24.04.2 LTS
以下の内容は設定をやらせたWindsurf上のGPT o3に作成させたもので,内容はあまりチェックしていません.何かおかしかったら教えてください.
Ubuntu + Mozc で CapsLock を IME トグルキーにする完全ガイド
Wayland でも VS Code でも快適!ソフトウェアだけで実現するキーリマップ術
TL;DR
• keyd で CapsLock → Ctrl+Space を送出
• IBus を Ctrl+Space トリガに設定
• Mozc に Ctrl+Space = IME 有効化/無効化 を追加
以下では「どうしてそうなるのか」まで踏み込んで解説します。初学者でも手順通りに進めれば 10 分で完了します。
なぜ CapsLock を IME 切替に?
- Windows の Google 日本語入力と同じ操作感でタイポを減らしたい。
- CapsLock の誤爆を防ぎ、キーボード配列を問わず統一したワークフローを得たい。
- ソフトリマップのみで実現し、カーネルレベルの変更や BIOS 設定を避けたい。
全体構成
flowchart TD
CapsLock -->|keyd| CtrlSpace
CtrlSpace -->|IBus| トリガ
トリガ -->|Mozc キーマップ| IME_ON_OFF
0. 前提条件
1. 既存 XKB リマップの無効化(任意)
以前に setxkbmap -option caps:zenkaku_hankaku などを試している場合は競合回避のため削除します。
sudo sed -i 's/^XKBOPTIONS=.*/XKBOPTIONS=""/' /etc/default/keyboard
sudo dpkg-reconfigure keyboard-configuration # または再起動
XKB 方式は X11 専用で、Wayland アプリや Electron 系 VS Code では動かないことがあります。
2. keyd をビルド&インストール
APT には無いのでソースから。サイズも小さくビルドは数秒で終わります。
sudo apt-get update
sudo apt-get install -y build-essential git libevdev-dev
cd ~
git clone https://github.com/rvaiya/keyd.git
cd keyd
make
sudo make install
sudo systemctl enable --now keyd
libevdev-dev だけ追加で入れれば依存は満たせます。サービスは Systemd 管理なので再起動後も自動起動します。
3. keyd の設定
/etc/keyd/default.conf を以下のように作成します。
[ids]
*
[global]
capslock = nop # CapsLock 本来のロック機能を殺す
[main]
capslock = C-space # Ctrl+Space を送出
反映:
sudo systemctl restart keyd
検証:
sudo keyd monitor # CapsLock を押すと "C-space" と表示されれば OK
C-space が出ない場合は [ids] * を書き忘れているか、Wayland の uinput ブロックが原因です。詳しくは記事末尾の FAQ へ。
4. IBus に Ctrl+Space を登録
IBus は複数 IME をトグルする「トリガ」キーを org.freedesktop.ibus.general.hotkey triggers に持っています。
# 既存値の確認
gsettings get org.freedesktop.ibus.general.hotkey triggers
# 変更
gsettings set org.freedesktop.ibus.general.hotkey triggers "['Control+space']"
# 反映
ibus restart # またはログアウト→ログイン
5. 入力メソッドを 2 つ以上登録
Ctrl+Space は「最後に使った 2 つの入力メソッド」をトグルする仕組み。Mozc しか無いと反応しません。
ibus-setup→ 「入力メソッド」タブJapanese – Japanese (Mozc)(日本語)Japanese – Japanese (OADG 109A)など xkb ベースの英数入力(US 配列ならEnglish – English (US))- 2 つ以上になっていることを確認
6. Mozc キーマップでトグルを実現
Mozc には「IME ON/OFF」コマンドが無いので、2 つのコマンドで疑似トグルにします。
- トレイの “あ/A” → 「プロパティ」→「キー設定」タブ
- プルダウンを カスタム に変更 → 「編集…」
- 「追加」を 2 回押し下記の行を作成
| モード | キー | コマンド |
|---|---|---|
| 直接入力 | Ctrl+Space | IME を有効化 |
| 変換前入力(他モード) | Ctrl+Space | IME を無効化 |
OK で閉じると即時反映。
7. 動作テスト
sudo keyd monitorで CapsLock →C-spaceを確認- テキストエディタで CapsLock を押下 → “あ” ↔ “A” が切り替われば成功
- VS Code, Firefox, Terminal など Wayland/Electron 系でも同様に動作することを確認
8. よくある質問(FAQ)
Q. keyd monitor で capslock と表示される
Q. Ctrl+Space でも切り替わらない
Q. 英字入力時の記号が US 配列になる
Japanese – Japanese (OADG 109A) を追加すると JIS 配列どおりの記号配置になります。
9. 元に戻すには?
# keyd を停止・削除
sudo systemctl disable --now keyd
sudo rm -rf /etc/keyd /usr/local/bin/keyd /usr/local/share/keyd /usr/local/lib/systemd/system/keyd.service
# IBus 設定をデフォルトに戻す
gsettings reset org.freedesktop.ibus.general.hotkey triggers
終わりに
これで CapsLock に邪魔されることなく、日本語⇔英数を爆速で切り替えられる環境が完成しました。Wayland, VS Code, Electron アプリでも安定して動く手軽な方法なので、ぜひお試しください!
2024シーズンの機体紹介
お詫び
東日本大会前の限界開発により力尽き,そして修論の発注を急いでいたため,投稿が間に合いませんでした.大変申し訳ありません.
これはマイクロマウスAdvent Calendar2024の22日目のはずだった記事です.
昨日はyukiさんの「マイクロマウスタックチャンハーフ化計画」でした.スタックチャンはかわいいのでいずれ作ってみたいですね.
今シーズンは去年12月に作った旧作"Nightfall"に加え,新作クラシックマウス"Nightfall-Lite"と(ほぼ)初めて作ったマイクロマウス"CyberRat"を製作し,大会に出場していました.どちらもそれなりに走るようになったので,これから機体を作る人の参考になればと思います.各機体について多少工夫のある部分のみ解説していますが,他にも知りたい箇所があればTwitterやDiscordで聞いて貰えればと思います.
クラシックマウス"Nightfall-Lite"

戦績
九州地区大会: 9'538 優勝
学生大会: 4'052 2位
東日本地区大会: 5'835 4位
概要
前作"Nightfall"を軽量化してより速く走れるようにした新機体です.最近流行りの軽量低イナーシャな2輪機で,パーツ構成は全日本大会で上位だった"XM-702 Carmine",全体的な機体の作りは"雪風8AS"を参考にしています.回路は前作からほぼ変更しておらず,前作のソフトがほぼそのまま使えます.
まだ斜め走行ができておらず大回りのみでこのタイムと順位なので,機体性能としてはそれなりに高く作れたのかなと思います.斜め出来ないようなやつが入賞してしまうとは,やはり時代はハーフマウス...
現状のそれなりに走れる最高パラメータは
直進最高速度: 5.0m/s
直進加速度: 28.0m/ss
小回りターン: 1.4m/s
大回りターン: 2.2m/s
です.学生大会の最速タイムはこれだったはずです.
基板
へえ,こんなんで動くんだ...(適当


モーターマウント

雪風のものを参考に設計し,JLCPCBのPOM切削で発注しました.ミスミMeviyと比べて仕上がりの個体差は大きいものの,より細かく複雑な形状まで対応してくれるので,マウスの部品を作るのには使いやすいと思います.左右合わせて$45ぐらいでした.(為替レートの影響で予備機の方がちょっと高い)
モーターはカプトンテープを巻いてキツさを調整しながら押し込んで固定,エンコーダはそのまま押し込んで固定しています.
ホイール軸,基板,ファンマウントの固定はM2/M3の下穴をあけるように発注し,手動でタップを切りました.固定用なら問題ありませんが,ホイール軸はタップ切りを上手くやらないと傾くので,他の方法を考えた方が良いかもしれません.
モーター
8520サイズで,AliExpressで購入したもの.
理論的なモーター選定は行っていないのですが,以下3点を考慮して選びました.個体の選別はしていません.
・定格7.4V...電流が流れすぎなくて使いやすそうな気がする
・ギヤを通して減速する用途のもの...雪風が小型RC飛行機用のギヤ付きのものを使っていたので,プロペラを直付けする用のものより高トルクで良いのかなという想像
・軸の軸方向の遊びが少ない...機械的な作りが良さそうな気がする
ギヤ
XM-702と同じ構成です.バックラッシは0.1mmで設計し,特に問題なさそうです.
モーター側: M0.3 15T t2.0 真鍮 KKPMOで発注
ホイール側: M0.3 71T t2.0 POM ミスミCナビで発注
エンコーダ: M0.3 29T t2.0 POM ミスミCナビで発注
エンコーダのギヤはミスミだと穴径の小さいものが変えないので,3Dプリント製のスペーサーを挟んで使っています.
ファン

直径30mm,高さ5mmで,DMM.makeの高精細アクリルで発注しました.
基板のファン下部分に部品はありませんが,ダクト付きの形状にすることでクラッシュ時にファンの羽と基板が当たってファンが割れるのを防止しています.実際,フェイルセーフが上手く機能しない状態で吸引走行を行ってクラッシュしてもファンが割れることはありませんでした.
モーター軸との固定は圧入+接着剤(ロックタイト480)で,穴径はモーター軸径-0.03mmにしました.
ファンマウント


t1.2mmのPCBと3Dプリント部品(MJF PA12)を組み合わせています.プリント部品には薄い底面(0.8mm)があるため,ファンモータが緩んで落ちることはありません.
モーターとプリント部品は接着(ロックタイト480)し,プリント部品とPCBはプリント部品に下穴をあけて発注してタップを切りM2ねじでPCBに固定しています.
また,PCBに別のプリント部品を接着し,これによってバッテリーを走行モーターとの間で挟み込んで固定しています.
マイクロマウス(旧ハーフサイズ)"CyberRat"

戦績
九州地区大会: 8'005 11位
学生大会: 7'073 8位
東日本地区大会: 9'042 8位
概要
DCモータ搭載のマイクロマウスとしては初めて製作した機体です.ハーフサイズで多く使われている磁気式エンコーダは実用にするのに様々なノウハウが要ると聞くので,既製品の光学式エンコーダを使うことでこれを回避して手っ取り早く走るようにしたいという狙いでした.機体性能は大した事ないので上位には入れませんが,毎回最短走行を成功させており,目標としていたちゃんと走るハーフマウスにはなれたと思います.
基板面積を広く取れる設計でクラシックマウスと同じマイコンを搭載しており,ほぼ共通のプログラムで走ることが出来ます.(なので恐らく32x32だと探索が計算量溢れてダメ)
同様の既製品光学式エンコーダを搭載した機体として,"小天旋2 verMTL”を参考にしています.あとはBeeClone.
基板
パスコンの置き方が終わってるけど意外と普通に動いた.


モーターマウント

DMM.makeの高精細アクリルで作りました.クラシックと同様に,モーターはカプトンテープを巻いてキツさを調整しながら押し込んで固定,エンコーダはそのまま押し込んで固定しています.ネミコン7Sエンコーダ(やMTLの6mmのもの)は軸にベアリングが入っているので,エンコーダ軸に直接ホイールを差し込み,ホイールマウントを兼ねています.
モーター
何となく機体幅が狭い方が走りやすくて良いかなという理由で610サイズのアリエク謎モーターを使いました.しかし,同仕様のはずなのに挙動の全然違うハズレモーターがあったり,そもそもトルク不足ぎみだったりするので,大人しくMk06とかを使った方が良さそうです.
ギヤ
モーター側: M0.3 9T t2.0 真鍮 RTで売っている
ホイール側: M0.3 35T t2.0 POM ミスミCナビで発注
今ならZilconia v2用のギヤがRTで売っているので,それを使うのが良い気がします.
まとめ?
という感じで,今シーズンの機体紹介でした.シーズンというと全日本大会が残っていますが,去年と違って流石にもう新しいのは作らない予定です.多少の改修はしたいかもですが...
明日(もうとっくに数日前)の記事はエアプ回路レビュワーさんの「小容量・小型LiPoバッテリーの研究とスポット溶接」です.自分も初めてハーフマウスを作ってLi-Po選び難しいなぁとなったので,参考にしたいと思います.お楽しみに.
【既製品で作る】クラシックサイズDCマイクロマウスの足回り
DCマウスを作るとき,ハード面で一番難しいのは足回りだと思います.
見た目がそれっぽくても,上手く作らないと回転が渋くなったりまっすぐ走らなかったりしがちです.
既製品の組み合わせで良い感じの足回りができたので紹介します.
参考
使う部品
個数は2輪と4輪で変わります.
ミスミは事業者しか使えないってことになっているものの,適当な事業者を名乗って登録すれば普通に使えるはずです.〇〇商会とか△△ロボティクスとか...
・ホイール
ミニッツ アルミホイール GMスポーク ナロー +2.0mm(2個入) [OP8-229] x1~2セット
https://www.super-rc.co.jp/rc/product/view?id=23611
・タイヤ
ミニッツ ローハイトスリックタイヤ MZW39-40 x1~2セット
幅がナローのものなら何でも良いですが,厚みや硬さで特性が変わります.自分は一番薄く,硬いものを使っています.
・スパーギヤ
ミスミCナビ ポリアセタール M0.5 42T t2.0 内径8 x2~4個
型番: GEBA-JW-A0.5-G42-P8-B2
・ベアリング
SMR63ZZ x4~8個
https://jp.misumi-ec.com/vona2/detail/221000531116/?ProductCode=SMR63ZZ
・車軸
六角穴付きボルトM3x12 長さはモータマウントの設計による x2~4本
見た目のためにカラーアルマイトのものを使いましたが,別に何でも良いです.
・スペーサー
スペーサー(鉄/三価ホワイト)(パック品) 呼びM3長さ1.6mm 1パック(50個) x1パック
https://www.monotaro.com/p/4226/4555/?t.q=%83X%83y%81%5B%83T%81%5B
・モーターマウント 設計して外注or加工 x左右1個ずつ
使う工具
・テーパリーマ
・やすり(金属用の平たいもの)
・六角レンチorドライバ(使うボルト/ねじに合わせる)
モーターマウント
モーターマウントは各自の機体設計に合わせて設計しますが,
・車軸の固定部はM3めねじ
・車軸固定部に直径4.1mm,深さ1mmのざぐりがある
になるようにします.
ねじ切りが必要なので材質はアルミかPOMの切削がおすすめですが,3Dプリントで反対側にナットを埋め込んで代用でも良いと思います.
全体像
車体の外側から順に
モーターマウント←スペーサー(1.6mm)←ベアリング←ギヤ←ホイール←スペーサー(1mm)←ベアリング←ねじ
です.
ベアリングの内輪はスペーサー経由でモーターマウントに締め付けられて固定され,ベアリングの外輪がギヤホイールとともに回転します.

組立て
まず,ホイールの穴をテーパリーマで広げます.中の段差がギリギリなくならないぐらいまで削ります.

そして,ホイールのオフセット部分にスパーギヤをはめ込みます.

次に,スペーサーを長さ1.6mmから1mm(プラス公差)に削ります.モータマウントの軸受取り付け穴のざぐり部分にスペーサーをはめ込み,やすりでマウントの面とツライチになるまで削ると,ざぐり深さが1mmなのでスペーサーも1mmにすることができるはずです.ベアリング内輪を支えるために長さは1mmよりもわずかに長くなっていて欲しいので,1.08mmぐらいに調整するのが良さそうです.
出来上がったスペーサーは外して次の手順で使います.

そして,削ったスペーサーを使って,「ねじ-ベアリング-スペーサー」をホイールに差し込みます.


反対側にもベアリングをはめ込み,ねじを通します.

最後に,モーターマウントのざぐり部に今度は削っていないスペーサーをはめ込んでから,組立てたギヤホイールをねじで固定します.スペーサーの長さが上手く出来ていれば,強く締め付けてもホイールの回転は滑らかなままのはずなので,壊さない程度に力いっぱい締め付けます.

これで完成です.
以下補足.
ホイールは樹脂製のものでも良いですが,ホイールとギヤをはめ込む部分に強い負荷がかかったときに割れてしまうことがありました.普通に走らせている分には起きない気もしますが,安心のためにはアルミホイールをお勧めしておきます.
樹脂製を使う場合は
MZH131W-N2
←割れちゃったやつ

クラシックサイズDCマイクロマウス"Nightfall"のパーツ紹介
2023年度シーズンは学生大会まで"Ca.161/bis"を作っていて,この機体の紹介は
xfa273-backofchirashi.hatenablog.comでしました.
その後いろいろと不満点が出てきたので新作"Nightfall"を作って現在開発中な訳ですが,喜ばしいことに弊サークルWMMCでは初めてDCマウスを作ろうという2~3年生と修士2年生が何人かいるようです.もちろん質問・相談など大歓迎ですが,共通のことをいちいち答えるのも面倒なので,主に部品構成と購入先をリストアップしておきます.

NHKロボコンと掛け持ちの人々は取り敢えず向こう頑張ってもらって,終わってマイクロマウスもやろうかなってなったらぜひDCマウスを作りましょう.
この機体の性能についてはソフト面が不十分で何とも言えませんが,少なくとも前作よりは走れそうで,強力な吸引力を考えれば「学生で上位に入る1717モータ搭載機」ぐらいまでは目指せるレベルだと思います.軽量化を諦めて強度全振りの設計なので最後の一歩は負けそうですが...
オリジナリティを追求するより無難な構成で手っ取り早くそれなりに速い機体を作りたいという人はぜひ参考にしてもらえたらと思います.(ちなみに丸パクリも許容です)
予算が気になる人も多いと思うので値段の目安も書いておきますが,機体の構成や買う店しだいで変わるのであくまで参考程度に.ケチるなら中華通販を積極的に使おう
足回りについては別に記事を書いたので,こちらを参照してください.
xfa273-backofchirashi.hatenablog.com
メカ
モーターとエンコーダ
Faulhaber 1717T003SR+IEH2-4096 ¥13,000~20,000 x2個
個人で買うなら割高ですがアールティ,サークルでまとめ買いするなら代理店の新光電子で学割と数割を使うのが良さそう.
https://www.rt-shop.jp/index.php?main_page=product_info&products_id=3683
ギヤホイール
アライさんの記事を参考に
https://amac-araisan.blogspot.com/2018/09/blog-post_17.html?m=1
ミニッツ用ホイール ミニッツ アルミホイール GMスポーク ナロー +2.0mm ¥1100 x1~2セット
https://www.super-rc.co.jp/rc/product/view?id=23611
タイヤ ミニッツ ローハイトスリックタイヤ MZW39-40 x1~2セット
幅がナローのものなら何でも良いですが,厚みや硬さで特性が変わります.自分は一番薄く,硬いものを使っています.
ホイール側のギヤ ミスミCナビ ポリアセタール M0.5 42T t2.0 内径8 ¥1,300 x2~4個
型番 GEBA-JW-A0.5-G42-P8-B2
ベアリング SMR63ZZ ¥250 x4~8個
https://jp.misumi-ec.com/vona2/detail/221000531116/?ProductCode=SMR63ZZ
シャフト用のねじ 六角穴付きボルトM3x12 長さは設計しだい
ピニオンギヤ
KKPMO M0.5 13T t1.5 内径1.5 ¥900 x2個
モータマウント
設計しだいだけど¥5,000ぐらい
設計しだいですが,自分はCNC切削のアルミで作ったので,JLCPCBに発注しました.樹脂の3Dプリント部品で作る場合でもJLCPCBは安いのでおすすめです.(MJFのナイロンが一般的,レジンでも良いが脆いかも)
吸引ファン
DMM.make 3Dプリント 高精細アクリル 4個で¥7,000ぐらい
https://make.dmm.com/print/personal/
吸引ファンモータ
1020コアレスモータ(普通は8520の方がおすすめ) ¥400
エレキ
回路の構成はほぼ前作と同じなので詳細はそちらの記事を参照してください.ここでは主要部品のみリストアップしておきます.
マイコン
STM32F405RGT6 ¥2,000ぐらいだけどWMMC会員は提供品を無料で使える
https://akizukidenshi.com/catalog/g/g113219/
壁センサ
¥500 x4~6ぐらい
センサは赤外線LEDとフォトトランジスタの組み合わせで,
LED: CL-1KL7
https://www.kashinoki.shop/?pid=170106943
フォトトランジスタ: ST-1KL3A
https://www.kashinoki.shop/?pid=127571098
を使っています.LEDはSFH-4550が定番なのでそっちを使っても良いと思います.
IMU(ジャイロ)
ICM-20689 ¥1,000ぐらいだけど海外通販しかないので送料がかかる,みんなでまとめて買いたいね.
https://www.mouser.jp/ProductDetail/TDK-InvenSense/ICM-20689?qs=u4fy%2FsgLU9NcfLrncAE%252BeQ%3D%3D
ブザー
SMT-0540-S-R ¥400
特に主要部品ではないものの,小さいブザーは国内で買いにくいのでIMUと一緒に買っておくと良いです.
https://www.mouser.jp/ProductDetail/PUI-Audio/SMT-0540-S-R?qs=e16JbV5WBEu5VaDVzQP23Q%3D%3D
モータドライバ
1つのICで2つのモータを駆動でき,他によく使われるDRV8835に比べてはんだ付けが楽で使いやすいです.
TB6612 ¥200
https://akizukidenshi.com/catalog/g/g111317
チップ抵抗・コンデンサ
チップ部品は秋月や千石,マルツでも売っているものの,使うもの全てを揃えるのは面倒なので,Amazonやアリエクで売っている安いセットを買うと便利です.ぴったり合う定数の無くても近いやつで大抵動くしね
ちなみにチップ部品のサイズはmm表記とインチ表記があるので間違えないように注意.クラシックマウスなら1608M(メトリック,mm表記)が無難だと思います.
↓参考
https://www.rohm.co.jp/electronics-basics/resistors/r_what6
バッテリー
ドローン用の単セルLi-Poを2セルにパッキングして使っています.502030と呼ばれるサイズで,単セルで厚さ5mm,短辺20mm,長辺30mmです.Amazonで売っているEEMB/EM3とかいうブランドのものを使っていますが,アリエクならもっと安く買えると思います.
単セルLi-Poを使うと好きなサイズのLi-Poを選びやすいので,機体設計の自由度とバッテリーの人権を両立させやすいので,Li-Poの扱い中級者以上には割とお勧めです.
取り敢えずで書いた記事なので,抜けや端折りの部分について知りたい方はDiscordなりTwiterなりで聞いてください.あと,足回りの組み方の記事は後日書く予定です.
では.
クラシックマウス"Ca.161/bis”の紹介
これはWMMC Advent Calendar 2023の18日目の記事です.
しかしダラダラしてたら日付が変わってしまいました,ごめんなさい...
昨日は卓輝君の「ある大阪人のはじめて料理奮闘記」でした.後半の料理はちゃんと料理になっていて,成長が感じられますね.僕は実家暮らしなので偉そうなことは何も言えませんが,レンチンでパスタ茹でてペペロンチーノとか,豚肉と野菜を炒めて焼肉のタレorミックススパイスとかが楽でやりがちです.
今日明日は太郎君の「悩める貴方様に」です.哲学っぽい本が何冊か紹介されています.最近は技術系とTwitter以外の文章を全く読まなくなってしまったので,見習って何か読もうかと一瞬思いました.
今シーズンのクラシックマウス機体 "Ca.161/Ca.161bis"

さて,今回は今シーズンの僕のマウスについて紹介して,主にDCマウス初心者の参考になればなぁという記事です.この機体は4年前に設計を始めて2年前におおよそ完成し,今年の金沢草の根大会で初めて完走しました.色々課題はあるものの,僕にとって初めてのDCマウスで,東日本大会では10秒切りのタイムを出すなどそれなりに走るようにはなったかなという印象です.
機体名の由来はイタリアの高高度飛行記録を持つ飛行機で,マウサーは宇宙を目指す習性があるのでその一歩として,という意味で付けました.が,そういうレベルでマウスをやると辛いだけな気がしてきたので,もう二度とこんな名前は付けません...
基本設計は同じままマイナーチェンジで3機作ったので,2機目は「改良型」を意味する「bis」を付け,3機目はネーミング切れでそのままです.9~11月で3台作ったので月イチのペースで機体を作っていて,12月は新機体を作っているので,未だそのペースを維持しています.(流石にもうやりたくない)

設計思想的なもの
回路は先輩の機体("ぐでたまうす"と"道標 現"),ソフトはサークル標準機体からできるだけ流用して,ハードだけ強い人のを真似て手っ取り早く速い機体にしたいという安易で考えで設計しました.速い人の中でも比較的オーソドックスな4輪吸引機としてなおフィスさん,そらさんの機体を意識していた気がします.
それと,当時近くで見ていた先輩の機体の難点だと思った点を改良しようと思って
・横壁に当たっても引っかかりにくく前壁に当たると姿勢が補正される機体形状
・吸引力の確保(ファン径とファン穴径を大きく取る)
・センサ配置は無難でシンプルなもので,壁に接触するまで飽和しない位置
を意識しました.これは概ね間違っていなかったと思います.
各機能について
マイコン周り
「ぐでたまうす」のほぼ丸パクリ.STM32F405のデータシートのサンプル回路準拠だったと思います.マイコン選定もみんな使ってて無難そうだから.始めのうちはマイコンの性能差で差が出ることなんてないので,とにかく引っかからずに開発が進みそうな無難部品選定がおすすめです.先輩と合わせる,サークル標準機体と合わせる,Pi:CoやHM-Starterと合わせる,など.

電源周り
ここはオリジナル選定.Li-Po 2S → LD1117 5V/800mA → NJM2884 3.3V/500mAh で,秋月で買えてサイズが小さめで電流に余裕があるものを選びました.高輝度LEDをビッカビカに光らせても問題なく,電源関係のトラブルは全くありませんでしたが,発熱は結構あります.

センサ
サークル標準機体とほとんど同じ.フォトトランジスタがL-51ROPT1D1,赤外線LEDがOSI5LA5113Aで,どちらも秋月で売っているものです.センサの個体差のためか特性がイマイチだったので機体に組み込んでから分圧部分の抵抗値を変更して調整したら良い感じになりました.AD値は壁2枚先で300程度,壁1枚先で1500程度,壁に接触した状態で3500程度.

センサの配置は,機体が柱の位置にいるとき横壁の区画中央が見える位置と角度.前壁センサに角度付けて斜め壁制御するやつはまだやってないので分からん.
IMU
ICM-20689をデータシートのサンプル回路通りに使いました.このIMUはフィルタが内蔵されているとかで初心者にも使いやすいみたいです.側面パッドなのではんだ付けは難しいものの,細めのコテ先でフラックスをたっぷり使えば普通に付けられると思います.

モータ周り
これもデータシート準拠.配線しやすくするためにモータのコネクタのピンアサインを変更しています.ミスるとエンコーダを焼くので,最初の動作確認のときにはモータ電源を5Vにしておけば安心です.

インターフェイス周り
LEDとかスイッチとか.UARTは秋月のFT234Xシリアル変換基板をそのまま挿せるようにしています.ST-LINKは省いてしまったのでデバッガは使えません.分圧は1/3なので一応3セル対応.
回路的にほぼ同じなのでまとめちゃってますが,ブザーと吸引ファンはFETでスイッチング.吸引ファンは数A流れて発熱がすごいので,TO-252の大きめのものにしました.これならモータが焼け死ぬまで回してもFETは無傷です.

吸引
ファンは雰囲気設計で直径31mm,高さ8mm.モータはアリエクで買った1020コアレスで,Duty100%だと吸引力1.1kg出るものの5秒で焼け死ぬので実用はDuty50% 吸引力500gぐらいまで.それでもかなり吸える方みたいですね.

スカートはあささんの機体を参考に一次スカートが3Dプリント製の枠,二次スカートが秋月の青チャック袋.地上高2.5mmぐらいで一次スカート0.8mmですが,非吸引時に路面に擦らず吸引抜けもなさそうなので割と上手くできたと思います.

足回り
構成は無難な4輪ですが,モータマウントの設計が悪くてどうにもターンが左右で違ってしまいます.これに発狂してこの機体は放棄,新機体作成になった訳ですが,考えられる要因はこんな感じ.
・モータマウントのモーターはめ込む部分が薄すぎて変形しやすい.
・吸引ファンマウントはモータマウントを広げる方向に力をかけるが,機体後部にはモータマウントどうしを繋ぐ部材がないので,モータマウントが傾く.
・車軸の位置決めのためにモータマウントの穴をキツめにしたが,このせいで軸のネジをねじ込む状態になり,ねじ込み具合によって車軸に角度がつく.
・光造形3Dプリント製のギヤホイールが微妙に精度が悪く,僅かに傾いているものがある.
新作ではアルミ切削のモータマウントを使うことでこの問題をおおかた回避する予定.樹脂3Dプリントでもちゃんと走ってる人もいるので上手い作り方はそういう人に聞いて...

その他
それ意外で気にしたことはこんな感じ.
・バッテリーの搭載位置を設計段階で決めて,ホルダー的なものをつける.
・LEDの色とファンの色を揃えて統一感を出す.(学生大会verではファン変更により失敗)
・ケーブル長を最低限にする.(1717のケーブルがぐるぐる巻なの格好悪いよね,切ると不可逆要素になるので悩みどころだけど)
新作について
この前の記事でも触れましたが,Ca.161bisは足回りの問題のためにターン調整が困難なので,全日本大会に向けて新作を作っています.回路は全く同じで足回りを2輪に変更,モータマウントをアルミ切削でファンマウントをPCBで作成する予定です.部品は全て発注済なので早ければ年内には組み立てられると思います.
設計開始→発注終了まで4日でやったので何かしらミスってそう...
機体名は"Nightfall",由来は今年ハマったゲームのアーマード・コアⅥに登場する機体から.サークルの先輩にして旧機体のパクり元のぱわぷろさんも似たような構成の2輪吸引機"道標 暁"を作っていて,暁とNightfall(夕暮れ)が対っぽいことに気づきました,狙った訳ではない.


今年のアドベントカレンダーは枠を埋めるために3記事も書きましたが,その分クオリティも薄まった感じになってしまった気がします.来年はちゃんと枠が埋まるくらいにみんな記事を書いてくれると嬉しいなぁ...