Make

プラレールにマイコンを入れて操作してみた

Make
この記事は約5分で読めます。
スポンサーリンク

プラレールに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

参考

コメント

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