WS2812B LEDマトリクスを Arduino / Raspberry Pi / VB.NET から制御する。
2018年08月15日
洗濯ハンガー、ピンチの収納BOX


ピンチハンガーを取り出すときは、ピンチが絡まったりして、イライラします。
これを解消するため、ハンガー収納はどうあるべきかと考えれば…
・使う場所はベランダなのでベランダにあるべき。
・吊り下げて収納できれば絡まない。
・使用していないときは風雨を防ぐため、物置に入れる。
ということで、アイリスオーヤマのミニロッカー「ML−1200V」を購入し、
内部に物干し的な吊り下げ棒を設置して冒頭の写真のようになりました。
改造にかかった費用は1500円くらい、製作にかかった時間は1時間くらいでした。
製作過程の写真を貼っておきます。



ところで、このミニロッカーのシャッター扉、バリが酷いです。
しょうがないので紙ヤスリでキレイに落としましたが……

2018年03月17日
2018年02月28日
2018年01月14日
2017年12月29日
2017年11月21日
Elecrow基板発注メモ
結構手間のかかる基板が8枚必要になったので
中国の基板メーカー(Elecrow)に出図しました。

使用ツール
Eagle 7.1.0
かかった日数
出図から納品まで 13日
---
出図 11月05日 23時頃
出荷 11月11日 14時頃
納品 11月18日 12時頃
かかった費用
合計 $9.70 USD
---
品代 $4.90 USD (5cmx5cm,10pcs→13pcs入ってた)
送料 $4.80 USD (China Post Registered Airmail)
反省点
・2Pのネジ式ターミナル端子の穴が大きい
・ピンヘッダの下に書いたシルクが部品を実装すると見えなくなってしまう
・スプリングターミナルのシルクのズレ(自分でライブラリを作ったもの)
・EHコネクターのシルクが違う
と、細かい反省点はあるものの、配線ミスや入らなかった部品は無く、
部品を実装しての動作確認は問題ありませんでした。

中国の基板メーカー(Elecrow)に出図しました。

使用ツール
Eagle 7.1.0
かかった日数
出図から納品まで 13日
---
出図 11月05日 23時頃
出荷 11月11日 14時頃
納品 11月18日 12時頃
かかった費用
合計 $9.70 USD
---
品代 $4.90 USD (5cmx5cm,10pcs→13pcs入ってた)
送料 $4.80 USD (China Post Registered Airmail)
反省点
・2Pのネジ式ターミナル端子の穴が大きい
・ピンヘッダの下に書いたシルクが部品を実装すると見えなくなってしまう
・スプリングターミナルのシルクのズレ(自分でライブラリを作ったもの)
・EHコネクターのシルクが違う
と、細かい反省点はあるものの、配線ミスや入らなかった部品は無く、
部品を実装しての動作確認は問題ありませんでした。

2017年10月18日
マグネット付き中華製LEDライトを外部電源化する

磁石でくっつくLEDライトを中国から 3 USD くらいで購入しました。
このライトは単4乾電池3本で光るのですが、ちょっと消し忘れるとすぐに電池がなくなってしまいます。
とりあえず外部電源入力に改造して特性を測ってみたところ、定格?の4.5Vで2Aも流れることが判明。

どおりですぐに消えてしまうわけです。30分持ちません。
ちなみに、4.5Vでは相当熱くなり、寿命が心配です。
というわけで、調光機能付きの外部電源を作ってみました。

部品箱から 2Aの降圧DCDCコンバータ CE-1050 をチョイス。
このDCDCコンバータは外付けの抵抗で任意の電圧を設定できます。
明るさの最小値を2.5V付近に設定すると、Rexは2.7kΩとなります。
部品箱にAカーブの10kΩがあったので組み合わせると最大電圧は3.7V程度になります。
今回は全て部品箱の在庫でなんとかなりましたが、結構な部品代と手間なので、
素直に 9 USD くらいのUSB接続LEDスタンドを買ったほうが……。
2017年08月14日
2017年08月06日
清流物語 専用容器の水漏れ対策
近所のスーパーに清流物語という水道水を濾過して5L=100円で販売している装置があるのですが、
ある時期、普段は350円する専用容器を無料で配っていたので買ってみました。

まぁ、味に不満はないのですが、横にするとその専用容器の口から水が微妙に漏れてくるので
近所のホムセンでゴムパッキン(2個で228円+税)を購入しました。

良い感じです。
ある時期、普段は350円する専用容器を無料で配っていたので買ってみました。

まぁ、味に不満はないのですが、横にするとその専用容器の口から水が微妙に漏れてくるので
近所のホムセンでゴムパッキン(2個で228円+税)を購入しました。

良い感じです。
2017年07月19日
フリーテルの雅に DOOGEE X5 のバッテリーは使えるのか。
FreetelのMIYABIというスマートフォンに DOOGEE X5/X5S/X5Pro の
バッテリーは交換できるのか試してみました。
大きさは、Doogee X5 のバッテリーが
W=60.2, H=69.3, D=4.0(端子部4.6mm)で、
BP-MIYABI は
W=60.0, H=75.0, D=3.8 でした。

実際に装着すると、端子の位置と配列は同じでしたが、長さが短いため約5mmの隙間が空きます。
手元に転がっていたバルサ材を5mm×4mmに加工して隙間を埋めました。
また、端子部の厚みの都合で、裏カバーを閉じても僅かに浮き上がります。

充電もOKで問題なく使えているようでした。
情報をくださった方に感謝します。
バッテリーは交換できるのか試してみました。
大きさは、Doogee X5 のバッテリーが
W=60.2, H=69.3, D=4.0(端子部4.6mm)で、
BP-MIYABI は
W=60.0, H=75.0, D=3.8 でした。

実際に装着すると、端子の位置と配列は同じでしたが、長さが短いため約5mmの隙間が空きます。
手元に転がっていたバルサ材を5mm×4mmに加工して隙間を埋めました。
また、端子部の厚みの都合で、裏カバーを閉じても僅かに浮き上がります。

充電もOKで問題なく使えているようでした。
情報をくださった方に感謝します。
2017年04月30日
3M baud対応のUARTモジュールを使ってWS2812BをVB.netから制御する
16x16(256個)のWS2812Bのモジュールを中国から輸入して、VB.netから制御しました。
インターフェースは、様々なサイトの情報を吟味した結果、、
3Mbaud対応のUARTモジュールから 7-n-1 で制御できそうだと考え実験した結果ばっちりでした。
マーク/スペース反転&レベル合わせのためにダイオードで0.6V電源電圧を落としたTC7S04Fを一個挿入しています。
コード及び詳しい説明はgithubに上げました。
https://github.com/7m4mon/ws2812b.vb
実際のアプリは↓のような感じです。

書き込むフォントを選べたりスクロールしたりSocketServerを持っていてネット経由で操作できたりします。
2017年02月26日
2017年02月19日
2017年02月17日
2016年12月30日
ダイソーの木製パズルにマグネットテープを貼る
2016年12月29日
ダイソーのワイヤーネットでストーブガードを作る
2016年12月10日
VB.netやC#で同じ色かどうか調べる
VB.netやC#で同じ色かどうか調べる場合、Color構造体のARGBが一致していても
Array.IndexOf(colorArray, pixelColor) が -1 を返すことがあります。
これは、Colorを名前で定義している場合に発生するようで、
名前で作ったColorとFromArgbで作ったColorは別物らしいです。
つまり、
Dim BlackColorFromName As Color = Color.Black
と
Dim BlackColorFromArgb As Color = Color.FromArgb(255, 0, 0, 0)
は
Debug.Print(If(BlackColorFromName = BlackColorFromArgb, "一致", "不一致"))
とすると、不一致になります。
よって、下記のような関数を作って回避することにしました。
なんだかなぁ。
Array.IndexOf(colorArray, pixelColor) が -1 を返すことがあります。
これは、Colorを名前で定義している場合に発生するようで、
名前で作ったColorとFromArgbで作ったColorは別物らしいです。
つまり、
Dim BlackColorFromName As Color = Color.Black
と
Dim BlackColorFromArgb As Color = Color.FromArgb(255, 0, 0, 0)
は
Debug.Print(If(BlackColorFromName = BlackColorFromArgb, "一致", "不一致"))
とすると、不一致になります。
よって、下記のような関数を作って回避することにしました。
なんだかなぁ。
2016年12月03日
GetPrivateProfileInt で読んだ負の値を浮動小数点型にキャストする
GetPrivateProfileInt という.iniファイルから設定を読み取る関数があるのですが、
負の値をdouble型やfloat型にキャストすると、 -2147483648 となってしまいます。
回避するには
value = (double)(int)GetPrivateProfileInt("settings", "value", 0, ini_filename);
といった感じで、一度intにキャストすると上手くいきました。
本来、GetPrivateProfileIntの戻り値はUINTなので、負の値はとれないはずですが…
保存の方は
sprintf(ini_write_buff, TEXT("%d"), (int)(value));
WritePrivateProfileString("settings", "value", ini_write_buff, ini_filename);
といった感じなので負の値でも問題ありません。
負の値をdouble型やfloat型にキャストすると、 -2147483648 となってしまいます。
回避するには
value = (double)(int)GetPrivateProfileInt("settings", "value", 0, ini_filename);
といった感じで、一度intにキャストすると上手くいきました。
本来、GetPrivateProfileIntの戻り値はUINTなので、負の値はとれないはずですが…
保存の方は
sprintf(ini_write_buff, TEXT("%d"), (int)(value));
WritePrivateProfileString("settings", "value", ini_write_buff, ini_filename);
といった感じなので負の値でも問題ありません。
2016年11月24日
電動ターテーブルの駆動をタミヤのユニバーサルギアボックスにしてみた
以前自作した電動ターンテーブルの駆動をタミヤのユニバーサルギアボックスにしてみました。
ユニバーサルギアボックスの出力を垂直方向にして、ギア比を最大とし、2.4VでFA-130モーターを駆動します。
ウォームギアで大きな減速比が稼げるはずなので、いけるかなぁと。
MDFパネルに下穴を空けてギアボックスを木ねじで固定。
足は24mmの角棒を24mmで切ってボンドで固定しました。
丁度良い長さのM3ネジを調達してイモネジでシャフトに固定しました。
結果は、、、非常にうるさいわ非力だわで失敗に終わりましたとさ。