//
表示中
モノづくり, Computer - コンピューター, Electronics - 電子工作

ESP-WROOM-02のOTAを試す


ESP-WROOM-02はOTA(Over The Air)という機能が利用できます。これはWiFi経由でスケッチをアップロードする機能で、この機能を使えば無線でプログラムの更新が行えます。便利だなと思っていましたが手付かずでしたのでやってみることにしました。

写真はI2C対応のLCDを接続してWiFiへの接続が確立したらESP-WROOM-02にDHCPから割り当てられたIPアドレスを表示した様子です。似たようなことをマイコンを取っ替え引っ替えやっていますが、毎回、少しずつ違うやり方を試すなどしてます。習うより慣れろという気分で取り組んでいるつもりです。

2016-03-25 21.10.44.jpg

ESP-WROOM-02とLCDの配線です。

ESP-WROOM-02 LCD(I2C対応)
 4  SDA(10kオームの抵抗でプルアップ)
 5  SCL(10kオームの抵抗でプルアップ)
 3.3V  +V
GND  GND

 

スケッチはこんな感じです。(青色の文字の部分がOTAに関連したもの、緑色の文字の部分がLCDに関連したもの)

 #include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <Wire.h>
#define LCD_ADDR 0x3E
const char* ssid = "無線LAN親機のSSID";
const char* password = "無線LAN親機のパスワード";


void writeCommand(byte cmd) {
  Wire.beginTransmission(LCD_ADDR);
  Wire.write(0x00);
  Wire.write(cmd);
  Wire.endTransmission();
  delay(10); 
}


void writeData(byte data) {
  Wire.beginTransmission(LCD_ADDR);
  Wire.write(0x40);
  Wire.write(data);
  Wire.endTransmission();
  delay(1); 
}


void initLcd() {
  Serial.println("Initializing LCD");
  delay(100);
  writeCommand(0x38); delay(20);
  writeCommand(0x39); delay(20);
  writeCommand(0x14); delay(20);
  writeCommand(0x73); delay(20);
  writeCommand(0x56); delay(20);
  writeCommand(0x6C); delay(20);
  writeCommand(0x38); delay(20);
  writeCommand(0x01); delay(20);
  writeCommand(0x0C); delay(20);
}

void setup() {
  Serial.begin(115200);
  Serial.println("Booting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }

  
  ArduinoOTA.onStart([]() {
    Serial.println("Start");
  });
  ArduinoOTA.onEnd([]() {
    Serial.println("\nEnd");
  });
  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
    Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
  });
  ArduinoOTA.onError([](ota_error_t error) {
    Serial.printf("Error[%u]: ", error);
    if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
    else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
    else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
    else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
    else if (error == OTA_END_ERROR) Serial.println("End Failed");
  });
  ArduinoOTA.begin();
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  
  Wire.begin();
  initLcd();
    char str1[] = "ONLINE";
  IPAddress ip = WiFi.localIP();
  char str2[17];
  sprintf(str2,"%d.%d.%d.%d", ip[0],ip[1],ip[2],ip[3]);
  int len = strlen(str2);
    for(int i = 0; i < 6; i++) {
    writeData(str1[i]);
  }
    writeCommand(0x40+0x80);
  for(int i = 0; i < len; i++) {
    writeData(str2[i]);
  }
}

void loop() {
  ArduinoOTA.handle();
}

OTAに関係する部分をいつもスケッチに含めておけば、いつでもWiFi経由でスケッチのアップロードができます。めでたしめでたし。今度はESP-WROOM-02をArduinoのWi-Fiシールドのように使えるものを作りたいと思いました。Wi-Fiのスピードを生かして、カメラをつないで映像のストリーミングみたいなこともやってみたいところ。

いろいろ少しずつ試しているので、やり散らかしているみたいな状態になってきました。

2016-03-25 21.41.57.jpg

 

そんな時に我が家にやってきたのがこれ。

インテル載ってるArduino。Arduino101です。スイッチサイエンスさんで予約受付中の案内が出たのですぐに予約しました。届くまで時間がかかると思っていたら予約の2日後に届きました。

低消費電力なインテルCurieというSoCにはBluetooth LEとモーションセンサー・ジャイロセンサーが内蔵されています。ウェアラブルデバイスなどの用途を考える人が多いのでBluetoothとセンサーの組み合わせは最近の流行りみたいです。できればArduino Pro Miniのような小さなボードを出して欲しいところ。

2016-03-25 13.34.19.jpg

Arduino Unoとピン互換でしょうか。ピンの配置は同じです。5Vのボードと3.3Vのボードがあると、汎用的なシールド自作する場合に電圧の違いを吸収できるように作らないといけません。

2016-03-25 13.43.43.jpg

今日はカーナビのようなiPhoneアプリを作ろうと思って少し研究していました。曲がり角が近づくと画面の上部に曲がる方向を示す矢印を点滅させて音声で知らせるという機能を追加したり。外を歩いて機能を試しましたが、ちゃんと使えるものに仕立てるのは大変だなぁという感じがしました。

2016-03-25 19.04.45.png

kazz12211 について

Working as a OO programmer and enjoying music, bicycle and photography.

ディスカッション

コメントはまだありません。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

評価

ブログ統計

  • 537,480 ヒット

カテゴリー

アーカイブ

カレンダー

2016年3月
« 2月   4月 »
 12345
6789101112
13141516171819
20212223242526
2728293031  
%d人のブロガーが「いいね」をつけました。