日々のつぶやき

なんとなく興味のあることを書いています

ESP8266入手

aliexpressでかねてから気になっていたESP8266を入手した。一個$2.5、送料が2.63$だった。ネットでいろいろ報告されている価格からすると、更に安くなっているようだ。だが為替が…

 

どちらにせよ安いので気にしない。

 

なおESP8266の載ったボードの形で販売されている。実際、このチップはさすがに手はんだは無理そう。ボードの名前はESP-01とかESP-12とか。名前がややこしいのはご愛嬌。ネットで圧倒的に情報が多いのはESP-01。というわけで今回はESP-01を購入。

 

試食に使うハードはArduinoとした。これも安さとネットでの情報の多さから。パソコンからUSBで繋いで、同時にESP8266ともシリアル通信したいので、Arduino Microを選択した。ESP8266は3.3V駆動で、Arduinoは5V系なので何らかの変換が必要となる。ただし、Arduinoの入力(つまりAVRの入力)は2.1Vあたりが閾値となるのでESP8266→Arduinoは直結可。Arduino→ESP8266はこのへんを参考にした。デフォルトでの通信速度は9600bpsなのでこの中の変換回路は何でもOKである。今回はダイオードと抵抗でさくさくっと。

 

繋いだらライブラリを

itead/ITEADLIB_Arduino_WeeESP8266 · GitHub

から頂いて、こんな感じで書いてarduinoのシリアルモニタでwを打ち込んでEnterを押すとさっくりと動いた。中国製の$2.5のチップとは思えないほど高性能。今日のところはこれくらいで。

 

#include <ESP8266.h>
#define SSID        "ssid"
#define PASSWORD    "password"

int inByte = 0;
int i;

ESP8266 wifi(Serial1);

// the setup function runs once when you press reset or power the board
void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ;
  }
}

// the loop function runs over and over again forever
void loop() {
  if (Serial.available() > 0) {
    inByte = Serial.read();
    Serial.write(inByte);
    if (inByte == 'w') {
      Serial.print("FW Version:");
      Serial.println(wifi.getVersion().c_str());

      if (wifi.joinAP(SSID, PASSWORD)) {
        Serial.print("Join AP success\r\n");
        Serial.print("IP: ");
        Serial.println(wifi.getLocalIP().c_str());
      } else {
        Serial.print("Join AP failure\r\n");
      }

      if (wifi.enableMUX()) {
        Serial.print("multiple ok\r\n");
      } else {
        Serial.print("multiple err\r\n");
      }

      if (wifi.startTCPServer(8090)) {
        Serial.print("start tcp server ok\r\n");
      } else {
        Serial.print("start tcp server err\r\n");
      }
    }
  }
}