2017年1月29日日曜日

ESP-WROOM-02 のピッチ変換フル版を Arduino 化してみた

概要

前回フル版で AT コマンドが送信できるまでやってみました
今回はフル版を Arduino 化して Arduino スケッチが動作するようにしてみたいと思います

環境

Arduino IDE で ESP8266 を扱えるようにする方法はこちらを参考に事前にセットアップしておいてください

配線

ほぼ前回と同じですが違う点が 2 点あります
try_esp_full_ver_arduino_circuit.jpg

Arduino のスケッチを書き込むために「UART Download Mode」にする必要があります
これにするには

  1. IO0 ピンを GND に接続
  2. RST ピンを GND に接続 -> 抜く

ということを行う必要があります
これをすることで ESP-WROOM-02 のモードが変わります

スケッチ

Wifi に接続して MQTT に Publish できるか確認するスケッチです
ここは各自で確認しやすいスケッチにしてください

単純に GPIO (IO14) とかを制御して LED を点滅させるだけでも OK です

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

const char* ssid = "ssid";
const char* password = "ssid password";
const char* mqtt_server = "your.mqtt.broker";
const int mqtt_port = 1883;
const char* mqtt_pub_topic = "pub_topic";
const char* mqtt_username = "broker username";
const char* mqtt_password = "broker password";

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;

void setup_wifi() {
  delay(10);
  WiFi.begin(ssid, password);
}

void reconnect() {
  while (!client.connected()) {
    if (client.connect("ESP8266Client", mqtt_username, mqtt_password)) {
      client.publish(mqtt_pub_topic, "hello world");
    } else {
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  long now = millis();
  if (now - lastMsg > 10000) {
    lastMsg = now;
    ++value;
    snprintf (msg, 75, "hello world #%ld", value);
    Serial.print("Publish message: ");
    Serial.println(msg);
    client.publish(mqtt_pub_topic, msg);
  }
}

Arduino IDE から書き込めるか確認してみましょう
ちゃんとモードが変わっている場合は問題なく書き込めると思います
モードが変わっていないと以下のようなエラーが発生すると思います

warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed

最後に

ESP-WROOM-02 のフル版を Arduino 化してみました

面倒なのはスケッチを一度書き込むと実行するためにモードが「Flash Boot Mode」に戻ってしまいます
なので再度スケッチを書き込む場合は RST ピンをまた GND に接続させて抜く必要があります
この辺は開発ボードを使っているとわかるのですが、スイッチ等を実装しておくと押すだけでモードを切り替えられるようになるので楽です

まだフル版でガッツリ開発していないので何とも言えないのですが、フル版はいろいろ面倒です
もし、今回の配線を崩してしまった場合、またフル版で開発したいと思ったら同じ配線をブレッドボード上にしなければなりません
開発ボードの場合、スケッチを書き込むだけであればそんなことは必要ありません
このままブレッドボード上に配線しっぱなししてもいいのですが、それもちょっと、、、

大量に使う場合とか、スケッチをもう書き換える必要がない場合などはフル版の方が安くて小型なので、良いと思います
ゴリゴリスケッチを書き換えたり配線を変える場合は、やはりフル版よりかは開発ボードのほうが断然簡単なのでオススメです

0 件のコメント:

コメントを投稿