RaspberryPi ミニ四駆ラジコン化計画

Raspberry Pi Zero WHを介してミニ四駆をラジコン化する手順をご紹介します。

用意するもの

  • ソフトウェア
  • ソースコード github.com

  • ハードウェア

    • Raspberry Pi Zero WH
    • タミヤ「バギー工作基本セット」
    • ミニブレッドボード
    • TA7291P(モータードライバ)
    • NJM7805FA(三端子5V1Aレギュレータ)
    • SG92(ステアリング制御サーボモータ
    • モバイルバッテリー(Raspberry Piの電源として使用)
    • 9V型乾電池×1本(各モータ駆動で使用)

ミニ四駆改造

f:id:camelrush:20200321074602j:plain
f:id:camelrush:20200323224443j:plain
各パーツはマニュアル通り組み立てますが、電源となっている電池ボックスは取り外します。モーター上部についている鉄のフレームも一度取り外しておきおきます。背面にはモバイルバッテリを(強力な)両面テープで張り付け、USBケーブルでRaspberryPiに給電します。

ステアリング部分について

ステアリング部分には、サーボモータを寝せて瞬間接着剤でくっつけます。両タイヤのアームに曲げた針金を図のように半田付けしてレールを作り、サーボホーンにねじを通して左右に駆動するようにします。ねじの径は1.2Φを使用しました。近くのホームセンターなどで売っていますので探してみてください。 f:id:camelrush:20200323224741j:plain

配線

f:id:camelrush:20200323214650p:plain 電源はRaspberryPiではなく、9V電池から取ることにしています(最初モバイルバッテリーから分配してみたのですが、モーターを動かした瞬間にRaspberryPiが低電圧に陥り再起動してしまいました)
なお、9V電池だとサーボモータの適応電圧5Vを超えるため、三端子レギュレータで5Vにおとして使用しています。

RaspberryPiの準備

最初にRaspberryPiにOSをセットアップします。私は「Raspbian Buster with desktop」を使用しましたが、一つ前のバージョンでも問題ないはずです。ファイルは以下のサイトからダウンロードが可能です。 www.raspberrypi.org

WifiSSH を 有効にする

起動操作はスマートフォンテザリングを使用したWifiで無線接続し、SSHによるコマンドで操作します。ネットワークを有効化した後、以下のコマンドで設定画面を表示してSSHを有効化します。以降はTeratermなどを使用し、SSHで外部から実行します。

$ sudo raspi-config 

pipコマンドでDjangoをインストールする

操作画面はWebアプリケーションでデザインしており、これをスマートフォンのブラウザ画面から操作します。
f:id:camelrush:20200323225540g:plain
以下のコマンドで、WebフレームワークであるDjangoをインストールします。

$ sudo pip3 install django

pipコマンドでpigpioをインストールする

pigpioはpythonでRaspberryPiのGPIOを操作するライブラリです。GPIO操作はほかにもいくつかあるようですが、デジタル出力ピンからソフトウェアPWM波形を一番きれいに出せるものとのことなので、これを使用しました。

$ sudo pip3 install pigpio 

pigpioサービスを起動時に有効化する

pigpioを使用するにはサービスとして有効化する必要があります。起動時に常に有効となるように設定します。テキストエディタ(私はnanoを使用しました)で、登録サービスファイルを作成します。

$ sudo nano /etc/systemd/system/pigpiod.service

ファイルの内容は以下の通りです。

[Unit]
Description = pigpio daemon
 
[Service]
ExecStart = /usr/bin/pigpiod
Restart = always
Type = forking
 
[Install]
WantedBy = multi-user.target

再起動すると自動的に起動しますが、今から有効化するには次のコマンドを実行します。

$ systemctl daemon-reload

Githubからソースコードをダウンロードする

前述のgithubからソースコードをダウンロードします。マニュアルドキュメントに動画gifまで入れてしまっているため少し遅いです…。

$ git clone https://gituhub.com/camelrush/miniRc

なお、ダウンロードしたファイルの中で次の箇所をRaspberryPiのIPアドレスに修正してください(localhostに送信したいのですが、Post実行時にエラーが表示されてしまうため、固定IPで指定するしかありませんでした。回避方法求む) \miniRc\miniRcApp\static\js\control_view.js

var API_POST_URL = "http://192.168.43.247:3000/ctrlapi/"; // ← IPをRaspberryPiのアドレスに修正

※現時点のバージョンではPythonの次の箇所も、下の行をコメントアウト(#)し、上の行を有効化してください。 \miniRc\miniRcApp\views.py

def capture(request):
    return render(request, 'test.html')
    #return StreamingHttpResponse(_gen(cam()),content_type='multipart/x-mixed-replace; boundary=frame')

Webサービスの起動

SSHでRaspberryPiにログインし、Djangoサービスを起動させます。

$ sudo Python3 manage.py runserver 0.0.0.0:3000

起動できたら、スマートフォンのブラウザから、次のアドレスにアクセスします。

https://[IPアドレス]:3000/cv/

以上でブラウザにコントロール画面が表示されます。画面下部にある「ステアリング」「スピード」のレバーを操作して、それぞれ前輪、後輪が動作することを確認してください。