WS2812Bのnewタイプがある話
■概要 |
光り物に欠かせない有名なLEDとなったWS2812Bは、実はチップが2種類あって困ったって話です。
具体的には、WS2812Bという品番なのに、なぜか点灯できない問題が発生するというもの。
そこで、いろいろ試して暫定ですが解決した話になります。
本来なら、WS2812Cとでもして欲しいくらいの修正だと個人的には思います。もし、同等の問題で困っている方の参考になれば幸いです。私た試した解決策は、一番最後にありますので、対策方法だけ知りたい方は、最後をご覧ください。
2018/3/5追加 残念ながらお相手の環境では点灯しなかったとの報告を受けました。もう少し調査が必要そうです。適当な抵抗の決め方が問題かもしれません。ご注意ください。 |
写真は、WS2812Bを使ったテープLEDです。良く見かけるタイプですね。
■経緯 |
何種類かこのNeoPixcel系を制御できるLEDコントローラを作ったことがあり、それをお使いの方から、全然光らないテープLEDがあるんだけど・・・とのことで、調べることになりました。当初は、単なる配線ミスと考えていたのですが、そんな単純なことではありませんでした。
※今回の主役?(笑)となるWS2812Bが搭載されたテープLEDです。これは防水タイプでシリコンでおおわれているので、写真がぼやけています。
※購入時のパッケージと思われるもの。ちゃんとWS2812Bと印刷されています。
■見た目の確認 |
本当に、この制御できないLEDは、WS2812Bなのでしょうか?これだけ有名になるとFake品?も考えられます。
マイクロスコープで、写真撮影し比較してみます。
左から順番に、WS2812B、SK6812、今回のLEDの3種類です。
左から順番に、WS2812B、SK6812、今回のLEDの3種類です。
違いが分かりますか?
少しマークを付けてみましょう。
少しマークを付けてみましょう。
品番 | 内容 |
WS2812B | LEDを制御するICが縦長に見えます。RGBのLED素子は〇の位置 |
SK6812 | ICは横長で正方形に近い。少し切り欠きのようなベタ?がある |
今回 | SK6812に似ているが、LED素子が左下に集約されている |
こんなLEDチップは、私の手持ちにありません。
軽く、Google先生にたずねてみるも答えは得られず、SNSに頼ることにします。
※@La_zlo さんからの情報提供。ありがとうございました!(Twitterからの画面キャプチャー)
https://blog.adafruit.com/2017/05/03/psa-the-ws2812b-rgb-led-has-been-revised-will-require-code-tweak/
どうやら、高速化のためにチップを新しくしたとのこと。既存のWS2812Bのデータタイミングと極力互換性を持たせたのだけど、RESETするタイミング(点灯するタイミング)は、いままで、50us以上Loと規定していたのを280us以上にしてくれとのこと。違いはそれぐらいで、そのまま使えるよ的な・・・
※いや、使えてないんですけど・・・
※いや、使えてないんですけど・・・
このWS2812B(名前を、"new WS2812B"と勝手に命名します。)のデータシートは、下記からダウンロードできます。
http://www.world-semi.com/DownLoadFile/108
http://www.world-semi.com/DownLoadFile/108
new WS2812Bの通信タイミングを抜粋するとこんな感じです。
確かに、これを見るとRESETが50usを要求していたのが280us以上になり、通信速度は幅が広くなり、あまり厳密な速度を求められなくなったように見えます。ちなみに下記が、今までのWS2812Bの通信タイミングです。
■タイミングの差 |
項目 | WS2812B | new WS2812B |
T0H | 250ns~550ns | 220~380ns |
T1L | 300ns~600ns | 220~420ns |
例えば、T0Hであれば、new WS2812Bは、220~380nsを要求していますが、WS2812Bは、400ns±150nsです。
最初、これが原因かとも思ったのですが、結論としてはこれは問題じゃないと思います。
なぜならば、前回の標準値400nsのままで動作していますし、new WS2812Bも明記はされていませんがある程度の許容幅があると思われます。
が!
あるドキュメントの存在を思い出し、試したところあっさり動き出しました。
■解決策 |
手持ちのドキュメントから抜粋してます。
※WS2811RGB_WS2812_manual.pdfというもの。
ここに、300とありますが、100Ω以下で十分かと思い、今回は47Ωを使ってます。
これは、推測なのですが、初回起動するときに通信パルス幅を測定してるのかなぁ?なんて思ってます。
そこに、ノイズが入るとタイミングが合わずに、以降のデータが無視されてしまう?(推測です)
これは、推測なのですが、初回起動するときに通信パルス幅を測定してるのかなぁ?なんて思ってます。
そこに、ノイズが入るとタイミングが合わずに、以降のデータが無視されてしまう?(推測です)
もし、マイコン(コントローラ)と、テープLEDを直結して動かないのであれば、騙されたと思って、少し小さい抵抗を入れると幸せになれるかもしれません。
ちょっと、なぜ?ってところまで追えてませんが、ひとまず動いたご報告まで。
もし、追加情報あればコメントお願いします。
もし、追加情報あればコメントお願いします。
WioLTEのボードで気になる点
■概要 |
次のVersionで改善されるといいなぁ。自分なりの工夫も書いているのでご参考になれば。
気になる点だけ書いていますが、簡単にクラウドにデータをアップロードできるし便利ですよ。
■1.ボードをマウントする穴にチップが接触する |
流石に、もう一つ穴を開ける訳にはいかないので、六角スペーサーを少しだけカットして取り付けしました。それでも強度は落ちてしまいますね。ほとんど基板を触らない場合は良いのですが、書き込むためにDFUモードへ移行しなければならず、裏のBOOTボタンとRESETを同時押しするので、そこそこ触ります。
しかも、ボタンの色が黒いですよね。これそこそこ重い(強い力を要する)ボタンなんですねぇ。
しかも、ボタンの色が黒いですよね。これそこそこ重い(強い力を要する)ボタンなんですねぇ。
■2.外部5V入力がUSBしかない |
※写真の左側です。約20cmのUSBケーブルです。
回りくどくなりましたが、ケーブルの不満ではなく、5Vを入力するのがmicro-USBポートしかないのです。
外部から、3.7Vを入力するリポ用の端子はあるのですが、5Vを入力できる端子が無く、USB以外の外部電源からボードへ電源供給することができません。もちろん安定化された5Vを入力する必要があるので、適当な電源繋いで壊されても・・・って思いがあったのか分かりませんが、私は3.7Vよりも5Vの外部端子が欲しかった。
仕方ないので、裏面のパットに出ているのでそこにはんだ付けして外部から5V供給するようにしてます。
以上の2点がここ2か月間くらい利用したボードの気になる点です。
■WioLTEについて |
https://soracom.connpass.com/
ハンズオンのテキストをこちらで見ることができます。
https://github.com/soracom/handson/wiki/Wio-LTE-%E3%83%8F%E3%83%B3%E3%82%BA%E3%82%AA%E3%83%B3
https://github.com/soracom/handson/wiki/Wio-LTE-%E3%83%8F%E3%83%B3%E3%82%BA%E3%82%AA%E3%83%B3
クラウドにアップロードできるIoTが手軽に体験できます。私も参加しましたが、疑問点も解決できて非常に良かったです。
需要あるかわかりませんが、STLファイルをダウンロードできるようにしておきますね。
XperiaZ1の電池交換したが充電できない!
■概要 |
■引退したXperia Z1 |
■交換バッテリー |
■交換します。 |
なので割愛します。感想としては、バッテリーが既に盛り上がっていたので蓋は外しやすかったです。
結局ドライヤーも使わずに開けられました。
写真ではチョットわかり難いですが、取り出した電池はやっぱりふっくらとしていますね。
動かすとなんとか端末が立ち上がってきたので、これでOKとばかりに蓋を閉じてしまいました。
■充電がされないんだが・・・ |
しかし、USBでケーブル接続しても充電中の表示されることなく、どんどん減っていきます。
あれ?前回のバッテリー値がキャッシュされて表示がおかしいだけか?とそのまま放置すると結局0%となり、ご臨終となりました。
交換する際に、何か壊したかも・・・
ということで、もう一度本体を開けて、古いバッテリーにすると充電の赤LEDが点灯します。
バッテリーに問題がありそうです。
クレームや再注文しても良いですが、結局面倒になるのでその前に少しだけ分解することにしてみます。
バッテリーに問題がありそうです。
クレームや再注文しても良いですが、結局面倒になるのでその前に少しだけ分解することにしてみます。
分解といっても、あまりハードなことはやりたくないので見れる範囲でやってみることにしました。
カプトンテープとバッテリーシールとはがして、フレキケーブルの根本の基板が見えるようにします。
※これは、オリジナルのバッテリーを参考までにはがしたものです。
※これは、オリジナルのバッテリーを参考までにはがしたものです。
■フレキの根本を見てみると・・・ |
ん?これ他の3本と比べて、はんだが出てないんだけど・・・
少し勉強になりました。フレキの余分な半田がここから出るように設計されているんですね。(多分)
側面から見ると、少し浮いているように見えます。フレキを直付けしたいのに半田が上手く溶けておらず、横に出て来てないみたいです。
■半田をあててみましょう。 |
他とショートしないように370℃位で上からはんだごてをあてると・・・半田が横から出てきました!
ということで、USBケーブル接続すると、ビンゴ!
上手く充電できているみたいです。
■不安は残る。 |
半田不良が原因で、そこを修正すれば、上手く充電できるようにはなりましたが、不安は残りますね。
充電のテストをしていれば、簡単に不良を見分けられる問題だったはずです。つまりテストしてない。
リポは過充電で爆発の危険性などもあるので、気を付けましょう。
ちなみに、私の場合はたまたまうまくいきましたが、同様の方法で直る保証はありませんのでご注意ください。もし行うにしても自己責任で。
ちなみに、私の場合はたまたまうまくいきましたが、同様の方法で直る保証はありませんのでご注意ください。もし行うにしても自己責任で。
『きらきら☆いか リモコン』のプライバシーポリシー
'carcon999'は、以下のとおり個人情報保護方針を定め、個人情報保護の仕組みを構築し、個人情報保護の重要性の認識と取組みを徹底することにより、個人情報の保護を推進致します。
個人情報の管理
'carcon999'は、お客さまの個人情報を正確かつ最新の状態に保ち、個人情報への不正アクセス・紛失・破損・改ざん・漏洩などを防止するため、セキュリティシステムの維持・管理体制の整備徹底等の必要な措置を講じ、安全対策を実施し個人情報の厳重な管理を行ないます。
'carcon999'は、お客さまの個人情報を正確かつ最新の状態に保ち、個人情報への不正アクセス・紛失・破損・改ざん・漏洩などを防止するため、セキュリティシステムの維持・管理体制の整備徹底等の必要な措置を講じ、安全対策を実施し個人情報の厳重な管理を行ないます。
個人情報の利用目的
お客さまからお預かりした個人情報は、各アプリ内で『音声→文字変換処理』にのみに利用します。
Androidの音声認識(Android Speech Recognizer)をオフラインで認識処理利用します。
本アプリで、音声データや入力した情報を保存することは行っておりません。
お客さまからお預かりした個人情報は、各アプリ内で『音声→文字変換処理』にのみに利用します。
Androidの音声認識(Android Speech Recognizer)をオフラインで認識処理利用します。
本アプリで、音声データや入力した情報を保存することは行っておりません。
個人情報の安全対策
'carcon999'は、個人情報の正確性及び安全性確保のために、セキュリティに万全の対策を講じています。
'carcon999'は、個人情報の正確性及び安全性確保のために、セキュリティに万全の対策を講じています。
AFINIA H400を購入しました
いままで、2年以上ボンサイラボさんのBS01+を利用していましたが、流石に2年以上前の製品なので限界も見えてきて新しいのが欲しくなってしまいました。
そこで、ファーストインプレッションを紹介したいと思います。あくまで個人的な見解です。
そこで、ファーストインプレッションを紹介したいと思います。あくまで個人的な見解です。
少し困ったのは、輸送用のクッション材を取り出す指示があるのですが、簡単に取り出せません。
昇降するステージをゆっくりと手で持ち上げて隙間を作ってから引き出さないと取り出せなかったので、一番最初にハマるかもしれません。(②と③がステージの下で完全に挟まれています)
昇降するステージをゆっくりと手で持ち上げて隙間を作ってから引き出さないと取り出せなかったので、一番最初にハマるかもしれません。(②と③がステージの下で完全に挟まれています)
他の水平調整や、Wi-Fiの設定も特に問題なく設定できました。最初から本体の設定は日本語にセットアップされていました。
ノズルとステージの距離の自動キャリブレーションは非常に便利ですね。これ失敗するとステージの食いつきが悪くて、もじゃもじゃになるプリンタあるあるになりますからね。あと本体のタッチパネル液晶も良いです。反応も悪くないし、結構作り込んでいる気がします。
■プリントアプリ |
ネットからダウンロードして利用します。最初にメールアドレスを要求されますが、特にメールに連絡が来る訳でもなく、単にいたずら防止のためかもしれません。
ただ、このスライサーアプリは機能がかなり少ないです。ほとんどお任せ状態です。逆に言えば細かい設定をせずとも綺麗に出力できる自信があるからかもしれません。ただ、少し残念なのはサポート材の出力プレビューが表示できないことです。ラフトの表示はされるのですが、サポートは表示されないみたいです。サポートのプレビューを見て、付ける/付けないを判断する場合も多いので、プレビューは欲しいんだけどなぁ。
私の場合、Fusion360でモデリングして、それをプリントすることが多いので、出力時にAfinia Studio指定しておけば、ダイレクトにSTLを橋渡ししてくれるので少し便利になりました。今までは、USBにSTLを保存して・・・他のPCに入れて・・・みたいな不便なことやってました。
■出力品質 |
あと、エッジが立つというか、角がしっかりと出力されて垂れが少ないので仕上がりが綺麗ですね。
一応動画も。
■総括 |
今後気になるのは、専用のフィラメントは少し高いんです。専用フィラメント以外を利用した場合保障対象外になるような文言も気になります。しばらくは、最初に付いていたフィラメントを使いながら、在庫で抱えているフィラメントも使っていきたいと思います。
このツールも活用した作品の展示を考えておりますので、ご興味のある方はご来場いただければと思います。ブース名など詳細については、また追ってブログでご紹介させていただきます。
Maker Faire Tokyo 2017は、2017年8月5日、6日の2日間で開催されます。
ESP8266とMilkcocoaでException (28)
■概要 |
ESP-WROOM-02(ESP8266)をMilkcocoaと連携しログを出力しているとたまに、ESPがへそを曲げて例外出力する場合があり、ここ数日解析して対処法が見えてきたので書きとめておくことにしました。もし同様の現象で悩んでいる方の参考になれば幸いです。私の解決方法は、一番下に書いてあります。
探した限り情報が無かったので、あまり困っている人いないかもしれない。
★例外の出力画面:そうあれです。
ESPで例外が出力されると、
『どうせ電源でしょ?』とあまり例外のスタックトレースダンプをスルーすることが多かったのですが、ダンプの確認方法も紹介します。(ご存じの方も多いと思います。)
■システム構成 |
■現象 |
・USBの電源ノイズ?
・USBのリセット?
・強力な2.4Gが飛んで来てリセット?
なんだろう
傾向として、電源投入直後というよりも少ししばらくしてから発生する頻度が多いような気がしました。
■ヒントは受信データ量にあり! |
なんとなく、データ量が増えたときに発生するような気がしてきました。
赤枠で囲った場所が、リセットの直前データ。それ以前のデータよりデータ長が増えている様子が分かると思います。このキャプチャーはその前より2Byte増えている。
■Exception Decoderを使う |
インストール方法は、他にお任せするのですが、私がインストールする際にはまったのは、Exception Decoderを起動した際に、ELFファイルを要求する選択ダイアログが表示されて困りました。結論としては、IDEを再起動して、ビルドし直せば要求されることなく上手く利用できるようになりました。
シリアル出力されたあの例外をコピペして貼り付けると、なんか出ます。
一部加工していますが、以下のような出力です。
許可されない領域の不正なアクセスというところでしょうか・・・
※結果としては、後で出てきますが0ポインタのアクセスでした。
Exception 28: LoadProhibited: A load referenced a page mapped with an attribute that does not permit loads
許可されない領域の不正なアクセスというところでしょうか・・・
※結果としては、後で出てきますが0ポインタのアクセスでした。
Exception 28: LoadProhibited: A load referenced a page mapped with an attribute that does not permit loads
Decoding 8 results
0x40209f22: aJsonClass::getObjectItem(aJsonObject*, char const*) at C:\xxxxxxx\aJSON.cpp line 973
0x40209084: DataElement::DataElement(char*) at C:\xxxxxxx\Milkcocoa.cpp line 159
0x40209309: Milkcocoa::loop(unsigned short) at C:\xxxxxxx\Milkcocoa.cpp line 172
0x402088a4: milkcocoa_main() at xxxxx
0x40208968: loop at xxxxxx
0x40212134: loop_wrapper at xxxxx
0x40100718: cont_norm at xxxxxxx
0x40209f22: aJsonClass::getObjectItem(aJsonObject*, char const*) at C:\xxxxxxx\aJSON.cpp line 973
0x40209084: DataElement::DataElement(char*) at C:\xxxxxxx\Milkcocoa.cpp line 159
0x40209309: Milkcocoa::loop(unsigned short) at C:\xxxxxxx\Milkcocoa.cpp line 172
0x402088a4: milkcocoa_main() at xxxxx
0x40208968: loop at xxxxxx
0x40212134: loop_wrapper at xxxxx
0x40100718: cont_norm at xxxxxxx
■例外をcatchできないか? |
『解析するのも面倒だなぁ。データが少しぐらい欠けても問題ないので、リブートさせずにtry-catchでスルーさせるのも良いのでは?』と・・・・
そこで見つけたのは、データ量が増えるとJSONのカッコが消えること。
結果 | JSON(一部省略) | 長 |
○ | {xxx,"params":{"seq":99,"dist":12354,"vc":132,"irc":999}} | 95 |
× | {xxx,"params":{"seq":100,"dist":12355,"vc":133,"irc":1000 | 95 |
×の方は、}}が2つ消えちゃってます。parse処理で失敗するのねぇ。
なんとなく、このバッファサイズが匂います。
■調べるとここで問題発生 |
■対策方法 |
Milkcocoa ESP8266 SDKが利用しているAdafruitのMQTTライブラリのヘッダファイルAdafruit_MQTT.h
のMAXBUFFERSIZEを以下のように修正します。
値は、自分の最大データが収まるサイズにすれば256である必要はありません。
のMAXBUFFERSIZEを以下のように修正します。
値は、自分の最大データが収まるサイズにすれば256である必要はありません。
■まとめ |
Milkcocoaも初めて利用させていただきましたが、ありがたいですね。他の会社様に譲渡?されたり今後がきになりますが、無料で継続利用できることを望みます。
トースターリフローを両面対応にする
■概要 |
今回は、2年前に作成したトースターリフローを改良して両面実装できるようにしました。
結論から言うと、下記の方法でトースターを更に改造するよりも、プロファイル(温度の特性制御)をしっかり測定して調整すれば両面実装できると思います。
★改造はリスクを伴いますので自己責任ですよ。まあ、こんな面倒な移設はやらないと思いますけど。
リフローで両面基板を実装しようとしたときに、部品が落下し痛い思いをしたことがあり、それ以来基本的に両面実装を敬遠していました。
※どうしても必要な場合は、カプトンテープで裏面部品を固定するなどして対応してました。
※どうしても必要な場合は、カプトンテープで裏面部品を固定するなどして対応してました。
今回、本気で両面実装を確実に成功させたいのでトースターの改造を思いつきました。
利用しているトースターは、上下に電熱線が2本づつ入っているタイプのモノで、上下からむらなく温めるタイプです。
利用しているトースターは、上下に電熱線が2本づつ入っているタイプのモノで、上下からむらなく温めるタイプです。
写真ではわかり難いですが、上下に2本ずつ入っています。
機種によっては、上面/下面/両面の切り替えスイッチが付いているタイプもあると思います。残念ながら私のは付いていません。両面実装するならば、『下面からの熱を止めれば良いだろう』ということで、改造することにしました。単に、下面を切ってしまうと出力が弱くなってしまうので、下面の一本を上面へ移設して、上面3本+下1本構成にします。
■一本を移設する |
下面の一本を抜き出して、上面に移行します。ただし、上面に取り付け穴がある訳じゃないので、2本の中間位置に穴を開けます。ドリルで加工穴をあけてから、ハンディニブラでバキバキっと穴を加工します。
配線は、間違えないように注意します。といっても、一本の位置を移動するだけなので間違える可能性は少ないですが、私の場合は、ケーブルが短いので継ぎ足しを行いました。熱を発する装置に使うケーブルなので耐熱ケーブルを利用する必要があります。間違っても普通のケーブルを使わないようにしましょう。また、結線するのも単により合わせるだけでなく、しっかりと圧着できるように圧着端子と工具も準備します。
無事に移設が完了しました。下のオリジナルが入っていた穴は耐熱アルミテープで塞いでおきます。
■電源を入れてみる |
配線を確認したら、電源を入れてみます。
あれ?『移設した、1本の明るさが違う!』
追加した中央の電熱線が少し左右の2本と比べ暗いのが分かります。
確認してみると、上の2本と、下の2本で電熱線の抵抗値が異なりました。上2本は、1.5Ω程度、下2本は、9Ω程度です。
多分、利用している電熱線が違うんですね。なので、完全に同じ明るさとはならないようです。
※もう一台購入して、部品取りすれば・・・というのもありますが・・・
多分、利用している電熱線が違うんですね。なので、完全に同じ明るさとはならないようです。
※もう一台購入して、部品取りすれば・・・というのもありますが・・・
ここは、あまり頑張らないことにします。
■プロファイルを確認 |
出力のバランスが変わったので、温度プロファイルを確認します。
ここは、いろいろゴニョゴニョして、それなりの目標に近い値に調整します。
私は、3回微調整して写真の系列3にあるようなプロファイルにしました。
最初150℃までの立ち上がりを少し滑らかにした。
■重要なのは裏面の温度 |
プロファイルの設定を確認しながら、部品が落下するのは基板裏面の温度が重要なんだよなぁ・・・
と、考えていました。でも、熱電対をもう一本用意しなきゃならないし・・・
そんな簡単に・・・
あ!
普段使いじゃないテスターに熱電対が付いていたのを思い出します。
秋月の[MS8221C]で温度が測定できます。これだ!
■両面の温度を測定してみる |
表面は、いつもの温度制御用の熱電対を取り付け、裏面はテスターの熱電対を取り付けます。残念ながらテスターは、手動で読み取らないといけないので5秒毎に読み取るようにします。
さらに、トースターの中で基板を網の上で焼いた場合と、アルミトレイの上で焼いた場合を測定してみることにしました。
実際の測定結果は以下です。
左側が網、右側がアルミプレートです。
オレンジ色(系列2)のドットで見える線が下面の温度です。
分かり易いように、融点をグレー(系列3)で表示させまてみました。
これで、見てみると網でも、アルミプレートでも融点を超えないので大丈夫のようです。
さらに、アルミプレートの方が余裕がありそうなので、そちらを採用することにします。
オレンジ色(系列2)のドットで見える線が下面の温度です。
分かり易いように、融点をグレー(系列3)で表示させまてみました。
これで、見てみると網でも、アルミプレートでも融点を超えないので大丈夫のようです。
さらに、アルミプレートの方が余裕がありそうなので、そちらを採用することにします。
※電熱線を移設する前に測定すべきだったことをこの時思いました。涙
■まずは表面リフローします。 |
まず、表面は普通にリフローします。
■次は裏面の実装 |
ただ、ここで一つ問題があります。
はんだペーストを塗る際に、実装済みの部品があるとボコボコしてそのままでは綺麗にできません。
そこで、100均で売っているようなカラーボードを使います。厚みが10mm程度あり、加工も簡単なのでカッターで穴をあけます。
こんな感じで、掘りごたつの要領で部品があたらないようにくり抜きます。
あとは、表面と同じようにできます。
■裏面焼きます。 |
焼くときに、少し下駄をはかせて浮かせる必要があります。
この写真のように、左右にアルミレールをカプトンテープで固定し裏面を浮かせるようにしました。
あとは、焼いてしまえば完成!
部品が落ちることもなく、両面でも不良もなくいい感じに仕上がりました。
■最後に |
多少準備は必要になりますが、両面でも上手く作れることが分かりました。
ただし、手間は増えるので、片面で仕上げることができるのであれば、片面の方が楽ですね。
最初にも書きましたけど、電熱線を移動せずとも、プロファイルをうまく最初に調整していれば上手くできた可能性が高いです。なので、もしトースターで両面やる場合は、裏面の温度特性を測定してみることをお勧めします。
あとは、お金が許せば中華の実装サービスを利用するのが良さそうですね。
いつか試したいと思っています。
いつか試したいと思っています。