今回はESPr DeveloperでWifi戦車を作る記事です。

カメラとかセンサーとかもっといろんな機能つける人にはラズパイ戦車でいいと思いますが、動かすだけなのと、せっかく新しいWiFi付きマイコンなので載せ換えたいと思います。

 

さっき気づいたけど、ESPr Developerピンなしで買ってmbedみたいにピンつけてしまったからスイッチサイエンスのピンソケット付きとは仕様が違うのでそこは適宜対応してください。

ブレットボードとかで使うならピンソケットではなくてピンのほうがおすすめかもです。

 今回はESPr DeveloperをArduinoとして使用します。

 

使用するもの

・ESPr Developer

・モータドライバ TA7291P x2

・ブレットボード(基板でやる人はユニバーサル基板)

・タミヤ ダブルギアボックス

・タミヤ トラック&ホイールセット 

・タミヤ ユニバーサルプレート 2枚セット

・モバイルバッテリー

・電池ボックス(単3x4)

・単3電池 x4

 

車体の作成

image

自分は以前に作っているので割愛します。

以前作った時に苦戦したのでその時の記事の参照を推奨します。

http://ameblo.jp/ruru12245/entry-12255991548.html

 

基板の配線

 

http://fritzing.org/projects/espr-developer-wifi-rc

ピンが見えなかったので新しい画像追加しました。

 

FritzingにESPr Developerのボードがなかったので同じモジュールを積んだもので代用しています。ピンの番号を合わせて組んでください。

 

 自分は基板で組みました。ソケットにボード、電源、モータをそれぞれ接続すれば使えます。

裏はぐちゃぐちゃですw

実際にESPr Developerを載せてみた。

 

組み立て

できた基板を車体に取り付けます。

電池、モバイルバッテリーを載せて完成。

車体下部の様子

 

プログラムの書き込み

ようやくプログラムを書き込みます。

下記をArduino IDEで書き込みしてください。

 

※ESPrDeveloperのArduinoスケッチの書き込み設定をしていない方は設定が必要なので、 設定を済ませてからプログラムを書き込んでください。

 

これはESP8266のサンプルプログラム(WiFiAccessPoint)に戦車の制御文を加えたものです。

 

#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>

/* Set these to your desired credentials. */
const char *ssid = "wifiRC";
const char *password = "11111111";

ESP8266WebServer server(80);

String form ="<html><head><meta name=viewport content=width=100></head>"
"<form action=ST><input type=submit value=STOP></form>"
"<form action=FD><input type=submit value=FORWADR></form>"
"<form action=TL><input type=submit value=LEFT></form>"
"<form action=TR><input type=submit value=RIGH></form>"
"<form action=BK><input type=submit value=BACK></form>"
"</html>";

/* Just a little test message.  Go to http://192.168.4.1 in a web browser
 * connected to this access point to see it.
 */
/* void handleRoot() {
    server.send(200, "text/html", "<h1>You are connected</h1>");
} */

/* プロトタイプ宣言 */
 void handleRoot();
 void handle_stop();
 void handle_forward();
 void handle_turn_left();
 void handle_turn_right();
 void handle_back();
 void ST_ACT();
 void FD_ACT();
 void TL_ACT();
 void TR_ACT();
 void BK_ACT(); 

void setup() {
    delay(1000);
    Serial.begin(115200);
    Serial.println();
    Serial.print("Configuring access point...");
    /* You can remove the password parameter if you want the AP to be open. */
    WiFi.softAP(ssid, password);

    IPAddress myIP = WiFi.softAPIP();
    Serial.print("AP IP address: ");
    Serial.println(myIP);
    server.on("/", handleRoot);

/* 各アクション時のハンドル設定 */
 server.on("/ST", handle_stop);
 server.on("/FD", handle_forward);
 server.on("/TL", handle_turn_left);
 server.on("/TR", handle_turn_right);
 server.on("/BK", handle_back);
 
    server.begin();
    Serial.println("HTTP server started");

 pinMode(12, OUTPUT); // 出力ピンの設定
 pinMode(13, OUTPUT);
 pinMode(14, OUTPUT);
 pinMode(16, OUTPUT);
 digitalWrite(12,LOW); // 最初はストップから
 digitalWrite(13,LOW);
 digitalWrite(14,LOW);
 digitalWrite(16,LOW);
 Serial.println("STOP");
}

void loop() {
    server.handleClient();
}

/*------ ここから下は全て新しく追加するプログラムです ----------*/
/* 各ハンドルの内容記述 */
/* ハンドル初期状態の記述 */
void handleRoot() {
 server.send(200, "text/html", form); 
 }
/* ストップハンドルの記述 */
void handle_stop() {
 Serial.println("STOP");
 ST_ACT();
 server.send(200, "text/html", form);
 }
/* 前進ハンドルの記述 */
void handle_forward() {
 Serial.println("FORWARD");
 FD_ACT();
 server.send(200, "text/html", form); 
 }
/* 左折ハンドルの記述 */
void handle_turn_left() {
 Serial.println("LEFT");
 TL_ACT();
 server.send(200, "text/html", form); 
 }
/* 右折ハンドルの記述 */
void handle_turn_right() {
 Serial.println("RIGHT");
 TR_ACT();
 server.send(200, "text/html", form); 
 }
/* バックハンドルの記述 */
void handle_back() {
 Serial.println("BACK");
 BK_ACT();
 server.send(200, "text/html", form);
}
/*-------------- 各ハンドル記述内の関数内容 ------------------*/
/* ストップの関数 */
void ST_ACT(){
 digitalWrite(12,LOW);
 digitalWrite(13,LOW);
 digitalWrite(14,LOW);
 digitalWrite(16,LOW);
 }
/* 前進の関数 */
void FD_ACT(){
 digitalWrite(12,HIGH);
 digitalWrite(13,LOW);
 digitalWrite(14,HIGH);
 digitalWrite(16,LOW); 
 }
/* 左折の関数 */
void TL_ACT(){
 digitalWrite(12,HIGH);
 digitalWrite(13,LOW);
 digitalWrite(14,LOW);
 digitalWrite(16,LOW); 
 }
/* 右折の関数 */
void TR_ACT(){
 digitalWrite(12,LOW);
 digitalWrite(13,LOW);
 digitalWrite(14,HIGH);
 digitalWrite(16,LOW); 
 }
/* バックの関数 */
void BK_ACT(){
 digitalWrite(12,LOW);
 digitalWrite(13,HIGH);
 digitalWrite(14,LOW);
 digitalWrite(16,HIGH); 
 }

 

実際に動かしてみる

プログラムを書き込んだ後に実行するとwifiRCというWiFiができているので

パスワード11111111で接続してください。

ブラウザーで192.168.4.1に接続するとラジコンを操作することができます。

 

最後に

無事動かすことができました。どんどん新しいことに挑戦していきたいですね。