2024年4月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
無料ブログはココログ

« 2023年5月 | トップページ | 2023年7月 »

2023年6月の11件の投稿

2023年6月29日 (木)

ESP32でTinyBasicが動いた

前回の準備で、ESP32-WROVER-EへのTinyBasicの書き込みとWi-Fi経由TeraTerm接続までの段取りがイメージできました。
あとはやってみるだけだったので、今日実際にESP32へ書き込み、動作確認する事が出来ました。

やってみると結構あっさり、何のつまずきもなく、動作しました。
Photo_20230629183601

以下、今回やってみた流れです。


今回の 豊四季tinyBasic ESP32 WiFiTelnet は以下から入手しました。
GitHub - robo8080/ttbasic_ESP32_WiFiTelnet: ESP32 WiFi Telnet対応版 豊四季タイニーBASIC

Arduino IDEで ttbasic_ESP32_WiFiTelnet.ino と basic.cpp をタブ分けして、それぞれソースファイルからコピペしました。
basic.cpp の、自宅Wi-Fiに繋ぐためのssidとpwだけ書き替ました。
36行 const char* ssid = "自宅Wi-Fiのssidに書き換えた";
37行 const char* password = "自宅Wi-FiのPWに書き換えた";
ソースを覗くと、11行  //#define USE_WIFI_AP_MODE を有効にすると、ESP32をアクセスポイントにも出来るようです。

Arduino IDEでコンパイルが成功した状態の画面です。
1.31MBのフラッシュメモリの内57%もスケッチで使った様です。
Compile_noerror

ESP32-WROVER-Eと接続し、書き込んだ状態の画面です。
Writing

シリアルモニタ画面に表示された、Wi-Fi接続やIPアドレスが表示された画面です。
IPアドレスは192.168.1.3になりました。
Inkedconnect

TeraTermをインストールし、TERATERM.INIの以下2か所(赤字)を書き替え、Telnet ポート10001で立ち上がる様にしました。
TCPPort=10001
[TTSSH] の部分で Enabled=0
TeraTermを立ち上げ、IPアドレスを192.168.1.3にし、OKを押す前の画面です。
Tera

ESP32のRSTボタンを押し、Wi-Fi接続後、TeraTerm画面にTinyBasicの起動メッセージが出ました。
適当にプログラムを打ち込んで実行した画面です。きちんと実行されています。
Ttbasic


2023-8-22追記
豊四季tinyBasic ESP32 WiFiTelnet の入手元のGitHubにはexampleが置いてあり、名前がcolor.txt(下) と気になる名称だったので、実行してみました。
ttbasic_ESP32_WiFiTelnet/examples/color.txt at master · robo8080/ttbasic_ESP32_WiFiTelnet · GitHub
TeraTerm上でエスケープシーケンスを使い、カーソル移動と文字修飾(文字色・背景色)するプログラム例ですね。
mbed版 豊四季タイニーBASICの機能を拡張してみた。(2) - robo8080のブログ (goo.ne.jp)
Photo_20230822174801
調べてみたら、¥033[2Jは画面消去、¥033[Y;XHはカーソルをY行X列へ移動、¥033[3Xmは文字色をXに、¥033[4Xmは背景色をXにするみたい。他のはいまいち分からず。

-----------  ライブラリのUpdate後 ”ERR_OK” の競合宣言エラーが発生しエラーを回避  ---------------
ちなみに、これを実行してみたくて、Arduino IDEでコンパイルと書き込みをする際に、ERR_OKの定義が競合しているとのエラーが出て、コンパイルできませんでした。
ttbasicを最初にコンパイルした6月末以降で、確か2回程ESP32ライブラリの更新をしたので、その影響と思われます。

Arduino IDEでのコンパイルのメッセージでは、basic.cppの209行目のERR_OKの宣言が、ヘッダーerr.hの55行目にあるERR_OKの定義と競合していると出ています。
C:\Users\k___\Documents\Arduino\ttbasic_ESP32_WiFiTelnet対応版\ttbasic_ESP32_WiFiTelnet.ino\basic.cpp:209:3: error: 'ERR_OK' conflicts with a previous declaration
C:\Users\k___\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11/tools/sdk/esp32/include/lwip/lwip/src/include/lwip/err.h:55:3: note: previous declaration 'err_enum_t ERR_OK'

ERR_OK = 0,
^~~~~~
exit status 1
Compilation error: 'ERR_OK' conflicts with a previous declaration

basic.cppでの使われ方を調べると、209行目のエラーコードのenum型の列挙部分にあるだけで、181行目のerrmsg[]の配列変数定義の列挙部分と対応し、列挙の順番だけが重要だと分かったので、以下の様に ERR_OK ⇒ ER_OK と変え、コンパイル・書き込み共に成功しました。
Photo_20230822181701
Photo_20230822181901 

変更後でも、TeraTermの画面では "OK" がきちんと出てきますし、副作用はなさそうです。


参考
Palo Alto Tiny BASIC(東大版)の仕様
・変数は A~Z の26個、@ は配列変数
・コマンドは NEW, LIST, RUN, SIZE で、LOAD, SAVEはない。
・ステートメントは LET, PRINT, INPUT, GOTO, GOSUB, RETURN, IF, FOR, NEXT, END
・演算子は =, #, >, >=, <, <=
関数は RND, ABS
以上。

がベースですが、強制終了は[Esc]に変更されているくらいで、豊四季TinyBasicは本当に最低限の機能しかないですね。

ですが、以下の通り basic.cpp を見ると、@robo8080さんの拡張が入っています。
Img_9548_20230629212001
113~127行のキーワードテーブルを見ると、"SAVE","LOAD","BOOT"が追加されているのが分かります。
Img_9547

でもですが、GPIOの操作など何もないので、digitalWrite的な命令を追加するとか必要そう。
還暦過ぎの頭の体操には良さそうな気配...
Arduino版ttbasic機能拡張版V0.07のgpio.cppttBasicのスケッチなら元が同じttbasicなので、にらめっこして組み込んでみるとかが近道かも...
しかし、オリジナルの豊四季TinyBasicの作者vintagechipsさんや、たま吉さんrobo8080さん らは、凄い人達だー!!


2023-7-4追記 TinyBasic実装例あれこれ
・Arduino用のSAVE,LOAD非拡張のttBasicなら以下。
 └https://github.com/vintagechips/ttbasic_arduino
・Arduino版なら、豊四季タイニーBASIC for Arduino機能拡張版 V0.07が公開されている。
 └https://github.com/Tamakichi/ttbasic_MW25616L
 他にもある。
 └https://halfbyteblog.wordpress.com/2014/11/26/its-here-half-byte-tiny-basic-2-for-arduino-and-compatibles-3/
・Arduino STM32用にはすごい拡張がされているみたい。
 └https://tamakichi.github.io/ttbasic_arduino_stm32/main.html
・ESP8266用なら、HalfByteTinyBasicが公開されている。
 └https://koyama.verse.jp/elecraft/avr/tinybasic8266.html
  └https://onedrive.live.com/?id=3F5447CD214F9B74%2192472&cid=3F5447CD214F9B74&parId=root&parQt=sharedby&o=OneUp
 └tinyBasicプログラミングでものづくり(Arduino NANO版) (koyama.verse.jp)
・以前のESP32のROMに入っていたのは、BleuLlama TinyBasicPlusらしい。
 └https://macsbug.wordpress.com/2017/01/04/easter-egg-of-esp-32/
 BleuLlama TinyBasicPlus自体は、元々のが公開されている。
 └https://github.com/BleuLlama/TinyBasicPlus

ESP32-WROVERやWROOM用のも、そのうち出てきてくれると期待するも、セキュリティの問題が絡んでしまうのでどうなりますか?

話は脱線しますが、有名なPalo Alto Tiny BASICを書いたリーチェン・ワン氏のWikipediaの一番下の外部リンクで、機械語ソースファイルが見れたりするんですね。
 Li-Chen Wang's Tiny Basic Source Code for Intel 8080 Version 1.0

いつの間にかインターネットや情報公開が進んでいて、やりたい事がサクサクできる環境には大助かりです。


2024-2-19追記
豊四季tiny basicの作者である鈴木哲哉氏が書かれた著書「タイニーBASICをCで書く」の立ち読み版と言うのが以下で見れる様です。
https://www.socym.co.jp/samplebook/1020.pdf
Photo_20240219174501

参考になりそうです。
digitalWrite, digitalRead に相当する命令だけでも追加できると、GPIOを操作出来るので面白そうで、頑張ってみようかと思案中...


2024-3-1追記
ここ1週間程、GPIO操作命令だけでも追加できないものかと、ソースコードを眺めてはもんもんと見たりしています。
でも、解読して手を加えるなんてとっても無理そうで、先ずは上記の本を読んでみたい気持ちが高まってきました。
既に絶版で普通には買えませんが、図書館の蔵書にあるので、予約を入れました。


2024-3-3追記 簡易的でも良いので拡張の検討準備を開始しました。


 

続報あればまた。

 

2023年6月26日 (月)

ESP32で走るTinyBasicの準備

ネットでいろいろと調べていると、面白いのが見つかります。
ESP32でもTiny Basicを走らせる事が出来るようです。

TOYOSHIKI Tiny BASIC for Arduino(ESP32/ESP-WROOM-32) WiFi Telnet対応版

と言うもので、GitHubにソース等が置いてあります。
GitHub - robo8080/ttbasic_ESP32_WiFiTelnet: ESP32 WiFi Telnet対応版 豊四季タイニーBASIC
 ソースファイルは ttbasic_ESP32_WiFiTelnet.ino と basic.cpp の2つなので、スケッチのファイル分割が必要そうです。

変更すべき点とTelnetとの接続は、
・basic.cppのssidとpwを自分の環境に合わせる。
・ESP32のIPアドレスはArduino IDEのシリアルモニタで確認
・Wi-Fi経由Telnet接続、ポートは10001。

動作確認をWindws10+TeraTermで行ったとの事なので、TeraTermを使うのが安心できそうです。
Tera Term の使い方 | SEECK.JP サポート
https://qwerty.work/blog/2019/02/teraterm-ssh-telnet-default-setting.php

ESP32-WROOM-32とESP32-WROVER-EはSRAM容量差くらいしか違わないはずなので、
時間がある時に、動かしてみようかと考えています。

続報あればまた。

2023-6-29追記 豊四季TinyBasicが動きました。


Arduino版もあるようです。
GitHub - Tamakichi/ttbasic_MW25616L: 豊四季タイニーBASIC for Arduino機能拡張版(+ VFD MW25616L対応)

参考
■昔は、ESP32のGPIO12を3.3Vに10KΩでPullupするとTinyBasicが起動できたらしいです。
Easter Egg of ESP32 | macsbug (wordpress.com)
ESP32-WROOM-32 (ht-deko.com)
大和通信の技術力 : ESP-32でTinyBASICの起動を試しました。 (blog.jp)
■残念ながら今はセキュリティが強化されて出来なくなっているようです。
ESP32-WROVER-E/ESP32-DevKitC-VE ● Disable ROM Basic の件 - CT5002 dellbee's blog (fc2.com)
Making use of the built in BASIC interpreter - Page 2 - ESP32 Forum
 └EspressifのForumで簡単な理由の記載(下)を見つけました。
 Photo_20230708134201

ESP-WROOM-32 と ESP32-WROVER-B(B とE の違いはChipのバージョン) の違いは、WROVERが8MB PSRAM付
 https://kohacraft.com/archives/202004011018.html

2023年6月23日 (金)

ワンショットリモコンのIoT化:成功

全体の目次

先日構想していたワンショットリモコンシステムのIoT化ですが、今日回路の組み上げとスケッチの編集をし、スマホのブラウザ画面からのIoT制御が成功しました。

編集元のスケッチ内のHTML記述の動作が良く分からない部分がありましたが、ネット検索でいろいろと記事をあさり、斜め読みしながらカットアンドトライで何とかできました。
いやー!情報が結構ネットに転がっているので、つまずいても比較的簡単に解決にたどり着くことが出来、良き時代になったものだと感じます。

クライアントに表示されるHTMLの見え方編集に関し、Visual Studio Code・LiveServer・Prettier-Code Formatterのインストールで少しでも楽になるかと思いましたが、それはそれで面倒だったので、今回は手修正のカットアンドトライで何とかなりました。


全体構成は以下です。
Photo_20230623225001
ダイオード接続切替回路はトグル動作なので赤と緑のLEDを付けました。
このLEDは、リモコンスイッチの赤緑LEDと役割は同じです。
もしクライアントのブラウザ画面とリモコントランスのOnとOffの関係が逆になっている場合は、リモコンシステムへ接続する線を入れ替えれば一致させられます。

ESP32に繋いだ外部回路部分の拡大です。
2_20230623225001
右下の5Vリレー回路がワンショット回路でGPIO26に100ms期間HIGHを出力し、既設ワンショットリモコンシステムへダイオードを接続する事で、ワンショットリモコンリレーを切り替えます。
切り替わってしまえばリモコンリレー内のダイオードの向きも変わり、電流は流れなくなるのが分かっている事と、確実な切替動作のため、接続時間を長めの100ms(50Hzだと5サイクル)にしました。
右上の5Vリレー回路がダイオードの接続向きの切り替え回路で、GPIO26からのHIGH出力が終わってから、逆向きへ切り替えておくため、GPIO27の出力がHIGHだったらLOWへ、LOWだったらHIGHへと切り替える、トグル動作をさせます。
状態が分かる様に赤と緑のLEDを排他的に点灯させます。緑LED側はESP32のGPIOは3.3V系なので、3.3Vを電源にしました。


スケッチは、前回のLチカのものを加工して作成しました。
ボタンは1つだけにし、押すたびにGPIO26で100msだけHighを出し、その後GPIO27をトグルさせダイオードの向きを切り替えます。
ボタンの色は、リモコンリレーとリモコンスイッチの現在の状態に合わせ、ON状態なら赤色で to OFF 表示、OFF状態なら緑色で to ON 表示にしました。

元のスケッチからの主な変更点が下の赤字部分です。
output27Stateの if else でのトグル動作の記述は、たぶん冗長かなーと思いつつそのままです。

-- 省略 --
    // turns the GPIOs on and off
    if (header.indexOf("GET /26/on") >= 0) {
      Serial.println("GPIO 26 on");
      output26State = "on";
      digitalWrite(output26, HIGH);
      delay(100);
      digitalWrite(output26, LOW);
      if(output27State=="off"){
        digitalWrite(output27,HIGH);
        output27State="on";
      } else {
        digitalWrite(output27,LOW);
        output27State="off";
      }
    } else if (header.indexOf("GET /26/off") >= 0) {
      Serial.println("GPIO 26 off");
      output26State = "off";
      digitalWrite(output26, HIGH);
      delay(100);
      digitalWrite(output26, LOW);
      if(output27State=="off"){
        digitalWrite(output27,HIGH);
        output27State="on";
      } else {
        digitalWrite(output27,LOW);
        output27State="off";
      }
  }
-- 省略 --

  // Feel free to change the background-color and font-size attributes to fit your preferences
  client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
  client.println(".button { background-color: #009933; border: none; color: white; padding: 16px 40px;");
  client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
  client.println(".button2 {background-color: #f61f20;}</style></head>");

  // Web Page Heading
  client.println("<body><h1>One-Shot-Remocon Server by ESP32</h1>");

  // Display current state, and ON/OFF buttons for GPIO 26
  client.println("<p>Current State " + output26State + "</p>");
  // If the output26State is off, it displays the ON button
  if (output26State=="off") {
    client.println("<p><a href=\"/26/on\"><button class=\"button\">to ON</button></a></p>");
  } else {
    client.println("<p><a href=\"/26/off\"><button class=\"button button2\">to OFF</button></a></p>");
  }

--  // Display current state, and ON/OFF buttons for GPIO 27
     以降のボタン処理関係は削除  --
 


-- 省略 --


IoT化のESP32と外部回路です。上に延びた赤黒線がワンショットリモコンシステムに繋がります。
Img_9526

外部回路の拡大です。部品と配線が密集しているので分かりにくいです。四角い箱が5Vリレーです。
Img_9529

ワンショットリモコンシステムに繋いだ状態です。ESP32側はモバイルバッテリーで動かしました。
Img_9530

ESP32に繋いだ回路の組み上げ部分で、GPIO27でダイオード接続向きをトグルさせる回路の赤LEDが点灯している状態。
Img_9546

同上で緑LEDが点灯している状態。
Img_9545

スマホでWi-Fi経由で制御している動画です。
ワンショットリモコンスイッチを押すと同期がずれますが、スマホ側ブラウザのボタンを2回押すと同期するのが分かります。

スマホとPCからも制御してみた動画です。分かり易い様にワンショットリモコンリレーの主回路にランプを繋ぎました。

2023-6-25追記
リモコンスイッチの結線を外して、今回のIoT化回路だけでリモコンリレーの制御ができるか確認しました。
実験の様子です。リモコンスイッチからの赤い線(上下のボードの間)を外したので、リモコンスイッチ側の赤緑LEDは点灯していません。
Img_9532

動画です。

---------------------------------------------------------------------
ついでに、自作ワンショットリモコンリレーをIoT制御してみました。
実験の様子です。
Img_9534

動画です。

どちらも期待通りに動作させることが出来ました。

 


ワンショットリモコンシステムのIoT化が成功しました。

グリーンワークスさんの真似ではありますが、やればできるんですね。
リモコン調査のおまけ:ダイオード1本でON/OFFさせる動画: my little topics (cocolog-nifty.com)

難易度も思っていたよりもかなり低く感じますが、まだ高度な事をやっていないからなんでしょうけどね。


さて、次は何をしましょう。

ネットではArduinoやESPの工作記事も多いです。
IoT - ESP32 (101010.fun)
Arduino のすすめ (mtng.org)
 └Samples for Arduino (mtng.org)
ESP32 – マイコン技術Navi (ekit-tech.com)
ESP32の使い方入門【20個のチュートリアル】 | Wak-tech

アルティメットスターターキットには、カメラやLCDディスプレイ、オーディオアンプ、各種モーターなど沢山パーツがあるので、使ってみるとか、アマゾンで買った本を読んで理解を深めるとかやるとしますかね。
Photo_20230708133701Photo_20230624084401

続報あればまた。

2023-7-16追記 次を考える前に、この記事の元のWi-Fi Lチカのスケッチを解読してみました。

本記事は、メーカーからの情報や公開された特許情報等を元に、動作理解とシミュレーションでの再現を目的に独自に調査したものです。従って、考察や実験結果はあくまで個人の範囲に留めるものであり、記事の内容には間違いがある可能性があります。参考にされる際は自己責任とし、メーカーや関連業者に迷惑を掛けるような事はしないでください。また、この記事を読まれて類似の事をされても、当方はいかなる責任も負いません。

2023年6月20日 (火)

ESP32-WROVER-E 実行速度計測

ESP32-WROVER-Eを使った初IoT Wi-FiでのLED On/Off が成功しましたが、動作がもっさりしていました。
もっさりの原因を探りたく、コピペ元のSketchを良く見ましたが、delay()は接続試行間隔の500ms以外ありませんでした。
(timeoutTime =2000は使われていない模様)
たぶん見えない所でWi-Fi通信処理等で膨大な処理を行っているのでしょうから、簡単にどうこう出来るものでもない気もします。

いろいろと調べているうちに、GPIO出力トグルの例ですが、Sketchの書き方で処理時間が変わる(下記)と言うのを見つけました。
ラジオペンチ ESP-WROOM-02の処理速度と時間精度 (fc2.com)

これなら少しはSketchの書き方で実行速度を早くできるので、ESP32-WROVER-Eでやってみました。
オシロスコープでの波形観測は、GPIO2を出力にしてジャンパー線で信号を引き出しプローブに繋ぎました。
実験の様子です。
Img_9515

実験結果です。

Sketch 波形 実行時間

void setup() {
  pinMode(2, OUTPUT);
}

void loop() {
  digitalWrite(2, HIGH);
  digitalWrite(2, LOW);
}
Img_9516

周波数 1.29MHz

周期 776ns

High期間 328ns

Low期間 448ns

High/Low差120nsで、
Loopの戻り処理時間と思われます。

digitalWriteの実行間隔は、
328nsかかっている様です。


void setup() {
  pinMode(2, OUTPUT);
}

void loop() {
  for(;;) {
    digitalWrite(2, HIGH);
    digitalWrite(2, LOW);
  }
}
Img_9517

周波数 1.49MHz

周期 669ns

High期間 317ns

Low期間 352ns

High/Low差35nsで、
forの戻り処理時間と思われます。

digitalWriteの実行間隔は、
317nsかかっている様です。


void setup()  {
  pinMode(2, OUTPUT);
}
void loop()  {
  while(true) {
    digitalWrite(2, HIGH);
    digitalWrite(2, LOW);
  }
}
Img_9518

周波数 1.50MHz

周期 666ns

High期間 317ns

Low期間 349ns

High/Low差32nsで、
whileの戻り処理時間と思われます。

digitalWriteの実行間隔は、
317nsかかっている様です。


void setup() {
  pinMode(2, OUTPUT);
  for(;;) {
    digitalWrite(2, HIGH);
    digitalWrite(2, LOW);
  }
}

void loop() {
}
Img_9519

周波数 1.49MHz

周期 672ns

High期間 322ns

Low期間 349ns

High/Low差27nsで、
forの戻り処理時間と思われます。

digitalWriteの実行間隔は、
322nsかかっている様です。


void setup() {
  pinMode(2, OUTPUT);
  while(true) {
    digitalWrite(2, HIGH);
    digitalWrite(2, LOW);
  }
}

void loop() {
}
Img_9520

周波数 1.49MHz

周期 672ns

High期間 322ns

Low期間 349ns

High/Low差27nsで、
whileの戻り処理時間と思われます。

digitalWriteの実行間隔は、
322nsかかっている様です。

結果としては、参照したブログでのloop()の繰り返し周期5.9usに比べるとかなり早い処理になっています。
ESP32-WROOM-02のCPU周波数は80MHz、2016年の記事です。
Arduino IDEでESP-WROOM-02のボード設定について - Qiita
最大でもCPU周波数は160MHzまでしか対応できない様です。

これに対して、ESP32-WROVER-EはCPU周波数は80MHz~240MHz可変で、今回の実験で実際に動いている周波数は不明ですが、そこそこ早いと思われます。

setup内でのfor(;;)やwhile(true)は、loop内での実行とさほど変わらない様です。

digitalWriteを連続して記述しているので、digitalWrite命令だけの実行間隔は、約320nsとなりました。
簡単に言えば、1.5MHz程度の方形波までなら出せるので、GPIO操作による外部回路制御には、十分な速さだと思います。

波形観測をしていると波形に乱れが見えます。
参照したブログにはウォッチドッグタイマー割り込みが入り、処理が一時中断されてしまうためとの記載がありました。

今回の実験で、loop, for, while 等の戻り処理そのものは比較的早いけど、Wi-FiでIoT化するとWi-Fi通信処理そのものが重いのだろうと言う事が分かりました。

2023-6-21追記
ArduinoのdigitalWriteを35倍高速化するライブラリの作成 - fastestDigitalWrite - - Qiita
最初はエッ!そんなに違うの!って記事を読んだのですが、冷静に考えWikiで調べると、Arduinoにもいっぱい種類がありますし、ESP32とも違いそうです。CPUも8bitsから32bitsまでと幅広く、CPUクロック周波数もだいぶ幅があるので、ひとくくりにArduinoってできず、分別を持って記事を読まないといけない感じです。なにせ初期のArduinoからかれこれ20年近くも経っている様ですし。まあ、ESP32-WROVER-Eはそこそこ早いのが分かったので、自分的には結果オーライですけどね。


続報あればまた。
時間があったらdelay()命令を入れたらどうなるか波形で見てみたいかな。

 

2023年6月18日 (日)

ワンショットリモコンのIoT化:構想

全体の目次

前回、ESP32-WROVER-Eでの初IoT工作「Wi-Fi経由のLED点灯制御」が成功しました。

スターターキットを買ったモチベーションには、先ずはWi-FiでワンショットリモコンをIoT化してみたいとの思いがありました。
似たような製品は既にありますし、制御の原理も把握済みなので、作れば出来そうです。

アルティメットスターターキットのTutorialを見ると、リレーの制御回路が載っているので参考になりそうです。

Tutorial Project 17.1 Relay & Motorにあるリレー制御回路
Photo_20230618103601

5Vリレー、NPN Tr、Diode、抵抗等が必要で、この中でも特殊なのが5Vリレーで2個必要です。
スターターキットには HUI KE製HK4100F-DC5V-SHCと言う(コイル抵抗167Ω)のが1個しかないので、何とかしないといけません。
アマゾンには5Vリレーはいろいろありますが、ちょっと高めですし、贅沢過ぎる回路にも思えます。

さてどうするか?もやもや構想の始まりです。


やりたいのは以下、正逆でDiodeを一瞬(20ms)接続してあげるだけです。
Photo_20230618104001


2023-6-20追記 接続イメージと、具体的な制御の構想は以下です。
Photo_20230620220801

ESP32のGPIOは2つ使います。
 1つ目はDiodeの接続方向切替に使うリレー制御用
 2つ目は20ms程度ワンショットリモコンスイッチに並列に繋ぐためのリレー制御用

リレーのコイルからの逆起電力からの保護は、Tutorialにある回路と同じにしてESP32他を守ります。

Lチカで使ったSketchを加工して、クライアントに表示するコマンドボタンは1つにして、押すたびに20ms間(50Hzの1周期)だけDiodeを接続し、その後Diodeの接続を切り替えれば良さそうです。

Wi-Fiに繋いだ状態で、リモコンリレーの状態とWEB画面の状態が一致している状態(同期)のが望ましいのですが、リモコンリレーの初期状態を予め検知しておくのは少し面倒そうですし、2回ボタンを押せば同期できるはずなので、初期状態は関知しない事にします。
リモコンスイッチやリモコンリレーを手動で操作してしまうと、同期がずれてしまいますが、これも上記同様です。
実用性は考えず、Wi-Fiでリモコンリレーを制御できる事そのものを重視したいと考えます。


2023-6-22追記
うまくいけばリモコンスイッチを外していまい、IoT制御だけでリモコンリレーの切替えができる事も確認してみたいと思います。
Photo_20230622190101


2023-6-23追記 ESP32を使ったIoT化成功しました。


5Vリレーは手持ち品(約30年前に買った)がありましたが、仕様を見るとコイルの抵抗値が50Ωと結構低く、駆動電流を100mAも食いそうで嫌なので、安過ぎず高過ぎずコイルの抵抗がキットのものと同程度のをアマゾンで適当に選んで買いました。
Photo_20230620221801
IoT工作でAC100Vの制御や、絶縁して制御したい用途などで、何かと使えそう、買って損はないだろうとの見込みです。

2023-6-23追記 コイルの抵抗値を気にして買ったものの、なかなかないDatasheetを何とかAlibabaで見つけ見てみたら、あらまー! 42Ω もっと低いじゃん
Tf Jqc-t78-dc5v-c 5pins T78 5v Electromagnetic Relay - Buy Relay,5pins Relay,5v Relay Product on Alibaba.com
 2_20230623202601 Photo_20230623202601


続報あればまた。

 

本記事は、メーカーからの情報や公開された特許情報等を元に、動作理解とシミュレーションでの再現を目的に独自に調査したものです。従って、考察や実験結果はあくまで個人の範囲に留めるものであり、記事の内容には間違いがある可能性があります。参考にされる際は自己責任とし、メーカーや関連業者に迷惑を掛けるような事はしないでください。また、この記事を読まれて類似の事をされても、当方はいかなる責任も負いません。

ESP32-WROVER-E Wi-FiでLEDをOn/Off ★初IoT工作★

昨日、MACアドレス取得とWi-Fi接続が成功しました。

IoT工作には、Wi-Fi経由でポートを操作するのが必須なので、先ずはWi-FiでLチカを成功させるのが先決ですね。
買ったESP32-WROVER-Eアルティメットスターターキットでは記載がありませんので、
以下のネットの情報を参照、★初IoT工作★成功しました。

ESP32 Web Server - Arduino IDE | Random Nerd Tutorials ⇦英語ですがブラウザで日本語に翻訳、分かり易い記事です。
└上記を参照した日本語ブログもあります⇒ESP32を使ってスマホからLチカ(LED点滅)する【webserver】 | Wak-tech

スケッチは以下から入手できます。
raw.githubusercontent.com/RuiSantosdotme/ESP32-Course/master/code/WiFi_Web_Server_Outputs/WiFi_Web_Server_Outputs.ino
そのままコピペしてSSID/PWを変え書き込めば、ポート26と27に繋がったLEDのOn/Offができました。

LED回路は以下(上記より拝借)です。抵抗は220Ω。
Photo_20230618101501

192.168.1.3でWi-Fiに接続したので、アドレスバーに192.168.1.3を入力すると制御画面が表示されます。

PCからの制御画面表示です。
Photo_20230618095501
スマホからの制御も出来ます。
Img_9485

共に、 ON のボタンを押すと、LEDが点灯し OFF 表示に切り替わります。
 OFF のボタンを押すと、LEDが消灯し ON 表示に切り替わります。

PCのArduino IDEのシリアルモニタ画面では、制御の状態が順次表示されています。

PCで操作している動画です。

スマホからの操作も同様に出来ます。ESP32側はモバイルバッテリーで動かしてみました。

割と順調にWi-Fi接続とLED On/Offまでできました。
ネット情報さまさまで、先人たちに感謝です。

でも、コピペの弊害でスケッチの中身が理解できていませんし、スマホのボタンを押してもが反応するまで、もっさりしていて遅いです。
先ずは、コピペ元のスケッチを印刷して良く見てみようと思います。

2023-6-20追記 ESP32-WROVER-Eの実行速度を計測してみました。

2023-7-12追記 本Wi-Fi Lチカのスケッチを読解してみました。仕組みが少しは分かってきました。

これでIoT工作の準備が整いました。


さて、次ですが、先ずは、先日調査したワンショットリモコンのIoT化にチャレンジしてみようと考えています。

アイデア次第の世界、こんな(↓)のもありますしね。
どんな家電もスマホで操作!? “ボタンを物理的に押す”アナログなIoTキット - 価格.comマガジン (kakakumag.com)
【レビュー】すべてがIoTになる「MicroBot Push」を使ってみた - ロボスタ (robotstart.info)

 

2023年6月17日 (土)

ESP32-WROVER-E Wi-Fi MACアドレスと接続

自宅のWi-Fiに繋ぐには、MACアドレスフィルターリングをかけているため、MACアドレスを知る必要がありました。
ネットで情報を探り、以下のブログを見つけました。
【ESP32】MACアドレスを取得する方法 – お部屋でモバイル (k05.biz)

2018-12-08の投稿記事ではありましたが、スケッチをそのまま実行したら、MACアドレスがゲットできました。
以下、実行画面です。最後のピンクで隠した所がMACアドレスです。
Photo_20230617104801
シリアルモニターの画面では、RSTボタンを押した後のBOOT情報の表示後、スケッチの実行結果としてMACアドレスが表示されています。
このMACアドレスを自宅Wi-Fiルーターに登録したので、SSID/PWを合わせれば繋がるはずですね。

Tutorialのドキュメント 30章 Project 30.1 Station mode にWi-Fiに接続するだけのスケッチがありましたので、その通りに実行してみました。
結果は以下の通り、きちんと接続され、IPアドレスの表示もできました。
Wificonnecttest

ESP32-WROVER-E アルティメットスターターキットでは、Wi-Fiを使ったLED点灯切替などのTutorialの記載が無い様です。
Wi-Fiを使ったIoT工作は、ネット情報に頼るか自力で頑張るかしかなさそうです。

続報あればまた。

2023-6-18追記 Wi-FiでLED On/Offが出来ました。


結構簡単で拍子抜けしています。

ほとんど何も知らない状態ですが、Arduino IDEとネット情報があれば、サクサクとできるんですね。
ライブラリーのおかげなのでしょうが、それも含めて良く考えられた簡単簡潔な開発システムには感心。

昔Z80でプログラムを組んでいた時代と比べると、何と敷居が低い事か...

 

2023年6月12日 (月)

ESP32-WROVER-E 初Lチカとキット毎情報入手法

先日購入したESP32-WROVER-EアルティメットスターターキットでのLチカに成功しました。
記事の後半でFreenove社の各種キットのTutorialドキュメント類の入手方法が分かったので記載しました。


ネットで見つけた記事を参照しながら、Arduino IDEのインストールから初のLチカ成功まで約1時間程度で出来ました。
途中USBに接続してもCOMポートの割り当てができず、IDEで先に進めなくなりましたが、記事に救われました。

参照した記事です。情報が豊富で検索すればいろいろと出てくるので大助かりです。
ESP32の初期設定(Arduino IDEの導入からLチカまでの手順) – マイコン技術Navi (ekit-tech.com)
 └Arduino IDEのインストールからボード環境設定で参照しました。
FREENOVEのESP32-WROVER Board(カメラモジュール)を使ってみた - Qiita
 └USB Driverのインストールが必要だったので参照しました。

USB Driverのインストール画面
Serial

COM3へ割り当てられた状態のデバイスドライバー画面
Ch340

 

実は危なかった、ドキュメントを見る前にネット情報参照でやったLチカ

Arduino IDEで記事のLチカプログラムをコピペしました。
Ide

23番とGNDの間にLEDを付けました。
Photo_20230612091601

ESP32へ書き込んでLチカしている動画です。

注意:LEDに直列に抵抗を入れなくても大丈夫なんだーなんて思っていたら、参照したのは抵抗内蔵LEDを使ったLチカ記事でした。
キットに入っているのはただのLEDなので、下手するとポート23を壊すところでした。

ネット情報の過信は禁物ですね。
その後、キットのドキュメントを参照し、幾つか良くない点が見つかったので、やり直しました。

 

安全確実にドキュメントを参照してやり直したLチカ

上記の後、Freenoveのキットのドキュメントを入手して読み始めましたが、最初に読んでおくべきでしたね。
順番が逆でしたよ。

で、Lチカはチュートリアルの最初に登場します。
1章・Project 1.1 Blinkの記事には、Lチカの実例が部品の繋ぎ方まで書いてあり、220Ω抵抗も必要でした。

Lチカに必要なパーツが絵で載っています。
Photo_20230612151501

回路図もブレッドボード配線方法の図も載っています。
Photo_20230612151901

IDE画面です。
Ide_20230612161501

上記に合わせて、ポートは23番から2番に変えて、やったのが以下です。
Img_9474
ポート2番は本体の青LED(基板にIO2の表記有)にも繋がっているので、同時に点滅しています。下図右端、 LED IO2 
Photo_20230612212801

上記の動画です。

ドキュメントを参照してやり直した際は、GPIOエクステンションボードを使いました。
実は、届いたキットでは本体がGPIOエクステンションボードに載せてあったので、ケースに収めるため外していた訳ですが、一般的な5列穴ブレッドボードでも使い易くするためのもので、最初から使うべき便利なものだったんですね。
それが今回分かったので、どんなボードかと良く見ていたら、なんと半田カスが付いていました。
いやー、通電する前に気付いて良かったです。

下図左下2~3穴にかけて半田カスが付着しているのが分かります。
Img_9472

こんなところが中華品質って感じです。事前の目視チェック必須ですね。


2023-6-13追記

ネット情報からインストールしたUSBドライバーは古いバージョンだったのに気づいたので、インストールし直しました。
USBドライバーのインストール方法は、キットのドキュメントにも記載があり、search CH340 - NanjingQinhengMicroelectronics (wch-ic.com) にある、CH341SER.EXE を実行して、最新版のインストールをしました。
Photo_20230613213301


2023-6-16追記

Freenove社からのキットのドキュメント類の入手方法は、キットのパッケージに記載されたURLですが、キット毎のダウンロードサイトで、ユーザー登録とかシリアルナンバーとか何もなしに誰でも入手できる様です。
また、FreenoveのホームぺージからTuttorialを開くと、なんと全てのキットの付属ファイルやドキュメント類がzipで掲載されていて、誰でも入手できるのが分かりました。

Freenove社のホームページ
Photo_20230617064001

Tutorialをクリックすると、下にずらっとProduct SKU毎にドキュメントのzipファイルのURLが並んでいて、クリックでダウンロードが始まります。
Photo_20230617064301

FNKxxxx FNMxxxx と言ったProduct SKUは、アマゾンの詳細情報で製造元リファレンスで確認できます。
気になるキットの中身を見てみたいとかがあればそのProduct SKUをアマゾンで調べれば、そのドキュメント類が入手できそうです。

今回買ったアルティメットスターターキットのProduct SKUはFNK0047ですね(下図)。
Photo_20230617063301

技術力・製品開発力・コスト力で、世界市場で勝負しているみたいなので、ユーザー登録での個人情報漏洩とかのリスクと無縁に、何でも持ってけ的な対応、なかなか太っ腹ですよね。


その他、カメラが繋がったままだったので、破損防止のため外しました。

ネット情報とドキュメントのおかげで、第1歩のLチカまでできましたが、ネット情報だけでは勘違いする危険性も感じました。
Freenoveスターターキットのドキュメントをきちんと見ながらやるのが、安全・確実って感じです。

続報あればまた。

2023-6-17追記 MACアドレス取得とWi-Fi接続成功
2023-6-18追記 Wi-FiでのLED On/Off成功(初IoT工作)

 

2023年6月 4日 (日)

ESP32-WROVERアルティメットスターターキットを購入

定年(あと半年)後の趣味ネタ探しです。

秋月電子のUSB-IO2.0を買ってVBも動くようになった矢先ですが、ちょっと物足りない気がしてきました。
今時、PCからUSBで繋いで何かを制御するのって、なんか時代遅れな気も...
最近はWi-Fi当たり前、Wi-Fiに繋がるIoT製品も結構出てきてるし、Wi-Fi付マイコンボードも1000円程度で相当安く、目立ちませんがその道では大流行してるみたいだし、探せば関連情報もわんさかある時代。
と言う事で、いっちょう挑戦、IoT工作に触れてみますかね。

ネットで情報を探り、ESP32-WROVERアルティメットスターターキットと言うのを買いました。

https://www.amazon.co.jp/gp/product/B09CGB1BGV/
Photo_20230604153101

ESPRESSIF社ESP32-WROVER-Eの刻印がありました。
技適マークも確認できました(上から3行目の右側 [R]211-200403(総務省電波利用ホームページ))。
Img_9430

偽物が出回っているとの情報もあるので、要チェックですね。
└→ https://lang-ship.com/blog/work/fake-esp32-wrover-e/
購入品のアンテナパターンは以下なので、正規品に見えます。
Img_9433

自宅でのIoT工作には、Wi-FiはMAC Address Filteringしていて止めたくないので、先ずはESP32側のMAC Addressを知らねば。
【ESP32】MACアドレスを取得する方法 – お部屋でモバイル (k05.biz)
ググると情報がいろいろと出てくるので、助かりますね。

---------------------------------------------------------
このスターターキットの魅力ですが、777ページのドキュメントも見れる点と、初めてなのでパーツてんこ盛りが助かる点です。
ブレッドボード、カメラやLCDパネル、GPIO拡張ボード、各種LED、各種モーター、オーディオコンバーターアンプとスピーカー、温湿度センサー、RC各種部品、キーボードや各種スイッチ類、ジャンパー線、etc、とこれでもかと入っています。
自分で部品等を集める手間を考えると、6,380円で買えるのはものすごいお得感です。

カメラアプリも作れるキットなので、PSRAM(8MB)・Flash(4MB)付きのESP32-WROVER-Eを搭載している点もGoodです。

まだ物が届いただけで、何もしていませんが、面白そうですね。
先ずは、届いたものは小さいプラケースにパーツぎゅうぎゅうてんこ盛り状態で中身が潰れそうですし、整理できそうにもない状態。
100均で適当なプラケースを買いますかね。

しかし、Espressif Systems も Freenove も中国の会社、開発応用技術力も価格パッケージ戦略も完全に日本を追い越しているのを実感してしまいます。

続報あればまた。

2023-6-12追記 初Lチカ成功しました。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
2023-6-6追記
職場の近くのキャンドウでプラケースを探したら、適当なのがあったので、静電気防止スポンジ(ICフォーム)を入れて、パーツを分類分けして収納してみました。

先ずは、元のプラケースに入っている状態。ぎゅうぎゅう詰めです。
Img_9435

中身を全部出してみた状態。
Img_9436

細かい区分け部分に、静電気防止スポンジ(ICフォーム)を切って敷き詰めた上、パーツを適当に分類してみました。
Img_9445
区分けは結構余っていますが、R・C・LED・小さいセンサー・小型SW等は、まだ袋に入ったままなので、ばらして細かく分類する予定です。

箱を閉じた状態です。
Img_9446

これで、取り出しや収納などし易くなりました。
まだPC側の開発環境整備とか、ドキュメントの閲覧とか、全く手付かずですが、定年後の準備なのでそのうちですね。


購入に当たり参考にした情報源。

最新のマイコンランキングで1位になったマイコンはESP32DevKitCーV4とありますが、DevKitCは何種類もあり、ESP32-WROVER-EはPSRAM搭載品の様です。このブログ マイコン技術Naviは大変役立ちそうな気がします。
【2023年度版】マイコンおすすめランキングBEST5 – マイコン技術Navi (ekit-tech.com)
 └ESP32-DevKitCの種類一覧ESP32-WROVER-Eがあります(下の一覧表)。
  └Arduino IDEの導入からLチカまでの手順もあって分かり易いです。

FreenoveのESP32-WROVERキットを買った方の簡単な説明ですね。
ESP32-WROVERを買ってみたので紹介します | 立科プログラミング (tatepro.com)

ESP32-DevKitC-32Dの使い方が分かり易く説明されている。
ESP32-DevKitC-32Dボードの基本的な使い方 ~Arduino IDE編~ – マイクロテクニカ製品情報Wiki (microtechnica.xyz)

ESP32側のWEBサーバー作成は、Visual Studio Codeが使えるらしい。
【Visual studio code】html初心者が携帯で操作できるESP32 ブラウザ作成をしてみた - YouTube

ESP32のWikipedia:いろいろあって良く分からず迷いますが、先ずはESP32-WROVERなら間違いなかろう...
https://ja.wikipedia.org/wiki/ESP32


マイコン技術Naviより引用

Photo_20230604212101

Espressif社 ESP32 DevKitC の情報より
https://www.espressif.com/en/products/devkits/esp32-devkitc
Photo_20230628203701


2023年6月 3日 (土)

雨侵入徹底対策

台風2号での雨漏り再発でひどい目に会いました。
天井裏での水滴のポタポタ垂れる状況が、これまでと同じだったので、雨水侵入箇所(昨年10月19日補修済)からの雨水の侵入がやはり疑わしく、今回雨水が入らない様にする徹底対策を検討しました。

ズバリ、波板で2階バルコニーへの扉ごと壁一面を覆ってしまう事です。

下の写真の正面に見える扉と壁全体を、屋根の直ぐ下から床まで覆ってしまう訳です。
Img_9422

この扉はほとんど使わず、直ぐ左側にある大きい窓からバルコニーへ出入りしているので、塞いでも支障ありません。

今度の休みに塩ビ波板と突っ支い棒を買ってきますかね。
・白か半透明の塩ビ波板 横140cm 縦240cm 分
・突っ支い棒 240cm 3本 と 140cm 1本
購入予定かな。

続報あればまた。


2023-6-6追記
昨日仕事休みだったので早速材料を買い、今日は設置まで行いました。

買ってきた材料です。8尺の薄青の塩ビ波板2枚と、突っ支い棒。
 Img_9439
高耐久のポリカ波板もありそんなに高くはないのですが、調べると難接着材なので止めました。

バルコニーの床には勾配があるので、現場で測り塩ビ波板の高さを合わせて切りました。
扉の真ん中に縦に繋ぎめが来るのはみっともないので、扉は一枚をそのまま使い、左右に波板を継ぎ足す感じになる様に切りました。

外で接着している様子です。
Img_9440
塩ビ用の接着剤は30分もすれば固まるので、作業しやすいです。
波板同士の境界部にも塩ビ用接着剤を塗り、隙間から細かいゴミが入って汚れが溜まるのを防止しました。

外側のドアノブは出っ張って邪魔なので外し、テープで塞ぎました。
Img_9441

扉ごと壁面全体に波板で覆い、突っ支い棒3本を立て、ズレたりたわんだり風で飛んだりしない様にしました。
Img_9443

今年の梅雨も今週後半の雨で始まりそうですし、台風の暴風雨でもリビング天井への雨漏りがなくなるのが期待で、しばらく様子見ですね。
もし雨漏りがあれば、別の雨水侵入箇所の可能性が高い訳で、そこを探し雨が掛からない徹底対策もできる気がします。

続報あればまた。


塩ビ波板の耐久性はやはり気になります。
今回は緊急でやったので、財布の紐も緩み突っ支い棒込みで総額7,000円程かかりました。
数年後に劣化したら波板加工は手間がかかるので、防水シートで覆う程度が良いかな...

 

2023年6月 2日 (金)

雨漏り再発・受け皿排水が役に立った

台風2号の影響で今日未明からそこそこの大雨が続いています。
会社から帰ってきたら、点検口が濡れているとの事で、点検口を開けてリビングの天井裏を覗いてみました。

雨漏り受け皿も備えで置いていて水が溜まっていましたが、排水チューブを下に伸ばしていなかったので、水が溢れてしまい、その下に置いていたおむつのジェル吸収材に吸われ既にパンパン、その下の吸水シートもだいぶ濡れていました。

急遽、パンパンのおむつのジェル吸収材を回収し、水滴が落ちる箇所に雨漏り受け皿を置き、排水チューブを床のバケツまで垂らしました。
雨漏り受け皿は5個用意していましたが足りず、水滴の多い所を中心に置きました。

備えの受け皿排水を用意しておいて役に立ったので、先ずは良かったです。


天井裏の一番酷い水滴の様子
Img_9415

上記の動画です。

受け皿を複数個所に配置しました。
Img_9417
Img_9416

点検口からバケツに垂らしたチューブです。
Img_9418

チューブに水が流れている様子の動画です。

帰宅後に回収したおむつのジェル吸収材です。
Img_9420

おむつの形のままでは使い辛いので切って平らにしたせいで、破けて中のジェル吸収材が溢れてしまい、手ですくってもボロボロとこぼれてしまう始末、うーん!切って使うのは止めた方が良いですね。おむつをそのまま置いた方がまだましかも。
Img_9421


明日午後なら雨も上がる見込みなので、バルコニーの雨水侵入箇所の再点検をしてみようと思います。
昨年10月19日に雨水の侵入箇所のコーキング補修をしてもらったばかりですし、困ったもんだ。

しかし、以前に判明した雨水侵入口から侵入した雨水は、2階の床板や柱・断熱材を伝って1階の天井裏から垂れるので、広範囲に広がり垂れるので、受け皿排水をあちこちに置かないと排水しきれません。
水滴の垂れる箇所は主に柱や板からと断熱材の下からですが、断熱材の下から垂れる水滴の場所は結構変わります。
水滴の落ちる位置の下に受け皿を置かないと排水できないので、気が気ではありません。
今の排水方法では大雨の度に大変ですし、効率が悪いです。

バルコニーの雨水侵入口のなるべく近くで、雨水が広がる前に集中して排水する方法がないか考えないとだめですね。

続報あればまた。


2023-6-3 午後1:30追記
雨も上がったので、コーキング補修箇所を見てみましたが、見ても良く分かりません。
天井裏の2階バルコニーからの侵入口に近い所は、横柱や床の土台板等で隠れていて指すら入らず、全く何もできそうにありません。
しかし天井裏からの雨水の排水を効率よくやるのは毎回大変で考えてしまいます。
ならば、外からの雨水の侵入自体をなくすのが先決ですね。
2階バルコニーの侵入口付近に雨水が掛かる事がない様に、屋根の直ぐ下からバルコニー床までベタに塩ビ波板等で覆い隠してしまうのが、安くて効果的な気がしてきました。

と言う事で、別記事:雨侵入徹底対策に続きます。

 

« 2023年5月 | トップページ | 2023年7月 »