スマートロックを自作するに際し、RFID/NFC認証として使ったELECHOUSE NFC MODULE V3(PN532互換)ボード。
その概要と時折、NFC MODULE V3ボードが見つからずエラーになる件について。
PN532/ELECHOUSE NFC MODULE V3ボードは、HSU/IIC(I2C)/SPIに対応、それぞれ同ボード上の印字に従ってディップスイッチ2つの組み合わせで設定する必要があります。
ここでは、I2Cとしたのでスイッチ[1]を[ON]、[2]を[OFF]としました。
尚、このスイッチ、表面にセロファンのようなものが貼られており、回路に組み込んだ方は、これを剥がして設定しましたが、再検証用にもう1つ買った方は、ふと、このまま切り替えるのが正解か?と少しシワが寄りつつも、剥がさずに切り替えました。
スケッチ書き換え・アップロード直後に関しては、結構な頻度でというか、ほぼほぼ起動時にNFCボードが見つからず、そうなるとソフトウェアリセット(ESP.restart())ではダメでUSBポートに挿し直すなど電源を入れ直す以外、NFCボードを見つけることができなくなることがありました。
NFCモジュールボードが見つからない場合、停止するロジックにしてるからですが、キーパッド入力もできない為、OTAでもこうだとするとスケッチを書き換える度にUSB抜・挿なり、スイッチ付きコンセントならOFF/ONなりする必要が生じます(今のところ、ソフトウェア的な解決策はなさ気)。
一方、運用してみるとキーパッド入力による認証、施錠・解錠はできるのに、当初できていたカード認証自体ができない状況がたまに発現、つまり、当初、機能していたPN532モジュールボードが何らかの理由で機能停止したようで、電源切・入を要する状態になることが...。
認証パネルが外だけにWi-Fiが一時的に切断され、再接続される(その際、ELECHOUSE NFC MODULE V3がnot foundになる)ような状況があるのでしょうか?
そこで2台あるアクセスポイントにしている無線LANルーターの内、距離にすると僅かながらも、よりドアに近く、電波障害が少なそうな方にしてみたところ、この現象はなくなったので、やはり、Wi-Fiが途切れるほどに電波が弱かったことが原因だったようです。
尚、通電中、なんらかの状況でVCC/GNDに限らず、PN532モジュールへの配線が外れてしまうと無反応になるので再配線の上、電源断・電源再投入必須。
本稼働させてみると不具合が出る(無線が途切れる)ことはなくなったので特に対処する必要はないと判断しましたが、必要なら遠隔操作を考慮し、認証パネル側は自作スマートプラグから給電、これと別電源のキーロック側の再起動時に認証パネル側のスマートプラグをOFF/ONすれば良さ気。 => 約半年後、再発
数日前からWi-Fi中継器を設置。
酷暑の影響か、電波の弱さの影響か、両方の影響なのか、はっきりしないものの、そもそも電波の弱い場所であるドアの外の認証パネルのWi-Fiが途切れている形跡があったので。
というのも記事中に記載の通り、それまで数ヶ月、安定稼働していたものの、タイミング的には、酷暑に見舞われて以降、PN532モジュールが機能しなくなるケースが多発、リセットするにもコンセントやUSB電源の抜・挿でないとマイコンがモジュールを見つけられない状態となるのですが、酷暑以降、ほぼほぼ毎朝、この状況に見舞われたため。
中継器投入により玄関外ながらアンテナが2本立つほどの電波強度になり、こうしたことが起きることなく、順調に稼働中。
ただ、既に連日、なっても猛暑日手前くらいまでに落ち着いてきたか?という状況で酷暑の影響については未確認。
今日は寒いほど涼しいのに、しばらくぶりに今朝、認証パネルのWi-Fiが切れていた模様(多数ある他ガジェットは問題なし)。
寒暖差アレルギー?
酷暑の影響が皆無か否かは不明も酷暑でなくとも起き得る様子、加えてどうも切断後、再接続されていることもあるかと思っていたのは気の所為で正常に継続して接続されていたということっぽく。
そこで従前の特定のSSIDへの接続から、ちょっと手を加えた自身初のWiFiMultiで1分ごとにチェックしてAP接続が切れていたら、固定IPはそのままに他のAPの内、また、リセット事案でも、強度のより強いAPに再接続するようにしてみました。
すべてのAPがダウンでもしていない限り、これで残るAPの内、より強度の強いものに再接続自体はできるはずですが、経験的にリセット時はダメだとして、APの切り替えのみの場合、PN532の認識に影響がある(ソフトウェアリセットではダメで電源再投入が必要なの)か否かについては、この結果を以って確認ということで。
尤もSSIDは3つあるものの、1つはPN532使用ガジェットのために用意した第一候補で最も強度が強い中継器であり、これのベースAPが次点の強度なので中継器はともかく、ベースAPがダウンしていたら芋づる式に中継器もダウン、残るは強度最弱のAP1つしかないわけですが。
とは言え、APがダウンしていたという経験はなく、そこはあまり気にしていません。
APのダウンではなく、他の要因でWi-Fiが切れていてAP自体が活きている場合に結果、同一のAPに再接続してくれたら、その際、PN532ボードを見失うことなく継続して機能してくれたら良いなと。
前進?
PN532ボードを認識しなくても処理を継続させ、キーパッドの使用は有効にしておく、NFCとキーパッドのタスクをCore0、WiFiMultiをCore1とし、NFC用タスクのスタックサイズを10240、他2つは4096、また、遅延時間は何れも暫定値ですが、nfc.begin()前後それぞれにdelay(1000)、delay(500)を追加、各所再接続時にも呼ぶことにしため関数化。
加えてsetup()内でMultiWiFi、NFC、OTA、mDNSの開始関数を呼び、続いてGPIO、タスクを設定、TCPサーバへの接続の順に記述(何らかの兼ね合いで、この順もシビアに影響するので要注意)。
後述のように手こずることもあるも正しく認識されれば、その後は、WiFiMultiでSSIDが切り替わってもNFC、キーパッド、Webロック共に操作可能、同一SSID上でも、切り替わった後でもNFC、キーパッド、Webロック何れを順不同に利用しても正常に施錠・解錠可能。
ただ、調整中も繊細かつ微妙な状況になりがちだったので継続検証中。
尚、今回の修正前は、USBケーブル越しでもOTAでもスケッチアップ後やそれ以外の何らかの原因でPN532を見失った後は、これを認識させるべく、必ずUSBポートの挿し替えが必須でしたが、修正後は、毎回ではないものの、PN532が認識されることもあった一方、PCのUSBポート越しの場合は高い頻度で認識されるも運用すべくコンセント+USBアダプタ越しだと認識される確率が格段に下がる現象が。
コンセント+USBアダプタについて、より具体的には、修正後、
OTAアップデートした場合や運用すべく、設置位置にてコンセント+USBアダプタに挿す際は、IPが認識されるまでに時間(や行動?)が必要で挿し直しが必要だったり、nmap(スマホアプリ含む)でIPが認識されたことを確認できてもPN532のみ、もしくは、PN532のみならず、キーパッドも機能しないこともあり、双方認識するまで時に10秒程度でもいけることもあるも、30秒とか1分とか、かと言って長ければ良いというものでもなさ気でUSBポートに挿すタイミングを図ってようやくIP及びPN532ボードが認識されたりと、なぜか一発OKとなることはない感じ。
昨日、朝ダメ、放置して昼OK、その後ダメという一瞬復活するような状況になったものの、今朝ダメで、やはり、これでは不安定。
他方、何が影響したのか、WiFiMulti対策前後も振られないことも頻発したIPは安定して振られるように。
別のNFCモジュールを買ってみるかなとも思ったものの、もしや電源か?と検索。
するとPN532を手にしたその日に既に拝見させて頂いたサイトで当初試したものの、動作確認時点では、なくてもいっかと思っていた47μFのパスコンという対策も講じてみることに。
ついでに在庫になってるPN532、RC522各1にもコンデンサを、初めてのことながらDMMのテスターの内1本の先端のはんだがとれ、何かの時にと思っていたので、これも併せ、はんだ付けしておくことに。
相変わらず上達せずで、仕上がりも影響するよねとは思いつつ、理想とはほど遠い感じながら、お試し中。
昨日の朝は安定して稼働しており、パスコンで安定したように見受けられたところで少し気は早いですが、delayを入れたことで解錠までの反応が少し遅くなっていたため、nfc.begin()前後のdelayを両方とも外したところ、今朝、PN532ボードが認識されなかったようで効かず、ダメでした。
よって試しにnfc.begin()直後のdelay(500);のみ有効に戻して様子見中。
と思いきや、すぐに切断されることがあったのでnfc.begin()直前も直後もdelay(500);として様子見中。
昨日、今日と朝も安定稼働、そのためには、(パスコンのハンダ付けの精度がもっと高ければ違ってくる?のかもしれませんが、)パスコンとnfc.begin()前後のdelayは必須なようです。
前後ともdelayは500msecとしてみたわけですが、もう少し認識が早くても良いかなと思わなくもないものの、許容範囲でもあります。
が、何れも250msecとし、検証中...と思ったら数時間でダメ、ということで前は250msecのまま、後を500msecとして検証中。
ちなみにスケッチアップ後など、電源の抜・挿なくしてPN532は認識されない、ハードウェアリセットやソフトウェアリセットしても同様と思われましたが、これら対処後は、たまにではあるものの、何もしなくても認識されることもあり、改善される余地もなきにしもあらずな感じ。
また、これは未検証ながら、Mifare/FeliCa併用による認識鈍化・大幅遅延も多少なりとも改善されている可能性もある?
一昨日、昨日の朝はOKながら、昨日昼頃、PN532が認識しないことが、電源を入れ直すことで今朝もOK、よってdelay値を変えてみることに。
nfc.begin()直前のdelayを350msecとし、直後は500msecのままとして様子見中。
今朝6時ころは機能していたものの、8時ころPN532だけ不能に。
直前のみ1000msecもさることながら、うまくいっていたnfc.begin()直前、直後共にdelay 500msecとして様子見中。
ただ、今回は、delay、もしくはdelayだけの問題ではなさそうな事象が...、それだけにdelay値の検証は、その事象が解決した後の方が良さ気。
ここ数日は、OTAでスケッチをアップできていたのに、今日は、OTAだと何度やっても、Upload Speedを115200やFlash ModeをDIOなど設定を変えたりしてもtime outエラーに。
また、PCのnmapでは、当該IPアドレス含め発見されるものの、PCと同じSSIDに接続中のスマホが、LANのアドレスとは異なる中継器がもつ独自アドレスになっており、NMAPっぽいアプリでも当然、LAN内デバイスを発見できず、スマホ内設定でIPを固定にして本来のLANのアドレスにするとアプリでも発見はできる状態に...。
大元のルーターを再起動後は、その謎現象はまだ出ていませんが、OTAアップロードできないのは同様...。
nmapやアプリでIPを検出できたとしてもスケッチをアップできるほどの電波強度になかったということか?と認証パネル回路を外してPCにUSB接続しつつ、シリアルポートを変更せずにOTAアドレスでアップしてしまったところ、Upload Speed:921600やFlash Mode:QIOなどデフォルト設定でも、あっさりアップロード完了。
wifiMultiにしてある認証パネル、迂闊にも未確認ながら、今回の事象発生時点では、電波強度が最も強い中継器のSSIDに接続していなかった?
wifiMultiにしてあれば、最大電波強度のSSIDに接続されるはずで認証パネルにとって、それは中継器であり、Wi-Fiが切断されていなければ、事象発生時点でも中継器であったはず。
そして、これまで任意の時点で中継器SSIDに接続したスマホで確認した際、ドアを締め切っても認証パネル付近でWi-Fi強度としてはアンテナが1つ、少し離しても2つ減る程度。
IPが認識されてもスケッチをアップできないほどの電波強度だった原因が、中継器の不具合なのか、中継器とは異なる、より電波強度の弱いAPのSSIDに接続されていたということなのか...?
認証パネルにおいては、最も電波強度が強いはずの中継器と異なるAPのSSID接続されていたとすれば、中継器から切断された原因はなんなのか?
Wi-Fiの切断が発生し、他のより電波強度の弱いAPのSSIDに接続されていたということなら、根本原因は、電波障害など環境によるのか、中継器によるのか...?
と言ってもベースAPと中継器の距離は、せいぜい3m程度、無線の障害になり得るような壁や扉はなく、オーブンレンジはあるが、滅多に使わないし、少なくとも、ここ数日は使っていない上、使っていないときは、コンセントを抜いているのに(テレビも同様、スイッチ式コンセントのスイッチを切るだけだと電磁波?が出ているようだったので)。
安物、パチモノ中継器ではなく、まともなものを使えば、こうしたことは起きないのか、それとも独自ネットワークアドレスを持つタイプでない一般的な中継器ならこうしたことは起きないのか...?
比較のためにもベースAPと同じネットワークを継承する中継器探してみよっかな...。
中継専用機にするか、中継器やAPとしても使えるルーターにするか...。
2台あるAPとして使っている無線LANルーターもWi-Fi5とは言え、どっちも、まだ3年半くらいだしな...ってもうすぐ4年なのか...。
24時間365日連続稼働しているとは言え、Wi-Fi4、5、6、メッシュだなんだと短期間で渋滞気味だから交通整理のために煽ってるのか、巷ではルーターの寿命が5年とかって話が蔓延してる中、確かに日本メーカー製激安Wi-Fi4ルーターは5年強で壊れたけど...。
そんな中、Wi-Fi6ルーターをAPや中継器として数年使ったら、買い替え時期になっちゃって、そこまで速度を求めてないのに割高なWi-Fi6ルーターを買うモチベーション上がらないし...。
ESP32を使ったデバイスがほとんど5GHz対応デバイスは、最近買ったスマホ1台だし、5GHzは既存APで間に合っており、ESP32系は、すべて2.4GHzのみに設定したSSIDだけを使用(確か、そうしないと5GHzに切り替えようとして無線通信に失敗するように見受けられる事象があったので)、しかも300Mbpsで十分ながら、それだとWi-Fi4で今更探す方が大変そう...ならWi-Fi5か。
となると何れにせよ、格安中継専用器ってなるか、中継器は中華激安品、接続台数の多いAP内1台もTP Linkだけど、中華系を避けようと思うとモノにもよるけど日本メーカーのはWi-Fi5ルータとそんなに値段変わらず、たいした格安感はなく、ルータとなるとレビューもルーター、AP、中継器混在で中継器だけのレビューは極々限られそう...。
なんとも悩ましい...。
というか、中継器に接続できるデバイス数は、ベースAPの許容台数範囲内?APとは別に中継器は中継器で複数台のデバイスつなげる?複数のSSIDを作れるAPの接続可能台数は、全SSIDに対して?個々のSSIDに対して?前者だよね...、実は、ベースAPにぶら下げ過ぎている?...だとしたらそれが原因なのかな...?
既存APのデバイス割当の見直しが先かな...。
確かに先にデバイス接続可能台数を気にせず買ったAPは16台、3ヶ月後にそこは重要だったかと追加で買ったAPが36台、前者を家の中心辺りに、後者をルーター直近のPCデスク上に配置。
後者を買った時点で前者と入れ替えるべきだったのか、自作スマート系デバイスを含め、感度などを見ながら、つないでいってみると中継器にぶら下がるもの含め、許容台数以内に余裕で収まる1桁台数とは言え、結果、中継器のベースともしている許容台数の少ないAPに多くのデバイスを接続しているのは確か...。
許容台数の半分接続してるかしてないかくらいだから関係ないか...。
やっぱり、中継器が怪しいか...。
せっかくPoE+ハブがあるんだし、追加で、なんなら、より安価な100Mbps LANポートのPoEスプリッタ買って有線接続するのが安全・確実か。
というわけでPoEスプリッタ Type C(100Mbps)とPoEスプリッタ DCプラグ(100Mbps)を買ってしまったものの、ESP32を有線化できるわけねーというボケをかましました...、まぁ、何かに使うでしょ。
いや、探してみれば、あるにはあるんですね、ESP32でPoE対応モジュールとか、PoEじゃないけどESP32+イーサネット、ただ、どれも使用できるGPIOが少なそう、GND x2、3.3V x2込みで16ピンとか、あっても26ピン、内GND x4、3.3V x2、5V x1、EN x2とか、実際使えるのってと考えると認証パネル用には足りなさそう。
キーパッドとPN532をESPボード2つに分ければ、後者をイーサネット付きボードとすれば、いけなくはないか...。
というわけでWT32-ETH01を買ってみました。
10Mbps/100Mbpsらしいし、既存のESP32にType Cプラグを使って同スピードのPoEスプリッタ Type Cと併用するのが妥当かと思いきや、WT32-ETH01へのGPIO給電用電源が必要なのでPoEスプリッタ DCプラグにDCコネクタをつなげて降圧モジュールを噛まし、5Vを供給しようかと。
DCプラグのPoEスプリッタは、安価だったのでホントにギガ対応かどうかわかりませんし、既にギガ対応のType CとDCプラグのPoEスプリッタ両方とも別途手持ちが(あって計4つ)あるので。
USBポートのないWT32-ETH01については、商品説明にOTAアップデートできる、デフォルトのIPアドレスは...とか、GPIO2をGNDにつなげば...とかあるのでLANケーブルをハブにつないで、相応にすれば、できるのか?程度でスケッチのアップデートが少し不安ですが、なんとかなるのでしょう。
ちなみにESP32を使い始めた当初、ATコマンドを試してできたことがなく、使わないで済むことを祈るばかり。
有線LAN化でようやく解決と言って良さ気。
PN532とWT32-ETH01でスマートロック認証の回路とスケッチで数日間テストした結果、そもそも有線LANなら、不意に切断されることがなく、PN532も常に認識され、RFID認証によるドアのロック・アンロックも安定してできたので運用することに。
尚、キーパッドは、従前通り、継続してESP32ボードで無線LANで運用、PN532を分離、WT32-ETH01ボード等と併せて追加した恰好。
やっと一段落と思っていたら、なんとロック駆動用のステッピングモータ28BYJ-048が負荷に耐えきれなくなったようでシャフト面がギア容器側から外れてハマらない...という初の事象に遭遇...。
即使おうと思うとモータごと交換が一番てっとり早いっぽい...が、実際はちょっと面倒...。
ただ、安価だから気になるほどではないものの、ほぼ9ヶ月でモータ交換となると、それはそれで面倒だし、重い腰を上げて当初構想の構造で作り直すか...。
RFID/Radio Frequency IDentificationとは、タグとリーダー間の近距離無線通信であり、タグ自体は電源をもたず、リーダーからの電波で起動・データ送信する技術やその概念。
タグには、カード型や各種形状のシールなど様々なタイプがあり。
ソニー発のFeliCaやオランダPhilips社開発のMifare Classic/Mifare Type-AなどMifareは、非接触型の内、近接型ICカードやICタグ、ICシールなどで使われている通信方式。
FeliCa(ISO/IEC 18092|NFCIP-1 => ISO/IEC 21481|NFCIP-2(NFCIP-1+ISO/IEC 14443+ISO/IEC 15693、NFCフォーラム仕様:NFC/Near Field Communication:NFC-F)は、プリペイド式の電子マネーや交通系カードなどで採用されている日本で主流の通信規格。
Mifareは、日本でも古くはテレホンカードなどで使用されたこともある欧州で主流の通信規格。
近年、FeliCa/NFCの一方や両方の機能が搭載されたスマホもあります。