ESP8266 製作・実験
1 初めての成功例
2 WiFiでLED点滅
3 ミニ4駆モーター制御のトレース
4 APモードLED制御
1 初めての成功例 2017.03.08
ESP8266はWiFi機能のMCですが、具体的にどのような働きがあるのか理解できていません。ATコマンドを使って何かできるかとweb記事のトレースを試みたのですがさっぱり動かず困っていました。
いろいろな記事を探して見ていたのですが、その中で「WROOM 単体に Arduino スケッチで Wi-Fi ストリーミング」はどうかと思い、記事どおりのスケッチを書き込むとWifiとして動くことが確認できました。
このサイトは非常に丁寧に解説してくれています。私のような素人にはありがたい情報です。感謝。
WROOM(ESP8266)にaruduino-IDEでスケッチを書込み、タイムサーバーから時刻を得て、それをWiFiで送信します。WiFiルーターにLAN接続しているデスクトップPCと無線LANで接続しているノートPCのブラウザからアクセスすることができました。(理論は理解していません)
ハードウエアは別項「動作回路の作製」のとおりです。
基本のプルアップ・プルダウン
リセット回路(スイッチ)
書込みスイッチ(GPIO0)
UART接続(TXD、RXD、GND)
を接続しています。USBコンバーターはcp2102(自作)を使っています。電源の3.3Vは専用電源から供給しています。
ソフトウエアについては、
arduino-IDEインストール(1.8.1)
espボードの登録(Arduino-IDEに)
は済ませてあり、
Timeライブラリをダウンロードしてインストールを記事の指定通り行いました。http://playground.arduino.cc/code/time
Time-masterフォルダをIDEのlibrariesフォルダにフォルダごとコピーしています。
スケッチは(理論が理解できていないので)コピーのまま使わせて頂きました。ここに置きますが.txtで見にくいとは思います。
これから少しずつでも読んで行けるようにしたいところです。
WROOMの発信の様子と、UART通信の状態は下のとおりです。
2 WiFiでLED点滅 2017.03.15
ここのサイトでWiFi経由のLED点滅ができる方法を知り、試してみました。
Arduino-IDEのスケッチ例を使います。 ファイル → スケッチ例 → ESP8266WiFi → WiFiWebServer を選択します。
変更の注意点は2箇所です。
1 ssid と password を自分のものに書き換えます
2 LEDをio13に実装しているので 2 を 13 に変えます
書込みを終えてリセットするとシリアルモニタに次の内容が現れました。
プラウザからこのIPアドレスを指定して、
192.168.0.6/gpio/1 をアクセスするとLEDが点灯し、
192.168.0.6/gpio/0 をアクセスするとLEDが消灯しました。
この機能を利用すると機器のON・OFFがWiFiでできそうです。
しかし、原理も、プログラムの解読も、残念ながら何もわかっていない現状です。勉強しなければ...
プログラムです。
/*
* This sketch demonstrates how to set up a simple HTTP-like server.
* The server will set a GPIO pin depending on the request
* http://server_ip/gpio/0 will set the GPIO2 low,
* http://server_ip/gpio/1 will set the GPIO2 high
* server_ip is the IP address of the ESP8266 module, will be
* printed to Serial when the module is connected.
*/
#include<ESP8266WiFi.h>
const char* ssid = "********";
const char* password = "********";
// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
// prepare GPIO2
pinMode(13, OUTPUT);
digitalWrite(13, 0);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.println(WiFi.localIP());
}
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read the first line of the request
String req = client.readStringUntil('\r');
Serial.println(req);
client.flush();
// Match the request
int val;
if (req.indexOf("/gpio/0") != -1)
val = 0;
else if (req.indexOf("/gpio/1") != -1)
val = 1;
else {
Serial.println("invalid request");
client.stop();
return;
}
// Set GPIO2 according to the request
digitalWrite(13, val);
client.flush();
// Prepare the response
String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n\r\n\r\nGPIO is now ";
s += (val)?"high":"low";
s += "\n";
// Send the response to the client
client.print(s);
delay(1);
Serial.println("Client disonnected");
// The client will actually be disconnected
// when the function returns and 'client' object is detroyed
}
3 ミニ4駆モーター制御のトレース 2017.04.29
ノートパソコンから直接ESP8266を呼び出し、ミニ4駆のモーターをコントロールする記事がありました。そのままコピーして書き込んだところノートパソコンからIPアドレスを入力するとメニューの "start, stop, back " を選ぶことができました。
どのような手続きか全く理解できておらず、モーターコントロールのハードも作っていませんが、今後学習してメニューを変更すれば一般的なリモコンに変えることができるのではないかと思います。
今回実験のハードウエアは基本回路に何も付け加えていません。
プログラム
4 APモードLED制御 2017.04.30
上記「ミニ4駆モーター制御」のプログラムを変更して(簡単にして)2個のLED赤緑をノートパソコンからコントロールするものを作りました。一部を変更しているだけですから、制御は 赤LED点灯、緑LED点灯、全消灯 の3つとしています。
LEDは赤をGPIO12に、緑をGPIO13にHIGHで点灯するようにセットしています。ノートパソコンのブラウザに 192.168.4.1 で接続して3つのボタンを押すことでLEDを点消灯できました。
パスワードは設定していないので他のノートパソコンからも動かせるのでこのままではリモコンには使えないと思いますが、発展させると室内のスイッチon、offができることになります。スマホを持っていないので実用性はありませんが。
プログラム
工事中
2017.02.12
12
35