2018年8月29日水曜日

鳩対策は終わらない:1


ベランダについては、電撃柵などの対策により、ようやく来なくなりました。

が、共同廊下側にまた来るようになりました。公団でテグスを張ったり、私がサーボで追い払ったり、止まらないようにカバーをつけたりして、2ヶ月ぐらいは来なかったのですが。

一度来るようになると、追い払っても毎朝来ます。そして大量のフンを残します。

小手調べとして、市販のセンサーライトを設置しました。PIRを使ったもので、生物が近づくとライトが点きます。ただ、明るいところでは点灯しないためのCdSセンサーがついているので、センサーの上にアルミ箔を貼って遮光してあります。ご覧の通りの2眼式?で目っぽく見えるのが味噌。かな。

昨日設置して、とりあえず今朝は糞がありませんでした。それで喜んでいたら、その後ジョギングから戻ったツマ「いや、普通に来てたよ」とのことorz

で、プランターなど「いかにも巣を作りたくなりそうなエリア」の近くにセンサーライトを移動しました。その翌朝、糞もないし、鳩も見かけませんでした。

今のところは。

しかし鳩が一度その場所に執着してしまうと、結局は物理的に排除しないとダメ(殺すのではなく防鳥ネットなどで入れないようにするという意味ですよ>鳥獣保護法)、というのが結論ではありますが、共同の廊下なのでそうもいきません。

なので、新しいガジェットに慣れたら次のものを用意するのではなく、なれるヒマを与えず次々と用意する、ってのはどうだろう。

ということで、いろいろ考えています。基本になるのは、ラズパイとカメラを使った顔認識+PIR。鳩を認識して、ってのができれば良いのですが、学習させている間に廊下が糞だらけになってしまうので…とりあえず「何か生物が来ている」から「顔を認識したから人だわ」を引き算すれば、「人間以外の生物が来ている」と判断できるんではないかと。

後ろ向きはどうする?ってのはありますが、普通の人は顔をこっちに向けて歩いてくるので、去っていく時間に余裕を見ておけばまぁ大丈夫かなーと。

で、アクチュエーター?部分ですが:
  • プロジェクタで猛禽類の映像を投影する
  • 電池駆動プラモに最小限の改造を加えて生物を検知するとぐるぐる走り回るようなものを作る
  • 蛇のおもちゃを複数のウインチ+モーターでつってSkycamならぬSkySnakeで驚かす
  • めんどくさいからルンバのパチモノ導入
  • いっそトイドローン飛ばして驚かしたらいいんじゃね
  • 空飛ぶドラえもんとか
  • 忌避剤スプレーをセンサー検知で噴霧
  • ISD1820にPIRつないでカラスの鳴き声を流す
  • ESP32にスピーカーつないで、動きを検知したらFlash内の音を再生する。Flash内の音は適宜http server経由で入れ替えができるようにする

最後のはうっかり途中までソースを書いてしまったw

「ボタンを押すと上がっていく」程度のトイヘリコプター(「空飛ぶドラえもん」など)に紐つけて飛ばすってのが私のヘボ技術力と予算と鳩への脅威という点で良さげだったのですが、ちょうど良いトイヘリが見つからず。

というわけで、続きます。

2018年10月15日
久しぶりに糞が落ちていました。糞を片付けてからその正面にPIRセンサーライトを1つ追加しました。なにもしないと糞を発見した後はエスカレートする一方(産卵期が終わると収束)なのですが、さて今回は防げるかどうか。

2018年10月30日
糞が落ちていました。ので、自作のPIRセンサーライト(2個のRGB LEDを様々なパターンで点滅させまくる)を追加しました。

2018年11月5日
ここまでPIRのGND浮き、風による誤検知、風邪寝込みなどありましたが特に糞はなし。ですが今朝方2個小さな糞が落ちているのを見つけました。産卵期特有の茶色いものですが、このまま悪化しないことを祈ります…。ただ、これまでの被害パターンと比べれば、格段に糞は少ないです。設置前は写真をここに貼れないレベルでしたので…。

2018年11月9日
ごく小さな糞が2個。

2018年8月22日水曜日

ESP-IDF 3.2で一度WiFi接続に失敗すると二度と接続できない

という現象が出てしまい、頭を抱えてました。
  • v3.2で一度WiFi接続に失敗するとそのボードは二度と WiFiに接続できない。ただし、一度3.0で接続した直後は正しいStationには接続できる。
  • v3.0ではこの現象はでない
  • v3.2でもごく単純なアプリでは出ないが、複数threadにまたがって処理するような規模のアプリで出る。
というWiFiマイコンESP32にとっては致命的な現象。そのSSIDが確かに存在しているのにエラーとして「WL_NO_SSID_AVAIL」が返ってくる、というのが特徴です。

ArdunoをESP-IDFのコンポーネントとして使っていて、WiFi接続にはArduinoのWiFiクラスを使っている、というのが影響しているのでしょうか。

結果として、以下のコードで解決しました。失敗したらesp_wifi_restore()を実行する、だけです。

ググって、同様のエラーにハマっている人がいましたが、どうも解決できていないようでしたので、記事にまとめました。I'm sorry this message is in Japanese, but I hope my sample code below may help you!

2018年8月2日木曜日

なんちゃって冷やし中華

重曹入れたお湯でパスタ茹でると中華麺っぽくなる。

ならば、冷やし中華にもなるんではないか?と思って研究してみました。

  1. お湯一リットルに塩10gと重曹10gをいれて、パスタをゆでる。細めのパスタはアルデンテ+1分、太めのものは+2-3分。
  2. ザルにあげてよく水洗いする。手で揉み洗いする感じ。粗熱をとったあと氷水で締めると尚良
  3. ザルで水を切る。大事なのは、手のひらでザルにぎゅううう、と押し付けて、水を絞り出すこと。すべての冷たい麺はこれで味がぼやけなくなります。
  4. 冷やし中華たれやバンバンジーたれなどで適当に味をつけて食う

結果、ちょっと沖縄ソバにも似たプツプツした歯ごたえの麺になります。

なお、普通冷製のパスタは細い麺を使いますが、重曹でゆでると太いのでも大丈夫。先祖返りっぽいですが、ダイスカットのトマトと刻んだバジルか青じそもしくは青じそ味のドレッシングなどかけても夏の昼食として美味しゅうございます。

2018年7月16日月曜日

USBケーブル直結ジャンパーワイヤ



何を作っていいか思いつかない。そんなときに一本作っておくと便利なケーブルがこちらです。

安いUSBケーブルをぶった切りの電源線にオスのジャンパーを圧着し熱収縮チューブとカプトンで覆っただけのものです。

USBからブレッドボードに電源を供給したいとき、とても楽に使えます。

なお、使うときには先にブレッドボード側に挿しておいてから、USBハブなどに接続すること。ショートさせると大変なことになるので。

2018年7月13日金曜日

超音波カッター入手

厚いダンボールにほとんど力を入れないでスーッと刃が入っていく

Kickstarterと私の相性が非常に悪いことは一部で有名ですが、珍しくほぼオンタイムでブツが届きました。

さっそく開封して使ってみたら…いやーダンボールがトコロテンみたいに切れます! 普通のデザインナイフでコピー用紙を切るよりも手応えがない。手応えなさすぎてかえって難しいレベルです。ケーブルが結構太くて存在感があるので、取り回しを気にしながらかっちりホールドするのは慣れが必要かもしれないです。

ただ、プラスチックに関しては、スッと刃が入ったり、まったく動かなくなってしまったりで、少し慣れが必要な感じです。とりあえずフル充電して、練習しますわ。

以下開封写真。

おまけの防刃グローブ付き

開封のワクワク感は異常www


中身。あれ?

welcome back to Japan !!

こちらこそ。 

2018年5月18日金曜日

C基板用アクリル板


秋月のユニバーサル基板はサイズごとに名前がついてシリーズ化されてます。

そのうち、C基板はサイズが手頃なので、よく使います。少し前に基板にフィットするサイズのアクリル板が発売されていたので、使ってみました。

バラックなのに、いい感じに見えますw



これは空気質(TVOC:総揮発性有機化合物)とCO2濃度センサーのCCS811と0.96インチOLEDをESP32 Dev Kitで制御しているものです。友達に頼まれて作りました。

CO2、締め切って眠り、起床一番での数値は4000ppmを越えていました。あまり風がないせいか換気してもせいぜい1000ppm程度。屋外に出ても同程度でした。その後風向きが変わって大気レベルに近い450ppmまで下がりました。

前にも書きましたけど…換気は大事っすね…。

あと、当たり前ですがガス排気筒の近くは恐ろしい値になりますw

2018年5月13日日曜日

LTEモジュールでえらい目に会った



■トラブル発生■

「SIM7500JE-B2BというLTEモジュールをマイコンと接続する基板作って」という依頼を受けて試作したのですが…いやー苦労しました。

触ったことがないモジュールなので、仕様書の推奨回路の通りで作ってみたのですが…動きません。Power Key信号を送ると起動するんですが、シリアルに"AT\r\n"を送ってもOKが帰ってきません。

SIM7500JEのロジック回路は1.8V、マイコンは5Vなのでレベルシフタが必要です。レベルシフタにはTIのTXB0108RGYRが推奨されていたので、5Vでも対応可能なことを確認した上で使用しました。

信号を見ると、SIM7500JEからのLOW出力が0.4Vぐらいあります。Vthとしては微妙ってか、TXB0108RGYR的にはNG。仕様書には入力側のVL/VHは書いてあるんですが、出力については書いてないんですよね…。

■対策1-トランジスタレベルシフト回路■

結局、SIM7500JEからの出力には、昔からあるトランジスタ1個の非反転レベルシフト回路で処理しました。Arduinoで動作確認OK。

…まぁ、これで終われば半日仕事だったんですが、この後、ちょっと特殊なマイコンを使ったら動作せず。

■対策2-トランジスタとインバーター■

結局、昔からあるトランジスタ1個の反転型レベルシフト回路で1.8 → 5.0vに変換してから、インバーターで反転しなおして、Arduinoでも特殊マイコンでもOKになりました。作業時間合計11時間…バイトなので残業代でませんw

■教訓■

  1. 仕様書にVL, VHなどのごく基本的な資料すら乗っていないチップは使わない。
  2. 推奨回路など寸毫たりとも信じてはならない。そもそも双方向のレベルシフト回路いらねえじゃん、って話。
  3. 「テストポイントを用意しておくかな…でも、こんな基本的な信号で問題は出ないだろう」という判断は甘い。常に甘い。試作は全ラインを引っ張り出すぐらいの勢いが必要。でないと以下のような苦労をします(笑)。

■作業風景■

プリント基板のTxラインをUSB顕微鏡で見ながらデザインナイフでカットして、同じく顕微鏡を見ながら0.5mmピッチのコネクタからスズメッキ線で引き出しました。USB顕微鏡を買ったばかりの頃に試してみたらぜんぜんうまく出来なくて諦めていたのですが、最近背に腹は代えられぬ事態が多く、使っていたら馴れてきました。

やっぱり人間必要に迫られると適応するものです。

コツは、
  1. USB顕微鏡だと立体感がなくて上下方向の動きはよくわからないので…まず裸眼で基板近くまでコテ先やカッターを移動し、それから拡大された画面を見ながら作業する。
  2. USB顕微鏡が動かないように机にしっかり固定する
  3. 顕微鏡のステージに小指を置いて作業する
って感じでしょうか。0603(mm)のチップコンデンサなどで練習するとよろしいです。

また、写真のようなハンダ付けでは、
  1. コテがあたったら溶けてしまいそうな部品にカプトンテープを貼って保護する。その際、テープをピッタリと密着させるのではなく、熱が伝わらないように隙間を開けつつ何枚か貼ること。カプトンテープは熱伝導率が高いのでぴったり貼ると中の物を保護できません。
  2. マスキングテープで誤差0.5mmぐらいの位置にスズメッキ線を仮止めする。基板のパターンとマスクに段差があるので、この段階でピッタリの位置に置くのは難しいです。なので、あくまで仮止め。 
  3. USB顕微鏡をみながらピンセットで正しい位置に完全に合わせてから、マスキングテープをしっかり貼る。最後の0.1mm以下の調整は、スズメッキ線に直接さわるよりスズメッキ線の横からマスキングテープを押さえて調整する方が良いです。 
  4. USB顕微鏡をみながらハンダ付け箇所にクリームハンダを塗る。普段使っているシリンジだと針が太い/細い針だとクリームが出てこないので、マイナスのマイクロドライバーの先にちょこっとつけてから、左にドライバー、右手にピンセットを持って、蟹が食事をするような気分で目的の箇所にハンダを置きます。 
  5. あとはハンダゴテを目的の箇所に当てるだけ 
です。

【追記】カプトンテープはぴったり貼らないでふわっと隙間をもたせて何枚か貼ると良いとのアドバイスをいただき、記事に反映させました。ご教示いただきありがとうございますm(_ _)m【追記終わり】

島津とかモノタロウの立体顕微鏡試してみたいんですが、お試しで買って失敗したらかなり辛いお値段。私が買えるような安いやつはレンタルなんてやってないですし。お友達の歯科技工士さんは「工場落ちのニコンの中古最高」って言ってました。

うーん。でも買うんだろうなぁ…きっと…。

2018年5月11日金曜日

小手先クリーナーを掃除した衝撃映像がこちらです



4年分ぐらいでしょうか。こういう鉛を再利用してくれるところはないだろか。

でも純度低いしなぁ…。

ESP32 LEDCのちょっとめんどくさい話


ledcはESP32のLED用高精度PWM機能です。通常のPWMだけでなく、ledc_set_fade_with_timeとledc_fade_startを使えば自動的に指定秒数でfadeしてくれて大変便利。

使い方はだいたいこんな感じです。



なのですが、逆論理のLED(HIGHで消灯、LOWで点灯する回路)でちょっとハマりました。

通常消灯は
    ledc_set_duty(ledc_channel[ch].speed_mode, ledc_channel[ch].channel, 0);
    ledc_update_duty(ledc_channel[ch].speed_mode, ledc_channel[ch].channel);
で良いのですが、逆なので、
    ledc_set_duty(ledc_channel[ch].speed_mode, ledc_channel[ch].channel, 1023);
    ledc_update_duty(ledc_channel[ch].speed_mode, ledc_channel[ch].channel);
と書いてみたらほんのり点灯してます。細い細いパルスが出てるのですね。

1023を1024に書き換えたら治りました。

じゃあ、ってんで、fadeを
    ledc_set_fade_with_time(ledc_channel[ch].speed_mode,
                                ledc_channel[ch].channel, 1024, BlinkDuration);
    ledc_fade_start(ledc_channel[ch].speed_mode,
                                ledc_channel[ch].channel, LEDC_FADE_NO_WAIT);
にしてみたら…StackOverflowくらいましたw 【追記2018年9月7日:esp-idf 3.2では治っています。1024でもエラーにならずきっちり消灯します!】

しょうがないので、fadeは1023を使いましたけども…細いパルスが残っているのか完全には消えてくれません。演出で処理しますけども…やぁねぇ。

写真は、Kickstarterで入手したハンダ付け作業治具PCBite 2.0を使って基板を空中に浮かせている図。さすがに製品を晒すわけにはいかないのでダミーです。ケースなしでテストしているとショートの危険性があるけど、テープで止めたり剥がしたりするのも煩雑…ってんで、基板の端をバネ付きのクリップで挟んで磁石で灰皿に張り付いています。とても便利です。

クリップだけ追加注文しておけばよかったなぁ。SwitchScienceさんで扱ってくれないからし。

2018年5月9日水曜日

空気質+CO2センサー CCS811

空気質センサーとOLEDをESP32に接続し、Ambientで可視化しました。

Strawberry LinuxさんのCCS811モジュールとAdafruitさんのライブラリで何事もなく動作します。Adafruitさん、今度買うからね(AdaとSparkfunさんには購入ノルマを設定して時々お布施しています)。

ただ、ハマりポイントがいくつか。
  1. 電源、I2Cの他にReset(VDDへ)とWake(GNDへ)も接続しよう
  2. 基板裏のアドレス選択ジャンパをハンダ付けしよう(0 : 0x5A)
  3. I2CはGPIO21(SDA)とGPIO22(SCL)
これでサンプルコードは動きます。

さらに、OLEDに値を表示するようにしてみました。OLEDライブラリもCCS811ライブラリも初期化でWire.begin()呼んだりするので、初期化の順番が違うとCCS811がヘソを曲げます。この複数のライブラリが勝手にWire.begin呼び出す問題、なんとかならんですかね。どうせWireはオブジェクト一個なので、ライブラリを使うユーザが自主的に初期化すべし、の方がありがたいのですが…初心者保護でしょうがないのかなぁ…。

で、とりあえずCCS811から読んだ値をOLEDに表示できるようになった…と思ったら、途中で動作が不安定に。CCS811から値が返らなくなり、電源を切るかCCS811のRESET端子を一度GNDに落とさないと動いてくれません。I2Cの処理が干渉しているようで、それぞれの通信後にdelayを入れたら安定して動作するようになりました。あるある。

ついでにAmbientにデータを上げるようにしました。Ambientホント楽。

化学物質過敏症で困っている方に貸し出してしまったので写真はありません。いやー、歩きながらディスプレイ見ていると、時々すっごい値が出てきますね。ちょっと窓を閉めているとあっという間に1000ppmに達します。近くに手を置いただけで600ppmになったり。人間がどれだけ二酸化炭素を噴出しているかがわかります。

TVOCの最高値はとある喫煙室で、6000ppbを記録しました。おおおおお。

ってことで、ソースです。