日々のこと

2026年8月 7日 (金)

国コード検索プラグイン

ブラウザに表示される2桁の国コードを簡単に検索するプラグインを作りました。

最近、AIによる自動翻訳が普及したためか、このブログを外国から見に来る人が急激に増えていて、足跡を見ると国コードが出ます。たとえば”US”とか”FR”とかならわかりますが、”NL”とか”CH”とかだと、ぱっと見でどこの国なのかわかりません。(NLはオランダ、CHはスイスです。)
その都度ネット検索や、外務省の一覧表を参照するのも面倒なので、右クリックのコンテキストから簡単に国名検索できる、ブラウザ用のプラグインを作ってみました。

使い方は次のとおりです。

country-code-lookup.zipをダウンロードして解凍し、ホルダごと、
"C:\Program Files\Google\Chrome\"にコピーします。
※コピー先は任意ですが、登録後に削除や移動をしないでください。
② Chromeを開き、アドレスバーに chrome://extensions/ と入力してエンターキーを押します。
③ 画面右上にある「デベロッパー モード」のスイッチをオンにします。
④ 画面左上に表示される「パッケージ化されていない拡張機能を読み込む」ボタンをクリックします。
⑤ "country-code-lookup"ホルダを選択して読み込みます。

これで、chromeに表示された2文字の国コードを選んで右クリックすると、コンテキストメニューに

「**」の国名を検索

が出るので、これを選択すると、国名がポップアップ表示されます。

edgeでも同じ方法で使えるようになります。
なかなか便利ですよ(^-^)

| | | コメント (0)

2026年8月 4日 (火)

ジャコウアゲハ

20260804jakou1
写真1.ジャコウアゲハ①


今朝、東高円寺の蚕糸の森公園を散歩していたら、黒い蝶が落ちていたので、拾い上げてよく見るとジャコウアゲハのオスだった(写真1)。
黒い系統のアゲハは、中野界隈ではクロアゲハしか見たことがなかった(遠目からかなり大きい黒いアゲハを見たことがあり、もしかしたらナガサキアゲハかもしれない)ので、今回ジャコウアゲハを見つけてちょっと驚いた。ここにジャコウアゲハがいるということは、近くに食草のウマノスズクサが生えているのかもしれない。

 20260804jakou2
写真2.ジャコウアゲハ②


20260804jakou3
写真3.ジャコウアゲハ③

この個体は拾った時点ではまだ硬化しておらず、口吻もきれいに巻かれていたので、死んで間もないか、あるいはまだ微かに生きていたのかもしれない(写真2)。
腹部には赤い警戒色が出ていて(写真3)、これは毒蝶の印である。毒蝶は襲われる危険性が低いからか、とても優雅に飛ぶものが多いように思う。

そういえば、去年2025年の8/6、やはり朝の散歩の帰りに、桃花小学校の脇の道でゴマダラチョウの死骸を見つけてもって帰ってきた(写真4)。迂闊なことにブログに書いていなかったので、ここにまとめて書いておく。
中野周辺ではアカボシゴマダラは時々見かけるが、死骸とはいえ、この近所でゴマダラチョウを見たのはこの時が初めてで、少し驚いた。なぜかというと、ゴマダラチョウは平地よりも少し山地寄りに生息しているような印象がしていたからだ。

20250806gomadara
写真4.2025年8月6日に拾ってきたゴマダラチョウ


ゴマダラチョウの幼虫の食草(食樹)はエノキであり、エノキは昆虫に大人気の植物だ。ぼくが知っているだけでもゴマダラチョウ、アカボシゴマダラオオムラサキヒオドシチョウテングチョウ、それに詳しくないが蛾が数種類、鱗翅目以外ではタマムシ(成虫)が来たりする。
このうち、中野で目撃したことがあるのはゴマダラチョウ、アカボシゴマダラ、それにテングチョウである。テングチョウは何年か前に桃園緑道で目撃した。

去年の8/6、ゴマダラチョウを拾った日は、虫が鳴き始めたと書いていた。その翌日8/7は立秋だったので、虫たちはカレンダーを見て出番を待っていたかのようだ。そうすると、ことしも明日か明後日辺りには虫が鳴き始めるかもしれない。

追記
そういえば、今の季節、蚕糸の森公園では早朝からセミの大合唱で、8/4時点ではミンミンゼミ、アブラゼミが優勢、クマゼミが時折聞こえてくる程度で、まだツクツクボーシは出てきていない。
ニイニイゼミはたぶんいるのだと思うが、鳴き声があまり目立たないので、いるのかどうかわからない。しかしニイニイゼミは抜け殻が特徴的で、他のセミたちは抜け殻がツヤツヤしているが、ニイニイゼミだけはなぜか泥んこなのだ。

追記2
2026年8月9日、早朝の散歩で秋の虫が鳴きはじめているのを確認した。

 

| | | コメント (0)

2026年3月20日 (金)

Loraデバイス E220-900T22S の動作確認

20260320lora
写真1.LoRaデバイスの送受信実験回路


Loraデバイスの動作試験を行ったので、備忘録として書いておく。

Loraとは、スペクトラム拡散技術を応用した、低消費電力での長距離通信を可能にする無線通信方式。

そもそも何のためにこの検証をしようと思ったかというと、マンション1階の郵便受けに荷物が届いたかどうかを検知するための無線センサが作れないかどうか考えたのが始まりだった。

現在、鉄筋コンクリート4階建てのマンションの3階に住んでいて、郵便受けは一階の入口に設置されており、ステンレス製だ。条件としては、郵便受けを改造せず、アンテナを外部に引き出すのもNGとする。つまりステンレスの箱の中から、外部にアンテナを出さずに、データを電波で送ってそれを受信できるか?ということだ。

以前、Wifiで信号が送れないか予備実験を行ったが、うんともすんともデータは送れなかった。このときはESP32を使用した。

LoRaに採用されているスペクトラム拡散方式の通信技術は、ノイズや干渉に強いという特徴があるため、ひょっとしたら郵便受けの中から部屋に向けて通信が可能なのではないかと思ったのだ。

そういうわけで、さっそく秋月にいって、LoRaモジュールを2個購入してきた。E220-900T22S(JP)-EV2というもので、1個1980円。アリエクに慣れているとちょっと高い買い物だが、まあしょうがない。

とりあえず片方のデバイスから"hello(^-^)/"と送信して、これをもう片方のデバイスで受信できるようにし、送信側のデバイスを1階の郵便受け内部に設置して、3階の部屋でこれを受信できるか検証するのが、今回の目的である。
結論を先に書いておくと、郵便受けの中から2秒ごとに送信した"hello(^-^)/"信号が、3階の部屋で大体2~3分に一度受信できた。予想としては、Wifiと同じくまったく受からないのではないかと思っていたので、意外な結果だった。

必要最低限のコードで通信テストを行う手順は以下の通り。

使用するマイコンはESP32。よくあるUSB接続のブレークアウトボードを使った。環境はArduino、バージョンはesp32_3.3.5。
LoRaモジュールE220のConfigが初期値である前提ならば、透過送信モード(Transparent)が使用でき、ハンドシェイクやペアリングをせずにテキストの通信ができる。送信、受信のコードは次の通り。

////////////////////////////送信コード ここから
/*
  20260319 Lora E220 送信テスト
  arduino esp32_3.3.5
  Device Config = Default
  M0=M1=0
  AUX:Open
  E220 Tx → ESP32-16
  E220 Rx → ESP32-17
*/

HardwareSerial LoraSerial(2);

void setup() {
  Serial.begin(115200);
  LoraSerial.begin(9600, SERIAL_8N1, 16, 17);
  delay(1000);
  Serial.println("TX start");
}

void loop() {
  LoraSerial.println("hello (^-^)/");
  Serial.println("sent: hello (^-^)/");
  delay(2000);
}
////////////////////////////送信コード ここまで

////////////////////////////受信コード ここから
/*
  20260319 Lora E220 受信テスト
  arduino esp32_3.3.5
  Device Config = Default
  M0=M1=0
  AUX:Open
  E220 Tx → ESP32-16
  E220 Rx → ESP32-17
*/

HardwareSerial LoraSerial(2);

void setup() {
  Serial.begin(115200);
  LoraSerial.begin(9600, SERIAL_8N1, 16, 17);
  delay(1000);
  Serial.println("RX start");
}

void loop() {
  while (LoraSerial.available()) {
    char c = LoraSerial.read();
    Serial.write(c);
  }
}
////////////////////////////受信コード ここまで

LoRaモジュールは、VCCに3.1~5.5Vの電源電圧を供給し、M0,M1端子はGNDに接続、AUXはオープン、Tx,RxはそれぞれESP32の16,17pinに接続する。
コードは、
LoraSerialと名付けたUARTのインスタンスに対し任意の文字列を送るだけのごく単純なものだ。

ところがやってみると、受信できていない。
そこで、LoRaモジュールのConfigがどのような設定になっているか調べてみることにした。
ArduinoにLoRa用のライブラリ"EByte LoRa E220 library by Renzo Mischianti 1.0.8"を追加し、次のArduinoコードを書き込んで実行する。
ダウンロード - 20260319_lora_e220_readconfig_000_ok.ino

すると、シリアルモニタに次のようにConfigの内容が表示された。2個のデバイスの両方とも同じ内容だった。

/////////////////////////////////
E220 configuration read start
Status code: 1
Status: Success
----------------------------------------
HEAD : C1 0 8

AddH : 0
AddL : 0

Chan : 0 -> 410MHz

UART parity : 1 -> 8O1
UART baud : 11 -> 9600bps (default)
Air data rate : 0 -> 2.4kbps

Sub packet : 0 -> 200bytes (default)
TX power : 0 -> 22dBm (Default)
RSSI ambient noise : 0 -> Disabled (default)

WOR period : 0 -> 500ms
LBT enable : 0 -> Disabled (default)
RSSI enable : 0 -> Disabled (default)
Fixed transmission : 1 -> Fixed transmission (first three bytes can be used as high/low address and channel)
----------------------------------------

内容を注意深く見ていくと、デフォルト設定ではない箇所がある。
ひとつはUART parity : 1 -> 8O1で、これはデフォルトでは8N1であるべき。そしてもうひとつは、
Fixed transmission : 1 -> Fixed transmission (first three bytes can be used as high/low address and channel)
この部分は、上の通信プログラムを実行させるには"Transparent transmission"になっていないといけない。
周波数は920MHzなのだが、410MHzになっているのはおかしい。

そこで、次のコードを書き込んで実行し、すべてのパラメータをDefaultに修正する。
ダウンロード - 20260319_lora_e220_setconfigdefault000_ok.ino

実行したら、再度、上に書いたConfigの読み込みコードを書き込んで実行し、内容を確認する。次の内容になった。

----------------------------------------
HEAD : C1 0 8

AddH : 0
AddL : 0

Chan : 0 -> 410MHz

UART parity : 0 -> 8N1 (Default)
UART baud : 11 -> 9600bps (default)
Air data rate : 10 -> 2.4kbps (default)

Sub packet : 0 -> 200bytes (default)
TX power : 0 -> 22dBm (Default)
RSSI ambient noise : 0 -> Disabled (default)

WOR period : 0 -> 500ms
LBT enable : 0 -> Disabled (default)
RSSI enable : 0 -> Disabled (default)
Fixed transmission : 0 -> Transparent transmission (default)
----------------------------------------

これで、上で述べた箇所が修正された。すなわち、
UART parity : 0 -> 8N1 (Default)
Fixed transmission : 0 -> Transparent transmission (default)
この部分が修正された。周波数が410MHzと表示されているのはおかしいのだが、読み出しソフトのバグだろうか?

この修正を2つのデバイスに行ったうえで、再度上に書いた送受信コードを書き込んだところ、こんどはちゃんと受信できた\(^o^)/

このデバイスをより本格的に使用するには、たとえば透過モードではなく固定通信モードに設定して、送信先のアドレス、チャンネルを指定して特定の相手にのみデータを送るなどの方法がある。手順を大雑把に述べると、モードをTransparent transmissionからFixed transmissionに変更し、送信するシリアルデータを[ADDRH][ADDRL][CHAN][DATA...]のようにする。
たとえば、宛先アドレスが0x0002、チャンネルが0x00、データが"hello"なら、

uint8_t data[] = {
0x00, 0x02, 0x00, // 宛先アドレス(H,L) + チャンネル
'h','e','l','l','o','\n'
};
LoraSerial.write(data, sizeof(data));

こんな感じになるだろう。

そういうわけで、とりあえず送受信ができるようになったので、送信側を3.8Vのリチウムイオン電池駆動にして、同じく秋月で715円で売っていた専用のアンテナをつけて紙袋に入れ、1階の郵便受けの中に入れて、3階の自室で受信確認をしたところ、2秒ごとに送信している"hello (^-^)/"が2~3分に一度受信できる、という結果になった。これならひょっとしたら実用できるかもしれない。構想としては、光センサをつけて、郵便受けになにかが入ることで反射光の状態が変化したら、信号を送信するようにすれば、荷物検知ができそうだ。

やはり今回の金属製郵便受けの内部から電波を送信するというプロジェクトの最大のネックはアンテナで、アンテナの外出しおよび郵便受けの改造はNGという条件ではかなり困難だ。通信をより確実にするためにできることがあるとすれば、郵便受けの箱そのものに給電してしまって飛びを確認するか、あるいは扉に開けられている細長い穴をスロットアンテナとして使うか、くらいだが、細長い穴は41mmで、920MHzの波長は約30センチ、1/2λなら15センチなので、41mmでは全く足りない。なかなかむつかしい課題だ……


| | | コメント (0)

2026年2月22日 (日)

ストリート・デビュー!!(20260507追記あり)

といっても、ストリートダンサーになったわけではなく、Googleのストリートビューに写っていた\(^o^)/

ストリートビューに写り込む確率はどの程度のものだろうか?おそらくかなり稀有なことなのではあるまいか?

201512google
写真1.交番前を、グレーのレッグウォーマーをつけた怪しい男が……

2025年12月のある日、いつものように部屋着にジャケットを羽織って、近所のサントクに食料品の買い物に行ったら、
ちょうど角の交番の前あたりにGoogleカーがいたので、親指を立ててグーサインをして通り過ぎたら、その直後に写ったようだ\(^o^)/
こんな事があるんだなあ……いいことあるかな!?

肩にかけている黒いカバンの端に白い缶バッヂが付いているのが見えるだろうか?
これは2013年11月3日に外苑前へ、歌人佐々木あららさんの展覧会を見に行き、その帰りに青山で寺山修司展をやっていたので寄って、缶バッヂのガチャがあったのでやったら出てきた缶バッヂだ。気に入っているのでずっとカバンにつけている。
なぜそんなに前のことを、日付まで覚えているのかというと、ブログの記事が残っているからだ。

Shujiterayama
写真2.お気に入りの缶バッヂ

面白いことがあるものだなあ……(^-^)


【20260507追記】
上のストビューデビュー記事を書いてからしばらく忘れていたのだが、久しぶりに自分が写ったストビューを見ようとして中野の中央5丁目交番付近をストビューしたら、なんと画像が差し替わってしまっていた(T_T)

20260507stview
写真3.20260507現在のストビュー

せっかくヒトに自慢しまくろうと思っていたのに、とても残念だ……

念のためもとの記事を書いたときにURLを保存しておいたので、そちらを見てみると……
なんと、元記事の写真の通りちゃんと写っている\(^o^)/

ただ、ストビューを歩いていって該当箇所に着くと、差し替わったあとの画像になってしまう。つまり隠し画像状態になっている。
写っている人が多かったので、誰かからクレームでも入ったのだろうか。

この閑散とした新しい画像から少し前進して、交番のすぐ前のあたりまで来て、左を向くとこんな風景だ。

20260507stview2
写真4.交番前で左を向く

スーパーサントクの方向に向かう人々の後ろ姿が写っている。よーく見ると……おや!!

20260507stview3
写真5.グレーのレッグウォーマー、カバンに白い缶バッジを付けた男が……!!


というわけで、まだかろうじて残っていました(^-^)



| | | コメント (0)

2026年1月21日 (水)

Aliexpressの不良品返品手続き

XilinxのWebpack ISE14.7が使えるようになったので、CPLDを少し買っておこうと思い、アリエクで10個1921円のXC9572を購入したが、あろうことか、不良品なのかハリボテなのかはわからないがとにかく認識しなかったので、返品手続きを取った。次のような内容で不良品の証拠となる画像などを添付して不具合内容を書いた。

Xc9572ngpic
写真1.動作確認の様子

Error_impact
写真2.不良品が認識されずエラーとなった画像


Ok_impact 
写真3.良品の場合はこうなる

以上の3つの画像を添付して、次のように説明文を書いた。なお英訳はネットのAIでやってもらった。

I purchased 10 units of the XC9572 this time, but none of them are recognized by the development software iMPACT during Boundary Scan.
The attached photo OK_iMPACT.jpg shows how a good device is correctly recognized by iMPACT.
The attached photo ERROR_iMPACT.jpg shows the recognition error with the devices purchased this time.

Therefore, all units are defective, and I request a full refund.

アリエクの返品申請手続きができたら、返送しろと書いてあったのだが、返送手続きがよくわからず、自腹で国際便で返送したらおそらくそれだけで赤字なので、梱包だけ戻して放置していたら、返送手続きをした2日後に佐川急便さんが回収に来てくれた。

こういうシステムになっていたのか!!
ちょっと感動したが、果たして返金なるだろうか!?


【20260123追記】
1/22付で、クレジットカード宛に返金が確認されました(^-^)
Aliexpressを少し見直した。以前PCM1704の不良品(あるいはハリボテ)を掴まされたときは業者がゴネて返品、返金が叶わなかったが、品目にもよるのだろうか……

【20260209追記2】
その後、Aliexpressの別の店で同じXC9572を2個681円で販売していたので、6個2043円で購入したが、やはり不動品だったため、同じ方法で返品返金手続きしたところ、無事に返金できました。



| | | コメント (0)

2026年1月18日 (日)

マウスホイールによるズーム方向の変更

主に図面などの画像をあつかうアプリを操作する際に、マウスホイールによるズームイン/ズームアウトはとても便利な機能だが、アプリによってズーム方向が違ったり、ズーム方向の設定ができなかったりした場合、たいへんあつかいにくい。

私の場合、主にKicad、LTSpice、DesignsparkMechanicalあたりをよく使うが、KicadのZoom方向に慣れていて、LTSpiceとDesignSparkは逆なので扱いにくい。

そこで、今回はアプリ別にスクロール方向を変更する簡単な方法を備忘録として書いておく。やり方は次の通り。

①フリーのWindowsスクリプトツール”AutoHotKey”をダウンロードしてインストールする。
AutoHotKeyサイトのDownloadボタンを押して、V1.1をダウンロードして実行してインストールする。

②スクリプトを作成する。
テキストエディタで次のようにスクリプトを書き、適当な場所に保存する。ここではファイル名をZoomReverse.ahkとした。ファイル名は任意だが、拡張子はahkにすること。

;ここから
;DesignsparkMechanical
#IfWinActive ahk_exe SpaceClaim.exe
WheelUp::Send {WheelDown 1}
WheelDown::Send {WheelUp 1}
#IfWinActive

;LTSpiceXVII
#IfWinActive ahk_exe XVIIx64.exe
WheelUp::Send {WheelDown 2}
WheelDown::Send {WheelUp 2}
#IfWinActive

;LTSpice26
#IfWinActive ahk_exe LTspice.exe
WheelUp::Send {WheelDown 2}
WheelDown::Send {WheelUp 2}
#IfWinActive
;ここまで

この例はDesignsparkとLTSpiceXVII、LTSpice26の3種類のアプリのズーム方向を逆に設定している。
WheelDown 2
WheelUp 2
の数値はズームスピードの設定で、数値が大きいほど早くなる。

スクリプトが書けたら保存して、これを右クリックして、「プログラムから開く」→AutoHotKeyを実行すれば有効になる。
PCの起動時に自動的に有効になるように、スクリプトファイル(ahkファイル)のショートカットをスタートアップに登録しておくと便利。
スタートアップホルダはスタートメニューの「ファイル名を指定して実行」から
shell:startup
とすれば開くことができる。

注意すべきことは、これは対象のアプリがアクティブな場合のみ有効ということなので、そのアプリが画面に表示されていても別のアプリがアクティブな場合は有効にならない。

ちょっと慣れが必要かもしれないが、だいぶ便利です(^-^)

 

| | | コメント (0)

2026年1月 9日 (金)

格安タブレット P85T のバッテリー交換   

20240920p85t_20260109123401

関連記事:格安タブレット TECLAST P85T の不具合と対処方法


2024年の夏に約9500円で購入したTECLASTの格安タブレットP85Tだが、予想より早く電池が劣化し、2025年末には実用上かなり厳しい状態となった。

今回の電池寿命による症状は、従来とは様子が異なっていて、電池残量が80%とか、まだまだ余裕がある場面で突然電源が落ちるというものだ。故障かもしれないと思いいろいろ調べてみたが、どうやら電池がくたびれてきて内部抵抗が上がってくると、突発的な電流増加のときに大きな電圧降下が生じ、リセットしてしまうということらしい。
これは高性能で演算能力の高いCPUに対して、AIなど高負荷なアプリを使用したときに起こるらしく、確かに最初にこの現象が出たときも、AIによる詰将棋をやっているときだった。
この現象が出始めたのが2025年の10月頃だったので、購入からわずか1年2ヶ月ほどだ。ただ、突然落ちる場面もそれほど頻度が高くはないし、バッテリーも半日以上もつ状態だったので、まだしばらくは大丈夫だろうと、だましだまし使っていた。
そこから2ヶ月が過ぎて、年が明けてからは、AI詰め将棋だけではなく、ほかのアプリを使っているときでも突然落ちる頻度が増えてしまったので、電池の交換に踏み切ったのだ。

以下にP85Tの電池交換を記すが、リチウムイオン電池は発熱発火などの危険を伴う電池であるため、自己責任でお願いします。

さて、まずは蓋を開けて電池サイズを測ったところ、102x98xt3.5ほどだった。電池の写真を写真1に示す。

P85t_orgbatt00
写真1.元々入っていた電池。3410298というモデルナンバーはそのまま寸法をあらわしている。

Model:3410298
と書いてあるが、これは厚さ3.4mm、102mmx98mmという寸法をあらわしているようだ。
写真2に接続の様子を示す。

P85t_orgbatt
写真2.オリジナルの電池の接続

オリジナルの電池は6ピンのコネクタで接続されていた。赤2本が+、黒2本が-(GND)、黄色が温度検知用サーミスタ、そして青が謎なのだが、観察したところディスプレイのON/OFFを示す信号が来ていた。なんのために電池に接続されているのかは謎のままだ。
交換に使えそうな電池を探したところ、aliで同じくらいのサイズのものを見つけた。購入した電池のリンクを付けるつもりだったが、いま見てみるとすでに販売されていない。試してみたい方は同サイズでコネクタが付いたものを自力で探してください。
購入品はコネクタピッチは同じで、配線が赤赤白黒黒となっていて5ピン、白はサーミスタで、1本足りないが挿入は可能なので、装着してみたところ動作はOKのようだ(^-^)(写真3)

P85t_battconnect
写真3.新しい電池をコネクタに接続。1本足りないが装着できて、動作OK。


さて、この作業の最大の難所は蓋開けだ。
この手のタブレットはネジ止めではなく強固なパッチン止(はめ殺し)で蓋が閉まっているため、開けるのはかなりのテクニックと慣れが必要だ。今回は0.15から0.2mmほどのステンレスの隙間ゲージをじわじわ差し込んで拠点を作り、そこに細いマイナスの精密ドライバを入れてこじ開けたが、かなりの難易度で、ここを乗り越えなければ電池交換はできない(写真4)。

P85t_open
写真4.タブレットのこじ開け作業。P85Tは側面下側から50mmの箇所にヘラを差し込み拠点にするとよさそうだ。

また、この作業に入る前に注意したいのが、SDカードの取り出しだ(写真5)。SDカードが入ったまま無理やり開けようとすると、SDカードホルダを壊してしまうので、要注意だ(写真5)。

Sdcard
写真5.SDカードは忘れずに抜いておくこと!


もう一つ気をつけたいのが、スイッチのところに付いている樹脂製のスイッチボタンだ。これを折ってしまったり、なくしたり、再度蓋を閉めるときに入れ忘れないように注意が必要だ(写真6)。


P85t_sw
写真6.プラスチックのスイッチパーツを無くしたり破損したり付け忘れたりしないよう注意。


今回入手した電池のコネクタは5PINで、1ピン少ないため、抜けやすくなっている。抜けないようにセロテープなどで補強するといいかもしれない。新しい電池を装着した様子を写真7に示す。ちょっとピンボケになってしまった。申し訳ない(^-^;

P85t_all
写真7.新しい電池装着の様子。コネクタリードが長いので、うまく収まるようにループさせる。


そういうわけで、これであと1年くらいは使えるのではなかろうか(^-^)


| | | コメント (3)

2025年7月16日 (水)

アースノーマットタイマーの製作(20250731追記あり)

Earthtimer


【20250731追記】
この元記事では、トランスレスでマイコンの電源を確保することをあきらめたが、あとになってうまく実現しているサイトを見つけた。
電子マスカットというサイトのこの記事だ。思いつきでいきなり作ってあきらめるより先に、ネットをよく調べるべきであった。少しのことにも先達はあらまほしきこと也(^-^;
この記事ではトランスレスで5V20mA程度確保できるということなので、フォトトライアックの駆動も十分できる。次回はこのやり方を試してみたい。

ところで、元記事では、規定時間(10時間)経つと自動的にオフし、Deep sleepに入って、翌日の同じ時間にsleepタイマーによって自動的にオンする、というプログラムにしていたが、Deep sleep時のクロックは内部のRCクロックであるため誤差が大きく、実際に使ってみると一日で数分の狂いが生じる。
シングルコアのESP32を、WIFIを使わずにwhileループで止めていても消費電流は微々たるものなので、sleepには入れずに、時間が満ちるまでmillis()で数えながらwhileで回して待って、前回のオンから24時間後にリセットしてまたオンするというプログラムに変更した。millis()はメインクロックを基準としているため高精度で、10日間連続稼働で5秒以内の誤差だった。なので、夏のあいだは完全に手放しにできるが、リキッド切れにはくれぐれも注意したい(^-^;

【変更後のプログラム】

/*
 *         Earthmat Timer Ver 0.01
 *         Copyright 2025 Nobutsugu Higo
 *         2025/07/17
 *
 * 20250717 スリープは時間が不正確なので、スリープしないでmillis()で時間待ちに変更
*/

uint32_t duration_ms;

void setup() {
  Serial.begin(115200);
  pinMode(33,OUTPUT);//HでAC100V オン
  pinMode(19,OUTPUT);//Test LED
  delay(100);

  Serial.println("Hello (^-^)/");

  uint16_t on_duration_minutes=600;//アースノーマット稼働時間設定 10時間=600分
  //uint16_t on_duration_minutes=1;//テスト用 1分
  duration_ms=on_duration_minutes*60*1000;//稼働時間をmsで計算
  //esp_sleep_enable_timer_wakeup((1440-on_duration_minutes) * 60 * 1000000LL);//24時間-稼働時間(uS)

  digitalWrite(33,1);//アースノーマット(AC100V出力)をオン

}

void loop() {
 
  while(duration_ms > millis()){//目標時間が経過するまでループ
    delay(500);
    Serial.print("duration=");
    Serial.println(duration_ms);
    Serial.print("millis()=");
    Serial.println(millis());
    digitalWrite(19,!digitalRead(19));//動作中はLED点滅    
  }
 
  digitalWrite(33,0);//目標時間が経過したのでAC100V オフ
  digitalWrite(19,0);//LED OFF

  while(86400000 > millis()){//24h=86400000ms
  //while(120000 > millis()){//test 2min=2000ms
    delay(1000);
    Serial.print("CountDown");
    Serial.println(86400000-millis());
    //Serial.println(120000-millis());
    digitalWrite(19,!digitalRead(19));
  }
  ESP.restart();
}

*******************ここまで


【20250716元記事】

去年まで煙の出る渦巻きタイプの蚊取り線香を使っていたが、いろいろと面倒なので、とうとうアースノーマットを導入した。
5月のGWあたりからぼちぼち蚊が出始めたので、60日ボトルと本体のセットをアマゾンで970円で購入して使っていた。

この2ヶ月ほど使ってみて、ときどき朝に切り忘れて一日中焚きっぱなしということがあって、リキッドが1日分無駄になったと思うとちょっとくやしい、ということが何度かあった。家の中に出るイエカは通常夜間のみに出る。いっぽうヤブにいるヤブ蚊は日中も出るが、部屋の中に入ることは、都会ではほとんどない。よって、通常は部屋で蚊の対策をするのは夜間だけで十分なのだ。

なので、ちゃちゃっとマイコンを使ってアースノーマット専用のタイマーが作れないか検討した。マイコンでタイマーを組んで、ACをON/OFFするトライアックを積んでやればよい。

問題となるのはマイコンの電源で、まじめにやろうとするとトランスかスイッチング電源か、あるいはACアダプタを使って供給することになる。
ACアダプタを使うのが簡単だが、ACアダプタとアースノーマット用にコンセントを2口使うのは、どうにもスマートではない。
電池駆動もなくはないが、電池切れのことを考えると、どうも気乗りがしない。

そこで、図1のような超手抜き回路でマイコン用の電源を確保できないか検討した。クラスの学級委員の女子が見たら激怒しそうな不真面目な回路だ(^-^;

Tenuki
図1.超手抜き電源回路
LEDの順方向電圧2つ分でスーパーキャパシタに充電して使う。


これならAC100Vを引き込んでいるので、アースノーマット用の電源もここから引けて、コンセントは1口で済む。
出力電圧は3.6~4V程度で、スーパーキャパシタに貯めておけば、低消費なマイコンなら十分動かせるだろう。

さっそく製作にとりかかったが、いやまてよ、マイコンからトライアックを駆動するためのフォトトライアックの一次側の電流は、たしか10mAくらい必要じゃなかったっけ!?
ここであえなく、超手抜き電源方式は頓挫してしまった……やっぱりまじめに生きないとダメだ……(-_-)

数日間放ったらかしになっていたが、タブレットを眺めながらごろごろしていたら、とてもよさそうな小型電源基板を見つけた。AC100入力で5V700mAが出せて、大きさは切手ほど。これこれ、こういうのでいいんだよ!写真1。

Wxdc12003
写真1.超小型スイッチング電源 WX-DC12003
アマゾンで5個999円だった。アリエクだと送料を入れても1個130円くらいで買える。


これでいちばんの懸案であったマイコン電源確保の問題が片付いたので、仕切り直して製作に入った。
使う部品は、マイコンにはこのあいだ秋月で10個1000円で投げ売りしていたので20個買ってきたESP32-SOLO-1、フォトトライアックは以前に秋月の福袋に大量に入っていたMOC3021、トライアックは以前中華温調はんだごてに使われていておもしろそうだったのでアリエクで10個106円で買っておいたBT136-600E。
もうほとんど冷蔵庫にあるあり合わせ材料で適当に何か作るというノリだ。

回路は図2のとおり。

Earthtimer_sch_20250715121901

図2.アースノーマットタイマー回路図    この回路のAC Outletにアースノーマット本体を接続する。
※1 ESP32のTx、RxにUSB-シリアルを接続してPCと通信してプログラムしますが、この回路では省略しています。
※2 プログラム書き込み時はIO0をLにしてリセットしますが、この回路では省略しています。

実際に作ってみると、スイッチング電源のGNDが高域で安定せず、マイコンが誤動作してまともに動かないので、ノイズとGNDの安定のための対策としてC4(Yコンデンサ)を入れた。今回は部品箱に入っていた0.01uF/3kVの高耐圧セラミックコンデンサを使用したが、通常はもう少し低い容量のもの(1000pF~4700pF)がいいと思う。
※Yコンデンサとは、GNDの高周波基準の安定化やノイズ対策としてACラインと2次のGNDの間に入れるコンデンサのことで、IEC規格でclass Yとして分類されているものです。

あとはプログラムをどうするか、ということになるが、ESP32-SOLO-1はいわずと知れたWIFIマイコンで、WIFIのみならずBluetoothも使える。そうするとたとえば、WIFIに接続しておいてネットワーク経由でNTPを使って正確な時間管理ができたり、WIFI経由でパソコンやタブレットからアースノーマットを制御したり、あるいはオン時間、オフ時間の設定をパソコンやタブレットから行ったり、果てはアレクサに声でON/OFFをお願いするとか、ありとあらゆることができる。

今回のきっかけは、そもそもアースノーマットを切り忘れて、リキッドが無駄になるのが惜しい!ということだったので、ON/OFFの制御だけ夏のあいだ確実にやってもらえればそれでいい。

それなら毎日夜7時に自動的に電源オンして、よくあさ5時に自動的にオフしてくれればいいか?
こうなると、ほとんど手放しになるので、すぐにアースノーマットの存在を忘れそうだ。そうすると2ヶ月後にリキッドが切れているのにも気付かず、ある日の夜中に蚊の猛攻で起こされることになる……(^-^;

そういうわけで、なにもかも自動化するというのも考えものだ。
結局、毎晩自分でボタンを押してオンすると、10時間後に自動的に電源をオフする、という最小限の機能とすることにした。
それならばESP32-SOLO-1である必要はなく、もっと安いCH32V003あたりでもいいかもしれない。なにしろポートをひとつ(LEDも含めると2つ)オン・オフするだけなのだから。

arduinoで書いたコードは次のとおり。
リセットボタンを押すと冒頭からプログラムを開始しアースノーマットをオンして、10時間経過するとアースノーマットをOFFしてスリープに入る。次にまたアースノーマットを動かしたいときはリセットボタンを押す。

/*
 *         EarthNomat Timer Ver 0.00
 *         Copyright 2025 Nobutsugu Higo
 *         2025/07/15
*/

uint32_t duration_ms;

void setup() {
  Serial.begin(115200);
  pinMode(33,OUTPUT);//HでAC100V オン
  pinMode(19,OUTPUT);//Test LED
  delay(100);

  Serial.println("Hello (^-^)/");

  uint16_t on_duration_minutes=600;//アースノーマット稼働時間設定 10時間=600分
  duration_ms=on_duration_minutes*60*1000;//稼働時間をmsで計算
  esp_sleep_enable_timer_wakeup((1440-on_duration_minutes) * 60 * 1000000LL);//24時間-稼働時間(uS)

  digitalWrite(33,1);//アースノーマット(AC100V出力)をオン

}

void loop() {
 
  while(duration_ms > millis()){//目標時間が経過するまでループ
    delay(500);
    Serial.print("duration=");
    Serial.println(duration_ms);
    Serial.print("millis()=");
    Serial.println(millis());
    digitalWrite(19,!digitalRead(19));//動作中はLED点滅
   
  }
 
  digitalWrite(33,0);//目標時間が経過したのでAC100V オフ
  digitalWrite(19,0);//LED OFF

  delay(1);

  esp_deep_sleep_start();//Deep Sleepに入る
  Serial.println("zzz");// ここは実行されない
  delay(1000);// ここは実行されない
  ESP.restart();// ここは実行されない
}
///////////////////////////////////ここまで////////////////////////////////////////
 
 
このコードではアースノーマットの稼働時間を10時間(600分)として設定している。これは必要に応じて変更すればよい。
アースノーマット稼働中は、LEDを1秒ごとに点滅している。
稼働時間が経過したら、アースノーマット用の電源供給を停止して、スリープに入る。スリープ時間は(24時間ー稼働時間)としているので、
放っておいても、翌日の同じ時間にアースノーマットが稼働し始めるが、これはあくまでも保険的機能で、稼働開始時は毎日自分でボタンを押すことにしたい。
また、
esp_deep_sleep_start();
のあとにもコードがあり、最終行で
ESP.restart();
としているが、実際はesp_deep_sleep_start()よりあとのコードはすべて実行されないので意味はない。スリープから目覚めたあとはリセットと同じ扱いとなることがわかるように、あえて書いておいた。

なお、ESP32-SOLO-1はESP32のシングルコア版で、arduinoで使うにはコンパイラを変更する必要がある。
そのあたりは過去記事ESP32-SOLO-1を使うを参照してほしい。もちろん面倒のない普通のESP32も使えるし、ESP32に限らず、arduinoで使えるマイコンならほとんど使えると思う。arduinoマイコンでDeepsleepがない場合は、代わりにwhile(1)として無限ループで止めておいて、次回はリセットボタンを押して起動ということにするのが最も簡単に済むと思う。

実際の製作は、タッパウェアに適当に詰め込んで、ESP32の基板はビニル袋に入れて絶縁し、そのビニル袋が適度にクッションになって中身が動かないように工作した(写真2~5)。

20250712tupperware1
写真2.配線の様子


20250712tupperware2
写真3.基板をビニル袋でくるんで絶縁する


20250712tupperware3
写真4.ビニルがクッションになるようにして詰め込んでフタを閉める
フタには起動用のリセットスイッチ。


Earthtimer
写真5.アースノーマットと今回製作したタイマー


これで今年の夏は快適に過ごせそうだ(^-^)

 

| | | コメント (0)

2025年3月31日 (月)

カメラ散歩(2025お花見編)

Imgp4104
1 きょうのレンズはZoom Nikkor 35-70 F3.3-4.5


ことしもいよいよ桜が開花し、東京では昨日3/30に満開になったそうなので、カメラを持って散歩してきました。
きょうは曇りでとても寒く、日中も8度くらいまでしか上がりませんでした。お花見散歩は暖かい日に出かけたかったのですが、明日から数日間雨の予報で、暖かくなる週末まで待ったら桜が散ってしまいそうだったので、きょう出かけてきました。

本日の機材はEOS Mに、Zoom Nikkor35-70です。このレンズは1991年にF3といっしょに購入したものです。
前回はかなりピントが甘くボツになった写真がとても多くてショックだったので、今回はかなり慎重にピント合わせをしました。はたして改善されているでしょうか……

2517
2 緑道の桃の花
部屋を出てすぐの緑道に桃の花が咲いていました。


2542 2535
3 中野北口桜並木の桜
幹からちょこっと生えてきた桜の花。


2558
4 歩道の植え込みのヒナゲシ


2564
5 新井五差路の桜
この木はソメイヨシノではなく、いつもはソメイヨシノとタイミングが少しずれるのですが、今年は同時に咲いていました。


2565
6 北野神社の鳥居から
前回は北野神社の梅の花が満開でしたか、今回は梅が終わって桜に交代していました。


2571
7 北野神社の桜


2574
8 北野神社のお稲荷さん
きょうもお稲荷さんは参拝客を睥睨していました。



2575
9 境内側から鳥居方向
鳥居のすぐ近くに見えるひときわピンク色が鮮やかな花は、平成5年に現在の天皇陛下と皇后雅子様のご成婚記念に、「プリンセス雅」という名称が登録された新種の桜の木です。


2584
10 プリンセス雅


2597
11 新井薬師の桜


2601_20250331143701
12 新井薬師のしだれ桜


 2606_20250331144001
13 新井薬師の桃


2619
14 新井薬師の桜②


2629
15 プリンセスミヤビ
これは新井五差路にあるプリンセスミヤビというヤマザクラの自然交雑種で、今上天皇陛下と皇后雅子様のご成婚を記念して命名された、と説明されていますが、前出の「プリンセス雅」と同品種なのかわかりません。


2653
16 歩道のひこばえの桜
桜の木のすぐ横からはえてきたひこばえの桜の花。


2656
17 中野駅前ビルと桜


2665
18 近所の緑道のハナニラ
このハナニラは青が鮮やかで、毎年咲くのを楽しみにしています。


というわけで、かなり寒い日でしたが桜とほかの花々を見てきました(^-^)
きょうの写真も帰ってから見ると、前回よりは多少改善されたもののピントの甘い写真が多くて、やっぱりショックでした(^-^;
近眼メガネをかけたままではカメラ背面の液晶がよく見えないので、都度メガネを外してピント合わせしていましたが、あらためてオートフォーカスのありがたさを痛感しました。


| | | コメント (0)

2025年3月12日 (水)

DT71 ピンセット型デジマルの救済(2)

All
写真1.今回の改造品(中段)、オリジナルのピンセット型脚部(上段)
および改造に使用したプラスチックピンセット(下段)


前回の記事DT71 ピンセット型デジマルの救済(1)では、ピンセット型デジタルマルチメーターDT71の電池劣化救済策として、外付け基板を製作し、そこに電池とテストリード接続端子を設けることで、ふたたび使えるようになった。

しかしながら、テストリード長がオリジナル品よりも大幅に伸びたため、コイルのインダクタンス測定において精度が低下してしまい、オリジナル品ではおおむね1μHが測定下限だったのに対し、改造品では測定下限が10μH程度となってしまった。

そこで今回は市販のプラスチックピンセットを使用して、オリジナルと同じくピンセット型のデジタルマルチメータに改造した。
今回の目的は次のとおり。

①ピンセット型を踏襲することでテストリード長を短縮し、測定精度をオリジナルと同等にする
②電池を交換可能とし、劣化の場合でも交換できるようにする
③電源スイッチを設けて、電源の完全OFFができるようにする

ピンセット先端部をプローブとするには、プラスチックのピンセットに電極をつけるのがよさそうだ。
amazonで探したところ、使えそうなものを見つけた。10個で1109円。

これの先端を切って、そこにもとのDT71に予備として付属していたプローブチップを取り付ける。写真2参照。

Probes
写真2.プローブチップの取り付け 
プローブチップにはΦ2のネジ穴(M2.0の雌ネジ)と位置決め用のバカ穴が空いている。


現物合わせでネジ穴を空けて取り付けたが、思いのほか良い精度でできた(^-^)
極性がわかるように、短く切った黒と赤の熱収縮チューブをつけてある。

回路は前回と同じだが図1に再掲しておく。

Dt71_sub_sch_20250312152301
図1.回路図


本体のΦ3.5プラグを受けるジャックその他の部品をのせた基板を作って、プラスチックピンセットのトップ部分にネジ止めした。
基板の部品面と配線面の写真をそれぞれ写真3、写真4に示す。

Parts_side
写真3.基板の部品面


Wire_side
写真4.基板の配線面

今回もΦ3.5の4Pジャックが取り付けられるFMラジオ基板を流用して、ジャックの部分を切り取って使用した。
電源SWを取り付け、電源の状態がわかるようにLEDをつけてある。

さて、完成したので、インダクタンスの測定がオリジナルと同じ精度で行えるかどうかの検証だ。検証結果を表1に示す。

表1.測定評価結果
Table

いちばん左のピンセット型(オリジナル)に対して、前回の改造品(基板型改造品)では10μH以下のいずれの測定結果も精度が出ていない。
今回(ピンセット型改造品)の測定結果はオリジナルと同等レベルで、1μHまで測定が可能なようだ\(^o^)/


そういうわけで、ピンセット型デジタルマルチメータDT71は、姿を変えてまだまだ使えそうです(^-^)

| | | コメント (0)

より以前の記事一覧