7/2 プレゼント応募方法の詳細リンク先が間違っていました。一度お読みの皆さん、申し訳ありませんでした。

CamJam Edukit 3 で組み立てたロボットカーをWiiリモコンで操作してみた

edukit3-title作ってみた!
この記事は約9分で読めます。
スポンサーリンク

UKのThePihutで在庫があったCamJam Edukit No.3 Roboticsを購入して動かしてみました。どうやら2017年頃に発売されいた枯れたキットです。当時に日本で購入できたのか分かりません。現在も在庫があるお店は少ないのではないでしょうか。(ThePihutはもう売り切れ)

これ、今ではBluetoothもRaspbianBusterなら既にサービスが動いている状態なので端折れて、より一層簡単にセットアップできました。

製品の紹介と組み立て

定価がいくらか調べていませんが、£18+送料でした。

このコンセプトは好きです。箱から出して、その箱までも使う。部品自体は安価でも必要最低限が満たされ安価であるのは、確かに教育キットに相応しいと思います。

電源ボックスは単3電池4本で、モーターの電源になります。搭載するRaspberry Pi は自分で用意します。当然ながら、Raspberry Pi の電源は別になります。

センサーが2つ付属

センサーが付いています。

超音波センサー

超音波で距離を測るものです。対象物から跳ね返ってきた時間から距離を割り出せます。

トラッキングセンサー

白と黒を見分ける(?)ことができるので、例えば、床にテープを貼ってそれをトラッキングしながら走行させるプログラミングが可能です。

どちらもミニミニブレッドボードに配置して、抵抗をつけ、Raspberry Pi Zero WHのGPIOに取り付けたHATと接続します。

体験型の学習

いずれにしても、プログラミングは必要です。繋げたからといって動くわけではありません。サンプルプログラムを実行してみて、それを改変することで思ったように動かす練習が可能です。

これぞ正にお勉強です。

例えば、前進させるためにモーターを回すにはrobot.forward()のところ、robot.backward()に変更すればバックです。

変数でマイナスにすれば、これも前進とバックです。

motorforward = (motorspeed, motorspeed)
motorbackward = (-motorspeed, -motorspeed)

モーターのスピードも変えられます。サンプルだと左右に曲がるのは、左右で回転を逆にさせたり、止めたりさせて曲げています。

motorleft = (motorspeed, 0)
motorright = (0, motorspeed)

動きが簡単で、すべて数行なため、初めてのプログラミングには結果が分かって習得しやすいと思います。

同じようにLEDの工作も、光らせるというのは目で結果が分かるのでオススメです。

組み立て

例に倣い、製品の箱をロボットカーの筐体に選びました。

モーターは箱の中側に入れてみました。3Mのテープが付いているので、箱の底か真横に付けてもOKです。

ただ、箱の底だと前輪の役目を果たすボール状の部品の高さが合わないため、恐らく後輪が上がる形になり、とってもヤンキーチックになるかと思います。

今回はグレたくないので、箱にキリで穴を開けて車軸を通すことにしました。

充電器

Raspberry Pi Zero WHへの給電は、余っていた「SANYO製KBC-D1」を使いました。(コレも古い!10年前くらい)
今だとエネループ電池付きでKBC-D1BSという製品名みたいです。

モーターを動かす電池ボックスにもAmazon製充電池を使っています。

この充電器は軽いですが、それなりにモーターも力があるので、もう少し大きめでも走ります。

10年前のKBC-D1エネループスティックブースター

要のRaspberry Pi Zero WH

このキットを調べると、Raspberry Pi は当時最新だった3Bまで対応となっていましたが、実際はWHでも3B+でも4Bでも動きます。

・・・というか、Raspberry Pi Zero WHやZeroで無ければ少し勿体ないかな。

今回はRaspberry Pi Zero WHで仕上げてみました。

本来は充電池一つで全て賄ってもらえたら良かったかなと思います。まぁ、その分だけモーターが思いのほか動くのかも知れません。

セットアップ

一応、簡単にセットアップは載せておきます。公式サイトから辿っていけば、詳しいPDFもありました。なにせ古いキットのため記載も古い。

実際に試して動かしているため、ここで紹介する方が手順は最新です。

Raspberry Pi Zero WHにはRaspbian(おっと今後はRaspberry Pi OSでした)のLiteを入れました。画面は必要無いからです。

ただ、公式ではセットアップにHDMIで繋いで、Raspbianのデスクトップ画面でPythonのエディッタ(Thonyなど)で説明してあります。

もちろん、初心者の方はその方法が簡単です。動かす段階でHDMIケーブルを外せば良いだけです。

Raspberry Pi OSをダウンロードしてmicroSDカードへ書き込むのは、公式のアプリ「Raspberry Pi Imager」を使います。

Raspbianのなどの書き込み総合ソフト「Raspberry Pi Imager」がリリース
公式のRaspberry Pi OS(オペレーティングシステム)Raspbianと、他のOSのイメージをmicroSD...

キットのプログラムをダウンロード

Raspberry Pi OSが起動している前提です。

いつものおまじない。アップデートしておきます。

sudo apt update && sudo apt upgrade

Githubからダウンロードしたいので、gitを入れておきます。

sudo apt install git-core

恐らく今では sudo apt install gitでも良いでしょう。

gitからクローンします。

git clone git://github.com/CamJam-EduKit/EduKit3.git

GPIOをPythonで制御するので、gpiozeroを入れておきます。

sudo apt install python3-gpiozero

で、再起動です。

sudo reboot

基本としてはこれだけです。以降、サンプルプログラムコードをそのまま実行するなり、サンプルを元に自分でアレコレ試してください。

サンプルでテスト

サンプルプログラム
画像はmacOS表示しています

サンプルプログラムはcodeフォルダにありました。以下です。

pi@raspberrypi:~/EduKit3/CamJam Edukit 3 - GPIO Zero/Code $

/home/pi でダウンロードしたので、そこのEdukit3内のCamJam Edukit 3 – GPIO Zeroの中にcodeフォルダがあります。

あっ、Raspberry Pi Zero W系以外は、CamJam Edukit 3 – RPi.GPIOのサンプルになります。

モーターのテスト

先ずはモーターを動かします。すべてPythonスクリプトになってありますので、選ぶだけです。

python3 3-motors.py

動いた動いた!

CamJam EduKit 3モーターのテスト

コードはこんなもので、とても簡単です。

# CamJam EduKit 3 - Robotics
# Worksheet 3 - Motor Test Code

import time  # Import the Time library
from gpiozero import CamJamKitRobot  # Import the GPIO Zero Library CamJam library

robot = CamJamKitRobot()

# Turn the motors on
robot.forward()

# Wait for 1 seconds
time.sleep(1)

# Turn the motors off
robot.stop()

Wiiリモコンで操作のためのスクリプト

Wiiリモコンで操作するのに、ヌンチャクコントローラーとありましたが、どうやら第1世代しか対応していないので、借りてきたコントローラーでは動きませんでした。結果的にWiiリモコンの十字キーで操作しました。

プログラムはこちら。

git clone https://github.com/recantha/EduKit3-Bluetooth

hcitool scanでスキャンするとNintendoが出てきました。

hcitool scan 
Scanning ...
	00:19:1D:26:DD:99	Nintendo RVL-CNT-01

wii_controller.pyというスクリプトを実行して、ペアリングできると操作可能です。

一先ず、SSHで接続して実行させます。ターミナルにスキャン中の内容が出ますので分かり易いです。

これを自動起動させれば

 取りあえず自動起動させるのに、/etc/rc.localへ記載したけど上手く実行できませんでした。ので、crontabへ追記します。(タブン、ワタシガ、リカイシテイナイ)

@reboot                  python /home/pi/wii_controller.py

(必要な分のスペース入れることに注意です)

自動起動については、Twitterでいつもお世話になっている「からあげ」先生のまとめを参考にしました。

[https://qiita.com/karaage0703/items/ed18f318a1775b28eab4]

問題が1つ。

ペアリングがどうしても上手くいきません。タイミングの問題でもなく、一瞬でプログラムがタイムアウトしてしまうみたいです。コマンドで実行すると成功する確率が上がるのですけど、自動起動にすると上手くいきません。
作者が推奨していたLEDを差してタイミングを計らせると分かり易いです。

面倒なので、SSHで接続し実行しています。

このwii_controller.pyは、Wiiリモコンの1と2を同時押しでペアリング。+とー同時押しでシャットダウンします。一度繋げばシャットダウンするまでずっと使えます。再度起動した場合はまたもう1度ペアリングです。

遊んでみた

CamJam Edukit3テスト走行

リモコンで遊ぶなら、スグに出来て楽しめます。センサー系はまだこれからです。距離センサーで障害物を避けるだけなら簡単そうですね。

今ではあまり売っていないキットです。でも、部品を見ると集められそうですね。

学習用にモーターとLED、センサーで色んな仕組みができそうです。

3Dプリンターは持っていないので、何かの箱を利用して車体にしてみます。
あと、カメラモジュールを付ければもっと楽しいと思いますので、トライしてみようと思いました。

CamJam Edukit 3という安価なロボットキットでした。

4.7

github:https://github.com/CamJam-EduKit/EduKit3

参考:https://camjam.me/?page_id=1035

https://github.com/recantha/EduKit3-Bluetooth(wiiリモコンスクリプト)

タイトルとURLをコピーしました