プラレールに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
コメント