【実装技術館】Co2センサ(コントローラ) NMA-VRC-2 (RS485 Modbus)

植物工場関連設備の構築でCo2センサを要求されるのですが、
学術レベルのCo2センサはバカ高くて買えないので
もうちょっとレベルを下げたやつ、という要求で選定しました。

DC(またはAC)24Vで動作し、各値がModbusで取得できます。

  

 メーカのホームページはこちら。

group.chcsys.net


特に協力してるわけでもないので変な問い合わせはしないでねw

 

f:id:honeylab:20170529114636j:plain

 

さっそく分解します。

f:id:honeylab:20170529112035j:plain

 

左側の縦長の基盤がCo2センサモジュール、右側は上下に分割されています。
電源、入出力端子は右側の端子台に止めた後、ふたを閉めることで接続されます。
この手の機器は接続のため分解することが必要なものが多いので、
初めての人はビビるかもね。

 

基板全体

 

f:id:honeylab:20170601083912p:plain

さて部品が集約されている左側の部分は大きく分けて3つ。

  1. メイン基板
  2. Co2モジュール基板
  3. インターフェイス基板

に分かれています

まずはこの機械のメイン部分、Co2モジュール基板を見てみます。

f:id:honeylab:20170601084254p:plain

表面にはNDIR(近赤外線)Co2計測センサ本体が実装されています。
センサ本体は V A B の三端子です。
おそらくどこかのモジュールだとは思うんだけど、ぱっとは見つからなかった。
センサ本体には測定口があり、チューブで外界と接続されています。
また、温度測定用サーミスタと、ちょっと高そうなコンデンサが実装されています。
温度補償用かな?

裏面を見てみる。写真右側からメインの処理をしてそうなQFPのIC。
見たこともない型番なので、割と特殊なASICか、メーカカスタムのマスクROMの
マイコンなのかもしれない。
基板真ん中にI2C接続の1kb EEPROMが実装されている。較正用とかかな?
さらに左側、Microchipのマイコン「PIC16F1824」が載っています。
おそらくだけど、このモジュール基板はI2C接続でメイン基板からデータを読みだしているように見える。この通信部分を任されてるんじゃないかな?部品配置的に。

 

さていよいよメイン基板。ちょっとカバーでおおわれている部分をはがしてみます。
しかし、何か重要なものを覆っているというわけでもなさそうなんだが…w

f:id:honeylab:20170601085122p:plain

特になにもなかった!なんでだったんだろう…

しかしこの製品、とにかくシルク印刷が親切である。
I2C端子にはことごとくマーキングがあるし、
なんとPIC用の書き込みポートも親切に準備してある。

…あれ?PICはどこだ?
この基板と表の液晶の間のこいつなんじゃないかな…?


これを引っぺがして型番を見るほどの気力はないので、そういうことにするw

あとは定番MAX3232C。後で出てくるシリアル接続端子を使って外部と通信できることになっています。
その右上のはI2C EEPROM。設定とか覚えるんだと思う。
真ん中あたりの黒い丸は電子ブザー。設定によって警告とかをならせます。
電源入力はAC/DC共用。おそらくブリッジダイオードで整流して使ってるんだと思うけど、ぱっと見どこだかわかんない。やっぱり液晶との隙間に入ってるのかな?

で、右側の青い丸は表面実装コイル。電源周りの部品です。

f:id:honeylab:20170601085928p:plain

というわけで電源部品が実装されてる基板表面。
超定番のDC-DCコンバータIC MC34063があります。
これで外部電源から内部で必要な電源に変換しています。
実際にはどうかわからないけど、多少の電源変動は大丈夫なんだと思います。
シルクに+12Vっていうのがあるから内部的には12Vなのかな?

LCDの下のあたりに"RH ATM"と書かれた後付け基板。
これが湿度計なのかな?ATMは気圧だと思う。Co2の較正に使っていると思います。

そして、バックライトとして使えそうなLEDのパターン。
LED内蔵のモデルがあるのかな…?

また、なんかわかんないけど半田ジャンパがあります。なんだろねw

 

最後、インターフェイス基板。
f:id:honeylab:20170601091425p:plain

RS-485のIFやオペアンプ(ちょっと何用かわからない)が実装されています。
同様にカスタムっぽいICがあってちょっとよくわかんなかったです。

この機器、いろんな種類のI/Fがあるので、この部分を置き換えることで
カスタム組み合わせが発生するようになってるんでしょうね。 

f:id:honeylab:20170601091631p:plain

 

http://group.chcsys.net/jp/wp-content/uploads/2016/11/co2controllernma.pdf

PDFのパンフはこちら。
仕事で植物工場や温室モニタリングをしてるのですが、
前述のように、学術研究用だとVAISALAの持って来いとかよく言われてしまうんですが、

CO2計測・製品カタログ - Vaisala

こいつバカ高いのよ。一点20まんぐらいすんの。
そうすると実験用の予算が付きにくいのでこないだまで別の韓国メーカーの使ってたんだけど、
こいつが出てきたのですこし選択肢が増えた感じです。

さてしかし、書くの二回目だけどこの基板、シルクが丁寧すぎるだろ…
PICのMCLRのプルアップ抵抗の部品番号は"RMCLR"だし、LEDの抵抗はRLED0だし、
まるで組み立てキットか教育用の機材なんじゃないかと思ってしまうぐらいですね。

で、シルクの中に、"ZGW19C" という文字列がよく現れます。
内部コードだろうし何も情報ないだろうと思ったけど、ググってみると…

http://www.zyaura.com/products/ZGw19C.asp

f:id:honeylab:20170601090710p:plain

 

OEMだったwwwwめっちゃOEMだったwww

ごめんねwなんかごめんねw

 

いや、OEMでいいのよ。でもパンフとかすごい気合入ってたんで
もうちょっと独自にどうにかのなんかだと思ってたのでびっくりしただけよw

耐久性とかこれから使ってみて確認するところです。

というわけで、Co2・温度・湿度センサを分解してみた記事でした。

 

トイレ使用時刻ロガーを作る

妊娠9か月に入る嫁曰く、

「妊娠が進むにつれ、夜中にトイレに起きる回数が増える。

安定期のころはきっかり3回だったが、今は5回、多いときには10回行っている」

とのことでした。
実際に多くの人から話を聞くとそれは間違いないようですが、果たして定量的に記録は取られているのか、睡眠の周期との関連性があるのかどうか、などを検証するため、下の装置を作りました。

 

f:id:honeylab:20170510114818j:plain

これは、Arduino Megaと EPSON RTC

リアルタイムクロック(RTC)モジュール: 半導体 秋月電子通商 電子部品 ネット通販

を組み合わせて、接点が導通したときの時間を内蔵EEPROMに記録するようになっています。

 

この接点の片方をナットに結んでタンクに沈め、もう片方は水の注ぎ口に触れるように設置します。

f:id:honeylab:20170510233742j:plain
こうすると、水を流してタンクに水が注がれたときに接点がONになり(A/Dで見ています)、
時刻が記録されます。

開発時にセットした時刻や、時々記録を覘くときに電源を外して時刻が逆戻りするのを防ぐために
RTCにはバックアップ用の電池を繋いでいます。

 

本日設置しました。
これから妊娠のこり期間二ヶ月ほど稼働させて、
どんなデータが取れるか見てみたいと思います。

※ちなみに、このトイレは夜間嫁しか使わないです。

※※当然、このデータの取得とその方法について嫁から了承済みですw

 

…レバーに検出スイッチをセットするでもよかったかな…

単純に人感センサでもいいんだけど、在庫がどっかいってたし、これが一番安いんだよね…

 

動作参考動画です。水を流すとセンサーが反応してLEDが点滅します。

動画 2017 05 10 23 38 00 - YouTube

 

docomo フォトパネル03(HUAWEI 255) 解析続き

honeylab.hatenablog.jp

 

前回からの続き

 

起動が完了するとログイン可能な状態になります。
しかし、何やら様子がおかしい。ちょっと見たことない画面。
パスワードも不明。

いろいろ調べたところ、 admin / admin でログイン出来た。

f:id:honeylab:20170506123423p:plainしかし、lsもない。なぜ?

と思ったら

 

f:id:honeylab:20170506123458p:plain

MMCシリーズの専用UIに
ネットワークカメラなどの類似製品で使われているようです。

ここでshell を入力すると、ようやくいつものBusyBox shell に入れます。

f:id:honeylab:20170506123613p:plain

MTD(NAND)構成は以下の通り。

カーネル、ユーザ領域ともバックアップとの2面構成になってるようです。

起動直後に'd'の入力で u-bootの環境に残ります。

ここで表示されるbootargが2系統準備してあり、片方でこけたら次に生きようになってるのかな?

bootarg1=setenv bootargs 'mem=64M console=ttyAMA0,115200 busclk=150000000 root=/dev/mtdblock5 rootfstype=yaffs2 mtdparts=hinand:8M(Ext),8M(logo),8M(kernel1)ro,8M(kernel2),64M(sys1)ro,64M(sys2),184M(fota),112M(sysdata),-(pic) panic=3'


bootarg2=setenv bootargs 'mem=64M console=ttyAMA0,115200 busclk=150000000 root=/dev/mtdblock6 rootfstype=yaffs2 mtdparts=hinand:8M(Ext),8M(logo),8M(kernel1),8M(kernel2)ro,64M(sys1),64M(sys2)ro,184M(fota),112M(sysdata),-(pic) panic=3' 

 

見た限り、/dev/mtdblock5にyaffs2で作ったrootfsを書いてやればサクッとシステムが更新できるんじゃないでしょうか。

 

ところで、MMCスロットがあるのでアクセスできるか見てみましたが、
helpにmmcサブシステムがありません。

あちゃーと思いつつ、usb start してみたところ

hilinux # usb start
(Re)start USB...
USB: scanning bus for devices... 3 USB Device(s) found
scanning bus for storage devices... 1 Storage Device(s) found

 

え?USB Storage???

hilinux # fatls usb 0
...
system volume information/
1404 bootex.log

1 file(s), 1 dir(s)

 なんかいる!

hilinux # fatinfo usb 0
Interface: USB
Device 0: Vendor: Generic Rev: 1.68 Prod: Ultra HS-COMBO
Type: Removable Hard Disk
Capacity: 3781.5 MB = 3.6 GB (7744512 x 512)
Partition 1: Filesystem: FAT32 "NO NAME "

あ!これSDカードが見えてる。
なんとu-bootからSDカードが直アクセスできました。

で、fatload もあるので、u-bootのboot env を書き換えてやればたぶん普通にSDから起動できます。
すごいすごい。

 

さて、とりあえず、mtdblockにそのままwriteできるかどうか、
logoパーティションBMPを書き換えてみます。

普通に起動したSDカードが使えるってなんて便利なんでしょう。
ファミコンミニですごい大変だったのでものすごい楽)

[root@localhost /root]$ dd if=/dev/mtdblock2 of=/mnt/sd/part1/mtdblock2
16384+0 records in
16384+0 records out

 

ddで書き出したデータは以下のようなロゴになっていました。

普通のWindows BMPファイルです。

f:id:honeylab:20170506125005p:plain

 

 

u-bootが起動した直後に表示してくれるのでスマートな起動画面になりますね。

この時にコンソールにはこのように出ています。

prepare to show logo!
Decode LOGO(BMP format) OK

 これをペイントで開いて、けもふれロゴジェネレータでつくった画像を突っ込みます

f:id:honeylab:20170506124758p:plain

そして、

[root@localhost part1]$ dd if=mtdblock2 of=/dev/mtdblock2
2250+1 records in
2250+1 records out 

で書き戻す。

 

再起動。

 

 

 

できたwwww

続く。

docomo フォトパネル03(HUAWEI 255) 解析続き

honeylab.hatenablog.jp

 

前回からの続き

 

起動が完了するとログイン可能な状態になります。
しかし、何やら様子がおかしい。ちょっと見たことない画面。
パスワードも不明。

いろいろ調べたところ、 admin / admin でログイン出来た。

f:id:honeylab:20170506123423p:plainしかし、lsもない。なぜ?

と思ったら

 

f:id:honeylab:20170506123458p:plain

MMCシリーズの専用UIに
ネットワークカメラなどの類似製品で使われているようです。

ここでshell を入力すると、ようやくいつものBusyBox shell に入れます。

f:id:honeylab:20170506123613p:plain

MTD(NAND)構成は以下の通り。

カーネル、ユーザ領域ともバックアップとの2面構成になってるようです。

起動直後に'd'の入力で u-bootの環境に残ります。

ここで表示されるbootargが2系統準備してあり、片方でこけたら次に生きようになってるのかな?

bootarg1=setenv bootargs 'mem=64M console=ttyAMA0,115200 busclk=150000000 root=/dev/mtdblock5 rootfstype=yaffs2 mtdparts=hinand:8M(Ext),8M(logo),8M(kernel1)ro,8M(kernel2),64M(sys1)ro,64M(sys2),184M(fota),112M(sysdata),-(pic) panic=3'


bootarg2=setenv bootargs 'mem=64M console=ttyAMA0,115200 busclk=150000000 root=/dev/mtdblock6 rootfstype=yaffs2 mtdparts=hinand:8M(Ext),8M(logo),8M(kernel1),8M(kernel2)ro,64M(sys1),64M(sys2)ro,184M(fota),112M(sysdata),-(pic) panic=3' 

 

見た限り、/dev/mtdblock5にyaffs2で作ったrootfsを書いてやればサクッとシステムが更新できるんじゃないでしょうか。

 

ところで、MMCスロットがあるのでアクセスできるか見てみましたが、
helpにmmcサブシステムがありません。

あちゃーと思いつつ、usb start してみたところ

hilinux # usb start
(Re)start USB...
USB: scanning bus for devices... 3 USB Device(s) found
scanning bus for storage devices... 1 Storage Device(s) found

 

え?USB Storage???

hilinux # fatls usb 0
...
system volume information/
1404 bootex.log

1 file(s), 1 dir(s)

 なんかいる!

hilinux # fatinfo usb 0
Interface: USB
Device 0: Vendor: Generic Rev: 1.68 Prod: Ultra HS-COMBO
Type: Removable Hard Disk
Capacity: 3781.5 MB = 3.6 GB (7744512 x 512)
Partition 1: Filesystem: FAT32 "NO NAME "

あ!これSDカードが見えてる。
なんとu-bootからSDカードが直アクセスできました。

で、fatload もあるので、u-bootのboot env を書き換えてやればたぶん普通にSDから起動できます。
すごいすごい。

 

さて、とりあえず、mtdblockにそのままwriteできるかどうか、
logoパーティションBMPを書き換えてみます。

普通に起動したSDカードが使えるってなんて便利なんでしょう。
ファミコンミニですごい大変だったのでものすごい楽)

[root@localhost /root]$ dd if=/dev/mtdblock2 of=/mnt/sd/part1/mtdblock2
16384+0 records in
16384+0 records out

 

ddで書き出したデータは以下のようなロゴになっていました。

普通のWindows BMPファイルです。

f:id:honeylab:20170506125005p:plain

 

 

u-bootが起動した直後に表示してくれるのでスマートな起動画面になりますね。

この時にコンソールにはこのように出ています。

prepare to show logo!
Decode LOGO(BMP format) OK

 これをペイントで開いて、けもふれロゴジェネレータでつくった画像を突っ込みます

f:id:honeylab:20170506124758p:plain

そして、

[root@localhost part1]$ dd if=mtdblock2 of=/dev/mtdblock2
2250+1 records in
2250+1 records out 

で書き戻す。

 

再起動。

 

 

 

できたwwww

続く。

docomo フォトパネル03 を解析する

久しぶりの記事なのにファミコンミニじゃなくてごめんなさいw

 

Linuxが入ってるぐらいのフォトフレームを改造して
車載システムの一部にできないかと考え始めました。

どうやら、SIMが入って3G通信をしているぐらいのものならきっと行けるだろうと踏んで
ハードオフで「docomo フォトパネル03」を1000円で買ってきました。

 

f:id:honeylab:20170506052423p:plain

www.nttdocomo.co.jp

 

フォトパネル 03 | デジタルフォトパネル | ファーウェイ・グローバル

 

 

箱に入っていたままだったので若干賭けだったのですが。

さっそく分解してみます。

ねじを数本外すだけで簡単に分解できました。

液晶パネルのFPCは50ピン。
型番は「AT090TN12 V.3」でデータシートもあり
やれることならこのまま別のLinuxボードに接続することも可能かと思われます。

 

とはいえ、ちょっともったいないので、このまま有効活用できないか調べてみます。
とりあえず電源を入れて、システムメニューから本体情報を見てみると

 

f:id:honeylab:20170506052927j:plain

おおお?「Uboot」 って書いてありますね。
これはこないだまでさんざんいじっていたあいつの仲間じゃないですか。

本体上にUARTが出ていないか調べつつ、全体を把握します。

 

基板裏面

f:id:honeylab:20170506055052j:plain

 

基板表面

f:id:honeylab:20170506055053j:plain

はじめ、あからさまなテストポイントをあたっていたのですが全然見つからず、
結局、UARTは表面下部、未実装のデバッグ専用コネクタの部分に出ていました。

 

というわけで、とりあえずbootlogをここに

docomo photoflame 03 bootup log — Bitbucket

眺めてみると、いろんなことがわかりますよ。

 

とりあえずわかったことは、

・SDカードはすぐにアクセスできる(フォトフレームなので当然だな)

アーキテクチャはこんな感じ

 Linux version 2.6.29_hisilicon (wjg@dpf.china.huawei.com) (gcc version 4.4.1 (hisilicon-20100607) ) #1 Tue Nov 23 18:19:17 CST 2010
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 CPU: VIVT data cache, VIVT instruction cache Machine: hi3560v300

 

この単語でググっても、全然情報が出てこないので、だれもいじってないんだと思いますw

 

そうそう、書き忘れてましたが、この機械の製造元はHUAWEI。

そして起動中に以下のメッセージを見つけました。なんだこれ…

Welcome Visiting Huawei MMC255
Copyright by Huawei Technologies Co., Ltd.


調べてみると、「MMC255」という機種のカスタムなんじゃないか、ということが推測されました。

 

Jual Huawei MMC255 - rewangi | Tokopedia

 

さらに、docomoのこのモデルだけではなく、softbankからも似たようなものが出ているようです。

 

また、

BusyBox v1.1.2 (2010.11.23-10:21+0000) Built-in shell (ash)

がでるので、当然シェルが使えると思いたいところ。
引き続き、シェルへのログインとシステム解析を続けます。

 

掃除ロボット(ECOVACS DEEBOT R95)のためにソファーを底上げした話

先日買ったデーボくん、高さが10cmで、我が家のソファー下を通れませんでした。
 

なので、ちょっと頑張ってソファーを底上げすることにしました。
これは底上げした状態の写真。底上げ前に写真撮り忘れてしまったので。
f:id:honeylab:20170310105844j:plain


簡単に手順をば。

ソファーの底はこんな樹脂製の部品がボルトで止まっています。
f:id:honeylab:20170308175220j:plain
この高さが6cmです。
単純に、足の下に何かを置いてもいいのですが、それでは安定性に欠けますし
既製品の何かはお値段が張りそうです。

というわけで棚の自作用に買って余っていた1x4 材 910cm。(プライスレス)

f:id:honeylab:20170307175035j:plain

1x4の厚みは19mmですので、これを3枚重ねると約6cm上がります。

あれをこうして

 f:id:honeylab:20170308175256j:plain

ボルトの長さを+6cmのものに交換して (90円x4)

f:id:honeylab:20170308175408j:plain

 

こうじゃ!

f:id:honeylab:20170308175227j:plain

 

youtu.be

無事にソファー下も掃除してくれるようになりました!

安定性も申し分なく。

で、ソファーの下、今まで入れなかったので猫が嬉々として住み着いてるんですが…

f:id:honeylab:20170310105855j:plain

Progress of NESC as usb HOST

前回USB HOSTの利用に成功してから、madmonkey氏に改造してもらったhakchiでu-bootを書き込めるようになっていろいろテストしている途中、

突然USB HOSTが使えなくなってしまいました。
あちこちソースコードを書き換えたりしても挙動が定まらない。
いろいろ試していると、Linuxの起動後にscript.binの読み込んだ値がデフォルトに戻っていることに気付きました。
hakchiが変なところ上書きしてないよなぁといろいろ検証してみると、
u-boot -> Linuxの起動をすると、
次に起動したときにu-bootが元の状態に戻っているではないですか…

調べてみると、dmesgにしっかり証拠が…

 

おぉう…

f:id:honeylab:20170305153357p:plain

どうもbootのバックアップエリアがあって、そこから復活させられているようでした。
なので、とりあえず、つぶしますw

 

 

そんなこんなで、とりあえずUSBコネクタにつないだ普通のゲームパッドが認識するようになりました。

f:id:honeylab:20170305152341j:plain
しかし、どうも電源供給を電源コネクタから供給してやらないとやっぱりうまくいきません。
もしかすると、その部分改造必須になっちゃうかもだけど、まぁ一本ジャンプするか、コネクタつけるかとかだから人柱の人ならやってくれるかもね

 

あと、やっぱりまだKernel configが違うっぽくてmaliが立ち上がんないわ…