メディア

見張れ! ラズパイ 〜実家の親を熱中症から救え江端さんのDIY奮闘記 介護地獄に安らぎを与える“自力救済的IT”の作り方(3)(6/7 ページ)

» 2019年12月26日 11時30分 公開
[江端智一EE Times Japan]

オムロンのセンサーをラズパイで使う

 先々月(2019年10月下旬)に、出張のついでに、秋葉原で開催された「Raspberry Pi Industry User Conference 2019」に、ちょっとだけ(1時間ほど)顔を出してきました。

 その時、パネル展示されていた、オムロンのUSBセンサー(2JCIE-BU01)に興味を引かれました ―― なぜか? もう私、ラズパイにセンサーを搭載するために、はんだ付けの作業をすることや、ジャンパー線が外れていないかを心配することに、心底、腹を立てていたからです(著者のブログ1ブログ2)。

 ラズパイは1台や2台くらいなら『かわいい』『いとおしい』と思えますが、十数台以上を同時にメンテナンスするとなると、『本気で腹が立って』きます(先月、休載となったのは、この十数台のラズパイのカーネルパニックや原因不明のリブートの繰り返で、発狂中だったからです)。

 ―― ラズパイの産業応用を真面目に考えるなら、(1)防水・防じんの筐体、(2)小型で十分な電流量を担保できる電源、(3)GPIO接続ではなく、配線不要のUSB直結型のセンサー、をなんとかせにゃならんと思うのですが、「ラズパイの産業応用」と掲げる割に、この手の(地味だけど大切な)方式や製品が少ない(はっきりいって「ない」)です。

 ですので、私が、オムロンの展示ブースに飾られていたこの製品(2JCIE-BU 環境センサー[USB型])にフラフラと引き付けられたのは、いわば当然と言えましょう。

ラズパイのUSBポートに直結して使えるセンサーで、温度、湿度、照度、気圧、騒音まで測定可能なデバイスで、しかも安い(Amazonで1万7000円くらい)

 1年前に死去した晩年の父は、クーラーのスイッチも入れられない状況であり(ガスストーブがついていたことすらあった)、夏場の熱中症には大変心配しておりました。

 真冬に二階のドアが開けっ放しになって、2週間くらい気が付かなかったこともありました ―― 今となっては、どうしようもありませんが。

 あの時、実家の室温や、電気がついているかどうか、部屋で物音がしているかどうかなどが分かれば、どれだけ助かったかしれません。そのような情報は、「カメラを使った見守り」なんぞより、よっぽど役に立ったと思います。

 話を戻します。

 Raspberry Pi Industry User Conference 2019のブース展示の会場で「私のラズパイ環境(4GPi用のカーネルイメージ(*))での動作確認に、ご協力頂けませんでしょうか」という不躾(ぶしつけ)な私の申し出に、オムロンの方は心よく応じて下さり、この製品(2JCIE-BU 環境センサ(USB型))を、私の自宅に郵送してくださいました。

(*)4gpi-buster-lite-20190820.img

 で、今日(会社を休んで)、このセンサーをなんとかラズパイで使えるように、試みていました。

 2JCIE-BUをLinux等で動かすために、Contributorの方がpythonのサンプルプログラムを開示されていますが、私はserialのライブラリのバージョン問題(serial, pyserial, python3-serial)に直面して、四苦八苦していました。ソースコードにもいろいろな変更を試みたのですが、結局動かすことができませんでした。

 「もうダメかなぁ」と諦めかけていたころ、たまたま、このページを見つけました(アットマークテクノ様、助かりました。ありがとうございました)。

 取りあえず、本日のところは、このセンサーからラズパイでデータ1行のみ取り出すところまでの、私の手順を開示します(次回以降、処理の自動化と、センサーデータをWebでグラフ化するところまで持っていきます)。

 それでは、以下に、私が試した手順を説明します。

 まず、"2JCIE-BU01"をUSBポートに差し込んで、ラズパイをリブートします。リブート後に、以下を行ってください。

$ lsusb
Bus 001 Device 004: ID 0590:00d4 Omron Corp. ←これがあることを確認
Bus 001 Device 006: ID 1e0e:9001 Qualcomm / Option
Bus 001 Device 005: ID 0424:7800 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 環境センサーが正常に接続されているならば、「Omron Corp.」という情報のデバイスが表示され、これが環境センサーのデバイス情報になります。このデバイス情報から「USB ID」(上記例では[0590:00d4])が確認できます。

 確認したUSB IDを「/sys/bus/usb-serial/drivers/ftdi_sio/new_id」に記入します。

$ sudo modprobe ftdi_sio
$ sudo sh -c "echo 0590 00d4 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id"

 このデバイスが、ttyUSB*のどれかに割り当たるのは分かっているのですが、その番号を知るためには、メッセージの内容を読み取る必要があります。

$ dmesg | grep ttyUSB
[13.191062] usb 1-1.1.3: GSM modem (1-port) converter now attached to ttyUSB0
[13.194454] usb 1-1.1.3: GSM modem (1-port) converter now attached to ttyUSB1
[13.201466] usb 1-1.1.3: GSM modem (1-port) converter now attached to ttyUSB2
[13.203155] usb 1-1.1.3: GSM modem (1-port) converter now attached to ttyUSB3
[13.204087] usb 1-1.1.3: GSM modem (1-port) converter now attached to ttyUSB4
[154.579585] usb 1-1.3: FTDI USB Serial Device converter now attached to ttyUSB5

 このように、私のラズパイでは、ttyUSB5に割り当たっています(これは環境によって変わります)

 しかし、こんなこと毎回やっていたら面倒です。自動化する方法は、前述の参照ページに記載があるので、それを試してください(私の環境ではうまく動作させることができなかったので、現在別手段を検討中です)。

 次に、こちらのサンプルプログラム(C言語)をダウンロードして、適当なディレクトリに展開してください。

$ tar xzvf 2jcie-bu01-usb.tar.gz
$ cd 2jcie-bu01-usb-master
$ ls
data_output.c  data_output.o  Makefile sensor_data.h common.h data_output.h main.c sensor_data.c  sensor_data.o sensor_data.h

とした後、

$ make

とすると、私のラズパイでは、

main.c: In function ‘main’:
main.c:185:11: error: ‘exit_restore’ undeclared (first use in this function)
    return exit_restore;

(以下省略)

というエラーが出てきたので、main.cの一部を、

//goto exit_restore;
restore_serial(fd, &tio);
exit(-1);

のように書き直して(3箇所くらいあった)、無理やりビルドまで通して、実行ファイル"2jcie-bu01"を作りました。

 実行結果は以下の通りです。

$ ./2jcie-bu01 /dev/ttyUSB5 0
Mode : Get Latest Data.
Temperature, Relative humidity, Ambient light, Barometric pressure, Sound noise, eTVOC, eCO2, Discomfort index, Heat stroke
24.52,53.03,75,1012.602,67.11,108,1113,71.45,21.23
Program all success.

 コマンドを入力する度に、値が微妙に変化しているので、正常に動作しているものと思われます。センサー値さえ取得できれば、後はなんとかなると思いますので、今回はここまでにしたいと思います。



 それでは、本シリーズ第3回の内容をまとめます。

【1】最初に、要介護人(私の父)の介護区分の手続(面接)と、介護区分をゲットする為の準備や心構えについて説明しました。介護は「愛や努力」では足りず、行政やITシステムに立ち向かう「執念」が必要であることを強調しました。

【2】姉と嫁の例を用いて、IT介護(見守り)に対する2つの考え方「必要/不要」について論じました。立場や状況によって、当然にその考え方は変わってくることを示しました。また、現在「家族」や「血縁」を前提として成り立っている介護が、近い未来に成立しなくなることを、データとシミュレーションで示しました。

【3】認知症が理解されにくいのは、外部とコミュニケーションできず、その行動が分からない「ブラックボックス問題」であるとした上で、ブラックボックスの中について検討を行いました。その結果、認知症は、4種類の恐怖で構成されており、その恐怖の一つは「強制的に異世界に飛ばされて、戻る手段がない」というものであることを、具体例を挙げて説明しました。

【4】私たちは誰もが、この認知症から逃げる手段は「ない」とした上で、この「異世界への強制転送」に備えた覚悟と、現世界での人格改造 ―― 物事にこだわらず、他人を許し、ありのままを受け入れることのできる、器の広い人間になっておくことを提言しました。

【5】認知症を発生させる大きな原因が「年齢寿命が長過ぎる」という仮説を立てて、さらにその仮説に基づき、その原因が顕在化しなかった時期が「60年前」という推定値を出しました。

【6】ラズパイとその専用の通信デバイスからなる、DIYの見守りシステムの最小構成の作り方を説明し、さらに、オムロン社にご協力頂き、同社の「環境センサ 2JCIE-BU」を、私のラズパイでも、なんとか動かせるようにしました。


 以上です。



 最近、「異世界」を扱ったアニメが多いです。

 完成度が高く(絵がキレイで、動きがシャープ)てストーリーが楽しく、なにより、これまで見たことのない新しいコンセプトに、心から感心しています。そして、登場するキャラクターも魅力的で、主人公がかっこいい。

 しかし、半世紀を生きて、すっかり性格がひん曲がってしまったエンジニア(私)は、こうも思う訳です。

 異世界でここまでの能力を発揮できる主人公であれば、わざわざ異世界に転生しなくとも、現実世界でも十分うまくやっていけただろうに

―― と。

 『異世界に行けば、素晴しい自分になる』というコンテンツ(アニメ、ラノベ等)が流行るのかは ―― もちろん、そういうコンテンツが「楽しい」からです。

 しかし、普通に考えれば、異世界に転生すれば、戦闘レベルも下がるし、現世界のスキルも使えません。現実世界で生きるより、もっと厳しい生活を強いられる、と考えるのが自然です。

 そういうコンテンツが存在しないのは、当然「楽しくないから」であって、「考えたくないから」であって、現実の世界では「売れないから」です。

 今回のコラムで、私は、いずれは誰も彼もが、「異世界への強制送還を強いられる」という、絶望的な未来 ――「楽しくない」「考えたくない」世界観を描きました。

 そして、私も、「"脳"の稼働期間」と「"肉体"の稼働期間」の非同期が始まるまで、もう1世代分の時間に迫っています。正直怖いです。

 認知症の人は、毎日を恐怖の中で生きている ―― 次の異世界強制移住の待機者リストに入っている私たちは、そのことに思いを馳せましょう。

 そんな恐怖の中で生きている人たちに「少しだけ、優しく接すること」ができたら、いずれはその恐怖の中で生きることになる私たち自身にとっても、ささやかな希望になると思うのです。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.