hiromitu のすべての投稿

ソーラーライト(1500円)を改造する

hiromituです。
屋外で長時間動作するセンサシステムを作る仕事が転がってきたので、
技術検証のためにソーラーライトを分解してみることにしました。

100均のソーラライトを分解している方は結構いるようなのですが、
ちょっと電流的に心もとないので、もう少し上のグレードのものを選んでみました。

写真 2014-01-29 14 53 49

ホームセンター ROYALの独自ブランドのソーラーライト(1500円)です。

太陽電池部分の直径は約20cm。100均のものとはだいぶスケールが違います。
また、同じ店にあった別のソーラーライト(数百円のもの)は内蔵充電池が単3NiMH 1本と書いてありましたが、
コチラは単3NiMH2本、一日の充電で夜間6?8時間点灯とのスペックで、電流容量も大きいと思われます。

写真 2014-01-29 15 07 19

写真 2014-01-29 15 10 59
取り出すと、傘状の太陽電池の下に透明のライトカバー、そしてその内側に拡散用のキザギザのついた透明パイプ、そして白色LEDが入っています。

写真 2014-01-29 15 11 19
なぜか電池スペースが2つありますが、片側には金具はありません。

写真 2014-01-29 15 12 56

電池は900mAh 1.2Vが2本直列でした。

写真 2014-01-29 15 13 11
傘を外すと太陽電池モジュールが見えます。
モジュールは透明樹脂で一体化されています。

分解してみます。
写真 2014-01-29 15 16 01
太陽電池モジュールから制御・LED基板へ、また3pスイッチから電池に配線されています。
これ、電源スイッチをONにしてないと充電もされないですね。

写真 2014-01-29 15 15 45太陽電池の配線取り出し部です。
何故か配線のコーキングが外れてへばりついていました。
ここから浸水することは無いとは思いますが…

制御基板を裏返してみます。

写真 2014-01-29 15 16 45

配線が一応ホットメルトで固められています。

写真 2014-01-29 15 18 30
ホットメルトを外してみました。
Q1?Q4(トランジスタ)とD1?D4ダイオード、チップ抵抗があります。

インダクタや昇圧ICが見当たらないですが、どうも表の大きな抵抗かと思ったのは
L1=コイルだったようです。
NiMHの電圧からトランジスタで発振して必要な電圧を得ているのでしょう。
ソーラーパネルで昼夜を確認しているとのことで、トランジスタやダイオードでアナログ的に判定していると思われます。
それ以上の解析はべつにいいや。使わないし。

さて、どれぐらいの消費電流があるのか調べてみます。
3Pスイッチの端子を電流計でバイパスするように繋いでやれば配線を切断せずに電流測定が出来ますよ。

写真 2014-01-29 15 20 10
LED点灯時、NiMH電池から約60mA流れています。
電池電圧は2.51Vでした。満充電状態と思われます。

さて、ではどのぐらいの充電性能があるのでしょう。
部屋に転がっていた使用した後ほったらかしてたEVOLTA充電池(2本とも0.9V前後)を入れ、太陽光に当ててみます。
写真 2014-01-29 15 38 46
写真 2014-01-29 15 40 18
15時頃、会社のベランダに出て一応太陽の方向を向けたところ
充電電池電圧:2.54V
充電電流は120mA程度取り出せています。

なかなか優秀です。

この程度の電流が取り出せれば、省電力無線モジュールとマイコンを組み合わせた
完結温度ログシステムが作れそうです。

一般的に、太陽光で動作するシステムでは、安全率を大きく見て
平均日照時間を3時間程度と見積もることがあるようです。
これを基準にして最大消費電力を見積もってみます。
1900mAhのNiMH電池2本に充電するのであれば、2.4V*1900mAh=4.65Whの電流容量が必要です。
先ほどの充電電流を元にすると、充電電力は2.5V*120mA=300mW。
一日3時間20分であれば1W。満充電するには5日かかる計算です。

消費電流を考えてみます。
Arduinoなどでよく使われる ATMega328では、3.3MHzでは7mA程度消費するようです。
Arduinoボードをそのまま使った場合、周辺部品があるため、数十mA程度は軽く消費することがあります。単体+内蔵発振にするなどの工夫が必要でしょう。
また、例えばXBeeなどの無線モジュールを使用するとどうでしょう。
中継局であるCoordinatorの場合、40mA程度とスペックには表記されています。
子機であるEndDeviceも同様ですが、こちらはSleepができるので、実際に通信する時間帯しかその電流はかかりません。
仮に、一時間に1回、1分で通信が完了するのであれば、40mA/60=0.67mA/hになります。
3.3V動作ですから 3.3V*0.67mAh=2.21mW
ここまでで、軽く見積もると一時間の平均消費電力は10mW程度、一日では10mW*24h=240mW。
1900/240=7.91…ということは一週間ぐらいは無充電でも動作することができるかもしれません。
最悪条件を想定した発電状況なので、全体としては十分動作可能でしょうか。

ただし、ProでないXBeeの場合、数十メートルの飛距離しか通信が届かないという…
間に中継局を挟めば飛ぶのですが、(Proにすると尚いい)、せっかくのメッシュネットワークが生かせないという欠点があります。

そのため、今度の案件では Dust Networkが開発した(現LinerTechnologyに吸収) Smart Meshモジュールを使おうとしています。
このSmartMeshの特徴は、主に中継局と子機の区別が無いことにあると思います。
(ネットワークを調停する親機と子機の区別はありますが、親機以外の子機はすべて同期した時刻を持って完結動作し、XBeeのように中継局が多くの電力を消費するようなことは有りません。)
また、動作電圧範囲が2.1V?3.6Vと広く、消費電力は平均すると数μAオーダになるそうです

ただ、最大の問題は入手性でしょうか…
代理店経由で200個発注をしたのですが、米国での受注生産で納期8Wと言われてずっこけているところです。
代理店が持ってる在庫を吐き出させて開発を始めるところですが、
納期が短い仕事なので、そいつが入らなかったことにそろそろ備えておかないと…w

Blu-rayプレイヤーをHackする(その3)

さて、前回の記事??の続きです。

目当てを付けたシリアル通信がシリアルコンソールでなかったことに落胆を隠せず、そろそろ蓋を閉じてしまおうかともう一度基板を眺めていたところ…

あれ…

写真 2013-12-30 18 58 54

4ピンコネクタあんじゃん!
しかも堂々とコネクタ実装されてんじゃん!!!

OTL

シリアルコンソールはこっちだったか…
なんで気付かなかったし。

さて、気を取り直して改めてTeraTermに突っ込んでみます。

デターーーーーーーーーーーーーーーーーーーーー!!!!!

スクリーンショット 2013-12-30 19.00.41

なんか出ました。

ブートローダに工夫があるらしく、コンセントを入れた瞬間に少し起動して止まっています。
その後、電源を入れたあとにLinuxのローダが動いてるように見えます。

せっかくなので起動ログを全部貼ってみましょう。

0:00.000 preloader v5599
00:00.016
Apr 11 2011 15:48:04SSC (+-5/1000, 30kHz)
DDR3 1242 MHz.
B0:DQS( 4~38), 35, 21
B1:DQS( 5~41), 37, 23
0x7388=0x2e2e2e2e.
B0:Gw(13~107), 95, 62
B1:Gw( 7~100), 94, 54
0x7388=0x363e.
A 128MB, x16
B0:DQS( 7~41), 35, 24
B1:DQS( 7~40), 34, 23
0x7388=0x2e2e2e2e.
B0:Gw(13~105), 93, 61
B1:Gw( 6~97), 92, 53
0x7388=0x353d.
B 128MB, x16
00:00.139
00:00.171 u4_dramk_sa:[0x40000f60]
00:00.174 u4_loader_sa:[0x400030e4]
00:00.178 u4_loader_end:[0x40005970]
00:00.181 loader start
00:00.183 A00:00.184 B00:00.201 C00:00.202 D00:00.203 E00:00.235 aMTD Found at 0x300000
00:00.242 F00:00.243 G00:00.310 H00:00.311 K00:00.000 preloader v5599
00:00.016
Apr 11 2011 15:48:04SSC (+-5/1000, 30kHz)
DDR3 1242 MHz.
B0:DQS( 4~38), 35, 21
B1:DQS( 5~42), 38, 23
0x7388=0x2e2e2e2e.
B0:Gw(12~107), 96, 61
B1:Gw( 6~100), 95, 54
0x7388=0x363d.
A 128MB, x16
B0:DQS( 8~42), 35, 25
B1:DQS( 7~42), 36, 24
0x7388=0x2e2e2e2e.
B0:Gw(12~105), 94, 60
B1:Gw( 4~97), 94, 52
0x7388=0x343c.
B 128MB, x16
00:00.137
00:00.170 u4_dramk_sa:[0x40000f60]
00:00.173 u4_loader_sa:[0x400030e4]
00:00.176 u4_loader_end:[0x40005970]
00:00.180 loader start
00:00.182 A00:00.183 B00:00.200 C00:00.200 D00:00.202 E00:00.234 aMTD Found at 0x300000
00:00.241 FAVM 00:00:00.280 [AVM] DSP :v9200.03 DRV: v0.1
 AVM 00:00:00.284 [vMTD_main] NAND init
 AVM 00:00:00.288 [fgLoadNFBTable] MTD Init Start
 AVM 00:00:00.292 [fgLoadNFBTable] MTD Init Success
 AVM 00:00:00.360 [fgLoadNFBTable] MTD Init Success ##
 AVM 00:00:00.365 [mtd_part_tbl_init] MTD part table init start
 AVM 00:00:00.527 [mtd_part_tbl_init] MTD part table init DONE
 AVM 00:00:00.533 [vFLFlashRead] Get logo from flash
 AVM 00:00:00.538 [vLoad_binary] Get info name : ef09f7e
 AVM 00:00:00.719 [vLoad_binary] Load binary success
 AVM 00:00:00.724 [vLoad_binary] Get info name : ef0a09b
 AVM 00:00:00.732 [vLoad_binary] Load binary success
 AVM 00:00:00.737 [vMTD_main] Load FASTLOGO binaries ok
 AVM 00:00:00.967 [IDE_FB]FE firmware CheckSum OK !!
 AVM 00:00:00.972 [IDE_FB]read loader binary to buf:0xfe00000, version:5Q0300
 AVM 00:00:01.028 [IDE_FB]backup NAND flash info(0xff21c00, 64)
 AVM 00:00:01.033 [vMTD_main] Load IDE Binaries ok
 00:01.040 G00:01.107 H00:01.107 K00:01.397 J
U-Boot 2009.08 (Dec 13 2011 - 11:17:32)
I2C: ready
NXP B.V. - MT85XX SoC with ARM1176JZF-S
DRAM: 256 MB
NAND: 128 MiB
u-boot adaptive mtd mechanism applied.
[_i_find_part_tbl]Part tbl info passed from preloader
[_i_find_part_tbl] version is 1!!
[_i_get_upg_status_in_nand]upg status passed from preloader
Using default environment
In: serial
Out: serial
Err: serial
r_args_to_uboot:
 head sig : 0xa0b0ead1
 version : 1
 boot type : 0
 dram ch1 : 0x08000000
 dram ch2 : 0x08000000
 kern addr : 0x0d9fffc0
 initrd addr : 0x0e700000
 initrd size : 0x00021cc0
enable bim two way write.
boot type:[0]
Bootloader version 3847
l>)・ワkR・MD3I
Hit any key to stop autoboot: 0
## Booting kernel from Legacy Image at 0d9fffc0 ...
 Image Name:
 Image Type: ARM Linux Kernel Image (uncompressed)
 Data Size: 1558196 Bytes = 1.5 MB
 Load Address: 0da00000
 Entry Point: 0da00000
 Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
@

CPUは「NXP B.V. – MT85XX SoC with ARM1176JZF-S」
予想通りマルチメディア用SocのARMですね。
http://www.arm.com/ja/products/processors/classic/arm11/arm1176.php

MT85xxで調べていたら、MT8520というBlu-ray用のチップにたどり着きました。
http://www.mediatek.com/_en/01_products/04_pro.php?sn=27

標準出力はすべてserialになっているようですが、booting the kernelのあと、@が表示されたあとのメッセージは表示されていないようです。
シェル無いのかなぁ…?

さて、こうなったら Hit any key to stop autoboot: 0 に本当に割り込めるのかどうか。
次回乞うご期待。

(続くかも)

Blu-rayプレイヤーをHackする(その2)

さて、前回の記事 ?の続きです。

電源周りは諦めたので、とりあえずCPU基板の方を眺めてみましょう。

写真 2013-12-29 23 11 37

水晶発振器は27MHz。基本的にNTSCでの信号生成を含むCPUの場合、これからPLLするのが多い気がします。
メインCPUはヒートシンクが接着されていて型番を読むことは出来ませんが、
右端にFlashROMがあります。
また、ケースにJavaのロゴが入っていました。
メディアプレイヤー向けのコア内蔵のLinuxが動くCPUであることはほぼ間違いないでしょう(経験上)右手前に赤外光受信機を実装するパターンが有りますが、ここには付いていません。
ボードのみで構成されるような小型の機器を作るため用のパターンでしょうか。
延長されてフロントのVFD基板に接続されています。
このパターンの周辺に5VのTPがあるので、電源ユニットからの5VSTBYで常時起きてて、
赤外線リモコンの割り込みでメインCPUが起きるようになっているのでしょう。

左下には放熱パッドの付いたICが。LOADと書かれていて、V,U,WなどのTPがあります。
トレイローディング用のモータドライバICかと思われます。

「ICE」と書かれたコネクタ。CPUのオンチップデバッグなどに使われるコネクタです。
8pinなので、JTAGの最小限の配線があるのでしょうか。

と、色々眺めていると「USB1」「USB2」のコネクタパターンの左にある謎の4ピンコネクタ。

写真 2013-12-29 23 16 51

そうです。シリアルコンソールに決まってます。
こういう機械に現れる未接続の4ピンコネクタは、VCC,TX,RX,GNDのシリアルコンソールに決まっているのです。
(っていうかRS232って書いてあったことにあとで気づくなど)

よっしゃキタコレーと思ってオシロスコープのプローブを当ててみます。

写真 2013-12-29 23 16 14

写真 2013-12-29 23 30 59

何か信号でたー!!!

パルス幅を測定してみます。

写真 2013-12-29 23 33 31

約115Hz。

もうこれは115.2kbpsのUART確定です。

小躍りしながらUSB-TTL UART変換ケーブルのRXに繋いでTeraTermを見てみます。

現れるのは

なんじゃこりゃー

バイナリ…
文字化けか?ボーレート変えてみるか?
いや、どれも一緒だ。アスキーらしきものは出ない…

おっかしーなー。
HEX確認可能な別のツール(XBee用のX-CTU)で見てみる。

スクリーンショット 2013-12-30 18.25.18
…バイナリだ。しかも4桁の数字や”NORM”と読める文字も出てるので、これはコンソールではなく、何か意味のある人間の読めない通信だ…

落胆

いやまて、信号反転かもしれん、ロジアナに繋いでみよう。
ついでに接触不良だと嫌だからハンダ付けしよう。
(良い子は真似してはいけません!)

写真 2013-12-29 23 24 12

ロジアナはZEROPLUSのLogic Cube LAP-C(16128)。
ストロベリーリナックスで4万円のお買い得品です。安くなったもんだ。
https://strawberry-linux.com/catalog/items?code=64002


スクリーンショット 2013-12-30 18.32.07

…あかん。信号反転するとUARTとしてエラーが多すぎる。
ロジックレベルも、ボーレートも、パリティも、ビット長も合っていて、正常に通信しているようだ。

落胆×2

小躍りしてからのこれなのでショックがでかい…
さすがにこれを解析する気力はないぞ…?

(つづく)

Blu-rayプレイヤーをHackする(その1)

こんにちは。hiromituです。

自家用車でBGVを再生するため、過去にiPodやAndroid動画プレイヤーを車載してきたのですが、自宅にスカパー+HDD/Blu-rayレコーダーを導入したため、処理しなければいけない動画の数が急増し、せめてBlu-rayディスクを再生する環境を早急に車載しなければいけない状態になりました。

しかし、車載Blu-rayプレイヤーは高い!
SONYのポータブルプレイヤーだと?http://pur.store.sony.jp/Qnavi/Product/BDP-Z1/?s_tc=st_ad_sony000_D_00_PL_pc?なんと五万円!
それ以外の3流メーカー製(あきばお?扱い)でも二万三千円するなど、ちょっと勢いで買うには高すぎます。

そこで、もっと安い家庭用のBlu-rayプレイヤーを買って車載することを思い立ち、
あきばお?で最安だった Blu-rayプレイヤー(8GB USBメモリ付き)を7,980円で買ってきたのでした。

外箱。
写真 2013-12-29 22 50 13

最近流行りの横長薄型とは違い、横方向は短いようです。
写真 2013-12-29 22 51 24

裏側。シンプル。HDMIとRCAがついてます。車載だと分配や小型モニタとの接続があるので
NTSC出力はありがたい。
写真 2013-12-29 22 51 35

電源を入れてみよう。
写真 2013-12-29 22 54 18

…なんだか解像度が低い…?

ディスクを入れてみよう。
再生。おお、なんだか一昔前の中華製プレイヤーのようなもっさり感は全然ない。
一応日本語看板がついてるぐらいのことはあるようだ。
写真 2013-12-29 22 57 00
せかいいち かわいいよ!!!

…が、なんか解像度低いぞ…?

いやまてさすがにBlu-rayでHDMIでこの画像だったらキレるわ。
説明書見ると、1080iまで対応と書いてある。

おもむろにセットアップメニュー。

写真 2013-12-29 22 57 37

写真 2013-12-29 22 57 48

出たー中華フォント!!!!

写真 2013-12-29 22 58 11

解像度が480です。そりゃぁ汚い。デフォルトで自動設定とかどうにかならんのか。

写真 2013-12-29 22 58 30

1080iにした。メニューもその場で切り替わってくっきり!
起動画面もくっきり!

写真 2013-12-29 22 58 43

動画もくっきり!(写真じゃわからんて)

写真 2013-12-29 22 59 16

せかいいちかわいいよ!

さて、ここからが本番です。
この機械は家庭用100Vで動作するため、電源をどうにかしなければなりません。

写真 2013-12-29 23 11 10
普通だと写真のようなDC/ACインバータを使用して100Vを出すのが素直なのですが、
所詮数十ボルトで動いてるような機器を12->100V->と変換するのは癪に障るものです。

銘版によると消費電力は15W。12V換算で1.5A。このぐらいの電流なら自力で電源周りを作ってやれないかと思ったわけです。

では。ご開帳。さよなら保証期間(4時間)
(良い子は真似してはいけません!!!!!!!!)

写真 2013-12-29 23 06 38

スッカスカです。最近の電化製品なんてこんなもんです。
左半分がBlu-rayドライブ、右下に電源ユニット、右上にCPUボードとI/Oがついています。
I/Oが偏っているのはCPUボードから直出しの都合なのですね。
生産コストをきっちり落とす優秀な設計です。

写真 2013-12-29 23 06 59

ドライブにはBDY-33と書いてあります。

さて、肝心の電源ユニット。

写真 2013-12-29 23 07 07
12Vからこれと同じ出力を作り出せればいいことになります。
出力は…

写真 2013-12-29 23 07 35
・5.1V 3.2A
・12V 0.2A
・5VSTBY 0.4A
・-24V 10mA
・3.3V AC 0.1A

…… む り か な !

あれ、こんな複雑な電圧が出てるとは思ってなかったぞ。
つーか-24VはVFDとして、3.3V ACとかなんにつかうんだこれ!

いや、ちょっと思ったとおりには行かなそうだ。
電源周りはとりあえずACインバータを使うことにしよう。

(つづく)