プラレールにArduinoというマイコンいれてスマートフォンで操作してみました. 「プラレールをもっと楽しくできないかなぁ」と、研究室の先生がプラレールで面白いことをしてたことからあやかってみました.(参考を見てください)
とりあえず動画

プラレールの改造
主な材料
-
プラレール
たまたまあった武蔵野線を使ってみました
-
Arduino Nano
公式もありますが互換機を購入しました(互換機のほうが安い) http://www.amazon.co.jp/gp/product/B008SINCWE/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1
-
BlueToothモジュール「FB155BC」(技適あり)
Amazonで購入したのですが、販売されていませんでした
-
モータードライバ「TA7291P」
たまたま家に転がっていたモータードライバ使ってみました
その他材料
-
モーター
デフォルトに入っているモーターでも良いと思いますが、ミニ四駆用のモーターに変更しました
-
9V電池ボックス
モーターの回転数を上げるために購入
-
単3電池ボックス4個
Arduinoを動かす電源を作るために購入 5V以上無いとAruinoは動かないため、四本直列にして6Vにしています.
回路設計
回路をいい感じに書いて、ユニバーサル基板で作りました.
Arduinoのプログラムは下記のとおりです.
#include <stdlib.h>
int motor1 = 7;
int motor2 = 8;
int motorP = 6;
//uno 0~255
//nano
char stop[10] = "stop";
char inString[10];
int i = 0;
void setup() {
Serial.begin(9600);
pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);
digitalWrite(motor1, LOW);
digitalWrite(motor2, LOW);
}
/**
*モーターのセットアップ
**/
void redymotor(){
int j = 0;
for(j=0; j<10; j++){
//比較する文字がなかったらforを抜ける
if(inString[j] == '\0'){
break;
}
//文字が異なっていたらサクセスする
if(inString[j] != stop[j]){
Serial.println("succses");
gomotor(atoi(inString)); //速度をもってくる
break;
}else{
//緊急停止時の処理
Serial.print(stop[j]);
Serial.println(inString[j]);
gomotor(0);
}
}
}
/**
*走らせる速度など
**/
void gomotor(int speed){
//停止処理
if(speed == 0){
digitalWrite(motor1, LOW);
digitalWrite(motor2, LOW);
analogWrite(motorP, speed);
}else{
//走らせる処理
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
analogWrite(motorP, speed);
}
}
void loop() {
if(Serial.available()){
inString[i] = Serial.read();
if(i > 10 || inString[i] == '/'){
inString[i] = '\0';
i = 0;
Serial.println(inString);
redymotor(); //モーターへ移行
}
else{
i++;
}
}
}
Bluetoothを使うための特別な処理を記述する必要はなく、C言語のように書けるので便利です.
操縦側のプログラム
私が使用している端末がAndroidしか無いためAndroidアプリで作りました.
今回製作したアプリは、「とりあえずプラレールを動かせれば良い」というコンセプトで作ったため、簡単な作りになっています.
Androidアプリを開発する環境があれば開発することが可能です.
ソースコードで注意するところは、「res\values\strings.xml」のbluetooth_ipに接続するBluetoothモジュールのIPを入れてください.
正しく入力しないと接続できません.
<resources>
<string name="app_name">プラレール操縦</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<!-- ここはBluetoothモジュールのIPを入力 example:12:34:56:78:91:12 -->
<string name="blutooth_ip">00:00:00:00:00:00</string>
</resources>
使い方は動画を参照してください. それでは良いプラレールライフを!
GitHub : http://github.com/Momijinn/plarail-and-micon
参考
- Youtube Arduinoでプラレール制御 (列車交換編) http://www.youtube.com/watch?v=AGQ-dd4PuI8