Note ! 本記事は公開から1年以上経過しています。

  • Raspberry Pi OS・Python・各種ライブラリの版は更新されます。公式のセットアップ手順とパッケージ名で再確認してください。
  • RC 用モータードライバ・ゲームパッド・配線は型番によって仕様が異なります。電源容量と実機接続を必ず見直してください。
  • 通信は Wi-Fi・モバイル回線・ルーター設定に依存します。記事内のコマンド例は当時の環境向けです。

RCカーをリモート操作:Raspberry Pi4でTAMIYA 1/12RC XB ランチボックスカーをリモート制御する準備

RCカーやローバーなどリモート操作を学んでゆきます。リモート操作に関する技術は、多種多様な方法があります。目的によっても使用するべき技術は変化するでしょう。わかりやすく初級から上級までの段階ごとに説明しています。

まず初級段階では、**Raspberry PiやESP-32系(Arduino・M5Stack)を使用したリモートカーの操作です。**これらは一般的に安く入手しやすい部品で、初心者にも扱いやすいです。しばらくこの記事を書いてゆきます。

中級段階では、より高性能な組み込み向けの基盤、例えばNVIDIA Jetsonを使って映像処理やAI処理を行い、ESP-32系でセンサーやモーターの制御をします。**さらにPixhawk、Mission Planner、ARDUPILOTを用いて遠隔操作や自律制御を実施します。よくある高度なリモートプロジェクトは、だいたいこれです。**数十万以上の予算は必要でしょう。ここまでは到達したいところです。ESP-32系などは結局使わないかも。

最上級段階では、カスタムハードウェア基盤(FPGAやSoC)を用い、リアルタイムオペレーティングシステム(RTOS)と高度な通信プロトコルを駆使して低遅延での制御を目指します。これは非常に高度であり到達できないでしょう。大きな予算(数百万~)も必要です。個人では無理です。

入門としてAmazonで売っているよく見るタイプもあります。私も昔購入しました。性能は低く実用性は劣るしソフトウェアは複雑なので、それ以上の発展はありませんでした。それでは意味がないので、もう少し実用的にTAMIYAのRCカーとRaspberry Piを使って5G/4Gなどのネットワーク経由で操作するプロジェクトにします。Pythonなどを使って制御します。

入門となる初級で必要となる知識と箇条書きしてみました。多くの前提となる知識が必要ですが、自分の習得のための記事なのでRaspberry Piの知識、Ubuntuの知識、Pythonの知識などの説明は省略します。他のサイトを参考ください。

  1. Raspberry Piの知識
  2. Ubuntuの知識
  3. Pythonの知識
  4. GPIOピンや信号の入出力
  5. RCカーのESC、サーボ、モーターの知識
  6. バッテリーの知識
  7. ケーブルやピンの知識
  8. 無線通信の知識
  9. カメラモジュールの知識
  10. センサーの知識
  11. 電気回路の基礎知識
  12. モータードライバーの知識
  13. ネットワークとプロトコルの知識
  14. 基本的な安全知識

私に不足している知識として、**GPIOピンや信号の入出力、RCカーのESC、サーボ、モーターの知識、バッテリーの知識、ケーブルやピンの知識などです。**まずはそこから学んでゆきます。PythonなどプログラムはAIの力を借りて構築してゆきます。

初級向けリモート車両の購入

Raspberry PiやArduinoを使った入門系リモート車両記事では、安価なサーボやモーターを使ってフレッツボードに接続して動作される記事が多いです。仕組みの勉強になるのですが、その先の実用的な動作には遠いです。入門ですが実用的なリモート車両動作に近い環境にしたいためにRCカーを選定しました。

TAMIYA 1/12RC XB(完成モデル) ランチボックス (ITEM 57749)

https://www.amazon.co.jp/dp/B0BD3BVF7Y

TAMIYAを選んだ理由は、主流のRCカーであるため情報が多いことです。サーボやモーターやESCなど不明な点があるときに情報を探しやすいです。世界のTAMIYAです。ランチボックスを選んだ理由は、基盤など追加で乗せるスペースが大きそうだからです。そしてなるべく安いものを選びました。

本当は完成済みではなく組み立てタイプがよかったのですが、在庫がなかったり完成品より高かったので完成品を選びました。

組み立てモデルもあります。組み立てモデルの場合は、サーボやESCも自分で適切なものを購入して設置する必要があります。良く分からない場合は「ファインスペック2.4G 電動RCドライブセット」を購入すればOKです。

1/12RC ランチボックス

https://www.tamiya.com/japan/products/58347/index.html

ファインスペック2.4G 電動RCドライブセット

https://www.tamiya.com/japan/products/45053/index.html

完成品なので、すでにサーボやESCも設置されています。カバーを外せばすぐにアクセスできるのも良い点です。以下すでにいろいろ検証した後の写真です。

2.4G無線ユニット

モーターなども最初から完璧に設置されています。

バッテリーも繋ぐだけです。

サーボも設置済みです。

ちなみにRCカーには、電源とモーター以外にさまざまな機器が必要です。RCカーを使ったことがないと知りえない部品です。主な部品として、ESC、サーボ、ニッカドバッテリーなどがあります。

ESC(Electronic Speed Controller)は、RCカーのモーターの回転速度を電子的に制御する装置です。RCカーやドローンなどのリモート制御車両に使われ、特に電動モーターを動作させる際に不可欠です。RCカーの頭脳ともいえるESCです。

サーボモーター(Servo Motor)は、RCカーやロボットなどで特定の角度や位置を精密に制御するために使われるアクチュエータです。ハンドルステアリング制御に使われます。

今回付属していたバッテリーは、ニッカドバッテリーでした。軽量で高出力を求められる場合にはニッカドからリポバッテリー(リチウムポリマー)が使用されることが多いです。

RCカーを持っていない人種は、バッテリーといってもモバイルバッテリーの使い方を想像します。RCカーのニッカドやリポバッテリーは制限と注意事項だらけです。間違って使うとすぐに使用不能になります。びっくりしますよね。

以下電動RCカーの基礎知識から引用です。

電動RCカーの基礎知識 - タミヤRCスタートガイド

https://www.tamiya.com/japan/cms/rcstartguide.html

バッテリーは使い終えてから充電する

まず大切なのは「バッテリーは使い終えてから充電する」ということ。使いかけのバッテリーを充電して使うということを繰り返すと徐々にバッテリーの電圧低下が早くなり、充電しても満足に走れない状態になります(メモリー効果と呼びます)。これを予防するための基本的な使用法は、RCカーはある程度バッテリーを消費すると走行スピードが急激に落ちるので、これを目安に走行をやめ、時間をおいてから充電するというもの。よりていねいに行うならば、使用後には放電器(ディスチャージャー)で適切に放電させて、その後バッテリー内部が安定するまで時間をおいて(1日程度)から充電することでよりよいコンディションを保つことができます。なお、メモリー効果が発生した場合は、上記のような適切な使用サイクルを何度か繰り返すことでコンディションを整えることができます。

連続使用も寿命を縮める

ニカドバッテリーは、走行→即充電→走行→即充電…といったように、極端に短いスパンでの使用を繰り返すとバッテリーをいためます。サーキットで終日練習するような場合にはやむを得ず現地で再充電するといった場合もあるでしょうが、バッテリーを長持ちさせるという意味では、1日に何度も充電するような使い方は避けたほうがよいでしょう。

**ちなみにバッテリー残量が何%なのかも知ることはできません(電圧で推測します)。**そういう仕組みなのです。スマートフォンなどのバッテリーを使っている感覚からするとビックリします。なんて使いずらい問題だらけのバッテリーなのだろうと。

また**バッテリーを完全に使い切ると、内部で化学的損傷が生じ、回復不可能な状態になることがあります。**なんかもっとスマートなバッテリーシステムはないのでしょうか。Ankerモバイルバッテリーみたいなのがあれば欲しいです。なぜないのでしょうか。私も素人です。

こういったRCカーのバッテリーは特殊であることが理解できればOKです。

本格的なリモート操作できたらどれだけ楽しいか

サーボやESCやバッテリーの知識を学びながら、こんな本格的な走行が可能な車両をリモート操作できたらどれだけ楽しいことでしょう。夢は膨らみます。

Raspberry系の購入

Raspberry Pi 4とRaspberry Pi 5をすでに持っていました。Raspberry Pi 4×2台でも、なんでもよいです。入門プロジェクトではRaspberry Pi を使ってゆきます。

消費電力と発熱がすくないRaspberry Pi 4を車両側に設置することにしました。Raspberry Pi 5は操縦側のシステムとして利用します。GPIOピンを使うので、ピンにアクセスしやすいケースを購入するのがよいでしょう。

このようにランチボックスにGPIOピンをつないで制御後を試すことができます。

ランチボックスの動作原理を説明

小さな箱を車両の下に置くとテストしやすいです。

カバーを外せばすぐに内部にアクセスできます。原理的な仕組みを説明しましょう。バッテリーからそれぞれの機器に電力が共有されています。その説明は省略します。

RCカーを操作できるリモコン(プロポ)からの信号を②TRU-08で受信します。その信号は①サーボと③ESCへ伝わることで、サーボが動きモーターが回転します。このケーブルは、3ピンで黒: グランド(GND)、 赤: 電源(VCC、+電圧)、白: PWM信号となっています。

TRU-08を見ると1と2に3ピンが接続されています。

プロポからのPWM信号を受け取って、以下の動画のように動作するわけです。

つまりPWM信号を何かしらで生成して、何かしらで送ってやれば、リモート操作ができるようになります。原理的には簡単ですね。

次回に続く

関連記事