ESP32でWi-Fi接続

ESP32の開発環境「Arduino IDE」には様々なサンプルプログラムが収まっています。
その中で気になったのがSimpleWiFiServerでした。
「ファイル」メニューの「スケッチ例」→「WiFi」→「SimpleWiFiServer」です。

ESP32をWebサーバーにしてWi-Fi経由で開いたブラウザの画面から遠隔でLEDを点灯させたり消灯させたりするプログラムです。
しかし、これを動作させるのにもちょっとハマりました。前回ほどでは無かったものの、またしても。

まず、プログラムのソースコードを読んだところ、LEDのピン番号の指定が複数個所に渡っていまして、これは最初の方の一行で指定すべきで。
なので、変数「LED_PIN」に書き換えました。
他にも、ルーターのDHCPで指定されたIPアドレスが何故か二つ存在していまして、関係ない方をブラウザで開いてしまい何も表示されず。というかアクセス拒否されてしまい。

公開されているソースコードのお陰もありますが、Wi-Fi経由のブラウザで結果的に簡単に遠隔操作出来てしまうのは、ちょっと感動しました。
細かい点では突っ込みどころもありそうです。ソースコードのタイトルでは英語で「点滅」と言っているのに実際は「点灯」か「消灯」だけだったり。
そんなことよりも、Wi-Fiルーターに接続出来たのとWebサーバーとして機能しているのが素晴らしく。
同じことを四半世紀前に実現しようとしたら、ワンボードマイコンでは難しかったでしょうし。
OSを積まずに出来てしまうのは凄いと思えました。

ここまで使ってみた感想ですが、プログラムのコンパイルには思ったより時間が掛かりました。
使用しているデスクトップPCは既に五年以上前に入手した機種なものの、動作が重いと感じた場面がほとんどなく。
まして32bitのマイコンのプログラムであればコンパイルは直ぐに終わる感覚でした。
大昔の開発環境でもコンパイルには時間が掛かったものですが、パソコンの性能がこれだけ上がっても、求められる処理能力も上がる一方なのだか。

他にも、これは無理だろうと思っていた機能もESP32は実装しているそうです。例えばファイルシステムとか。
OSを積んでいないのに、よくやるなぁと。組込系のLinuxであれば楽に出来ることだとは思います。
以前からぼんやり思っていたことの一つに、OSとかドライバーとか無しで普通に出回っているPCで余計な階層抜きのプログラムを実行させたらどうなるのか?と。
例えばPCでブラウザしか使わない人にとって、OSは巨大過ぎですし余計な処理が裏で沢山動作しています。ブラウザ専用のプログラム一個だけで動作出来たらと。
ソフトウェアの開発効率は圧倒的に下がると思いますが、利用者にとって無駄は少なく起動も速いでしょうし。

他にも7セグメントのLEDとかが手元にあるので、何か試してみたいところです。ハードウェアのデータシートには模範的な回路図が載っていました。
確認したところ、1kΩの制限抵抗が何本も必要らしく。生憎手元には100Ωの抵抗しか無いもので揃えてからでないと無理そうです。流石に一桁小さいと無理があり。
LED系の制限抵抗は一本の抵抗で複数のLEDを点灯させる方法もあるのですが、LEDの性能のバラつきによって壊れてしまう危険があるので推奨されず。

以前にVespaのテールライトをLED化した際は抵抗でなくCRDという素子を利用しました。電流制御の半導体で、抵抗に比べてちょっと高価で。
回路もシンプルに納めたかったので一つのCRDで複数のLEDを並列に点灯させたところ、初回に作った回路は一週間ほどで壊れました。
古いVespaは妙な仕様でした。ブレーキランプの回路がスパークプラグと何故か直列らしく。
ブレーキランプが切れた状態でブレーキを踏むと、エンジンが停止してしまう現象に悩まされたものでした。このランプがまたよく切れまして。
6V仕様のブレーキランプを12Vに変更すれば寿命も多少延びたのですが、それでもよく切れました。レギュレーターが上手く機能していないのだか。
それでLED仕様にしたところ、かなり効果がありました。こちらのBlogでもアクセス数が多かった記事で、コメント欄に質問されたり。

ただ、整流回路とか含めて極性が幾つもあり、回路図が全く読めない方の自作はオススメ出来ずで。
本来は点灯のチラつき防止に大き目な電解コンデンサーが必要でしたし、これを逆接させてしまうと爆発の危険もあり。
過去の仕事でこの失敗例を観ました。基板上のコンデンサー周辺は見事な壊れ方でした。爆撃を受けた土地の上空写真に近く。
爆発音は大きな室内に響き渡りましたし、臭いも漂いました。あれがテールランプで起こったらプラスチックのカバーも含めて吹っ飛びそうです。
電解コンデンサーも爆発しない様な仕掛けがされていますが、絶対に爆発しない保証も無く。まして逆接は想定外の使い方ですし。
回路図を全く読めない人に扱わせるのは危険過ぎます。公開した側も責任持てません。

今回、回路図的には大したことはしていません。
ただ、過去に何処かで似たような経験をしてきた箇所が幾つもあり「無駄では無かったんだなぁ」と。
最初に基板が動かなかった際も、通信ケーブルの問題なのかチェックしたのですが、あれも過去にターミナルソフトを経験していたお陰だったりで。
既に三十年も前の仕事での経験でしたが、ぼんやりと覚えていました。ほとんど忘れていた場面だったものの「よく覚えていたなぁ」と。

ここからは毎度の脱線で、記事とは直接関係無いです。
元々私はハードウェアの設計を仕事にしたかったのです。
新卒で入った企業では、もう少しのところでした。運良く希望だった研究開発部門に異動出来ましたし、理系の同期が百人も居た中で皆同じ部門を希望していたので、かなり狭き門でした。それだけでも感謝すべきです。
しかし、正式配属された部署では開発期間の長い製品の後半に差し掛かっていました。既にハードウェアはほとんど完成していて、ソフトウェアのバグ取りとかシステム評価の段階に入っていました。
なので、ハードウェアの設計等に関われる場面などほとんど無く。幸い、上司は私がやりたかったことを意識してくれていたので、システム評価で必要な治具類の設計を任せてもらえたり。

結局のところ、大き過ぎる会社でハードの設計だけで喰っていくのは無理だった様です。
当時の上司はとても素敵な方で技術力も高かったのですが「課長職になると人とお金の管理ばかりだ」とボヤいていました。「これはぜんぜん技術の仕事じゃ無い」と。
他のメーカーに就職した大学の同期も、希望だった研究開発職に就けたのは多かったものの、何処かのタイミングで全く関係ない部署への異動は当たり前でした。大きな企業ほど。
一生続けたいのであれば、小さな企業に就職すべきだったのかも知れません。
ただ、小さな企業ですと十年後に存続しているのか謎だったりで。

いまでも交流のある大学時代の友人で一人凄いのがいます。夜間大学に通っていた頃から画像処理のソフトウェア開発に触れていました。
大学の卒業は半年遅れてしまったものの、就職した小さなソフトウェアの会社では即戦力でした。同期の中には有名大学卒なのが何人も居たものの、全く使い物にならずに辞めていくのがほとんどだったそうです。
数年後に彼は転職を決めました。大手のオーディオメーカーと映像処理に特化した小さなベンチャー企業から内定を頂いたそうです。
彼の奥さんもその親御さんも大手メーカーへの転職を切望したそうです。世間体も良いし収入も安定したいそうでしたし。しかし、彼の希望は真逆でした。
あれから四半世紀経ってしまいましたが、そのオーディオメーカーはほぼ無くなってしまった状態です。
選んだ会社の方は順調に成長し、その分野ではかなり有名で某国営放送局のサイエンス系のドキュメンタリーでは度々登場する存在に。
彼は現在その会社の役員だそうですし、国立大学の共同研究で教える立場にも就いているそうです。
あの小さな会社をここまで大きくさせた開発力は彼の能力もあったに違いないと。

そんな彼も大学時代はかなり苦労していました。
工業高校出身の彼は社会人枠の試験で大学に入学したのですが、英語と数学が気の毒なほどに苦手で、試験前になると私の部屋に訪れがちでした。
高校では微分積分も習っていなかったらしく、それを知らねば物理の講義も着いてゆけずで。最低限必要な公式だけ覚えてもらうことに。
「式のココとココの数字を入れ替えるだけで、計算は圧倒的に楽になる」と。便利なインターフェースみたいなもので。
彼の卒業が半年遅れたのも「どうでもよい様な英語」の単位を落としまくっていたからでした。卒業のタイミングが一緒であればサポートしてあげられたのですが。
そんな過去もあり、社会人になってからも人生の岐路な場面で相談し合える仲でもありました。

しかし、卒業後は判らないものです。
彼の場合は小さな会社で最先端分野の開発を続け、いまでも現役の立派なエンジニアですし、学歴的にはそれほど目立っていなかったと思います。
ただ、一つの分野での経験値は相当高いですし、若手が簡単に追い付ける次元では無さそうです。場数が違います。
私からすると彼は大学時代から「頭の良い男」でした。興味ある分野への関心度は高く、私と重なっていない文学や音楽への知識は深く、私が教わる場面も少なくなく。
その作品が生まれた背景とか、主人公の心理とかを面白く教えてくれて。そこには知性がありました。
演奏にも興味があったので、自宅にあった鍵盤楽器でコードの単純な理論と譜面の読み方を目の前で教えてあげたところ、あっという間に呑み込んでいました。私の十年分を数日で。
頭の良い奴はインプットも速いどころかアウトプットも速く。単なる猿真似ではなく要所をちゃんと抑えていて。

彼の披露宴では職場の上司がスピーチし、履歴書について語っていました。
「趣味のピアノ演奏が光っていた」と。ハッタリでは無く実演も素晴らしかったと。
どうやら、まだ続けているらしく。^^

Comment