2017年08月10日

Orange Pi Zero + BMP180/BME280 でデータ計測

I2C経由で気温や気圧が取れる、BMP180とBMP280というチップを買った。Orange Pi Zero に繋いで、データを取ってみる。
OrangePiのOSはARMBIAN 5.31 stable。

買ったのは、
全部合わせて1000円ほど。他に必要なものは、ハンダと半田ごて。

まずハードウェア側の整備。
OrangePi本体のI2Cポートはピンが出てないので(RaspberryPiは出ているのだが…)ピンヘッダを半田付けし、BMP180/BME280モジュールは付属してくるピンヘッダを半田付け。
--
OragePi 1 - VCC BMP180
OragePi 3 - SDA BMP180
OragePi 5 - SCL BMP180
OragePi 9 - GND BMP180
--
をジャンパーケーブルで結線する。
IMG_20170810_154343s.jpg
こんな感じになった。

次いでソフトウェア側の整備。
/etc/modprobe.d/fbdev-blacklist.conf にblacklistを2行追加してreboot。
aptitude install i2c-tools libi2c-dev をインストール。

# vi /etc/modprobe.d/fbdev-blacklist.conf
--
blacklist pcf8591 ←この行追加
blacklist bmp085 ←この行追加
--
# reboot

# aptitude install i2c-tools libi2c-dev
i2cdetectしてみると、モジュールが見えた。
# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --
そして、センサー値の取得は、https://www.blackmagicboxes.com/?p=608 に掲載されているデータ取得用のプログラムを使用。
デバイスが、/dev/i2c-1 ではなく、/dev/i2c-0 で見えているので、プログラムを一部書き換え。

char *bus = "/dev/i2c-1";

char *bus = "/dev/i2c-0";
そしてコンパイルして実行。
# gcc -g -Wall -Wextra -pedantic -std=c11 -o bme280_p bme280_p.c
# ./bme280_p -a
Temperature in Celsius : 26.07 C
Temperature in Fahrenheit : 78.92 F
Pressure : 1006.47 hPa
Relative Humidity : 0.00 %RH
見えた!カンタン!!!

この例で繋いだのはBMP180だったので湿度は取れていないが、同じようにBME280を繋げば、湿度も取れる。
気圧のデータを、muninに取ってみた。グラフ出力サンプルはこんな感じ。

pressure_withjma_1-day.png

緑のラインはBMP180の計測値、青のラインは最寄りの気象台が発表している1時間毎の気圧。
こうしてみると、ほぼ一定の誤差で、気圧の変動は気象台の計測値を完全にトレースしている。まあ、当然と言えば当然だが、わざわざ自前で気圧を測らなくても、気象庁のデータで十分だろうということが分かってしまった……。

しかし、たかだか数百円で、カンタンにデータが取れるようになったので、これはなかなかいいんじゃなかろうか。夏休みの自由研究とかに向いているのではなかろうか?
タグ:OrangePi
posted by usoinfo at 16:00 | Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする

2017年08月06日

BIOSしか起動しない KVI-70B を回復

今更、激安中華タブでもないと思うのだが、誰かの役に立つかもしれないので、ジャンクのKVI-70Bを回復させた作業記録。
当然ながら保証なんてクソくらえ壊れて上等、自己責任の参考資料である。

特に使い道もなかったのだが、恵安のKVI-70Bの中古が送込3000円で売られてたので買った。但し書きに、「BIOSは起動するがOS起動不可」と書いてあったため、ジャンク品相当ではあろうが、BIOSまで上がるのならなんとかする方法はあると思い、値段に釣られて買ったのである。

で、品物が届いたので電源を入れてみたが、確かにBIOSのPOST画面は出るしBIOS Setupにも入れるが、Windowsは起動しない(起動すると画面が乱れて固まる)。ブート失敗後は、回復オプションが出てくるので、ストレージがハードウェア的に壊れてるとかいうことはなさそうだが……。
多分、回復オプションとかリカバリーとかがあると思って、UEFI shellから起動を試みたり、USBからのブートを試みるが、起動しない。いろいろと試してBIOSの設定を変えているうち、うっかりBIOS設定でUSB3.0を切ったら二度とUSBデバイスを認識しないカラダになってしまった。
外付けキーボードを挿しても認識しないので、何の操作もできなくなってしまった。USB3.0を切ってはダメです。あはは!!!

普通のデスクトップやノートのマザーボードだったら、CMOSクリアをかけてBIOSをリセットすればいいんだが、タブレットではどうにもならない。やむを得ず、殻を割る。KVI-70Bは、両面テープなどは使われておらず、簡単に割れた。
IMG_20170723_171148s.jpg

バッテリーを空にしたり、バッテリーからの給電線を切断したり、3日ほど放置したりしたが、BIOS設定はリセットされない。
万策尽きた、と思ったが、5年以上前に、BIOSをぶっ飛ばした時にチップに無理矢理BIOSを書き込むために、フラッシュROMライタを買っていたことを思い出した。これでBIOSを吸い出せばなんとかならないだろうか。

ボードを眺めていると、Winbond W25Q64FWSというチップがあった。これがBIOSに違いない。が、ボードにがっちり実装されていて取り外せそうにない。どうしよう、、、と思ってぐぐっていると、ICテストクリップというものがあることを発見。チップを脇から挟んでROMライタまで結線するというアイテムだ。
早速クリック。

ROMライタは古いものなので、WindowsXP 32bitのドライバしかないので、読み書きする用に別のマシンにXPを新たにインストールし、準備を整えているうちに、テストクリップが届いた。
IMG_20170806_082411s.jpg
IMG_20170806_103149s.jpg

チップを挟んで、BIOSを吸い出す。一旦Eraseして、BIOSを書き戻し、起動。が、設定は変わらず、キーボードは認識しない。BIOSの設定自体がフラッシュROMに書き込まれているのか?なんてこった。BIOSファイルのバイナリダンプを眺めてみるが、どこが設定値なのか分かるはずもない。多分、どこか1バイトを書き換えればいいのだろうが、どこだか分からん。くそう、メーカーがBIOSファイルを1つでも公開してればなあ……。手詰まり。再び、万策尽きた。

未練がましく、チップを覆っているセロハンを剥がしてみると、ボード上に "EM_I8170_V3.1" の刻印があったので、ぐぐってみると、EMDOOR EM-I8710というタブレットがあり、これは REEDER W7iC というタブレットと等価であって、W7iCのBIOSファイルが見つかった。
ダウンロードしてみると、BIOSとおぼしきReederW7iCBIOS_V1.6.8.binも8192KB。これ焼けばいけるかも!?ということで(起動できなくなってもROMライタだから怖くないし)、フラッシュROMにこのBIOSを書き込む。
IMG_20170806_103327s.jpg
ezp2011-2017-08-06.PNG

起動してみると、、、おお、キーボードが認識されている!起動画面とか充電画面は Reeder W7iC らしきものに変わってしまっているが、これでいけそうだ。

もう元々の中身を回復するのは諦めて、WindowsのMediaCreationToolで Windows 10 Home 32bit のインストール用ブートUSBを作り、Windowsパーティションをぶっ飛ばしてクリーンインストールを実施。成功。

不明なデバイスが大量にあるが、これを順次解決していく。
Windows Updateを全て当てた後、メインボード関係のドライバとして、(多分互換だとおぼしき)Iconia Tablet8 W1-810から、8.1用の「Platform Installer ドライバー」をダウンロードして入れる。これでI2C関係の不明なデバイスが解決された。
次いでKionixからKXTJ9-KXCJ9-KXTJ2 Driverをダウンロードして入れる。これで3軸傾きセンサーが解決された。(回転方向が反対になってるが、後で解決する)

後はカメラとタッチパネルだが、これはメーカー、ベンダーのドライバがない。
カカクコムのBBSに、吸い出したドライバーを発見したのでダウンロード。解凍してUSBメモリでKVI-70Bに持って行き、!マークのデバイスを「ドライバーの更新」でローカルから探して当てる。
タッチパネルはこのままではどうもタッチが狂っているので、SileadTouch.fwを取得。zipを解凍したら、SileadTouch.fw を C:\Windows\System32\Drivers の下にコピーし、デバイスマネージャーからタッチパネルのドライバーを一度アンインストール。再起動すると不明なデバイスになるので、ドライバーの更新で当て直して、解決。
センサーの回転方向が反対になるのは、レジストリ値 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ROOT\SENSOR\0000\Device Parameters\kxfusion に 00,00,00,01,01,00,02 と書き込む。解決。
regファイルはこう。Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ROOT\SENSOR\0000\Device Parameters\kxfusion]
"Orientation"=hex:00,00,00,01,01,00,02

不明なデバイスに1つ残っている(カメラのセンサー?)が、これは解決法が分からなかった。

が、これで、概ね普通に使用可能なWindows10になったと思われる。
IMG_20170806_164759s.jpg

ストレージの残りが2Gもないので、果たして何かに使えるかと言うと、微妙だが……。
あと本体あっつい!
タグ:KEIAN KVI-70B
posted by usoinfo at 17:25 | Comment(0) | Windows | このブログの読者になる | 更新情報をチェックする