⑩ESP8266でWiFi中継器を作って遊ぶ

WiFi説明図


◆IoT機器でWiFiを使って色々遊んでいて、他でデモなどする時に自宅の開発
 環境が使えた方が良い時があります。こんな時に役に立ちそうなWiFi中継器です。
(単純に自宅内のWiFiの電波の弱い所をカバーするWiFi中継器としても使えます。)

1.最初に、次の「esp_wifi_repeater」をダウンロードします。
 ①下記の画面になりますのでzipファイルをダウンロードします。



2.ダウンロードしたら、解凍します。
  ①すると下記のようなフォルダとなりますので、「firmware」を見てみます。
  ②この中の「0x00000.bin」と「0x02000.bin」をESP8266に書き込みます。



3.ESPに書き込む為のツールを、
  次より「フラッシュダウンロードツール」ダウンロードします。
  ①ダウンロードしたら解凍します。


4.次に、フラッシュダウンロードツールを実行します。
  ①コマンドプロンプトが、現れた後、下図のGUI画面が表示されますので、
   一番上のESP8266を選択します。



5.更に下図のGUI画面になります。
 ①をクリックし、最初に解凍した「0x00000.bin」ファイルを選択します。
 ②の場所に、アドレス「0x00000」を入力します。
 ③をクリックし、最初に解凍した「0x02000.bin」ファイルを選択します。
 ④の場所に、アドレス「0x02000」を入力します
 ⑤の所をチェックします。
 ⑥の所を選択します。
 ⑦の所で、COMポートを指定します。
 ⑧設定が終わったら「START」をクリックします。



6.下のバーが伸進んでいき、「FINISH」と表示されたら、終了です。




7.ここで、ESP8266をリセットすると、WiFiのアクセスポイント「MyAP」
  が現れますので、それに、接続します。



8.その後、ディフォルトの「192.168.4.1」にブラウザで接続します。
  すると、下図のような設定画面となります。
  ①最初に、アップリンクWiFiネットワークに(WiFiの親となる)、
   「STA設定」に「SSID」と「Password」を設定します。
    そして「connect」をクリックします。
   *オープンネットワークにはパスワード "none"を使用してください。
   ・ESPが再起動し、WiFiルーターに接続します。
   ・数秒後にステータスLEDが点滅します。
  ②オートメッシュを選択した場合は、設定は完了です。
   自動メッシュモードの場合、これらの設定は「STA設定」と同じであるため、
    「ソフトAP設定」を設定する必要はありません。
   ・同じssidが、接続されているすべてのESPに設定されます。
   *なので、最初はチェック無しで試験してみます。
  ③オートメッシュを使用していない場合は、ページをリロードして
    [AP Settings]を適当な「SSID」と「Password」に設定します。
    最初のままでも良いです。
   ・[設定]をクリックすると、ESPが再起動します。
   ・これで、新しく設定されたAPを介して上位のネットに接続する
    事が出来るようになります。

   ・これらの変更は、次回の接続アドレス等が変わることに注意してください。
    つまり、さらに設定を行うには、新しく設定したWiFiネットワークの1つを
    介してESPに接続します。
   ・たとえば、AP SSIDを「My-WiFi-AP」サブネットを「192.168.1.1」に
    変更したならば、接続先AP名とIPアドレスを覚えておいてください。
    次回からは、「My-WiFi-AP」に接続し、「192.168.1.1」にブラウザで
    接続し、設定変更等を行います。
    (ESPは常にこのネットワークでアドレスx.x.x.1なります)。

  *もしも設定ミスを犯してESPと接続できなくなった場合でも、
   それを回復するためにシリアルコンソールを使用することが出来ます。
   「工場出荷時設定に戻す」事が出来ます。(下記参照)





9.詳細設定は、コンソールインターフェイスのコマンドラインを介して行います。
  このコンソールは115200ボーのシリアルポートか、またはTCPポート7777
  (接続されたSTAからの "telnet 192.168.4.1 7777"など)のどちらかを
   通して利用可能です。

  下記は、TeraTermでシリアル115200ボーで接続しています。
  ①使えるコマンドは、「help」で表示出来ます。
  ②ステータスを表示させるコマンド「show」で、設定内容が確認できます。

10.基本コマンド

.  
 help: 短いヘルプメッセージを表示します
------------------------------------------------ ----------------------------------------------------------------------------------------------
 set [ssid | password] value: アップリンクAP(ホームルーターのWiFi設定)の設定を変更します。
オープンネットワークにはパスワード "none"を使用します。
------------------------------------------------ ----------------------------------------------------------------------------------------------
 set [ap_ssid | ap_password] value:  ESPのソフトAPの設定を変更します。(ローカルのステーション用)
------------------------------------------------ ----------------------------------------------------------------------------------------------
 show [config | stats]:  現在の設定またはいくつかのステータス情報と統計を表示します。
------------------------------------------------ ----------------------------------------------------------------------------------------------
 save [dhcp]:   現在の設定パラメータ、ACL、ルーティングエントリを
[+現在のDHCPリース]でフラッシュメモリに保存します。
------------------------------------------------ ----------------------------------------------------------------------------------------------
 lock [ password ]: 現在の設定内容で保存してロックします。変更はできません。
パスワードがすでに設定されている場合は、そのままにできます。
(デフォルトはアップリンクWiFiのパスワードです)。
------------------------------------------------ ----------------------------------------------------------------------------------------------
 unlock password:  ロックを解除します。
------------------------------------------------ ----------------------------------------------------------------------------------------------
 reset [factory]:   espをリセットし、 'factory'はオプションでWiFiパラメータを
デフォルト値にリセットします
(ロックされたデバイスではシリアルコンソールからのみ動作します)。
------------------------------------------------ ----------------------------------------------------------------------------------------------
 quit:  リモートセッションを終了します
.  




今日は、ここまで


ページトップへ



①ESP32でMicroPythonを遊ぶ
制作写真

1.Micro Pythonの公式WebページからESPWROOM-32(以下ESP32)用の
 最新版MicroPythonインタプリタ(以下micropython)を下記より入手する。

HP:MicroPythonインタプリタ

①ダウンロード画面
MicroPythonインタプリタ web画面

2.MicroPythonをESP32の内蔵メモリに書き込む為のツール
「Flash Download Tools (ESP8266 & ESP32)」を下記より入手する。

HP:「Flash Download Tools (ESP8266 & ESP32)」

①ダウンロード画面
Flash Download Tools web画面


②解凍後、ESPFlashDownloadTool_v3.6.2.2を実行する
するとボード選択画面になるのでESP32を選択する
Flash Download Tools web画面1


③ファイル選択など設定画面
Flash Download Tools web画面2


設定が終わったら、次の手順でメモリへ書き込む
①BOOT-SWとRESET-SW押す           
②RESET-SWを離す               
③BOOT-SWを離す。               
④Flash Download Toolsの[START]をクリックする



3.MicroPython向け統合開発環境「uPyCraft」を下記より入手する。

HP:統合開発環境「uPyCraft」

①ファイル選択画面
「uPyCraft」 web画面1

②ダウンロード画面
「uPyCraft」 web画面2

4.起動後、最初にシリアルポート番号とボードの設定を行う。
①tools-serial-COMx
②tools-board-esp32
③tools-Preferences-Serlalで
ボーレートが115200に設定されているのを確認する。
すると、右下コンソールに>>>が表示される。
④help-Tutorial onlineにて使い方を参照する。
(内容が中国語なのでchromeでページを翻訳する)

①tools-serial-COMx シリアルポート選択画面
「uPyCraft」 実行画面1

②tools-board-esp32 ボード選択画面
「uPyCraft」 実行画面2

③tools-Preferences-Serlalでボーレートが115200に設定されているのを確認する。
「uPyCraft」 実行画面3

④help-Tutorial onlineにて使い方を参照する。
(内容が中国語なのでchromeでページを翻訳する)
「uPyCraft」 実行画面4


以上 Micropython で IoT を 遊びましょう !!

ページトップへ



②ESP32でBluetoothスピーカーを遊ぶ

制作写真
接続図
github.com/h-nari/ESP32_bt_speaker


ESP32_bt_speaker
I2S+内蔵DACを使用したブルートゥーススピーカー

$cd esp
$git clone https://github.com/h-nari/ESP32_bt_speaker.git
$cd ESP32_bt_speaker

**********************************************************
最新版での修正箇所
main/i2sdac.c 29行目のあたり

// i2s_config.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1;
i2s_config.intr_alloc_flags = 0; // 変更しないとシリアルに文字が出ない
i2s_config.use_apll = 0; // これを追加したら音が正常になった
***********************************************************

$make menuconfig
コンフィグ画面で
[Sirial flasher config-->]
->[Default serial port]を選択しCOMXを指定する。
$make flash monitor //コンパイル、書き込み、モニター
次回からは
$make app-flash monitor //改変部のみコンパイル

これでBluetoothスピーカーが出来上がる。
iPodやiPadから音楽を流せる。

ページトップへ



③ESP32でwebradioを遊ぶ

制作写真

github.com/kodera2t/ESP32_OLED_webradio



//ハードの用意(リンクが購入先)
1.ESP32
2.I2C IIC シリアル 128×64 OLED LCDディスプレイSSD1306液晶
3.アンプ MAX98357A搭載 I2S 3W D級アンプボード
4.スピーカー(4-8Ω)手持ちの適当なもの。直列にVRを入れると音量調整できる。

各デバイスとの接続
ESP32 pin  - MAX98357A
----------------------
GPIO25/DAC1 - LRCK
GPIO26/DAC2 - BCLK
GPIO22   -- DATA
VIN5V    -- vin
GND     -- GND
オープン  -- SD
オープン  -- GAIN

GAIN設定
15dB GAINとGNDの間に100Kの抵抗を接続の場合
12dB GAINがGNDに直接接続されている場合  
9dB GAINが何にも接続されていない場合(これがデフォルト)
6dB GAINがVinに直接接続されている場合
3dB GAINとVinの間に100Kの抵抗を接続の場合

ESP32 pin - I2C OLED
----------------------
GPIO14  - SCL
GPIO13  - SDA
VIN5V  -- VCC
GND   -- GND



//ソフトの用意

$cd esp
$git clone https://github.com/kodera2t/ESP32_OLED_webradio.git
$cd ESP32_OLED_webradio

*************************************************************
//menuconfigで設定する。
$make menuconfig
 [Serial flasher conig](COMx)
 [Web Radio / Bluetooth Speaker]
  [Wifi Configuration](SSID, Password)

//ESP32をUSBと接続し、コンパイルおよび書き込む
$make flash

//動作したら、OLEDに表示されているIPアドレス(例:192.168.1.130)に
//ブラウザで繋ぐ。下記のコマンドが使える。

/ - list stations
/P - change to previous station
/N - change to next station
/0..9 - select station
/0..9+URL - set station URL
/0..9-URL - remove station URL

●参考URL
192.168.1.130/1+http://wbgo.streamguys.net/thejazzstream
192.168.1.130/2+http://beatles.purestream.net/beatles.mp3
192.168.1.130/3+http://listen.181fm.com/181-beatles_128k.mp3
192.168.1.130/4+http://ice1.somafm.com/illstreet-128-mp3
192.168.1.130/5+http://ice1.somafm.com/secretagent-128-mp3
192.168.1.130/6+http://ice1.somafm.com/seventies-128-mp3
192.168.1.130/7+http://ice1.somafm.com/bootliquor-128-mp3
192.168.1.130/8+http://stream.srg-ssr.ch/m/rsj/mp3_128
192.168.1.130/9+http://icecast.omroep.nl/3fm-sb-mp3


ページトップへ



④ESP32でアマゾンAlexaを遊ぶ

制作写真

github.com/MrBuddyCasino/ESP32_Alexa



//ハードの用意(リンクが購入先)
1.ESP32
2.マイク SPH0645LM4H搭載 I2S MEMSマイクモジュール
3.アンプ MAX98357A搭載 I2S 3W D級アンプボード
4.スピーカー(4-8Ω)手持ちの適当なもの。直列にVRを入れると音量調整できる。
5.マイコン内蔵LED NeoPixels 2個(なくてもいいが、あると話しやすい)

各デバイスとの接続
ESP32 pin  - MAX98357A
----------------------
GPIO25/DAC1 - LRCK
GPIO26/DAC2 - BCLK
GPIO22   -- DATA
VIN5V    -- vin
GND     -- GND
オープン  -- SD
オープン  -- GAIN

GAIN設定
15dB GAINとGNDの間に100Kの抵抗を接続の場合
12dB GAINがGNDに直接接続されている場合  
9dB GAINが何にも接続されていない場合(これがデフォルト)
6dB GAINがVinに直接接続されている場合
3dB GAINとVinの間に100Kの抵抗を接続の場合

ESP32 pin - I2S マイク
----------------------
GPIO18  - LRCK
GPIO17  - BCLK
GPIO05  - DATA
VIN3.3V -- 3V
GND   -- GND
オープン - SEL

ESP32 pin - NeoPixels
-------------1-------2--
GPIO4   - DIN
VIN5V   - VDD -> VDD
GND    - GND -> GND
       DO --> DIN



//ソフトの用意

$cd esp
$git clone https://github.com/MrBuddyCasino/ESP32_Alexa.git
$cd ESP32_Alexa

//アップデート
$git submodule init && git submodule update

*************************************************************
//Alexa認証の為、ESP32のMACアドレスが必要となる。
 ●例えば下記を参考にMACアドレスを取得する。
 ●(ESP32)チップ・メモリ・MACアドレス情報取得方法 

 次に、下記にアクセスし、新しい認証トークンを作成して、コピペして
 保存しておく。そのトークンをmenuconfigで設定する。
 ●Authenticate New Device 

*************************************************************
//不具合を修正
●ニュースが再生されない不具合の対策
◆編集箇所:下記ファイルの107行の前にデレー文を追加する。
components\web_radio\web_radio.c
106: vTaskDelay(500); //tuika 2018/1/16
107: // blocks until end of stream
108: int result = http_client_get(radio_conf->url, &callbacks;,
109: radio_conf->player_config);

●質問時にローカルエコーを止めるための対策
◆編集箇所:下記ファイルの118行をコメントアウトする。
components\alexa\alexa_speech_recognizer.c
117: // local echo
118: //render_samples((char*) buf, bytes_written, &buf;_desc);

*************************************************************
//日本語対応に修正
main/Kconfig.projbuildを修正(*部分を追加)
-----------------------------------------------
choice
prompt "API Endpoint"
default FE
help
Select API endpoint URL.

config ALEXA_ENDPOINT_EU
bool "EU"
config ALEXA_ENDPOINT_US
bool "US"
* config ALEXA_ENDPOINT_FE
* bool "FE"

endchoice

config ALEXA_ENDPOINT
string
default "https://avs-alexa-na.amazon.com" if ALEXA_ENDPOINT_US
default "https://avs-alexa-eu.amazon.com" if ALEXA_ENDPOINT_EU
* default "https://avs-alexa-fe.amazon.com" if ALEXA_ENDPOINT_FE
choice
prompt "Language"
default ALEXA_LOCALE_JA_JP
help
Select locale.

config ALEXA_LOCALE_EN_US
bool "en-US"
config ALEXA_LOCALE_EN_GB
bool "en-GB"
config ALEXA_LOCALE_DE_DE
bool "de-DE"
* config ALEXA_LOCALE_JA_JP
* bool "ja-JP"
endchoice

config ALEXA_LOCALE
string
default "en-US" if ALEXA_LOCALE_EN_US
default "en-GB" if ALEXA_LOCALE_EN_GB
default "de-DE" if ALEXA_LOCALE_DE_DE
* default "ja-JP" if ALEXA_LOCALE_JA_JP
----------------------------------------------------------------

*************************************************************
//menuconfigで設定する。
$make menuconfig
 [Alexa Conig]
  [Wifi Configuration](SSID, Password)
  [API Endpoint](FE)
  [Language](ja-JP)
  [Anthentic ation Token]
   上記で取得したtokenをそのままコピペする)
 [Serial flasher conig](COMx)

//ESP32をUSBと接続し、コンパイルおよび書き込む
$make flash

//準備できたら笑い声がするので、GPIO0のSWを押し話しかける。
//タイムゾーンや住所などを下記にて設定するとより正確な
//回答が得られる。
 ○○○'s Alexa Test App のデバイスと認識されている。
 ●アマゾンアレクサ設定画面 

ページトップへ



⑤◆◆◆ (共通)ESP-IDFの設定 ◆◆◆



●ESP-IDFを設定する手順の詳細については、下記セットアップガイドを参照する。

 ◆Windowsセットアップガイド 

●ツールチェーンのセットアップ
 クイックセットアップは、下記からWindowsオールインワンツールチェーンと
 MSYS2 zipファイルをダウンロードする。
 ◆esp32_win32_msys2_environment_and_toolchain-20171123.zip 

●ZIPファイルをc:\に解凍するとC:\msys32のディレクトリが作成される。
c:\msys32\mingw32.exeを実行する。
 最初homeの下にUSER名のディレクトリが作成されるので
 その下にESPディレクトリを作成する。。
$mkdir esp
$cd esp
 
●必要なソフトウェア(SDK)のダウンロードをする。
$git clone https://github.com/espressif/esp-idf.git
$cd esp-idf
$git submodule update --init

●IDF_PATH環境変数を設定し、このディレクトリを指定します。
$export IDF_PATH="$HOME/esp/esp-idf"

c:\msys32\etc\profile.d\export_idf_path.shを作成しそこに書いても良い。
$printenv IDF_PATH //確認する。

(注)アマゾンAlexaの時、必要
●ツールチェーンをバージョン5.2.0を下記よりダウンロードする。
 ◆xtensa-esp32-elf-win32-1.22.0-61-gab8375a-5.2.0-2.zip 
●c:\msys32\home\user名\espに解凍する。

●PATH環境変数にツールチェーンのパスを追加する。
$export PATH="$HOME/esp/xtensa-esp32-elf/bin:$PATH"

c:\msys32\etc\profile.d\esp32_toolchain.shを編集しても良い。
$printenv PATH //確認する。

ページトップへ




⑥ESP32でWiFiマネージャーを使う


WiFiマネージャー

  ↓↓ WiFiマネージャー接続画面
WiFiマネージャー接続画面



◆ESP32用WiFiマネージャを使えるようにするには

下記の三つのライブラリを導入する。

ESP32用WiFiマネージャ
https://github.com/zhouhan0126/WIFIMANAGER-ESP32

WebServer
https://github.com/zhouhan0126/WebServer-esp32

DNSServer
https://github.com/zhouhan0126/DNSServer---esp32


この中で、一か所 WiFiManager.cpp の430行付近に下記を追記する。
このおまじないをしないと、AutoConnectの時、スキャンしてくれない。

-------------------------------------------------
page += FPSTR(HTTP_HEAD_END);

WiFi.disconnect(); //2019/02/05 tuiki by Y.H
delay(100); //2019/02/05 tuiki by Y.H

if (scan) {
-------------------------------------------------

◆複数のライブラリから目的のライブラリをインクルードする方法。

1.目的のインクルードファイルがあるディレクトリに
 以下のような感じて別名のインクルードファイル名で保存する。
 \src\ESP32WebServer.h
   \WebServer.cpp
   \WebServer.h
    xx
    xx
2.xxx.inoの中は
 #include <ESP32WebServer.h>とする。
3.DNSServer.hの方も同じように追加する。

これで、複数ファイルから目的の物だけに出来る。

----------------------------------------------

/*
  ESP32WebServer.h 
  2019/02/06 by Y.H
*/
#ifndef ESP32WEBSERVER_H
#define ESP32WEBSERVER_H
#include <WebServer.h>
#endif //ESP32WEBSERVER_H


----------------------------------------------

/*
  ESP32DNSServer.h 
  2019/02/06 by Y.H
*/
#ifndef ESP32DNSSERVER_H
#define ESP32DNSSERVER_H
#include <DNSServer.h>
#endif //ESP32DNSSERVER_H


----------------------------------------------

◆一回、ESP32に保存したSSIDを削除する方法。

下記スケッチ、loopの中でのESP32 SSID Resetの所です。
<参考までに>

ESP32_auto_connect.ino----------------------------

#include <ESP32WebServer.h>
#include <ESP32DNSServer.h>
#include <WiFi.h>          //https://github.com/esp8266/Arduino
#include <WiFiManager.h>         //https://github.com/tzapu/WiFiManager

// Include the correct display library
// For a connection via I2C using Wire include
#include <Wire.h>
#include <ACROBOTIC_SSD1306.h>
#define RST_SSID 4 //SSIDリセット用SW
#define LED 2

void setup() {
    pinMode(LED,OUTPUT);
    pinMode(RST_SSID, INPUT_PULLUP);
    Serial.begin(115200);
    Serial.println("\n Starting");
    digitalWrite(LED,HIGH);
    
    //WiFiManager
    //Local intialization. Once its business is done, there is no need to keep it around
    WiFiManager wifiManager;

    //set custom ip for portal
    //wifiManager.setAPStaticIPConfig(IPAddress(10,0,1,1), IPAddress(10,0,1,1), IPAddress(255,255,255,0));

    Wire.begin(); 
    oled.init();                      // Initialze SSD1306 OLED display
    oled.clearDisplay();              // Clear screen
    oled.putString16(0, 0, "AP mode:Auto");
    oled.putString16(2, 0, " My_ESP32_AP");
    oled.putString16(4, 0, "IP adrs:");
    oled.putString16(6, 0, " 192.168.4.1");

    //fetches ssid and pass from eeprom and tries to connect
    //if it does not connect it starts an access point with the specified name
    //here  "AutoConnectAP"
    //and goes into a blocking loop awaiting configuration
    wifiManager.autoConnect("My_ESP32_AP");
    //or use this for auto generated name ESP + ChipID
    //wifiManager.autoConnect();

    //if you get here you have connected to the WiFi
    IPAddress ipadr = WiFi.localIP();
    Serial.println("connected(^^)");
    Serial.println(WiFi.SSID());

    oled.clearDisplay();  
    oled.putString16(0, 0, "Connected(^^)");
    oled.putString16(2, 0, "SSID: " + WiFi.SSID());
    oled.putString16(4, 0, "IP adrs: ");
    oled.putString16(6, 0, " " + (String)ipadr[0] + "." + (String)ipadr[1] + "." + (String)ipadr[2] + "." + (String)ipadr[3]);

}

void loop() {
  if (digitalRead(RST_SSID)==0) {
      delay(100);
      if (digitalRead(RST_SSID)==0) {
        //reset saved settings
        Serial.println("ESP32 SSID Reset (^i^)");
        WiFi.disconnect(true);
        WiFi.begin("0","0");
        delay(1000);
        ESP.restart();
      }
  }
  digitalWrite(LED,!digitalRead(LED));
  delay(500);
}

ページトップへ




⑦ESP32で温湿度データをクラウドに保存、グラフ化

BM280センサー



◆BM280センサーを使い、温度、湿度、気圧を測定し、そのデータを
 クラウドに送りグラフ化します。
◆動作は、一分に一回測定し、OLEDに表示とクラウドに
 温度、湿度、気圧情報を出力します。
 Arduinoソフトでは、下記両方に出力しています。

◆クラウドサービスは、無料で使える
「Ambient」又は「thingspeak」を使います。
 Ambient/thingspeakはIoTデーターの可視化サービスです。


 ↓↓ 下記のHPで詳しく分かります。
https://ambidata.io/

https://thingspeak.com/

 ↓↓ 下記は、実際のグラフ例
グラフ


◆ハードの構成
①ESP32 Devkit
②0.96インチOLEDディスプレイ
③BM280センサー
 インターフェースは、I2Cの2本で、繋ぎます。

◆ピン配置は、
②がGND,VIN,SCL,SDA
③がVIN,GND,SCL,SDA
 VINとGNDの配置が逆となっているので注意が必要です。

 ↓↓ 下記は、回路図
回路図


◆次にソースファイルを示します。
 プログラムは、保証できませんので参考程度にお考え下さい。
 また、OLEDなどのライブラリが必要です。

1.ESP32 BME280 OLED 温湿度気圧モニター(Arduino版)
 ESP32_BME280.ino

2.ESP32 BME280 OLED 温湿度気圧モニター(MicrpPython版)
 boot.py & main.py

ページトップへ




⑧ESP32で電力量データをクラウドに保存、グラフ化

電力モニター1



◆電流センサー使い、家庭の電流を測定し、そのデータをクラウドに送り
 グラフ化します。
 動作は、30秒に一回測定し、クラウドに電流値と電力値情報を出力します。

◆クラウドサービスは、無料で使える「Ambient」を使います。
 AmbientはIoTデーターの可視化サービスです。


 ↓↓ 下記のHPで詳しく分かります。
>https://ambidata.io/

 ↓↓ 下記は、実際のグラフ例
グラフ


◆ハードの構成
①ESP32 Devkit
②電流センサー(CTL-10-CLS)
各電流をアナログ変換して電流を求めます。


 ↓↓ 下記は、ブレッドボードに組んだESP32
製作写真


 ↓↓ 下記は、回路図
回路図


◆次にソースファイルを示します。
 プログラムは、保証できませんので参考程度にお考え下さい。
 また、OLEDなどのライブラリが必要です。

①ESP32 CTL-10-CLS OLED パワーモニター
 ESP32_powermonitor.ino

ページトップへ




⑨ESP32でESPEasy32を遊ぶ

ESPEasy32



ESP32DevkitにESPEasy32のファームウェアを書き込み色々遊んでみました。
まず、最初にファームウェアを書込む為の環境(VSC)を作ります。

1.①Visual Studio Codeは、Microsoft社の公式ホームページから入手します。
「VSC クラウド開発用の強力かつ軽量なコード エディター」

2.今すぐダウンロードをクリック
VSC

3.自分の環境に合わせてクリック
download

もっと詳しくは、下記参考URLで
【ゼロから!】Visual Studio Codeのインストールと使い方

4.次に下記を参考に日本語化する。
Visual Studio Code [vsCode] 日本語化

5.次に下記を参考にPlatformIO IDEをインストールする。
PlatformIO IDE で Arduino を遊ぶ


6.ESPEasy32を遊ぶためのハードを作ります。
簡単な試験は、ESP32Devkitだけでも出来ますが、
私はBM280センサーとOLEDを使い、温度、湿度、気圧を測定し、そのデータを
OLEDに表示させたり、LEDのON/OFFをしてみました。
◆ハードの構成
①ESP32 Devkit
②0.96インチOLEDディスプレイ
③BME280センサー
 インターフェースは、I2Cの2本で、繋ぎます。
④GPIO-19にLED

◆ピン配置は、
②OLED__がGND,VIN,SCL,SDA
③BME280がVIN,GND,SCL,SDA
 VINとGNDの配置が逆となっているので注意が必要です。

 ↓↓ 下記は、回路図
ESPEasy32回路図


7.ESPEasy32の最新版ファームウェアを下記よりダウンロードします。
私は、【ESPEasy-mega-20190315.zip】のソースコードをダウンロードしました。
リリース mega-20190315 /プラットホームIO IDE・GitHub


①適当なフォルダに解凍します。

②その中の「platformio.ini」の下記赤色の行を修正します。

14: [platformio]
15: ;env_default = esp32dev
16: env_default = esp32test_1M8_partition ←この行を追記します。これだけビルド
17: ;env_default = dev_ESP8266_4096

379:framework = ${common.framework}
380:upload_speed = 921600 ←この行を変更します。書込スピードを上げる。

③「src」フォルダ内の「ESPEasy-Globals.h」の下記赤色の行を修正します。
 (本来ならば、アクセスポイントを検索して設定できるはずですが、
  2019/3/17時点で不具合の為、
  この修正によって、指定のアクセスポイントとします。)

26: // --- Wifi Client Mode ---------------------------------------------------------------
27: #define DEFAULT_SSID    "ssid"  // Enter your Wifi network SSID
28: #define DEFAULT_KEY    "wpakey" // Enter your Wifi network WPA key
29:
30: #define DEFAULT_USE_STATIC_IP true // (true|false) enabled or disabled static IP
31: #define DEFAULT_IP    "192.168.1.53"  // Enter your IP address
32: #define DEFAULT_DNS    "192.168.1.1"  // Enter your DNS
33: #define DEFAULT_GW    "192.168.1.1"  // Enter your Gateway


④修正後、フォルダを別名でコピーし、元を残しておきます。
今後、作業はコピーを使います。

8.Visual Studio Code を実行します。

①[ファイル]-[フォルダを開く]で、先のコピーしたフォルダを開きます。
ESPEasy32-VSC-1

②開いたら、左側エクスポーラより、「platformio.ini」をクリックしてみます。
 (先ほど修正した内容になっていればOKです。)
ESPEasy32-VSC-2

③次に下側「V」ビルドしてみます。
ESPEasy32-VSC-3

④エラー無くビルド出来たらESP32に「→」アップロードします。
(ESP32を繋ぎ、ボート名やCOM番号、書き込み器を確認します。)
ESPEasy32-VSC-4

⑤アップロード出来たらシリアルモニターに繋いでみます。
(赤丸のIPアドレスを書き留めます。
 場合によっては、192.168.4.1になる時があります。
 その時は、WiFi設定でESP32xxxxを探し、そこに繋ぎます。)
 *途中で止まったり、リブートを繰り返したりしたら、電源容量を
  確認してみて下さい。

ESPEasy32-VSC-5


9.ESP32へブラウザで先ほどのIPアドレスで繋ぎます。
 (次からは、色々設定後の画面ですので参考にして下さい。)


①最初の[main]画面
ESPEasy32-910

①-1[main]画面内[More info]画面
ESPEasy32-911

②[Tools]画面
ESPEasy32-920

②-1[Tools]画面内[Advanced]画面
 (NTPサーバー設定,Rules表示設定)
ESPEasy32-921

②-2[Tools]画面内[System Variables]画面
 (OLEDのシステム変数表示に必要)
ESPEasy32-922

③[HardWare]画面
 (WiFi Status LED,Reset Pin,I2C interface のGPIOピン番号を設定)
ESPEasy32-930

④[Devices]画面
ESPEasy32-940

④-1[Devices]画面内[Edit-1]画面
 (Display-OLED SSD1306/SH1106を選択後、表示内容を設定)
ESPEasy32-9401
ESPEasy32-941

④-2[Devices]画面内[Edit-2]画面
 (Switch input-Switchを選択後、GPIO-19を設定)
ESPEasy32-942

④-3[Devices]画面内[Edit-3]画面
 (Environment-BMx280を選択後、表示内容を設定)
ESPEasy32-943

④-4[Devices]画面内[Edit-4]画面
 (Generic-System infoを選択後、表示内容を設定)
ESPEasy32-944

⑤[Rules]画面内ルールを設定
 (ここに書いたルールで動作する)
ESPEasy32-950

⑥[Config]画面
 (別のWiFiアクセスポイントや固定IPアドレスの変更等設定)
 (IP Setingsを空にすればDHCPで割り振られる)
ESPEasy32-960

⑦IPアドレス後ろにコマンドを追記する事で、ルールに設定した
 項目を制御できます。これは、後にAppleHomekitやalexaで使用
 (Power On/Off制御)
ESPEasy32-970

⑦-1 タスク番号を追記することでJSON形式でデータを送出します
ESPEasy32-971

10.Rules(ルール)の編集でLチカをやってみました。
 詳しくは、下記確認してみて下さい。
  「ルール」チュートリアルの規則


①[Devices]でEdit-5追加(
 (Switch input-Switchを選択後、名前:led GPIO-2を設定)

②Ruies(ルール)の追加変更内容
--------------------------------------
On System#Boot do
 gpio,19,0
 timerSet,1,3  //Lチカ関連
EndOn

On Rules#Timer=1 do //Lチカ関連
 if [led#State]=1
  gpio,2,0
 else
  gpio,2,1
 endif
 timerSet,1,1
endon

On PowerOff Do
 gpio,19,0
EndOn

On PowerOn Do
 gpio,19,1
EndOn

on rebootswitch#Switch do
 reboot
end on

--------------------------------------

今日は、ここまで 次は、homebridgeでalexaに接続します。

ページトップへ
◆◆下記サイトには、無断でリンクしていますので◆◆
自己責任で閲覧して下さい

ESP32&MicroPython関連サイト
ESP32 Espressif(英語)
ESP32 特徴/仕様・本/ビデオ他情報(英語)
ESP32(ウィキペディア)
ESP-WROOM32 PDFデータシート
ESP32-DevKitC PDF回路図
ESP32-DevKitC ピン配置
ESP-WROOM-32 に関する記事
Pycomのドキュメントサイト(英語)
MicroPython(ウィキペディア)
MicroPython Advent Calendar 2017
Python入門から応用までの学習サイト
micropython公式サイト(英語)
MicroPython libraries(英語)
MicroPythonプログラミングIDE「uPyCraft」(中国語)
[基本] esp32 micropython初体験(中国語)
がた老AVR研究所
micropythonをpyboardで試してみる
BBC micro:bit MicroPython doc.
MicroPythonでwebサーバー建てて遊ぶ
ESP32 + M.PythonでOLEDに表示させた
ボクにもわかる電子工作(ESP32.etc)
mgo-tec電子工作(ESP32等を使った...)
ESP-IDF Programming Guide


ESPXX ツール等サイト
Flash Download Tools(ESP32&82XX)
esp_wifi_repeater(ESP8266)
ESP32のフラッシュメモリの読み書き
ESP32の保護機能付き電源強化対策の実験
ESP32でプログラムを書込容量を増やす
ESP-WROOM-32のセットアップについて


ESPEasy/ESPEasy32関連サイト
ESPEasy32開発版のソースコード
「ルール」チュートリアルの規則
Let's control it(Main)
ESPEasy32
ESPEasy
ESP Easy Webインターフェース
ESP32に対応したファームウェア
ESP Easyのドキュメントへようこそ
ESPEasyプラグイン
List of official plugins
ESPEasy-自作又は追加のPluginを統合
SONOFFにESPEASYを入れてみる
SonoffとESP EasyでHomekit対応格安温度・湿度センサーをつくる


電子部品販売サイト
秋月電子通商
aitendo
スイッチサイエンス
マルツパーツ
ストロベリー・リナックス
マイクロファン Yahoo!ショップ
千石電商
エレキット(イーケイジャパン)
桜パーツ
ビット・トレード・ワン
共立エレショップ