

◆IoT機器でWiFiを使って色々遊んでいて、他でデモなどする時に自宅の開発
環境が使えた方が良い時があります。こんな時に役に立ちそうなWiFi中継器です。
(単純に自宅内のWiFiの電波の弱い所をカバーするWiFi中継器としても使えます。)
◆ESP32版は、下記ブログ内記事を参照してみてください。
・ESP32 で WiFi中継器 (esp32 nat router)を作ってみた
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: | リモートセッションを終了します |
| . |

◆電流センサー使い、家庭の電流を測定し、そのデータをクラウドに送り
グラフ化します。
動作は、30秒に一回測定し、クラウドに電流値と電力値情報を出力します。
◆クラウドサービスは、無料で使える「Ambient」を使います。
AmbientはIoTデーターの可視化サービスです。

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



◆BM280センサーを使い、温度、湿度、気圧を測定し、そのデータを
クラウドに送りグラフ化します。
◆動作は、一分に一回測定し、OLEDに表示とクラウドに
温度、湿度、気圧情報を出力します。
Arduinoソフトでは、下記両方に出力しています。
◆クラウドサービスは、無料で使える
「Ambient」又は「thingspeak」を使います。
Ambient/thingspeakはIoTデーターの可視化サービスです。

◆ハードの構成
①ESP32 Devkit
②0.96インチOLEDディスプレイ
③BM280センサー
インターフェースは、I2Cの2本で、繋ぎます。
◆ピン配置は、
②がGND,VIN,SCL,SDA
③がVIN,GND,SCL,SDA
VINとGNDの配置が逆となっているので注意が必要です。



◆ESP32用WiFiマネージャを使えるようにするには
/*ESP32WebServer.h2019/02/06 by Y.H*/#ifndef ESP32WEBSERVER_H#define ESP32WEBSERVER_H#include <WebServer.h>#endif //ESP32WEBSERVER_H
/*ESP32DNSServer.h2019/02/06 by Y.H*/#ifndef ESP32DNSSERVER_H#define ESP32DNSSERVER_H#include <DNSServer.h>#endif //ESP32DNSSERVER_H
#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 2void 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 aroundWiFiManager 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 displayoled.clearDisplay(); // Clear screenoled.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 configurationwifiManager.autoConnect("My_ESP32_AP");//or use this for auto generated name ESP + ChipID//wifiManager.autoConnect();//if you get here you have connected to the WiFiIPAddress 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 settingsSerial.println("ESP32 SSID Reset (^i^)");WiFi.disconnect(true);WiFi.begin("0","0");delay(1000);ESP.restart();}}digitalWrite(LED,!digitalRead(LED));delay(500);}

ESP32DevkitにESPEasy32のファームウェアを書き込み色々遊んでみました。
まず、最初にファームウェアを書込む為の環境(VSC)を作ります。
1.①Visual Studio Codeは、Microsoft社の公式ホームページから入手します。
「VSC クラウド開発用の強力かつ軽量なコード エディター」
2.今すぐダウンロードをクリック

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

もっと詳しくは、下記参考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の配置が逆となっているので注意が必要です。

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 を実行します。
①[ファイル]-[フォルダを開く]で、先のコピーしたフォルダを開きます。

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

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

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

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

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

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

②[Tools]画面

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

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

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

④[Devices]画面

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


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

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

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

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

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

⑦IPアドレス後ろにコマンドを追記する事で、ルールに設定した
項目を制御できます。これは、後にAppleHomekitやalexaで使用
(Power On/Off制御)
⑦-1 タスク番号を追記することでJSON形式でデータを送出します

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
--------------------------------------

1.Micro Pythonの公式WebページからESPWROOM-32(以下ESP32)用の
最新版MicroPythonインタプリタ(以下micropython)を下記より入手する。
HP:MicroPythonインタプリタ
①ダウンロード画面
2.MicroPythonをESP32の内蔵メモリに書き込む為のツール
「Flash Download Tools (ESP8266 & ESP32)」を下記より入手する。
HP:「Flash Download Tools (ESP8266 & ESP32)」
①ダウンロード画面
②解凍後、ESPFlashDownloadTool_v3.6.2.2を実行する
するとボード選択画面になるのでESP32を選択する
③ファイル選択など設定画面
設定が終わったら、次の手順でメモリへ書き込む
①BOOT-SWとRESET-SW押す
②RESET-SWを離す
③BOOT-SWを離す。
④Flash Download Toolsの[START]をクリックする
3.MicroPython向け統合開発環境「uPyCraft」を下記より入手する。
HP:統合開発環境「uPyCraft」
①ファイル選択画面
②ダウンロード画面
4.起動後、最初にシリアルポート番号とボードの設定を行う。
①tools-serial-COMx
②tools-board-esp32
③tools-Preferences-Serlalで
ボーレートが115200に設定されているのを確認する。
すると、右下コンソールに>>>が表示される。
④help-Tutorial onlineにて使い方を参照する。
(内容が中国語なのでchromeでページを翻訳する)
①tools-serial-COMx シリアルポート選択画面
②tools-board-esp32 ボード選択画面
③tools-Preferences-Serlalでボーレートが115200に設定されているのを確認する。
④help-Tutorial onlineにて使い方を参照する。
(内容が中国語なのでchromeでページを翻訳する)
以上 Micropython で IoT を 遊びましょう !!


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から音楽を流せる。

//ハードの用意(リンクが購入先)
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

//ハードの用意(リンクが購入先)
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を設定する手順の詳細については、下記セットアップガイドを参照する。
◆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
https://dl.espressif.com/dl/package_esp32_index.json
◆ESP8266
http://arduino.esp8266.com/stable/package_esp8266com_index.json
◆dijistump
http://digistump.com/package_digistump_index.json
◆ATTiny13
https://kimio-kosaka.github.io/bitDuino13/package_bitDuino13_index.json
◆ATTiny85
http://drazzy.com/package_drazzy.com_index.json
◆ATMega328P
https://kimio-kosaka.github.io/ATMegaCore/package_ATMegaCore_index.json
◆seeedstudio
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
◆M5STACKP
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
Metaboardもどきで照明リモコン製作
◆SG90サーボモータと、315MHz無線、WiFiを使い、部屋の照明スイッチを
物理的にON/OFFするリモコンを製作しました。
次に実際の動画を見て下さい。
◆リモコン動画◆
◆パネルへの取り付け方法
●ネオジウム磁石(百均で購入)で止めるように考えましたので
会議室のパネルによって
1.磁石に着くものでしたらそのままOK
2.アルミ、プラの場合、一時パネルごとステンの物に交換し
終わったらもとに戻す。
3.強力テープで固定する?(両面テープ、ガムテープ等)
4.その他
1又は2は、実証済み。
◆次にソースファイルを示します。
プログラムは、保証できませんので参考程度にお考え下さい。
また、無線やOLEDなどのライブラリが必要です。
1.METABOARD(ATMEGA328P) リモコン受信機
USB328_RCSW_Servo2.ino
2.ESP32 WiFi&リモコン送信機
Wifi-SW-Remocon_softAP.ino
3.ATTiny85 リモコン送信機
LampTX85.ino
◆次に回路図を示します。




MetaboardもどきでHIDKeyboardに
BM280センサーを使い、温度、湿度、気圧を測定するものを製作しました。
動作は、5秒に一回測定し、OLEDとHIDキーボードに温度、湿度、気圧情報を出力します。
ハードの構成
①metaboardもどき(OLED接続用のパターン付)
②0.96インチOLEDディスプレイ
③BM280センサー
インターフェースは、I2Cの2本で、繋ぎます。
ピン配置は、
②がGND,VIN,SCL,SDA
③がVIN,GND,SCL,SDA
VINとGNDの配置が逆となっているので注意が必要です。
パソコンに接続すると、V-USB接続で、HIDキーボードデバイスと認識されます。
いきなり、パソコンに繋いだ時に、キーボードがたたかれると困るので
A0ピンをGNDに落としたときだけ、キーボード出力するようにしています。

下記が、inoファイルです。無保証なので参考程度にして下さい。
これから掲載予定です。しばらくお待ち下さい。
・ATmega328Pで作るMetaboardもどきを作ってみた
基板&製作例
●この備忘録は、2018/12/12現在、
windows10 64bit / Arudino1.8.7でのものであります。
0.ハードの製作
回路の特徴として、
①V-USBを使用したMETABOARD互換です。
②USBシリアルボートを接続すれば、ArduinoUNO互換となります。
③あと発注基板サイズの関係でOLEDも接続できる蛇の目基板部も
ついています。この部分は簡単にカットできる構造です。
◆初めてKICAD5.0.1を使用して、基板を発注してみました。(上写真)
下記に回路図を示します。
Arudino1.8.7でMetaboardを使用するには
再確認 2022/05/05
①Arduino IDE 1.8.19
②Windows11 x64 pro 21H2
1.V-USB用ブートローダーの書き込み準備
①ファイルのダウンロード
ブートローダーを下記よりダウンロードする。
V-USB - A Firmware-Only USB Driver for Atmel AVR Microcontrollersから
USBaspLoader.2012-12-08.tar.gz
をダウンロードする。
②ファイルを解凍する。
解凍した中の
「USBaspLoader.2012-12-08\firmware\hexfiles\mega328p_16mhz.hex」
をコピーし、
C:\Users\ユーザー名\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5 \bootloaders\metaboard\mega328p_16mhz.hex
上記フォルダが無い場合、
C:\Users\ユーザー名\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5
\bootloaders\ の下に「metaboard」フォルダを作成し、「mega328p_16mhz.hex」
を保存する。
③次のMetaboardボードをボードリストの最後に追記する。
C:\Users\ユーザー名\AppData\Local\Arduino15
\packages\arduino\
hardware\avr\1.8.5\boards.txt
の最後に下記をコピペする。
##########################################
metaboard.name=Metaboard(328)
metaboard.upload.tool=avrdude
metaboard.upload.protocol=usbasp
metaboard.upload.maximum_size=30720
metaboard.upload.maximum_data_size=2048
metaboard.upload.speed=19200
metaboard.upload.disable_flushing=true
metaboard.build.mcu=atmega328p
metaboard.build.f_cpu=16000000L
metaboard.build.board=AVR_METABOARD
metaboard.build.core=arduino
metaboard.build.variant=standard
metaboard.bootloader.tool=avrdude
metaboard.bootloader.low_fuses=0xf7
metaboard.bootloader.high_fuses=0xda
metaboard.bootloader.extended_fuses=0x03
metaboard.bootloader.unlock_bits=0x3F
metaboard.bootloader.lock_bits=0x2F
metaboard.bootloader.file=metaboard/mega328p_16mhz.hex
##############################################################
これで、Arudino1.8.7でブートローダーとして書き込める。
書き込み用ハードは、下記を参考に構築する。
●Arduino ブートローダーを書き込む (AVR)
●Arduino Uno用ブートローダライタシールドの製作(1)(2)(3)
●AliExpress Avr isp shield combustion module bootloader programmer

◆参考回路図
2.Arudino UNOにISPを書き込む
①「ファイル」->「スケッチ例」->「11.ArudinoISP」->「ArudinoISP」を選択
②「ツール」->「ボード」->「Arudino/Genuino Uno」を選択
③「ツール」->「シリアルポート」->「COMxx」を選択
④「ツール」->「書込装置」->「AVRISP mkⅡ」を選択
⑤「→」マイコンボードに書き込むを選択
3.ATMEGA328PにV-USBブートローダー(METABOARD)を書き込む
①「ツール」->「ボード」->「Metaboard(328)」を選択
②「ツール」->「シリアルポート」->「COMxx」を選択
③「ツール」->「書込装置」->「Arudino as isp」を選択
④「ツール」->「ブートローダーを書き込む」を選択
◆ATMEGA328PをMETABOARDもどきに挿す。
4.METABOARDにスケッチを書き込む
①「ツール」->「ボード」->「Metaboard(328)」を選択
②「ツール」->「書込装置」->「USBasp」を選択
③ここで、metaboardのD7ピンをGNDに落とし、リセットSWを押し
書き込みモードにする。(USBasp互換となる)
◆まだ、USBaspのドライバをインストールしてない場合、
下記からUSBaspの最新ファイルをダウンロードして解凍し、
\bin\win-driverフォルダ内のUSBaspドライバをインストールする。
USBasp - Atmel AVRコントローラのUSBプログラマ
インストールしても「!」マークが出てインストールできない場合
下記を参照して、「Zadig」を使ってください。
ここを、参考に→
USBasp
④「→」マイコンボードに書き込むを選択
USBシリアルボードを使ってArduinoUNO互換とする場合
私は、ここで購入→USB to TTL converter UART module CH340G
3’ ATMEGA328Pにブートローダーを書き込む
①「ツール」->「ボード」->「Arduino/Genuino Uno」を選択
②「ツール」->「シリアルポート」->「COMxx」を選択
③「ツール」->「書込装置」->「Arudino as isp」を選択
④「ツール」->「ブートローダーを書き込む」を選択
◆ATMEGA328PをMETABOARDもどきに挿す。
4’ ArduinoUNO互換にスケッチを書き込む
①「ツール」->「ボード」->「Arduino/Genuino Uno」を選択
②「ツール」->「シリアルポート」->「COMxx」を選択
③「ツール」->「書込装置」->「AVRISP mkⅡ」を選択
④「→」マイコンボードに書き込むを選択
以上
2号機として、色々考えていて,ARDUINO MEGA2560がIO端子がたくさんあることを知り、使ってみることにしました。
直接、48の入出力することが出来て、ハードもソフトも楽になりました。
ついでに、HDMIも追加しました。
MEGA2560

**************************************************************************
ここから色々なUSBケーブル試験時の写真です。
色塗りの信号線が、他と接続されていることを示します。
**************************************************************************
①MicroB 充電専用ケーブル <-> USB2.0

◆D-D+がショートされている。
②MicroB ケーブル <-> USB2.0

◆シールドも接続されている。
④ TYPE-Cケーブル <-> USB2.0

◆データ線は、D+D-のみ接続されている。

⑤TYPE-Cケーブル <-> USB3.0
USB ケーブルテスターを作ってみた。(その一)
1号機は、ESP32と4051(8chアナログセレクター)を使いました。
TYPE-Cは、24端子あるのでTYPE-C<->TYPE-Cをチェックするのに
48の入出力が必要になります。ESP32では、到底足りないので4051を
使って端子数を増やして測定することにしました。
写真は、TYPE-A <-> microB でのものです。
◆拡大写真
4051を使った回路図
次は、・USB ケーブルテスターを作ってみた。(その二)
EA5767をArduinoで制御してFMラジオを作ってみた。
写真は必要な部品
①1pc TEA5767 プログラマブル 低消費電力のFMステレオラジオ Arduino用のモジュール
②HiLetgo 0.96" I2C シリアル 128×64 OLED LCDディスプレイSSD1306液晶 STM32/51/MSP430/Arduinoに対応 ホワイト [並行輸入品]
③ブレッドボード
④UNO R3開発ボード USBケーブル付属 Arduinoと互換


ピン接続表
周波数の設定は、アップ釦(pin3)、ダウン釦(pin2)でプラス、マイナス0.1MHzと
メモリにあらかじめ設定した周波数を呼び出すメモリ釦(pin4)で対応しています。
ライブラリは、下記のサイトを使わさせていただきました。
ありがとうございます。
ARDUINO FMラジオを作る!(TEA5767を使用)
ライブラリファイル
このライブラリをC:\Arduino\librariesに追加します。
あと下記のファイルを変更して日本のFM周波数帯にしました。
C:\Arduino\libraries\TEA5767-master\TEA5767.cpp
void TEA5767::init() {
ctrl_data.port1 = 1;
ctrl_data.port2 = 1;
ctrl_data.high_cut = 1;
ctrl_data.st_noise = 1;
ctrl_data.soft_mute = 1;
ctrl_data.deemph_75 = 0;
ctrl_data.japan_band = 1; //0->1変更
ctrl_data.pllref = 0;
Arduinoスケッチ
fmradio.ino
プログラムは、保証できませんので参考程度にお考え下さい。
AD9833をArduinoで制御して信号発生器を作ってみた。
UIをスイッチやロータリーエンコーダーで考えましたが、操作性などから
タッチパネル付LCDを使用することにしました。
写真は調達した必要な部品
①Elegoo UNO R3 2.8 Inches TFT ターチスクリーン カードソケット付 Arduino用の技術データ
②GAOHOUAD9833 DDS信号発生器モジュールプログラマブル・マイクロプロセッサ正弦波
③Prototype PCB Expansion Board For Arduino ATMEGA328P UNO R3 Shield FR-4 Fiber
PCB Breadboard 2mm 2.54mm Pitch With Pins DIY One
④UNO R3開発ボード USBケーブル付属 Arduinoと互換

ピン接続表
100均のケースにバッテリーも含め組み込みました。
実際の出力画面①サイン波
実際の出力画面②三角波
実際の出力画面③方形波
Arduinoスケッチ
unosg.ino
プログラムは、保証できませんので参考程度にお考え下さい。
DSO-150バッテリー内蔵化とFirmwareのUpgrade
0.DSO-150の取り扱いは、下記に詳しく書かれています。
DSO Shell(DSO150)の使い方
1.DSO-150をポータブルに使うためにバッテリーを内蔵した。
それと、シリアル通信もすぐにできるようにUSBシリアル変換ボードも一緒に内蔵した。スペースの関係で基盤をカットして加工した。
写真は調達した必要な部品
①Rasbee 5V 1A 18650 リチウムバッテリー チャージボード Micro USB チャージモジュール プロテクト 1個 [並行輸入品]
②Rasbee USBポート 2A DC-DC ブーストステップアップ 転換モジュール Micro USB 2V-24V to 5V-28V 9V 12V 24V 1個 [並行輸入品]
③バッテリー(モバイルバッテリーを分解して流用)
④USB2.0 TO TTL 6ピン シリアル·コンバータ UART モジュール CP2102 STC 6ピンケーブル
仮配置して試験時
実際の配置時
組み立て後の動作確認時
2.ファームウェアのアップグレードについて
DSOシェルのファームウェアをアップグレードする方法
https://jyetech.com/Products/LcdScope/DSO150_HowToUpgradeFirmware.pdf
ファームウェアをアップグレードする時は、JP1とJP2をショートする必要があるため、分解しないでアクセスするために外にジャンパー線を引き出した。ピンの所は、パターンカットして接続
◆ここからダウンロード
DSO シェル (DSO150) ファームウェア
バージョンを111から113にアップグレード後の写真

これで、快適に遊べます。
M5STACKもどきを作ってみた。
写真は、下記ディスプレイデモの最初の画面
C:ArduinolibrariesM5StackexamplesBasicsDisplayDisplay.ino
次の写真は、オシロスコープを入れて動いているのがわかります。
表示部の拡大(ちゃんと表示されている)

最近M5STACKに興味がわき、似たような事ができないか次の部品を購入して
作ってみました。ゆくゆくは、ケースに入れようと思っています。
①HiLetgo ESP32 ESP-32S NodeMCU開発ボード2.4GHz WiFi + Bluetoothデュアルモード
②HiLetgo® 2.8 "TFT LCDディスプレイ タッチパネル SPIシリアル240 * 320 ILI9341 5V / 3.3V STM32 [並行輸入品]
次に、ライブラリ TFT_eSPI(Bodmer) を参考にM5STACKのライブラリを修正して、
M5STACKもどきを構築してみました。
①.ハード面の接続
********************************************
LCDボード <-> ESP32(M5STACK)
1 VCC 3.3V
2 GND GND
GPIO番号
3 TFT_CS 14 TFT_CS_PIN
4 RESET 33 TFT_RST_PIN
5 TFT_D/C 27 TFT_DC_PIN
6 TFT_SDI 23 TFT_MOSI_PIN
7 TFT_SCK 18 TFT_CLK_PIN
8 LED 32 TFT_LED_PIN
9 TFT_SDO 19 TFT_MISO_PIN
10 T_CLK 18 パラ接続
11 T_CS 21
12 T_DIN 23 パラ接続
13 T_OUT 19 パラ接続
14 T_IRQ オープン
1 SD_CS 4
2 SD_MOSI 23 パラ接続
3 SD_MISO 19 パラ接続
4 AD_CLK 18 パラ接続
釦 39 BUTTON_A_PIN
17 BUTTON_B_PIN
16 BUTTON_C_PIN
スピーカー 25 SPEAKER_PIN
オシロとダブり 5 LORA_CS_PIN
26 LORA_RST_PIN
オシロとダブり 36 LORA_IRQ_PIN
シリアル 3 RXD
1 TXD
内部使用 6,7,8,9,10,11
オシロ関連 35 ADC_PIN0
36 ADC_PIN1
2 TEST_PIN0
5 TEST_PIN1
未設定 12,13,15,22,34
②.ソフト面の変更(次の3つのファイルを変更)
********************************************
c:\Arduino\libraries\M5Stack\src\utility\Config.h
*釦のB,Cのピン番号を変更
23:#define BUTTON_A_PIN 39
24:#define BUTTON_B_PIN 17 //38
25:#define BUTTON_C_PIN 16 //37
c:\Arduino\libraries\M5Stack\src\utility\Display.h
*縦横を変更
29:#define TFT_WIDTH 240 //320
30:#define TFT_HEIGHT 320 //240
c:\Arduino\libraries\M5Stack\src\utility\Display.cpp
*356:--399:までrotation設定をそっくり入れ替え
switch (rotation)
{
case 0:
writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_MV | TFT_MAD_BGR);
_width = TFT_HEIGHT;
_height = TFT_WIDTH;
break;
case 1:
writedata(TFT_MAD_MX | TFT_MAD_BGR);
_width = TFT_WIDTH;
_height = TFT_HEIGHT;
break;
case 2:
writedata(TFT_MAD_MV | TFT_MAD_BGR);
_width = TFT_HEIGHT;
_height = TFT_WIDTH;
break;
case 3:
writedata(TFT_MAD_MY | TFT_MAD_BGR);
_width = TFT_WIDTH;
_height = TFT_HEIGHT;
break;
// These next rotations are for bottum up BMP drawing
case 4:
writedata(TFT_MAD_MY | TFT_MAD_MV | TFT_MAD_BGR);
_width = TFT_HEIGHT;
_height = TFT_WIDTH;
break;
case 5:
writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_BGR);
_width = TFT_WIDTH;
_height = TFT_HEIGHT;
break;
case 6:
writedata(TFT_MAD_MV | TFT_MAD_MX | TFT_MAD_BGR);
_width = TFT_HEIGHT;
_height = TFT_WIDTH;
break;
case 7:
writedata(TFT_MAD_BGR);
_width = TFT_WIDTH;
_height = TFT_HEIGHT;
break;
}
********************************************
ポップノイズ除去対策回路を作ってみた。
WINGONEER TPA3116D2 2x50W + 100W 2.1チャンネルデジタルサブウーファーパワーアンプボードDC12V-24V を買ってみました。
音質、音量共にそれなりに満足しました。
ただ、電源オン/オフ時にものすごい「ボコッ」っていうポップノイズが出て気になりました。なので、写真の所、ICの12番ピンmuteにポップノイズ除去対策回路を追加してみました。
これで、電源オン/オフ時のポップノイズがなくなりました。
簡単な回路説明ですが、C1(10uF)で、電源オフ時にmuteをHにする時間を、C2(4.7uF)で電源オン時にmuteをHにする時間を、R1(150k)でmute端子を約5Vになるよう調整しました。





■フルハイビジョン海外衛星チューナー .
■DVB-S,DVB-S2フルハイビジョン放送対応
■映像出力:HDMI 1080i/1080p; NTSC方式対応
■外付HDDやUSBメモリに、簡単に録画、再生、データ保存可能
■DiSEqC1.2/1.3(USALS)に対応
■メニュー言語:日本語、英語


■アンテナ形式 オフセット
■オフセット角 28.81度
■周波数 10.70-12.75GHz
■寸法 90 x 103 cm

■口径:150cm ポールマウント4分割組立式(ポール,LNBF付属無し)
■色:黒
■アンテナ皿の重さは 約2.5kg
■材質:アンテナ:アルミ製、ポールなど:鉄製 ■F/D比率:0.39
■対応ポール径:Φ55mm~Φ75mm (48φの単管パイプに取付)
■網厚さ:0.8mm


■メーカー: MOTECK
■SG-2100Aの改良型、DiSEqC 1.2 対応チューナーで駆動できます。
■同軸ケーブルを繋ぐだけですから、モーターの配線は不要。
■DiSEqC1.2/1.3(USALS)に対応。
■最大1.2mアンテナ(オフセット)駆動可能。








