fc2ブログ

メカナムホイールを使ったRCカートの紹介 最終回

はじめに
特異な動きが楽しめるメカナムホイールカートを紹介してきましたが、今回がシリーズの最後です。
操作が簡単な赤外線リモコンの1号車は夏休みに遊びに来た園児の孫にプレゼントしました。
残りの2台を色々と改良したので紹介します。

その後の改良とWiiヌンチャクを使ったコントローラの紹介
*全ての画像や回路図は、クリックすると拡大します。
MWC3_BLE_Model2.jpg

1)その後の改良
① ステッピングモータを使った2号車
Bluetooth Low Energy(以後BLEと表記)環境下でAccelStepperライブラリーを使うとステッピングモータの
速度が上がらない問題が有り、Bluetooth Classic(以後ClassicBTと表記)を使っていました。
今回、この対策としてBLE受信部とステッピングモータのコントロール部を分けて使うことにしました。
元のマイコンM5StampPicoを通信機能が無いRP2040 zero(ラズパイPico同等機能の超小型マイコン)に
置き換えてモータコントロール専用とし、その前段に新しくBLE通信用として安価なESP32 C3モジュール
(310円:秋月電子)を追加しました。 これにより、BLEが快適に使えるようになりました。
BLEを使う理由:送受信のUUIDとDevice名を同一にすれば、複数の受信デバイスに対してコントローラが
共用出来る利点があるからです。SerialBTでは、受信側のMACアドレスを設定する必要があり、コードを
書き換えないとコントローラの使い回しが出来ないからです。

2号車マイコン交換後の回路図
MWC2_ESP32C3_rp2040zero_Circuit.gif

2号車の新しいコントロールボードです。
AccelStepperライブラリーを使って駆動するコントロール部のマイコンを超小型のRP2040 Zeroに交換して
コントローラとのBLE通信用に新しくESP32 C3を設けました。 ESP32 C3は技適済みですが部品面に未印刷。
MWC2_BLE_Model1.jpg

② 3号車のラズパイpico WをESP32Eモジュールに交換
3号機もClassicBTを使っていましたが、2号車と同じヌンチャクコントローラが使えるように回路変更を
行いました。
pico WでもBLEが使えるが、ESP32のプログラムコードがそのまま使えず、止む無く使い慣れたESP32E
モジュールに置き換えました。
また、通常のESP32モジュールに比べ機能が限られたESP32 C3モジュールでは、同時に使えるPWM対応
I/Oが足りずに使えませんでした。

3号車マイコン交換後の回路図
MWC3_ESP32_Circuit.gif

マイコンを交換した3号車のコントロールボード
マイコンをラズパイPicoWからESP32Eモジュールに交換しました。
MWC3_BLE_Model3.jpg

2)Wiiヌンチャクを使ったコントローラの紹介
WiiヌンチャクをESP8266Wroom02を使ってWiFiリモコンに応用してから7年余し経ちましたが、いつも便利な
コントローラとして活躍しています。現在はESP32に交換してWiFi以外にClassicBTやBLEを利用しています。

①Wiiヌンチャクの入手について
メルカリでWiiヌンチャクを検索すると、1台数百円から購入できる中古品が多く出品されています。
このWiiヌンチャクをメカナムホイールカートのコントローラにする方法を紹介します。
尚、Wiiヌンチャクには白タイプ、黒タイプ、赤タイプが存在します。これらの違いはI2Cアドレスが異なります。
出回っている多くが白タイプです。また、純正品以外は色に関係なく中身が白タイプが多いようです。

②Wiiヌンチャクを入手したら先ずテストを行います。
Wiiヌンチャクケーブル内の配線色は純正品の場合は赤=+3.3V、白=GND、緑=SDA、黄色=SCLです。
ESP32のSDA=21pin、SCL=22pinで、ESP32 C3のSDA=8pin、SCL=9pinです。
マイコンに接続が終わったら以下のページからテストプログラムをコピーして下さい。

プログラムコードをブログに直接表示するとページが長くなるので別ページにて表示します
Nunchuck_test_code.htmlを開きます。 (ArduinoIDEにコピぺして使います)。

③Wiiヌンチャクのテスト結果は、シリアルモニターにこのよう表示されます。
x_valとy_valはジョイスティックを動かすと値が変化します。z_valは、Zボタンを押すと1を、Cボタンを
押すと2
を、両方のボタンを同時に押すと3を、その他は0を表示します。
Nun_Test.jpg

④改造の方法
改造方法は幾つもありますが、本体を改造せずに小さな箱に通信機能が有るマイコンと電池を入れ、
ケーブル先端の特殊プラグを市販の4Pコネクターに付け替えて接続する方法が簡単でお勧めです。

⑤7年余し前に作った木製ボックスのWiiヌンチャク用コントローラです。
当時はESP8266をを使い、WiFiにてロボットのコントロールに利用してまいした。その後ブルートゥースが
使えるESP32が出てからは主にBLEを使っています。この作品ではヌンチャクのケーブルを切断せずプラグに
合うソケット部を自作して抜き差しが出来るように加工しています。
Wii_nunchuck_Wooden_Box2.jpg

⑥コントロールボックス回路図
マイコンにESP32 C3を使います。安価なUSBソケットモジュール(1個40円)をマイコンの裏側に両面テープで
貼り付けて配線しています。上記画像参照のこと  *:ESP32 C3はUSBシリアル変換モジュールを使わずに
プログラムを書き込める特徴があります。 また、UARTを使った従来通りの書き込みも可能ですが、ENピンを
10kΩでプルアップ、IO9ピンがIO0ピンに替わる書き込みピンです。また、IO8ピンを10kΩでプルアップする
必要があります。但し、ESP32 C3の通信はWiFiとBLEのみでClassicBTが使えません。
電池に3.7Vのリチウムイオン電池又はLipo電池を使えば、シリコンダイオードの順方向電圧降下を利用して
約3.3Vが得れます。 また、ケーブル内配線の色分けは純正品の場合、図に示した通りです。
ESP32 C3は、初回書き込み時にポート番号を設定しても書き込みエラーが出ることがあります。
その場合はIO9ピンをGNDに落とすと失敗せずに書き込めます。

ESP32C3_Nunchuk_Box.gif

⑦Wiiヌンチャクのユニットを利用したその他のコントローラ2種
1)専用ケースをアクリル板をCNC加工して作った7年前の作品です。
ヌンチャクユニットとリチウムイオン電池を組み込んでいます。当初マイコンにESP8266-Wroom02を
WiFiで使用してたが、途中でブルートゥースが使えるESP32に交換しています。
ジョイスチックの可倒範囲を広げるためと8方向へ確実に収まるようにガイド穴を広げています。
Wii_nunchuck_acrylic_Box.jpg

2)簡単に作れる作品例として試作したプラケースへの組み込み例です。
小物部品を購入した時のプラケースを利用し、ヌンチャクユニットとESP32 C3を組み込みました。
電源には手持ちのLipoバッテリーを使っています。利用したプラケースの大きさは約65x65x20㎜です。
Wii_nunchuck_unit1.jpg

3)コントローラのプログラム
Wiiヌンチャクは、I2C出力なのでマイコンとの接続が4本線で済みます。
出力は、ジョイスティックのJoy_x,Joy_y信号が夫々約30~225(センター127)とZボタン、Cボタン
信号及び今回は使わないがモーションコントローラのAccel_x, Accel_y, Accel_z信号が取り出せます。
ここでは、ジョイスティック中央のx,y信号を極0に補正し、移動した場所の位置から角度を求めます。
求めた角度から外周360度を8等分したエリアを設け、前後左右と斜め方向の各エリアに番号を
付けてnumber変数に代入します。
また、Zボタンをファンクションボタンとして左右の旋回と左右横方向移動を切り替えています。
番号と記号はKeypadを使ったコントローラと共通とし、受信側プログラムコードがそのまま使えます。
また、計算で得た半径(r)を利用してジョイスティックの移動量に応じて案分したA~Fの文字を
speed変数に代入し、number変数と共にsprintf()関数により文字列としてBLE通信により送信します。
尚、ジョイスティックのセンターから半径(r)が、50以下が不感帯で50を過ぎるとモータが可動します。
ジョイスチックの移動範囲を0~255に近付けるには八角形の穴を切削して広げることにより可能です。

プログラムコードをブログに直接表示するとページが長くなるので別ページにて表示します
ヌンチャク・コントローラのプログラムコード

MWC3_ESP32C3_BLE_TX2.htmlを開きます。 (ArduinoIDEにコピぺして使います)。

4)カート側のプログラム
コントローラー側から受信した文字列をsscanf()関数により、number変数とspeed変数を分けて取得します。
number変数の代入文字(1~9、*、#、S)をswitch-case文により選択し、取得した文字に紐づけたモーター
ドライブをコントロールする各関数を実行します。
また、speed変数の代入文字(A~F)をswitch-case文により選択し取得した文字にモータースピードを
PWM制御する値(70~255)を割り付け、ジョイスティックの動きに合わせてモータスピードを変化させます。
但し、速度調整はジョイスティックの移動量が僅かなので慣れないと操作が難しいと思います。

カート側のプログラムコード
MWC3_ESP32_BLE_RX2.htmlを開きます。 (ArduinoIDEにコピぺして使います)。

5)Wiiヌンチャクコントローラの使い方
カートの電源をオンにした直後にWiiヌンチャクコントローラの電源を入れると数秒でコネクトが完了し、
コネクトLEDが点灯します。2号車の場合は、モータードライブ回路のイネーブルもオンとなります。

左右旋回と左右横方向移動の切り替え:デフォルトは左右旋回ですがZボタンを押すと旋回操作中
であっても横方向移動に切り替わり、ボタンを放すと元の左右旋回に戻ります。

Wiiヌンチャクは幸いジョイスティック穴の外周が八角形になっているので、ジョイスチックを倒した時に
前後左右斜め方向の位置に上手く収まります。 また、スチックを放すと不感帯に入り停止します。
ジョイスチックを使うとボタンリモコンでは難しいシームレスな素早い操作が簡単に実現できます。

Wiiヌンチャクの中古品が豊富に出回っている間に1台入手し、リモコン用に改造して置けば
いろんな用途に応用できるのでお勧めです。

最後に短い動画をご覧下さい。
メカナムホイールカートは普通の車では不可能な動きが楽しめます!


おわりに
随分長いページになりましたが、最後までご覧頂きまして有難うございます。
ステッピングモータを使った2号車も少し紹介しましたが、小型のステッピングモータの入手が
難しい事や重過ぎるのでお勧めできません。 安価なTTモータを使た3号車をお勧めします。

ただ走らすだけでは面白くないので気が向けば、自律走行などの付加価値を付けたいと考えますが、
緑内障を患う戦時中生まれの老人には、今までのようなスピードで事が運べず残念です。


皆様の参考になれば幸いです。
<工作好き、マイコン好き、パソコン好きの老人>     by Paradise





スポンサーサイト



テーマ : 電子工作
ジャンル : 趣味・実用

メカナムホイールを使ったRCカートの紹介 その7 pico W(BT編)

動画:子犬のSOPOちゃんとメカナムホイールカート3号機 2023年8月7日追加
新しいリモコン:Wiiヌンチャクに自作のBluetoothアダプターを取り付け、シームレスなコントロールが可能となりました。


3号機のRaspberry pi pico を pico Wに換装してBluetoothを使う
RasPicoW.jpg

1)カート側の変更
マイコンをRaspberry pi picoからRaspberry pi pico Wに差し替えますが、IR受信モジュールを
撤去せずにそのまま残します。その理由は、プログラムを変更すれば使い方を選べるからです。
プログラム
当初、Buretooth LE(BLE)を使ってテストを行ったところ、ステッピングモータをAccelStepperを使って
動かす場合、BLEを使うと極端に動作速度が遅くなる不具合が起きました。
これは、省エネを目的としたBLEの通信プロトコルにより、server/client間で頻繁に行う割り込み処理が、
ステッピングモータの制御に影響を与えるのために使用を諦めました。
ここでは、動作が安定したBuretooth classicのBlutooth Serial通信を使いました。

Raspberry pi pico WでBuretoothを使う場合のArduinoIDEの準備
①ArduinoIDEのボードマネージャからRaspberry pi pico Wに対応した「Raspberry Pi Pico/RP2040」ボードを
インストールします。「ツール」⇒「ボード」⇒ 「ボードマネージャ」を順にクリックし、検索窓に「rp2040」と入力、
表示された中から「Raspberry Pi Pico/RP2040」ボードを選択してインストールします。
rp2040.jpg

②次に「ツール」⇒「ボード」⇒「Raspberry Pi RP2040 Boards(3.3.0)」⇒「Raspberry Pi Pico W」を順に選択します。
picoW.jpg

③次に「ツール」からボード「Raspberry Pi Pico W」を確認し、リスト下側のIP/Bluetooth Stack:"IPv4 Onry"を
クリックし、右側に表示するリストからIPv4 + Bluetooth又は下側のIPv4 + IPv6 + Bluetoothを選択します。
この設定により、WiFiに加えてBluetoothが使えるようになります。
picoW_BT_set.jpg

カート側のソースコードを別ページにて開きます。
ソースコードをArduinoIDEの新規Sketchファイルにコピーペーストして保存し、Raspberry pi pico Wに
前記書き込みの準備を参照して書き込みます。
MWC_PiPicoW_BT_RX.html

上記プログラムは下記回路図を基に作成しています。
MWC_picoW_Circuit.gif



2)Bruetoothリモコンの製作
ESP32モジュールと4x4 Keypadを組み合わせた専用コントローラーを作ります。


回路図
基本的には、ESP32のGPIOとキーパッドの入出力8本及びStopMode_SWの結線のみです。
StopModeの切り替えは、操作ボタンを放すと自動的にStop信号が出る自動Stopと操作ボタンを一度押すと
Stopボタンを押すまで同じ動作が続く手動Stopを使い勝手に合わせて切り替えます。
ここでは、電源に軽量なリポバッテリーを使いました。ダイオード1N4007は順方向の電圧降下用に使用。
MWC_keypad_Controller1.gif

使用する4x4キーパッド サイズ 縦:約75ミリ、横:約70ミリ
価格は1個150円前後ですが、同じ商品が超高値(5000円前後)で売られているので注意して下さい。
keypad2.jpg

キーパッドの各ボタン機能割り当て
1:左斜め前方移動2:前方移動3:右斜め前方移動A:スピード1速 PWM値110
4:左旋回 PWM値1105:Stop6:右旋回 PWM値110 B:スピード2速 PWM値127
7:左斜め後方移動8:後方移動9:右斜め後方移動C:スピード3速 PWM値191
*:左横移動0:Stop#:右横移動D:スピード4速 PWM値255

コントローラーの製作例
私はアクリル板をCNC加工して専用のケースを作りましたが、適当な大きさの薄型市販プラケースの表面に
キーパッドを貼り付け(パッドの裏側が粘着テープです)、ケースの中に部品を納めればOKです。
Keypad_controller1.jpg

裏側(部品面)
私は何時ものように安価なESP32モージュールを使いました。細かな配線が苦手な方は、形が大きくなりますが
ESP32DevKitなどを使うと配線が楽です。 また、形が小さいSeeed Studio XIAO ESP32C3を使うと、
リポバッテリーの充電機能があり便利です。

キーパッドのフレキシブルケーブルは折り畳み可能ですが、何度も折り曲げると断線するので注意が必要です。
Keypad_controller3.jpg

コントローラー側ののソースコードを別ページにて開きます。
MWC_ESP32_TX.html

Blutooth Serialを使ったプログラムですが、確実に早く接続する方法として通信相手側のMACアドレスを
指定するの方法が多く使われています。その為にMACアドレスを調べる必要があります

カート側(受信側)のMACアドレスの簡単な調べ方
先ずは、カート側のRaspberry pi pico WにソースコードをコピーしてArduinoIDEから書き込みを済ませ、
電源を投入(又はUSBケーブルを接続する)します。
①Bluetoothが使えるWindows11パソコンの場合
「設定」⇒「Bluetoothとデバイス」⇒「デバイスの追加」⇒「Bruetooth」と順次操作すると
PicoW Serial 28:CD:**:**:51:B6とMACアドレス(私の場合の表示例で一部が**)が表示されます。
②Androidスマホの場合もほぼ同じです。
「設定」⇒「接続済みのデバイス」⇒「新しいデバイスとペア設定」と順次操作すると
PicoW Serial 28:CD:**:**:51:B6とMACアドレスが表示されます。
③iPhoneの場合は、「設定」⇒「Bluetooth」と操作するだけで自動的に
PicoW Serial 28:CD:**:**:51:B6とMACアドレスが表示されました。

ソースコードの変更部分
①5行目
05 String MACadd = "**:**:**:**:**:**"; //**の部分を調べたMACアドレスに書き換えます。
②6行目
06 uint8_t address[6] = {0x**, 0x**, 0x**, 0x**, 0x**, 0x**};
//**の部分を調べたMACアドレスに書き換えます。
MACアドレスの書き換えが終わったら、ソースコードをArduinoIDEの新規Sketchファイルに
コピーペーストして保存します。
ESP32モジュールへの書き込みには、USB/Serial変換ボードと書き込み用スイッチボードが必要です。
USB/Serial変換ボードと書き込み用スイッチボードについては過去記事に画像および回路図を記載してます。
過去記事を参照出来ます。
https://cncparadise.blog.fc2.com/blog-entry-168.html

コントローラーの使い方
カートの電源を入れてからコントローラーの電源を入れると直ぐにカートとコントローラーがペアリングされます。
自動Stopモード
Stopモード・スイッチがOFFの場合、移動操作ボタンを押すと押している間同じ動作を続け、ボタンを
放すとストップします。
手動Stopモード
Stopモード・スイッチがONの場合、移動操作ボタンを押すとStopボタンを押すまで同じ動作を続けます。
使い慣れると手動ストップの方が使い勝手が良くなると思います。
やはり、専用コントローラーは電源ONで直ぐに使えて便利です。



3)スマホアプリを使ってコントロールする方法
少し前のアプリですが、AndroidスマホアプリBlueTooth Serial Controllerが利用できます。
残念ながらiPhone用のアプリが見つかりませんでした。
Screenshot_20230724-090905.png
注意:上記の矢印記号は環境依存文字なので使用するスマホによって表示できないことが有ります。

Bluetooth Serial Controllerの設定手順
①操作画面右上のPREFERENCEをタップすると設定画面が開きます。上から順に説明します。
②CONTROLLERはA-Eの5つの操作画面が選べます。
③BUTTONの設定: NAME:button1から25までの中で使用するボタンに矢印記号を設定します。
ここでは上記画像を参考にbutton1=↖、2↑、3=↗、4=↺、6=↻、7=↙、8=↓、9=↘、と矢印記号を記入します。
尚、5は使わないのでdefのままにします。
文字の大きさは初期画面のBUTTON SIZEを開き、button1-9及びbutton10-25を85dpにしました。
④Speed設定:button10から13には、button10=S1、11=S2、12=S3、13=S4と記入します。
⑤左右横移動ボタンの設定:button18=←とbutton19=→と矢印記号を記入します。
⑥Commandの設定:ここでは、各ボタンが押された時に送出される文字を設定します。
button1-4と6-9はbutton番号と同じ数字を設定します。
button10=A、button11=B、button12=C、button13=D、button18=*、button19=#と記入します。
⑦STOP COMMANDの設定:ボタンを放した時に送出する文字を記入します。
button1-4と6-9及び18,19に右端のチェックボックスにチェックを入れ、大文字のSを設定します。
それ以外のbuttonはdefのままにします。
これでボタンを放した時に停止します。これを忘れると同じ動作を続けるので注意して下さい。
⑧Visibilityの設定:ボタンを表示/非表示用のチェックボックスで、表示するボタンにチェックします。
⑨Repeatableの設定:intervalsは変更せずにVisibilityと同じ設定にします。
⑩OPTIONの設定:LANDSCAPEのラジオボックスを選択します。
以上にて設定が終了です。

アプリの使い方
上記の設定が終了すれば、Raspberry pi pico Wの電源を投入(又はUSBケーブルを挿入)します。
次にスマホの設定:「設定」⇒「接続済みのデバイス」⇒「新しいデバイスとペア設定する」と順次操作すると
picoW Serial+MACアドレスが表示され、ペアリングが完了します。
次に、Bluetooth Serial Controllerアプリを開き、中央上のCONNECTをタップするとPaired Devicesの
リストが表示されるので、PicoW Serialを選択します。
この操作により、スマホからメカナムホイールカートが操作出来ます。



おわりに
Raspberry pi pico WにBluetoothがサポートされたので早速メカナムホイールカートに使ってみました。
コントローラーについては、専用コントローラが幼児にも扱い易い利点があり、スマホアプリには作る手間が
無く設定のみで直ぐに利用できる利点があります。用途に合わせて利用して下さい。

Raspberry pi pico Wの技適対応品が発売された時に買ったままで、余り使い道がなくお蔵入りしてたが
やっと陽の目を見ました。しかし、ESP32系に比べてWiFi UDPが使えない!、BLEやSerialBTにしても
使えない機能が多くあります。 やはり、使い勝手はESP32系に軍配が上がります。



皆様の参考になれば幸いです。
by Paradise



メカナムホイールを使ったRCカートの紹介 その6 3号機のソフトウエアー編

3号機のソフトウエアー編 2023年7月5日

3号機にはRaspberry pi picoを使い、ArduinoIDEにてプログラミングしています。
Raspberry pi picoには無線機能が無いので赤外線リモコン(ダイソーのリモコンライト税込330円)を使います。
赤外線リモコンは、スマホのAPPと違い事前設定が不要、カート側の電源を入れると即使える利点があり、
幼児でも直ぐに操作を覚えて使えます。
MWC-3_Frame6.jpg

準備
①お使いのパソコンにArduinoIDEがインストールされていることが前提です。
インストールが未だの方はこちらのページを参考にインストールして下さい。
②赤外線リモコンを使うためにIRremote ライブラリーをインストールします。最新のバージョンは4.12です。
ArduinoIDEツールバーのスケッチ⇒ライブラリーをインクルード⇒ライブラリーを管理と順番に開きます。
ライブラリーマネージャを表示したら一番上の検索窓にIRremoteと入力、IRremoteが表示されたら右下の
インストールをクリックします。
2023-07-04.png
IRremoteライブラリーについての詳細はGitHubを参照してください。
WiFiやBluetoothが使える技適認証マイコンの出現以前は、IRremoteライブラリーを使って赤外線リモコンを
多用していましたが、久しぶりに使うと随分バージョンが進み使い良くなっていました。

赤外線リモコンの送信コード確認と記録
他の赤外線リモコンを使う場合に送信コードが確認出来るソースコードを記します。
使用するリモコンのボタンを押して全てのコードを記録しておきます。


  1. #include <IRremote.hpp>
  2. void setup()
  3. {
  4.   IrReceiver.begin(pin); //pin=使用するピン番号を記入
  5. }
  6. void loop() {
  7.   if (IrReceiver.decode()) {
  8.     Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX); // Print "old" raw data
  9.     IrReceiver.printIRResultShort(&Serial); // Print complete received data in one line
  10.     IrReceiver.printIRSendUsage(&Serial); // Print the statement required to send this data
  11.     IrReceiver.resume(); // Enable receiving of the next value
  12.   }
  13. }



ダイソーリモコンライトの送信コードとボタンに割り付けた各機能
上記のプログラムにて確認した送信コード(フルコード)と各ボタンに割り当てた機能表です。
*左右の旋回スピードが速いと、旋回角度の微調整が難しいので旋回時はPWMを低速に設定しています。

Button_code_A.jpg

リモコンの機能と使い方
注意:このリモコンはボタン電池CR2025を使っています。テレビなどのリモコンに比べてパワーが無く、
正しくカート側に向けて送信しないと通信が途切れることがあります。
また、電池の容量が下がると正しく信号を送信出来なくなります。このような場合は、故障と考える前に
新しい電池と交換します。

各ボタンの機能
各ボタンには上の表に記した機能を割り当てています。
①ON/OFFボタン
デフォルトはONです。各移動ボタンを押している間、同じ動作を続け、ボタンを放すとストップします。
OFFボタンを押すとそのボタンを放してもストップボタンを押すまで同じ動作を続けます。
好みに合わせて切り替えて使います。

②速度切り替えボタン
モータ速度切り替えボタンにて4速を選べます。デフォルトはPWM値を中間の127に設定しています。
各PWM値はLOW=110、2nd=127、3rd=191、TOP=255にしていますが、ソフトを書き換える事で
自分好みに出来ます。 尚、低速で動かすとメカナムホイールカートの動きが良く理解できます。

③各移動ボタンと左右旋回ボタンについて
上から3段目より下のボタンが移動ボタンですが、左右旋回ボタンのみPWM値をLOWに固定してます。
その理由は、少しだけ方向を変えたい場合に速度が速いと少しのボタン操作でも回り過ぎてしまうからです。
このボタンを他のボタン同様に速度を切り替える場合は、ソースコードの223行目からの右回り低速旋回及び
234行目からの左回り低速旋回のPWM_TをPWMに変更します

3号機のソースコード
ソースコードは下記の配線図を基に記されています。
MWC-3_RaspberryPiPico_1.gif

同じGPIOを使う場合は、コピペでArduinoIDEに張り付けます。
リモコンのON/OFFボタンにより、Stop信号の自動・手動を切り替えるように工夫しています。
  1. /*
  2. Mecanum Wheel Cart Raspberry pi pico IR Control
  3. IRremote libraryの詳細は下のgithub Arduino-IRremoteを参照して下さい。
  4. https://github.com/Arduino-IRremote/Arduino-IRremote
  5. */
  6. #include <IRremote.hpp>
  7. int IR_RECEIVE_PIN = 14; //ここではGPIO14を使用
  8. int FR_MotorIN1 = 6;
  9. int FR_MotorIN2 = 7;
  10. int RR_MotorIN3 = 8;
  11. int RR_MotorIN4 = 9;
  12. int FL_MotorIN1 = 18;
  13. int FL_MotorIN2 = 19;
  14. int RL_MotorIN3 = 20;
  15. int RL_MotorIN4 = 21;
  16. int Stop_mode_LED = 5;
  17. #define MAX_TIME 150 // max ms between codes
  18. long lastPressTime = 0;
  19. int state = HIGH;
  20. int Stop_state = HIGH;
  21. int PWM = 127; // 起動時のスピードを設定
  22. int PWM_T = 110; // 旋回時のスピードを設定
  23. void setup() {
  24.   Serial.begin(115200);
  25.   IrReceiver.begin(IR_RECEIVE_PIN);
  26.   pinMode(FR_MotorIN1, OUTPUT); analogWrite(FR_MotorIN1, 0);
  27.   pinMode(FR_MotorIN2, OUTPUT); analogWrite(FR_MotorIN2, 0);
  28.   pinMode(RR_MotorIN3, OUTPUT); analogWrite(RR_MotorIN3, 0);
  29.   pinMode(RR_MotorIN4, OUTPUT); analogWrite(RR_MotorIN4, 0);
  30.   pinMode(FL_MotorIN1, OUTPUT); analogWrite(FL_MotorIN1, 0);
  31.   pinMode(FL_MotorIN2, OUTPUT); analogWrite(FL_MotorIN2, 0);
  32.   pinMode(RL_MotorIN3, OUTPUT); analogWrite(RL_MotorIN3, 0);
  33.   pinMode(RL_MotorIN4, OUTPUT); analogWrite(RL_MotorIN4, 0);
  34.   pinMode(Stop_mode_LED, OUTPUT); digitalWrite(Stop_mode_LED, HIGH);
  35. }
  36. void loop() {
  37.   if (IrReceiver.decode()) {
  38.     IrReceiver.resume();
  39.     if (state == HIGH) { // 受信CODEが入るとstateをLOWへ
  40.       state = LOW;
  41.     }
  42.     lastPressTime = millis();
  43.     switch (IrReceiver.decodedIRData.decodedRawData) {
  44.       case 0xFB047F80: // Red Button
  45.         Serial.println("MoveFrontLeft");
  46.         MoveFrontLeft();
  47.         break;
  48.       case 0xFA057F80: // Green Button
  49.         Serial.println("MoveForward");
  50.         MoveForward();
  51.         break;
  52.       case 0xF9067F80: // Dark Blue Button
  53.         Serial.println("MoveFrontRight");
  54.         MoveFrontRight();
  55.         break;
  56.       case 0xF8077F80: // Orange Button
  57.         Serial.println("TurnLeft");
  58.         TurnLeft();
  59.         break;
  60.       case 0xF7087F80: // Light Green Botton
  61.         Serial.println("Stop");
  62.         Stop();
  63.         break;
  64.       case 0xF6097F80: // Dark Blue Button
  65.         Serial.println("TurnRight");
  66.         TurnRight();
  67.         break;
  68.       case 0xF50A7F80: // Yellow Button
  69.         Serial.println("MoveRearLeft");
  70.         MoveRearLeft();
  71.         break;
  72.       case 0xE41B7F80: // Light Blue Button
  73.         Serial.println("MoveBackward");
  74.         MoveBackward();
  75.         break;
  76.       case 0xE01F7F80: // Purple Button
  77.         Serial.println("MoveRearRight");
  78.         MoveRearRight();
  79.         break;
  80.       case 0xF30C7F80: // Silver Botton
  81.         Serial.println("MoveLeft");
  82.         MoveLeft();
  83.         break;
  84.       case 0xF20D7F80: // Blue Button
  85.         Serial.println("Stop");
  86.         Stop();
  87.         break;
  88.       case 0xF10E7F80: // Dark Purple Button
  89.         Serial.println("MoveRight");
  90.         MoveRight();
  91.         break;
  92.       case 0xE11E7F80: // Mode Button Low supeed
  93.         Serial.println("110");
  94.         PWM = 110;
  95.         break;
  96.       case 0xFE017F80: // 4H Button 2nd supeed
  97.         Serial.println("127");
  98.         PWM = 127;
  99.         break;
  100.       case 0xFD027F80: // 8H Button 3rd speed
  101.         Serial.println("191");
  102.         PWM = 191;
  103.         break;
  104.       case 0xFC037F80: // Multi Color Button Top speed
  105.         Serial.println("255");
  106.         PWM = 255;
  107.         break;
  108.       case 0xED127F80: // ON Button ボタンを放すとStop信号が自動的に出る。
  109.         Serial.println("Auto Stop ON");
  110.         digitalWrite(Stop_mode_LED, HIGH);
  111.         Stop_state = HIGH;
  112.         break;
  113.       case 0xE51A7F80: // OFF Button Stopボタンを押すまで停止しない。
  114.         Serial.println("Auto Stop OFF");
  115.         digitalWrite(Stop_mode_LED, LOW);
  116.         Stop_state = LOW;
  117.         break;
  118.       default:
  119.         break;
  120.     }
  121.   }
  122.   if (state == LOW && millis() - lastPressTime > MAX_TIME) { // ボタンが放さ時の処理
  123.     state = HIGH; // ボタンが放されるとstateをHIGHへ
  124.     if (Stop_state == HIGH) { // ONボタンが有効の場合
  125.       Serial.println("Stop");
  126.       Stop(); // Stop信号を出す
  127.     }
  128.   }
  129. }
  130. void MoveForward() { // 前進
  131.   analogWrite(FR_MotorIN1, PWM);
  132.   analogWrite(FR_MotorIN2, 0);
  133.   analogWrite(RR_MotorIN3, PWM);
  134.   analogWrite(RR_MotorIN4, 0);
  135.   analogWrite(FL_MotorIN1, PWM);
  136.   analogWrite(FL_MotorIN2, 0);
  137.   analogWrite(RL_MotorIN3, PWM);
  138.   analogWrite(RL_MotorIN4, 0);
  139. }
  140. void MoveBackward() { // 後進
  141.   analogWrite(FR_MotorIN1, 0);
  142.   analogWrite(FR_MotorIN2, PWM);
  143.   analogWrite(RR_MotorIN3, 0);
  144.   analogWrite(RR_MotorIN4, PWM);
  145.   analogWrite(FL_MotorIN1, 0);
  146.   analogWrite(FL_MotorIN2, PWM);
  147.   analogWrite(RL_MotorIN3, 0);
  148.   analogWrite(RL_MotorIN4, PWM);
  149. }
  150. void MoveLeft() { // 左横へ移動
  151.   analogWrite(FR_MotorIN1, PWM);
  152.   analogWrite(FR_MotorIN2, 0);
  153.   analogWrite(RR_MotorIN3, 0);
  154.   analogWrite(RR_MotorIN4, PWM);
  155.   analogWrite(FL_MotorIN1, 0);
  156.   analogWrite(FL_MotorIN2, PWM);
  157.   analogWrite(RL_MotorIN3, PWM);
  158.   analogWrite(RL_MotorIN4, 0);
  159. }
  160. void MoveRight() { // 右横へ移動
  161.   analogWrite(FR_MotorIN1, 0);
  162.   analogWrite(FR_MotorIN2, PWM);
  163.   analogWrite(RR_MotorIN3, PWM);
  164.   analogWrite(RR_MotorIN4, 0);
  165.   analogWrite(FL_MotorIN1, PWM);
  166.   analogWrite(FL_MotorIN2, 0);
  167.   analogWrite(RL_MotorIN3, 0);
  168.   analogWrite(RL_MotorIN4, PWM);
  169. }
  170. void MoveFrontLeft() { // 左斜め前方へ移動
  171.   analogWrite(FR_MotorIN1, PWM);
  172.   analogWrite(FR_MotorIN2, 0);
  173.   analogWrite(RR_MotorIN3, 0);
  174.   analogWrite(RR_MotorIN4, 0);
  175.   analogWrite(FL_MotorIN1, 0);
  176.   analogWrite(FL_MotorIN2, 0);
  177.   analogWrite(RL_MotorIN3, PWM);
  178.   analogWrite(RL_MotorIN4, 0);
  179. }
  180. void MoveFrontRight() { // 右斜め前方へ移動
  181.   analogWrite(FR_MotorIN1, 0);
  182.   analogWrite(FR_MotorIN2, 0);
  183.   analogWrite(RR_MotorIN3, PWM);
  184.   analogWrite(RR_MotorIN4, 0);
  185.   analogWrite(FL_MotorIN1, PWM);
  186.   analogWrite(FL_MotorIN2, 0);
  187.   analogWrite(RL_MotorIN3, 0);
  188.   analogWrite(RL_MotorIN4, 0);
  189. }
  190. void MoveRearLeft() { // 左斜め後方へ移動
  191.   analogWrite(FR_MotorIN1, 0);
  192.   analogWrite(FR_MotorIN2, 0);
  193.   analogWrite(RR_MotorIN3, 0);
  194.   analogWrite(RR_MotorIN4, PWM);
  195.   analogWrite(FL_MotorIN1, 0);
  196.   analogWrite(FL_MotorIN2, PWM);
  197.   analogWrite(RL_MotorIN3, 0);
  198.   analogWrite(RL_MotorIN4, 0);
  199. }
  200. void MoveRearRight() { // 右斜め後方へ移動
  201.   analogWrite(FR_MotorIN1, 0);
  202.   analogWrite(FR_MotorIN2, PWM);
  203.   analogWrite(RR_MotorIN3, 0);
  204.   analogWrite(RR_MotorIN4, 0);
  205.   analogWrite(FL_MotorIN1, 0);
  206.   analogWrite(FL_MotorIN2, 0);
  207.   analogWrite(RL_MotorIN3, 0);
  208.   analogWrite(RL_MotorIN4, PWM);
  209. }
  210. void TurnRight() { // 右回り低速旋回
  211.   analogWrite(FR_MotorIN1, PWM_T);
  212.   analogWrite(FR_MotorIN2, 0);
  213.   analogWrite(RR_MotorIN3, PWM_T);
  214.   analogWrite(RR_MotorIN4, 0);
  215.   analogWrite(FL_MotorIN1, 0);
  216.   analogWrite(FL_MotorIN2, PWM_T);
  217.   analogWrite(RL_MotorIN3, 0);
  218.   analogWrite(RL_MotorIN4, PWM_T);
  219. }
  220. void TurnLeft() { // 左回り低速旋回
  221.   analogWrite(FR_MotorIN1, 0);
  222.   analogWrite(FR_MotorIN2, PWM_T);
  223.   analogWrite(RR_MotorIN3, 0);
  224.   analogWrite(RR_MotorIN4, PWM_T);
  225.   analogWrite(FL_MotorIN1, PWM_T);
  226.   analogWrite(FL_MotorIN2, 0);
  227.   analogWrite(RL_MotorIN3, PWM_T);
  228.   analogWrite(RL_MotorIN4, 0);
  229. }
  230. void Stop() { // 停止 全てを0に設定
  231.   analogWrite(FR_MotorIN1, 0);
  232.   analogWrite(FR_MotorIN2, 0);
  233.   analogWrite(RR_MotorIN3, 0);
  234.   analogWrite(RR_MotorIN4, 0);
  235.   analogWrite(FL_MotorIN1, 0);
  236.   analogWrite(FL_MotorIN2, 0);
  237.   analogWrite(RL_MotorIN3, 0);
  238.   analogWrite(RL_MotorIN4, 0);
  239. }



後発のRaspberry pi pico W には、WiFiとBluetoothがサポートされています。
赤外線通信は光が届かない物陰に入ると通信が途切れます。その点、WiFiやBluetoothに利点があります。
3号機のRaspberry pi picoを Raspberry pi pico W に置き換え、4x4 Keypadを使ったBluetooth送信機又は
スマホのBluetooth APPとペアリングするプログラムが完成しています。次回に紹介したいと思います。

皆様の参考になれば幸いです。
by Paradise

続きを読む

メカナムホイールを使ったRCカートの紹介 その5 3号機の製作

メカナムホイールカートを1号機に続きステッピングモータを使った2台目を作りましたが、使用する
39ミリタイプの小型ステッピングモータの入手が難しく、TTモータに比べて重いなどの理由により、
高性能ではあるが一般向きしないので割愛し、TTモータを使った3号機を紹介します。

3号機の製作
MWC-3_Frame6.jpg

制御基板の製作
回路図
Raspberry pi picoとダイソーのリモコンライト・イルミネーション タイプ330円を組み合わせた赤外線リモコンを
使ってメカナムホイールカートを操作します。
このリモコンライトのLEDボックスに入ってる赤外線受光素子とリモコン部を利用します。
前回3号機について少し記しましたが、その後マイコンをArduino NanoからRaspberry pi picoに変更しました。
その理由は、NanoなどのATMega328系ではPWM出力が6個しかなく、MX1508モータドライバをPWM制御
するにはモータ4個に対して8個のPWM出力が必要だからです。(pi picoは全てのGPIO(26個)でPWMが可能)
回路図では、解り易いように使用する端子のみを表示。注意:端子表示の順番が実物と異なります。
MWC-3_RaspberryPiPico_1.gif

制御基板の実物画像
ご覧の通り、Raspberry pi picoはデカいですね!、同等の機能があり小さいサイズのRP2040ボードが
各社から販売されています。(私はコンテストの賞品に貰った在庫があるので使用しました)
新規に購入するならスイッチサイエンスで販売されているWaveshare RP2040-Zero 715円が小さくてお勧めです。
MWC-3_ControlBoard.jpg

参考画像 Waveshare RP2040-Zero/Raspberry pi pico:21x 52mm

Waveshare_RP2040-Zero.jpg

リモコンに応用したダイソーのリモコンライト
税込み330円で買える小さな赤外線リモコンなので数メートルしか届きませんが、手軽にリモコン操作が出来ます。
リモコン本体のCR2025ボタン電池の容量が下がると、受信側では正常に受信できなくなるので注意します。
試していませんが、単4アルカリ乾電池2本用電池ボックスを外付けすれば長持ちすると思います。
Daiso_LED1.jpg

ボディフレーム (画像をクリックすると拡大します)
下図は厚さ3ミリのアクリル板を使いましたが、3ミリのシナベニヤでも同様に作れます。
フレームは前後に2分割して中央でねじれる構造により、走行面に起伏が有っても4輪が接地する構造です。
MWC3_3mmPanel.gif

連結部パネル
連結部のパネルは荷重がかかるので、厚さ5ミリのアクリル板を使いましたが同等のシナベニヤでOKです。
ここでは手持ちのミニチュアベアリング624ZZ(外径13、内径4、厚み5(㎜)を使いました。
ベアリングを前後から挟む蓋のサイズは、3ミリパネル図の右上に記載しています。
MWC3_5mmPanel.gif

組み立て
上図を基に完成したボディフレームです。
前後パネルとサイドパネルの間に電池ボックスや制御基板を載せる中央パネルを組み合わせて
接着剤で固定すると頑丈な躯体が出来上がります。
MWC-3_Frame1.jpg

前後フレーム連結部の拡大写真
ベアリングを中心の回転しますが、片側に約10度傾けた所にビスをねじ込みストッパーににしています。
ネジの頭同士が当たって止まる簡単な仕組みです。 注意:ストッパーが無いと配線が切れます。
MWC-3_Frame7.jpg

TTモータ取り付けの準備
TTモータにリード線を取り付けますが、モータ端子にノイズ止めのパスコンを忘れずに取り付けます。
0.1μF(104)積層セラミックコンデンサーを使っています。モータ取り付けネジはM3ビス長さ25㎜を用意します。
TTモータのギア側後部にラグが付いていますが、邪魔になるのでニッパー等で切除しています。
MWC-3_Frame2.jpg

TTモータ取り付け
モータのリード線を中央パネルの切り込みから連結パネルの配線穴を通して制御基板側に出します。
モータ取り付けビスを内側にてナットで固定します。
MWC-3_Frame3.jpg

電池ボックスと制御基板の取り付け
電源スイッチは手持ちのスライド式を使いましたが、使い易い部品を選びます。
中央パネルとトップパネルの上下間隔が15㎜なので、制御基板には背の高い部品が使えないので注意。
MWC-3_Frame4.jpg

メカナムホイールの取り付け
メカナムホイールには、TTモータへの取り付けアダプターシャフトとM2.6㎜L20㎜ビスが付属してます。
しかし、モータシャフトに軸方向の遊びがあり、フレームに3㎜厚以上の素材を使うとホイールとフレームが接触します。
その対策としてアダプターシャフトを延長するためのスペーサー外径6、内径3、長さ5(㎜)を挿入します。
そしてビスを長さ25㎜に交換して取り付けるとホイールとフレームの間隔が約5㎜広がり、接触問題が解決します。
MWC-3_Frame5.jpg

出来上がった3号機:夏休みの工作に如何ですか?
MWC-3_Frame6.jpg

次回はソフトウエアー編を掲載予定です。
by Paradise


テーマ : 電子工作
ジャンル : 趣味・実用

メカナムホイールを使ったRCカートの紹介 その4 製作改良編

ソフトウエアー編の予定でしたが、カートの構造改良編を先に掲載します。
2023年6月20日掲載

メカナムホイールカート3兄弟
MWC_3brothers.jpg

カートの構造改良編
実際に作られた方でないと解らない事ですが、ボディフレームに4個の駆動モータを
固定した場合、斜め方向や、横方向に移動する時に僅数ミリの段差が有ると何れかの
ホイールが浮いて空転するために正常な動作が出来ません。
この事象を改善するには自動車のようなサスペンションを設けるのが一般的ですが、
私は前後のボディフレームを分割、接合部を中心に回転して前後の車軸がねじれる方法を
考案して解決しました。 この構造は絶えず4輪が接地するので効果が大きいです。

下の画像を参照して下さい。
No.2(2号機)ステッピングモータを使ったモデルで、後軸が可動します。
中央の支点を中心にして左右に約10度回転します。
回転機構にはミニチュアベアリングを使い、遊びが無く滑らかに動くように工夫しています。
MWC-2_2_1.jpg

横から見た写真です。メカナムホイールの下に厚さ10ミリの木片を置いた状態です。
MWC-2_2_2.jpg

No.3(3号機)TTモータとダイソーの赤外線リモコンをコントローラーに応用したモデルです。
夏休みの工作の手本として作りました。マイコンに安価なArduino nano(何年も前に400円で購入)と
ダイソーのリモコンライト(300円)を使いました。リモコンと本体受信部の赤外線受光素子を利用。
ボディフレームに透明アクリル板を使いましたが、加工がしやすいシナベニヤ板でもOKです。
2号機同様に回転機構にミニチュアベアリングを使い、回転角度を約10度にてストッパーを設置。
MHC-3_1.jpg

横から見た写真です。ボディフレームはTTモータが入る大きさで、前後に2分割した格好です。
ボディフレームの上部の片方に単3型充電池4本ボックスを、もう片方に制御基板を設置しています。
MHC-3_2.jpg

上記の可動ボディフレームに改良の結果、少々起伏のある床面でも
安定して動作するようになりました。


今回は可動ボディフレームについてのみですが、次回から2号機、3号機の詳細を掲載します。
また、動画の掲載を予定しています。

by Paradise

メカナムホイールを使ったRCカートの紹介 その3 製作編

メカナムホイールを使ったRCカートの製作編
手術した右目の調子が良くなったので続編を編集しました。 2023年6月5日

1)主要部品

①フレームの材料
私は、在庫(アクリル屋.COMの端材箱詰め品)の透明アクリル板3㎜厚を使用しました。
フレームの中が見えませんが、3㎜厚のシナベニヤでも作れます。

②TTモーター 1:48、4個使用
アマゾンにて購入。8個1199円(1個約150円)。
TT_Motor.jpg

③ESP32 WROOM-32E モジュール
秋月電子通商にて購入。現在1個480円、私が購入時1個360円でした。
ESP32E.jpg

④モータードライバー基板、2個使用
アマゾンにて購入。6個799円(1個約133円)。
MX1508_2.jpg

⑤単3電池4本用電池ボックスのリード線タイプ
秋月電子通商にて購入。1個80円
Battery_Box.jpg

⑥メカナムホイール60ミリ
アマゾンにて購入。価格が変動していますが、私が購入時4個セットが約2400円でした。
mecanum1.jpg

2)フレームの製作 平面図概要
これは、アクリル板をCNC加工して作った参考例です。貴方の都合に合わせて材料を選んで加工して下さい。
画像をクリックすると大きく表示できます。

①フレーム枠パネルの寸法図
MWC1_Panel2.gif

②フレーム上下及び中パネルの寸法図
MWC1_Panel1.gif

③組み立てについての注意点
1、フレームのねじれに注意
フレーム枠前後左右のパネルに中パネル(電池ボックスと制御基板取り付け用)を挿んで、
接着剤で固定しますが、組み立ては平らな場所でねじれがないように行います
ねじれが有るとホイールの接地面が不均等となり、浮き上がりにより正常に動作しません。

2、TTモーターの取り付けについて
TTモーターの取り付け面は平らではなく、突起が2箇所あります。
ズレ防止用の丸い突起とモーター固定バンド部の2箇所が、取り付けネジの面より出ています。
図面にはその部分の穴開け位置を記しています。 この加工をせずに無理やり取り付けると故障の
原因となる
ので注意して下さい。 TTモーターの現物を確認しながら作業をします。
また、サイドパネルの厚みが3㎜より大きい場合、メカナムホイールとパネルの隙間が少なくなるので
注意が必要です。


3、メカナムホイールの取り付けについて
メカナムホイールには、TTモーターに取り付け用専用のアダプターが付属してます。
メカナムホイールは左右が異なります。取り付けは完成写真を参考に、上から見て45度の黒いタイヤが
前後輪共に外側へ開く様に取り付けます。

また、前項でも述べましたがモーター取り付けネジとメカナムホイールが接触しないか注意してください。

3)コントロール基板の製作

①コントロール基板の回路図
この回路図では、ESP32モジュールを単体で使用しています。
細かい配線が苦手な方は、形が大きくなりますが、ESP32 DevKitを使うと良いでしょう。
電池は1.5V電池ではなく、1.2Vの充電式ニッケル水素電池を使を使いました。
MWC_Circuit1.gif

②コントロール基板の参考画像
上記の回路図を基にユニバーサル基板へ組み込んだコントロール基板です。
ESP32モジュールとモータードライバーMX1508はユニバーサル基板に両面テープにて貼り付けて使用。
尚、何時ものようにESP32モジュールを配線がしやすいように裏向きに張り付けています。
MWC_Board1.jpg

完成したメカナムホイールRCカート
MWC_top1.jpg

もう一度、独特な動きをするメカナムホイールRCカートの動画をご覧下さい。



次回は、メカナムホイールRCカートを動かすソフトウエアー編を掲載します。
by Paradise




メカナムホイールを使ったRCカートの紹介 その2 動画が完成

先日、右目の硝子体手術を受けたので更新が遅くなってます。 2023年5月24日掲載

通常の4輪車と異なるメカナムホイール車特有の動きをご覧下さい。
Wiiヌンチャクのジョイスティックを応用した自作BLEコントローラ用とAndroidスマホのフリーアプリ
Bluetooth Serial Controller用の2種類のプログラムで動かしています。
撮影とRCコントローラの操作を一人で行うの難しいですね!。



術後の調子を見ながら、ハード編、ソフト編を順次掲載の予定です。
by Paradise



メカナムホイールを使ったRCカートの紹介 その1

メカナムホイールを使ったRCカートの紹介 2023年5月8日
特殊なホイール(メカナムホイール Mecanum Wheel)を使うとハンドルがなくても前後左右、斜め方向や
クローラー車と同様に超信地旋回が出来ます。
メカナムホイールの小回りが利く利点を生かし、実際に工場などで資材運搬車として利用されています。

独特な動きを再現するために、メカナムホイールを使ったRCカートを作ってみました。

本体上部
メカナムホイールは市販の60㎜を使用、電池は単3充電池を4本、マイコンはESP32Eモジュールを使用
モータードライバーは安価なMX1508を2組使用。操作はブルーツースにてスマホアプリで行います。
MWC1_01.jpg

本体裏側
フレームは中の様子が見える3㎜透明アクリル板をCNC加工して使用、モーターは安価なTTモータを
4個使用しました。サイズは長さ約18センチ、幅が約14センチ、高さが約6.5センチです。
MWC1_02.jpg

本日完成したところなので、詳細は次回からハードウエア編、ソフトウエアー編を順次掲載の予定です。

by Paradise

プロフィール

CNC_Paradise

Author:CNC_Paradise
木工・彫刻・機械工作・電子工作が
大好きで自作のCNCを使って工作を
楽しんでます。

最新記事
最新コメント
月別アーカイブ
カテゴリ
何でも工作室
検索フォーム
RSSリンクの表示
リンク
QRコード
QR