Raspberry Pi Zero WHを介してミニ四駆をラジコン化する手順をご紹介します。
用意するもの
- ソフトウェア
ハードウェア
- Raspberry Pi Zero WH
- タミヤ「バギー工作基本セット」
- ミニブレッドボード
- TA7291P(モータードライバ)
- NJM7805FA(三端子5V1Aレギュレータ)
- SG92(ステアリング制御サーボモータ)
- モバイルバッテリー(Raspberry Piの電源として使用)
- 9V型乾電池×1本(各モータ駆動で使用)
ミニ四駆改造
各パーツはマニュアル通り組み立てますが、電源となっている電池ボックスは取り外します。モーター上部についている鉄のフレームも一度取り外しておきおきます。背面にはモバイルバッテリを(強力な)両面テープで張り付け、USBケーブルでRaspberryPiに給電します。
ステアリング部分について
ステアリング部分には、サーボモータを寝せて瞬間接着剤でくっつけます。両タイヤのアームに曲げた針金を図のように半田付けしてレールを作り、サーボホーンにねじを通して左右に駆動するようにします。ねじの径は1.2Φを使用しました。近くのホームセンターなどで売っていますので探してみてください。
配線
電源はRaspberryPiではなく、9V電池から取ることにしています(最初モバイルバッテリーから分配してみたのですが、モーターを動かした瞬間にRaspberryPiが低電圧に陥り再起動してしまいました)
なお、9V電池だとサーボモータの適応電圧5Vを超えるため、三端子レギュレータで5Vにおとして使用しています。
RaspberryPiの準備
最初にRaspberryPiにOSをセットアップします。私は「Raspbian Buster with desktop」を使用しましたが、一つ前のバージョンでも問題ないはずです。ファイルは以下のサイトからダウンロードが可能です。 www.raspberrypi.org
Wifi、SSH を 有効にする
起動操作はスマートフォンのテザリングを使用したWifiで無線接続し、SSHによるコマンドで操作します。ネットワークを有効化した後、以下のコマンドで設定画面を表示してSSHを有効化します。以降はTeratermなどを使用し、SSHで外部から実行します。
$ sudo raspi-config
pipコマンドでDjangoをインストールする
操作画面はWebアプリケーションでデザインしており、これをスマートフォンのブラウザ画面から操作します。
以下のコマンドで、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/
以上でブラウザにコントロール画面が表示されます。画面下部にある「ステアリング」「スピード」のレバーを操作して、それぞれ前輪、後輪が動作することを確認してください。