2017年3月31日金曜日

ESP8266のanalogWrite、使用上の注意


ESP8266 / ESP-WROOM-02のanalogWriteでおかしな現象に遭遇しました。回避策も合わせてご紹介します。

■複数analogWrite同時出力でちらつく■

Power LEDをドライバに接続して「じわーっと明るくする」制御をしていたところ、「じわー」のところでちらつく現象が発生しました。調べてみると
  • analogWriteの値を1ch変えただけではちらつかない
  • 2ch以上同時に変えるとちらつく

ことがわかりました。ここにたどり着くまで大変でした……。OTA処理で時間を取られているんじゃないか、温度センサーの読み込みでひっかかるんじゃないか、もしかしてPower LEDドライバに問題があるんじゃないか……。「じわー」のプログラムに問題があるんじゃないか……。など。

以下切り分けのためのコードです。ご覧の通り、単純に値を整数で加算していくので、ちらつくはずないですが、激しくチラつきます。


ここで「もしかして、analogWriteをほぼ同時に複数書き換えると問題が生じるのではないか?」と思い至りました。以前、analogWriteのソースを調べたことがあったのですが、通常のカウンターとコンパレータではなく結構めんどうくさい割り込み処理を使って全部ソフトで処理されていましたので。書き換えの時に処理が追いつかない等でパルス幅が乱れるのだと思います。

で、書き換えたのがこちらです。


問題なく動作します。ESP8288 / ESP-WROOM-02のanalogWriteを複数同時に書き換えるときにはご注意ください。

■CM■

ここで使用しているPower LEDドライバ基板、スイッチサイエンスのESPrや弊社Board1をそのまま挿して、300mA x 3chのLEDを制御できます。オンボードの温度センサーを使って、基板の温度上昇を検知して出力を下げる、なんてこともできます。

どぞよろしく▶Cap1 - LED Drivers for ESP

2017年3月22日水曜日

アマゾンの安いセラミックコンデンサセット

アマゾンprimeで今日届く抵抗サンプルキットの中から日本語がまともなところ(笑)を選びます。写真見て湿気通しそうなパッケージだなとは思ったんですが、他のも似たようなもんだし、ともかく急遽必要だったので注文。

予定通り届いて、とりあえず用途には間に合ったのですが、どうするこれw


湿気を通しそうなパッケージ+汚れたピンで、うかつにストックしておくと何か災いをもたらさないか心配なレベルなんですが、貧乏性の私は「もったいないおばけ」が怖い。

とりあえず、以前チップ抵抗を整理しようと思って買ってあった100均の小物入れに詰め直しました。5段重ねで108円。


小物入れが足りなくなってしまったので10pF以下はまた後日。

2017年3月21日火曜日

我が家では、

  1. ベランダ放置飼い状態のミドリガメ(巨大・23歳☓2)がエサを催促してくる
  2. 炊事手袋なしでも手荒れしない(湿度が上がってきて)
  3. 居間の湿度計がLow Limit以外の値を表示する
  4. 家の前の桜がなんとなくピンクっぽくなる

と、だいたい春です。なお上記1-4はだいたい同じ週に置きます。

ちなみにミドリガメは11月中旬からこの時期までエサを食べません。甲羅干しのために陸にあがったり水に戻る程度の活動はしているのですが……なんという低代謝。

2017年3月18日土曜日

ESP32開発ボードをMacで


シリコンラボのUSBシリアルドライバが必要です。ああこのUSBシリアルのドライバがまともに作られていますように(祈

ESP32開発ボードを繋いでからターミナルで ls /dev/tty.SLAB* とタイプして /dev/tty.SLAB_USBtoUART と出てくればOKです。出なかったら再起動してみましょう。macOS Sierraは出来が悪くて困ったもんです。

■まずBASICで遊ぶ■

IO12をプルアップしてリセットするとBASICモードになります。ESP32開発ボードのようにブレッドボードに差しにくくかつ最初からピンヘッダーがついているボードでちょっとプルアップする場合、「抵抗入りジャンパーワイヤー」を作っておくと便利です。

ともかくIO12と3v3を数KΩの抵抗でつないでから、USBを接続します。ターミナル.appで screen /dev/tty.SLAB_USBtoUART 115200 とターミナルコマンドを起動します。滝のようにbootメッセージが出てビビりますが、ここでenterキーを押します。すると
Falling back to built-in command interpreter.
OK
>
>

となります。 print 10+10<enter>で

OK
>
>print 10+10
20

こうです。おお懐かしい。

昔、TRS-80だったかPC-8001ではfor nextループ1000回で1-2秒だったと思います。今時の240Mhz CPUはどんなもんかと思ったら

>list
10 FOR I=1 TO 100000
20 NEXT I
OK
>run
OK
>

100,000まで2秒でした。クロック比通りですね。deleteキー効かないし、細かい関数とかがどういう実装になっているか知らないし、まぁ、あとでまたゆっくり遊ぶことにします。うーむ、BASICは私が調べ物なしに書ける唯一の言語かもしれないorz

screenから抜けるにはctrl+Aを押してからKyです。プルアップ抵抗の回路は外しておきましょう。

■ESP-IDF■

せっかくのdual core、ArduinoじゃもったいないのでここはESP-IDFでいきます。ターミナルでの作業です。もうここにある通り。

なお、Step 0のInstall pyserialのところ sudo pip install pyserial で黄色い字でエラーメッセージっぽいのが出た場合には sudo -H pip install pyserialでどぞ。

Step 1でパスを追加していますが、ついでにStep 4に出てくる export IDF_PATH=~/esp/esp-idf も追加しておきます。

Step 1のあとに書いてあるAlternative Step 1は飛ばして、Step 2まで。Step 3ではテンプレートをmyappって名前のディレクトリ作ってダウンロードしていますが、ここで作られるテンプレートはwifi接続するやつなのでwifiの設定などがめんどくさいので、既成のLチカで試します。cd ~/esp/esp-idf/examples/get-started/blinkでディレクトリを移動します。ここのmain/blink.cがソースです。

Step 4のmakeconfigではSerial flasher config > Default serial portにさっきのシリアルポート名 /dev/tty.SLAB_USBtoUART を設定し、ついでDefault baud rateを912600にします。blink.cを読むと、make manuconfigでGPIOポートを指定できる、と書いてあるので、Example Configuration > Blink GPIO numberを見てみると5になっています。

ので、GPIO5 ▶ LEDのアノード(長い方)、LEDのカソード(短い方)▶ 抵抗(200-2kΩぐらい) ▶ GNDと接続します。

お待たせしました。make flashでbuild & flash & runです。

ゆっくりLEDが点灯すれば出来上がりです。コマンド一発でbuild & flashできるのはいいですね。

さて、何を作ろうか。

あると便利な抵抗入りジャンパワイヤー


安いフラットケーブル型のオス-メスジャンパワイヤーと次第に使用頻度の下がっているピン型抵抗器を使って、抵抗入りジャンパーワイヤーを作ります。

材料は安いジャンパーワイヤー、数kΩ(とか書いてある記事をみて初心者のころは悩んだものでした。ほんと1-10kΩなんでも良いんですが、ここは余っていた5.1kΩを使いました)の抵抗器、スミチューブ(熱収縮チューブ)、ハンダ少々です。


ジャンパーワイヤーを半分に切って、剥いて、通して(熱収縮チューブを通す。これを忘れると大惨事)、はんだ付けして、縮める(熱収縮チューブ)だけです。抵抗のリードも10mmぐらいに切った方が作業しやすいです。

オスメス、オスオス、メスメスを適当に作っておきます。

特にメスメスはESP32開発ボードのように、幅が広くてブレッドボードで使いにくい癖に最初からピンヘッダーが取り付けてある余計なお世話ボードでちょっとプルアップ/プルダウンしたいという時に大変便利ですw

2017年3月17日金曜日

ESPr / Board1用 Power LED Driver発売です


またヘンな基板を発売してしまいましたw

スイッチサイエンス社ESPr / 弊社Board1と重ねて使えるLEDドライバ基板です。LEDを300mAで定電流駆動します。スイッチング動作なので効率良いです。24VのACアダプタを使用する場合、Vf合計で19vまでのLEDを直列に接続できます。

3chあるのでパワーRGB LEDを接続してWiFi対応無段階照明コントローラとしてお使いください。

基板上のコネクタ穴はESPr / Board1に合わせてありますが、直接配線すればArduinoでも使えます。

ボード上には温度センサーSTTS751も載せてありますので、温度監視もできます。Vf合計値と電源電圧の差が大きいと発熱も大きくなるので気をつけてください。発熱といえば、省エネルギーというイメージとは裏腹にパワーLEDの発熱も凄いです。必ずしっかりした放熱器に取り付けて使用しましょう。300mA x RGBだと数十秒で燃えます(経験者語)。

なお、商品にはブロックターミナル、ESPr、Board1、ピンソケット、LED、ACアダプタ、ジャンパワイヤなどは附属しておりません。別途お買い求めください。

商品サポートページはこちらです。

2017年3月15日水曜日

組立検査・品質管理用手袋


ときどきメーカー(笑)の倉橋でございます。

メーカーである以上は出荷作業するわけですが、家内制手工業での大きな問題はホコリと手脂の付着ではないかと思います。ニトリル手袋で作業していたのですが、ゴム手袋みたいなもんなので、蒸れるし、セロテープを扱おうとするとべったりくっついてしまってどうにもなりません。軍手は論外でホコリ発生源にしかなりません。

「そういえば(本当の)メーカーさんはどうしているんだろう?」と思って、調べてみたら・・・あるんですね、「組立検査・品質管理用手袋」というものが。

いやー、これが素晴らしいです。ナイロン製ということでペタペタ肌に張り付いたらやだなと思っていたんですが、綿みたいな肌触りでさらさらです。長時間着用しても蒸れません。薄手で伸縮性があるので、はんだ付け作業などでも素手と同様に作業できます。

そして、拍手しても軍手みたいにホコリが立たないのはもちろんですが、それどころかセロテープ(メンディングテープ)の接着面に直接触っても糸くずやホコリが残りません。

手袋をした指でぐりぐり。赤いのは朱肉w

ホコリ見えない。

それはともかく、テープ台が汚いな。掃除しました。

今までニトリル手袋での苦労はなんだったのか、ってレベルです。なお、ニトリル手袋で作業しているとどうしても蒸れ蒸れになるのですが、この組立検査・品質管理用手袋の上にニトリル手袋をすると蒸れません。お薦めです。

2017年3月4日土曜日

Salesforceで忙しい

本業というかサラリーマン業でSalesforceアプリ書いてます。

業務報告などのアプリなんですが、圧倒的多数の社員をノーアカウントでサポートするため、Sitesでログインしcookieでのセッション保持あたりを自前で実装してUserオブジェクトなしで動かしています(なお、こういう使い方に問題がないことは、営業担当氏に確認済です)。

いやー。SalesforceというかApex / Visualforceでガチにアプリを書くのって5年ぶりぐらいだったんですが、癖ありますねぇ・・・。

ご存知ガバナーはある程度折込済ですし、Visualforceのrender as pdfのクソっぷりも相変わらずなんですが、とりわけSitesだとChromeのjava scriptコンソールに呪文を唱えないとログ吐いてくれないのでデバッグにものすごく苦労します。当初はエラーメッセージすら出なくて、散々ソースを読んだ挙句SOQLのfetch漏れが原因だったりすると頭を抱えたものでした。

その後、Salesforceにログインした上でSitesを呼べるようにしてログもメッセージも見られるようになったのですが・・・それでもApex Batchから行番号なしのno fetchエラーが出て箇所を特定するのに小一時間潰したり、Batch抜けた時点で存在しているしそもそもBatch内で削除していないレコードなのに「レコードが存在しないのでアップデートできねえよw」ってエラーが出てきたりで頭抱えること多いです(IDを文字列として保存しといてfetchしなおしたらエラー出なくなった)。

とかSalesforce開発できそうなことを書いちゃうとまたLinkedからopportunityな話が来てしまうので愚痴はこの辺でw

私がやりたいのはIoTとかPlay! FrameworkとかSwiftですからっ

とフォントを大にして言いたい。

それにしてもRPi1114売れないな。消費電流100mAとか誤情報を書かれてしまって生きているのが辛い(実際はLED点灯時で最大17mA、消灯時で15mA程度)。