2023年4月19日水曜日

MJPG-Streamerのホワイトバランス設定

すみません、以下、NGです。コマンドラインからの実行だと意図した設定に変わるんですが、システムごと再起動して同じスクリプトを呼び出すとWB治ってません。


 調べても、ピシャリ!というリファレンスが見つからなかったので、とりあえず自分のメモとして残します。

まず起動したWebページのControlボタンからパネルが開き、そこのAuto White Balanceで調整するといい感じになります。うちの場合はGreyworldがベストでした。

ただ、再起動するために毎度設定するのもウザいので、自動設定しようとしたら少しハマりました。-wb greyworldなどと指定しても落ちます。あちこち読んでいたら

-awb : Set AWB mode (see raspistill notes)

という記述を見つけてraspistillのhelpを見たところ

AWB mode options :
off,auto,sun,cloud,shade,tungsten,fluorescent,incandescent,flash,horizon,greyworld

というリストが!これをMJPG-Streamerのパラメータにはintと書いてあるので、off = 0から数えて10番目。-wb 10と指定したところ、Greyworldと同じ色になりました。

ちなみに起動スクリプトはこんな感じです。id/passwordは開くときのBASIC認証につかわれます。

#!/bin/sh
PORT="8080" #ポート番号
ID="your id" #ID
PW="password" #パスワード
SIZE="480x640" #画面サイズ
FRAMERATE="5" #フレームレート
export LD_LIBRARY_PATH=/usr/local/lib
mjpg_streamer \
-i "input_uvc.so -f $FRAMERATE -rot 90 -wb 10 -r $SIZE -d /dev/video0 -y -n" \
-o "output_http.so -w /usr/local/share/mjpg-streamer/www -p $PORT -c $ID:$PW"

余談ですが、縦位置にするために-rot 90を指定したら画像が流れてしまいました。

解像度360x640にしていたためで、これを480x640にしたらちゃんと見られます。

よかったよかった。

2023年4月8日土曜日

インターフォンの改造、その2


前回は、市販のワイアレスインターフォンの改造でした。音の代わりに光で通知する。

ですが、来客の方から「わかりにくい」と不評です。そりゃ、玄関にインターフォンが2つ並んでいたら変ですよね……。

ということで、もともとついているインターフォンを改造することにしました。改造と言っても賃貸住宅なので、はんだ付けなどはできません。あくまでも既存の端子から信号を拝借するだけです。

インターフォンの仕様書をみると、玄関のボタン、火災報知器などの通知があると、まとめてONになる出力がありました。「無電圧接点」というやつで、工業用のセンサーなどでごく一般的な方式です。通知状態になるとONになります。

予備テストとして、テスターの抵抗レンジでつないでみると、OFFの時には数MΩ、ONになると数百Ωになります。テスターの抵抗レンジは電圧が低いのでトランジスタだと抵抗が大きめに表示されます。

というわけで、インターフォンの端子(2mmピッチで、JSTのPHが刺さりました)から線を引っ張り出して、M5Stack AtomのGPIOと出力、GNDと共通端子(GND)を接続します。

INPUT_PULLUPでdigitalReadしてみると、ちゃんとHIGH / LOWが返ってきます。玄関ボタンが押されるとしばらく室内で通知ランプがついているのですが、そのあいだずっとLOWになっているようです。

ということでソフトを組みます。今回はSlackへの通知とMQTTへの通知を使います。

M5 ATOMをWiFiと接続して予めMQTTにsubscribeしておき、GPIOがLOWになったところで、SlackにPOST / MQTTにpublishします。

LOWになってから0.3秒ほどでMQTTに通知され、1秒ぐらいでMacのSlackに通知が届き、その2-3秒あとにiPhoneに通知がきます。

これでiPhoneを持っていれば、トイレに入っていても大丈夫です(いやトイレから玄関まで遠いから無理)。

そして、もう1個M5 ATOM Matrixを用意してMQTTにsubscribeしておき、トピックを受信したところでLEDを点滅させるようにしました。iPhoneの通知はいまいち遅いのですが、MQTTはほんと瞬時に通知が来ます。

素晴らしい。

耳が悪いと来客ほんとうに苦手で、コロナで「置き配」が一般化するまでは荷物を受け取り損なうことも多々ありました。宅配ボックスが一般化して、だいたい問題はなくなったのですが、最近、食事の支度が面倒で宅配弁当を取り始めたもので、手渡しで受け取る必要が生じました。それで今回、こんなものを作った次第です。

電子工作が家庭の役に立つことは滅多にないのですが、役に立って嬉しいです ^ ^

2023年4月5日水曜日

インターフォンの改造

 私は聴覚障害者です。

不便なことはいろいろありますが……何が不便ってインターフォンが聞こえないんですよね。居間で補聴器をしていればきこえますが、仕事部屋に引っ込んでいるとまったく聞こえません。

最近のインターフォンはスマフォに通知が飛んだりするのですが、私の住んでいる安団地ではそんな気の利いたインターフォンはついてません。

というわけで、後付しました。光の点滅で知らせてくれれば把握できるからです。

最近Amazonなどで2000円ぐらいで売っている、電池のいらないインターフォンというやつです。ボタンの部分が発電機になっていて、その電力で電波を飛ばす方式ですね。昔、数万円しましたが、ずいぶん安くなったものです。

ワイヤレス チャイム 自動発電 電池不要

ただ、私が買ったやつは、音はでっかいのですが、光はごく弱く、よそ見をしているとわかりません。

ということで、改造しました。

まず分解調査

ケースを空けると、1枚の基板でAC100Vが直接基板にはいる方式です。危ないので、一応用心のために厚手のニトリル手袋をして作業します。

回路をたどっていくと、4.6V電源、3.3V電源、GND、あと着信すると点滅するLEDが見つかりました。点滅するLEDは、LEDそのものを取り外すと、普段4.6Vがかかって点灯しており、着信すると0 - 4.6Vの間で変化します。なので、これを取り出して外付けの大きいLEDを駆動することにします。

LED駆動回路

普段点灯していると困りますので、PNPの駆動回路を使って逆論理にします。トランジスタは手持ちの2SA1015です。

基板上のLEDから4.7Kの抵抗を通してベースにつなぎ、4.6V電源からエミッタにつなぎ、コレクタから27Ωの電流制限抵抗を通してパワーLEDのアノードへ、LEDのカソードはGNDとつなぎます。さらにトランジスタのベースとエミッタの間に10Kの抵抗を入れます。

電源装置を4.6Vにセットして、トランジスタのエミッタに+、LEDのカソードをーにつなぎます。そして、4.7Kの抵抗をGNDにつなぐとLEDが点灯し、4.6Vにつなぐと消灯します。

回路は狙い通り動いているようです。

インターフォンへの組み込み

まず写真で青く光っているLEDを取り外します。あとは、写真のように、4.6V、GND、LEDの駆動側(写真の回路だと右側)をつなぎます。なお、ケースの蓋に穴をあけておき、配線を通すのを忘れないように。

つないだあとは電源をいれて、意図したとおりに動作することを確認します。

引っ張ったりして切れたり思わぬところとつながるといけないので、はんだ付けした箇所などをホットボンドで覆っておきます。まぁ気休めですけどもね……。

あとは、子機と親機を取り付けます。

……取り付けるとお客さん来ないんですよね……。

宣伝

ちょっとした改造で便利になる家電、たくさんあります。「音しかでないアラームを光るようにしたい」「アラームだけでは目が覚めないので、いっそマッサージ機を枕の下にいれて、時間が来たら大振動を起こしてほしい」そんな楽しいご相談お待ち申し上げております。

マイコン応用製品の開発相談・製作受け付けます 事前相談で詳細見積作成+実際の開発製作のツーステップで対応!

2022年9月19日月曜日

コンセントに200V来てました(発覚編)

コンセントから電源を取ったらどうも動作がおかしい。

何処のご家庭にもあるテスターで電圧を測ってみたところ200V出てました。

そういえば買ったばかりの布団乾燥機が壊れたことがありました。Macやシーリングライトは200V対応なので問題なかった様子。

昨年引っ越した時に200Vのエアコンを取り付けたのですが、その業者が犯人ですね。アート引越センターが仲介した業者です。

とりあえず全部のコンセントからプラグを引き抜きました。

電気工事業者の連絡先は残っていないので、まずアート引越センターのクレーム窓口に連絡を入れました。

2022年7月23日土曜日

太陽電池駆動装置をサクッと作る

本格稼働前に防水ボックス作らないと……

今日は簡単な電子工作を一つ。


  「ベランダのカメ水槽に太陽電池駆動フィルターを付ける」

です。

……工作以前ですね。

うちのベランダにはコンセントがないし、サッシの隙間を通すのもイヤなので、

  太陽電池→コンディショナー→インバーター→カメ用フィルター

という構成で、作りました。コンディショナーは鉛蓄電池でバックアップしています。全部秋月電子通商で揃います。届いたものを配線してベランダに設置するだけです。太陽電池は定格12W、バッテリは12V 7.2Ah、カメ用フィルターは5W程度らしいので、8時間晴れていれば17時間ぐらい動いてくれます。夜は止まっていて欲しいので、十分です。

これでカメの水換え頻度を減らせると良いのですが。

太陽電池:M-08233
コンディショナー:M-06167(太陽電池、バッテリー、インバーターを制御)
シガーライター型インバーター:M-02998(12VからAC100Vを作ります)
シガーソケット:C-10622(上のインバーターは安いけど自動車用なので)
バッテリー:B-04961

インバーターが擬似正弦波出力なのでちょっと心配でしたが、幸いフィルターに使われているのはやっすいポンプなので問題なく動作しました(DCブラシレスモーターなどだとうまく動かない場合があります)。

シガーソケットには太い導線をがっつりはんだ付けして、その上から古河電工のエフコテープ1号, 2号でしっかり保護しました。1号は自己融着型でしっかり巻いて固めると粘土のようにカタマリになります。2号をその上に巻いて保護しますが、ビニールテープのようにノリでベタベタになることがないそうです(Twitterで教えてくださった方、ありがとうございました)。

他にファストン端子、電線、太陽電池を支えるあれこれ、はんだ付け……などが必要です。なおバッテリーは大電流を取り出せるので取り扱いに注意が必要です。インバーターも小さいながらもAC100Vを出力するので、それなりに危険です。

こういうものが欲しいけど市販品はフィットしないという方、どうぞお気軽にご相談ください。

なお、カメ用のフィルターには「水作 タートルフィルター L2」を買いました。私が小学生の頃、こういうペット用品は死ぬほど高かったんですが……安くなりましたね。

動かしてみたら結構音がデカイので、ご近所迷惑にならないよう夜は停止するタイマーを設置しようと思います。

LTC3118のVcc出力について


デュアル入力昇降圧DCDCのLTC3118にはVccという3.8Vの出力端子があり内部用に定電圧化されています。引っ張れる電流は、Vin>6V で60mAとのこと。


Voutが12Vのときにマイコン用電源を別に用意するのは面倒なので、どのぐらい使えるかちょっと調べてみました。

Vin1-Run1, Vin2-Run2に別々の電源を接続して、モードをV1優先モードと理想ダイオードモードに切り替えてみます。都合4パターンですね。

結果として、モードに関わらずどちらかが生きている状態(=Run xが有効電圧を越えている)ならば、3.8Vは常に出力されます。Vin xに十分な電圧がかかっていてもRun xが低ければ、Voutも3.8Vも出力されません。

まぁ当たり前の結果ですね……実は、そういう判断をするための内部回路を生かしておくために、モード設定やRun xに関わらず、Voutは出なくてもVccは出てくれるんじゃないかと少し期待してました。

そこまで世の中甘くないっす……

まぁでも3.8V 60mAならESP32は無理としても動くCPUたくさんあるので、なかなか便利です。Run xにはVinを分圧した電圧を入れられるので、例えばバッテリの最低放電電圧にしておけば過放電を防止できます(ただRun xには0.2uA流れるのと分圧抵抗での消費電流には要注意)。薄曇りのときに太陽電池が中途半端に電圧を出してきてON/OFFを繰り返すような事態もさけられます。

入力に理想ダイオードがついている2入力DCDCというユニークなLTC3118。今後とも使っていこうと思います。

ストロベリー・リナックスさんのモジュールならすぐ使えます。
データーシートはこちらです(日本語版は参考程度に)。

2022年5月12日木曜日

PanaVise 3度目の正直?

 最初に買ったプリント基板作業用ホルダーはでかすぎ、次に買ったやつはサイズはいいけど作業性が悪すぎ適用範囲も狭すぎる。

PanaVise導入しました。

その後もいろいろ……PanaVise以外のも含めるとここには書いてないけど軽く10個は買ったり作ってますね。

理想のハンダ付け作業台を求めて

新しいハンダ付け作業台(またか)

PanaViseは角度を付けた作業をする時には良いんですが、水平の状態で作業するときがほとんどなのでだいたいこれを使っていて、


裏側にはんだ付けする際に部品の高さを避けたい時にはこっちを使っています。PCBiteすごく良いんですが高さがあるのでテーブルから離れてしまいます。顕微鏡見ながらだと背筋が伸びます。

ということで「PanaViseは帯に短し襷に長しじゃのお」と仕舞ってあったんですが、1番めのメカニズムに近いものを2番めのサイズにした、という体の製品が出たので、買ってみました。

左が旧、右が新しい220です。


左は万力みたいなものなので、ダイヤルを延々とぐるぐるぐるぐる回さないと駄目なんですが、右の新しいのはレール上を移動するだけ。広がらないようにロックされるので、基板をセットして左右からグッと狭めて、レバーを回転させればバネでロックされます。

標準のベースはあんまり可動域が広くない&軽いので、左右のベースを入れ替えます。

こんな感じで斜めにして作業するのに良さげ。

まぁベースの底がただの金属板でつるつる滑りまくるので、滑り止めの弱粘着シートでも貼ってやろうかと思います。PanaViseには吸盤タイプのベースもありますが、うち木の机なので吸盤ベースすぐ剥がれちゃうのよね。

■コメント欄について■

ご返事遅くなって申し訳ありません。なぜかコメント欄にコメントを書き込めなくなってしまったので、こちらでご返事します。

StickVise、素晴らしいですね! コンパクトで適度に重さがあり、さくさく扱えて邪魔にあらず。おもさず2つ目を買ってしまいました。日本よりAmazon.comの方が安い買ったので、本体一つと部品を下から押さえる治具、それと交換用の耐熱パッドで10,724円でした。

素晴らしい道具をご紹介くださってありがとうございます!

2022年5月10日火曜日

抵抗の小分け

 よく使うチップ抵抗、MLCCはこんな感じで100均一の「旅行用クリーム小分け容器」に入れてます。最初左のでかいのに入れてたんですが引き出しがいっぱいになったので右の小さいのに順次更新中です。



便利なんですが……100均ってモデルチャンジが激しいというか売り切れたらそれまでの商品が多いので、なかなか同じものを買い足すことができません。

「そういえば皮膚科でもらう軟膏の入れ物、あれならモデルチェンジしないかも」

と思って探したら、出てきました。

あれ、軟膏壺っていうんですね。しぶいわぁ。

UG軟膏壺 PP(ポリプロピレン)製

2022年4月15日金曜日

M5Stack Basic上(ESP32)のinterruptで大苦戦

ご無沙汰しております。

interruptを使って、PWM入力のデューティー比を計測するという簡単なプログラムでハマりました。

IRAM_ATTRとかvolatileとか、Serial, delayを使わない、なんてのは当然やってます。でも、

  • Interrupt wdt timeout on CPU1 
  • LoadProhibited
  • Coprocessor exception

でrestartしちゃう。M5関連のコードを外してESP32 DevKitで動かしたり、structで定義していたものを単純変数に置き換えたり、メインループで使っているSoftwareSerialをHardwareSerialに変えてみたり。

何をやっても駄目。

最終的に動いたのですが……

対策は……浮動小数点を使わない……でした。

わけがわからないよ……。

2022年2月28日月曜日

M5 Atomなどのボタンの長押し

■ボタンの長押し判定■

 M5 Atom Btn 長押し……などでググってもそれらしい関数などがでてこないから、自分で実装してました。

「押された時刻(millis())を保存しといてぐるぐるループをまわりつつ、設定秒数を過ぎたらランプの色を変えて、ボタンが離された時に必要な処理を開始する」なんてやつ。

そんなプリミティブなコード、TK-80以来書いてないぞ(誇張

途中まで書いてて、ボタンのモードについて調べてたら……出ました。

boolean M5.Btn.pressedFor(<ミリ秒>)

ってのがあるんですね……関数一発じゃないですか……。

■それにしても■

それにしても、こんなのわざわざブログにするほどのことではありません。でも……ググって上位に出てくる作例があまりにも酷いのです。

5秒の長押しを検知したいとするでしょ?

「wasPressedだったらdelay(5000)経過後まだ押されていたら長押しと判断する」

っていうコードが出てきちゃう……。

それがあちこちでコピーされてる。同じアルゴリズムのサンプルを3箇所ぐらいで見たぞ。同じ人のブログなのかもしれないけど。

おにいさん……ループをそんなに止めたらいかんですよ。