定年退職後の人生を楽しく過ごすために・・・
2017-04-04 水道漏水検知システム稼動
■ [マイコン] STM32とラズベリーパイ3で漏水検知システムを構築!
水道料金が水道管からの漏水で40万円もなったことがあった。水道局に掛け合って4万円程度に下げてもらったが、その時対策を聞くと、「水道メーターを毎日チェックするしかありません」とのこと。
電気とか、ガスとか、他のユーティリティなら検出器、遮断器などがあるのに、水は漏れても大した事故に繋がらないと言うのか?ユーザーはその代金を支払うことになるのに・・・。
■ 漏水検知システムの概要
ということで、次のようなシステムを考えてみた。
1.構成は、水道メーターのローターに赤外線反射型センサーを取り付け、ローターが回転する度に反射するパルスをSTM32(マイコン)の割込みピンにて取り込む。
2.STM32では、割込み処理により、その回転数をカウントする。
3.また1秒毎のタイマー割込み処理で、カウント値が増えているかチェックし、増えている時->通水状態、同じ値の時->停止状態の判断をする。同時に、その状態の継続時間が設定時間を越えた場合アラームとしてイベントを発生する。
4.「通水」から「停止」または、その逆「停止」から「通水」への状態変化時、またはアラーム発生時、RS-232cにて接続したノートパソコン(Windows7)に送信する。
5.上記の状態変化時以外にも1秒単位の定時通信で、その時のステータス(状態)を送信する。
6.ノートパソコンは毎分(00秒の時)と、状態変化時点にサーバー(ラズベリーパイ3)へデータを送信する。
7.サーバーでは受信したデータをデータベース(SQLite3)に保存すると共に、WEBサーバーとしてクライアントからの要求に対しリアルタイム情報を提供する。
8.クライアント側としては、ブラウザを用い、サーバーへアクセスし、給水状況などの情報を確認する。
■ システムは自宅内LAN上に
現状システムは、自宅内LANに全て接続されている。(将来的にはインターネットで自宅サーバーへのアクセスを可能とする予定)
接続は、センサーからSTM32までは5mの有線。STM32からノートパソコンまでは、USBケーブル。ノートパソコンからLANケーブルにてLANに接続。
サーバーは同一エリアのハブからLANケーブルで接続されている。
ブラウザは、他のパソコンやiPADなどで起動し、サーバーに接続する。
■ 画面例
画面は3画面用意した。画面上半分は共通で、現状の通水状態、その継続時間、アラーム発生復帰状態を表している。ひとつは1日の通水状態を1時間単位の棒グラフにて表示。
二つ目は各時間帯での通水状況を秒単位で、かつその通水強度(ローターの回転数に比例した値)を色分けして表示。
そして最後に、通水状態が10分を越えた時、また停止時間が30分を越えた時とその復帰時に警報として表示する画面。
この時同時にE-メールで予め設定しておいたアドレスに通知する。
2017-04-08 Windows-XPマシンをLinuxで有効活用
■ [パソコン] まだまだ使えるWindowsマシン
マイクロソフトから、「Windows-XPのサポートを2014年4月9日に終了する」と発表され、それ以降はアンチウィルス対策などの不備が予想されることから、使用できず、LANケーブルを抜いてそのまま放置しているケースも多いのではないかと思う。
私も3年前「もう使えない」と、ハードディスクの内容をバックアップして放置したまま電源も入れたことがなかった。このパソコンはEpsonのPro3100で、2004年12月に購入し、約10年使用した。
とは言うものの、Windows-XPのサポート終了問題以外に特に問題はなく、スペックも32ビットCPUのPentium 4(3.2GHz)、2GBメモリ、500GBのハードディスクとまだまだ現役でも使えるそうなのに、「本当に勿体無い」と思い、捨てるに捨てられずに来た。
ところが、Microcontrollerに傾注している昨今、Linuxに触れる機会もあり、このパソコンにLinuxをインストールすることを思いついた。
■ Linuxは無料で使える洗練されたOS
Windowsはマイクロソフトと言う企業が営利目的で開発したOSであるが、Linuxは大学などの機関がオープンソフトの理念に基づき開発を進めてきたOSで使用に関しては無料である。
OS以外にもオフィスをはじめ多くのアプリケーションソフトが無料でインストール出来るのも世界中で普及している理由である。
■ どのようにLinuxを入れるのか
いろいろ調べて見たが、Linux Mintが一番の人気。ダウンロードサイトで自分のマシンの性能と推奨スペックを見比べ、これなら使えると判断した。もちろん64の方がいいのだが、私のパソコンは32ビットなので最終的にはLinux Mint 18 Sarah - Cinnamon (32-bit)を選択した。 ダウンロードサイトは、下記。Linux Mint 18 "Sarah" - Cinnamon (32-bit)
2017-04-11 外出先から自宅のサーバーにアクセス
■ [パソコン][IT] ラズベリーバイとは?
先日の記事にて紹介の通り、自宅にラズベリーパイ3(RaspberryPi3)をサーバーとして運用を開始した。ラズベリーパイ3とは小さなカードサイズの64ビットマイコン(と言うよりと言うより性能面、機能面ではパソコンに匹敵)
腕時計の大きさと比較してもらうと良く分かるが、クレジットカードのサイズで64ビットパソコンと同性能あるラズベリーパイ3。写真のように手前下から電源ケーブル、HDMIディスプレイケーブル、右の下からLANケーブル、右上がキーボード、マウス、その下がUSBハードディスクと、これらを接続すれば立派に高性能パソコンとなる。しかも値段は4,500円だった。
ラズベリーパイシリーズを開発した英国のラズベリーパイ財団のホームページ: ラズベリーパイ3
■ VPNサーバーを立ち上げる
自宅内ではこのラズベリーパイ3をサーバーとして運用しており、水道メーター、室内温度、湿度など各種センサーから得られたリアルタイムデータをデータベースに保存している。また、WEBサーバーとして別のパソコンや、iPadからサーバーにアクセスしてブラウザで現状をリアルタイムで表示できるようになっている。
しかしながら、最終的な目標は、外部からのアクセスである。世界中どこからでもインターネット接続で自宅サーバーにアクセスして、リアルタイムに自宅の各種データを知ることが出来る。
このためには、自宅サーバーをインターネットに公開する必要があるが、これには、セキュリティの問題もあり、また自身の利用のため公開する必要もない。そこでVPNサーバーを立ち上げ、VPN接続することを考えた。
VPNとは、"Virtual private network"のことで、公衆ネットワークを利用し、あたかも自宅内のLANに直接接続しているように仮想的なネットワーク環境を提供するものである。
これは筑波大学などの研究により公開され、無料で利用出来る。
関連サイト:SoftEther VPN プロジェクト
セッティングは非常に簡単だった。サーバーの設定を終え、クライアント(ノートパソコン)側の設定をして、ネットカフェに行き、実際に外部のインターネット環境から接続テストを行ってみた。すると意外と簡単にものも1秒もかからない速さで接続でき、自宅LANのWEBサーバー(ラズベリーパイ3)に接続できた。もちろん、VPN接続を切断すると、表示されなくなるので、VPNが有効であることが分かる。
これで、世界中どこからでも自宅の状況が把握出来ることになった。
■ 自宅のテレビをVPN経由で見る
ついでに、自宅でLAN経由で見ているテレビ(VulkanoストリーマーがWiFiにてLANに接続されている)の視聴も確認してみた。これもちゃんと映ることが確認出来た。これで同じく、世界中どこでも自宅のテレビを見ることが出来る。 (Vulkanoは米国の会社でアイ・オー・データから購入したが、2017年2月末をもって、使用できなくなるとの連絡があった。理由はインターネットでの接続サービスを停止したため)2017-04-22 ESP8266 ESP-WROOM-02がすごい!
■ [マイコン] ESP8266とESP-WROOM-02
「ESP8266は上海に拠点を置く中国企業Espressif Systemsによって製造されている完全なTCP/IPスタックとマイクロコントローラを備えた低コストの小型Wi-Fiモジュール」とWikipediaにあるように、WiFi付きの32ビットマイクロコントローラである。
これのすごいところは、高性能32ビットMPU(マイクロプロセッサー)でWiFiが付いているので、配線コストもかからず、しかも低価格。ESP8266MPUを組み込んだモジュールであるESP-WROOM-02が1個400円程度で購入できる。
■ STM32からESP-WROOM-02へチェンジ
STM32でソフト開発済みであった水道メーター用モニタープログラムをESP-WROOM-02へ移植を行った。C言語からARDUINOと言うMPU用のSDK(SoftwareDevelopmentKit)を使用するため、少々移植に手間取ったが、約3日かけて安定した動きとなった。(これはかかり過ぎと思う)
なぜなら、ARDUINO用SDKでは非常に簡単にプログラミングが出来るようになっている反面、多くの関数等がカプセル化させており、サンプルプログラムや実績のあるプログラムから逸脱したプログラムを作ろうとすると、その特性を知るため、裏に隠されたハードウェアからソフトウェアの詳細な仕様を知る必要が出てくるから。特に高速の割込を処理する水道メーターのローター検出には、この外部入力による割込とタイマー割込処理が必要で、プログラム設計から見直しが必要となったためだと思う。
写真左は、STM32マイコン、今年2月にプログラム開発を終え、運用中だったが、今回中央のWROOM02に移植し、本日バグ取りを完了したつもり(言い切れない)。
配線はブレッドボードと言う穴あきボードに部品を配置し、ワイヤーで回路を作っていくスタイル。この方が、ハンダ付けするより早いし失敗の時もすぐに直せる。
中央のブレッドボード上部にはみ出している小さいのが、WROOM02で、下方にあるのが、電源部(3.3Vと5Vを供給)。写真右上の青く光るLED部はパソコンとUSBで接続した通信部。プログラムの転送やモニターに使うが、サーバーへのデータ送信には、WiFiを使うため、通常は接続していない。(メンテ用)