HomeMadeGarbage Loading

さくらのIoTモジュールで郵便ポスト検知 〜ユー・ガット・メール〜

ホーム
電子工作
Raspberry Pi
IOT
音楽
Home > IoT > さくらのIoTモジュールで郵便ポスト検知 〜ユー・ガット・メール〜
すき 0
うんこ 0

我が家はポストのある階とよく出入りする入り口の階が違うので郵便物や不在届を何日も放置してしまいます。。。 🙁 

そこで郵便物が届くとスマホに通知がくるシステムを構築しました!構築と言ってもいつもの手作り丸出しハンドメイドで安く解決です(*´ω`*)!

概要

通信にはさくらのIoTプラットフォーム(β版)を使用しました。郵便ポストが空くことで光が入るのでCdSセルで検知します。光を検知するとさくらのIoT通信モジュールでプラットフォームにデータ送信します。Node-REDでプラットフォームのデータを受信してIFTTTにスマホ通知のリクエストをしています。

↓こんな感じ

 

ユー・ガッタ・メール #さくらのIoT #ifttt

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

構成

マイコンでCdSセルの電圧を測り光を検知します。CdSセルは光が当たると抵抗値が小さくなり、暗くなると抵抗値が大きくなります。CdSセルと抵抗(10kohm)で電圧(1.8V)を分圧しているので、明るくなるとCdSセルの電圧が下がり、暗くなると電圧が上がります。

マイコンとさくらのIoTモジュールはI2Cで通信します。

部品

  • マイコンAdafruit Pro Trinket – 5V 16MHz

  • レベルシフタ

  • CdSセル

  • 抵抗(10kohm)

  • モバイルバッテリー
    ON/OFFボタンがついていて負荷がなくてもスリープしないので便利です。

  • さくらの通信モジュール(LTE)β版 ブレイクアウトボード

さくらのIoT Platform β版

α版でも利用していたさくらの通信モジュールのβ版 を使用しました。β版でも通信料は無料でLTE通信を使用しています。

以下はさくらの通信モジュール用ブレイクアウトボードのピン配列図です。

さくらの通信モジュールβ版のロジックI/Oピンは1.8V系のためマイコンとモジュールのI2C通信線の間にはレベルシフタモジュールを挿入しています。ハイレベル(マイコン)側の電源は5V、ローレベル(さくらの通信モジュール)の側の電源はLDO_OUT(1.8V)としました。

WAKE_INピンをGNDに落とすとモジュールがスリープモードに入り省エネなのですが残念ながらβ版では機能しません。。
2017/4/18の正式版サービス開始にともない、ファームウェアアップデートでスリープモードが使えるようになりました!詳細は追記で!

Arduino IDE環境の設定

さくらの通信モジュールに接続したマイコンをArduino IDEでプログラミングします。専用ライブラリはArduino IDEのライブラリマネージャからインストールできます。

IDEメニュー [スケッチ] -> [ライブラリをインクルード] -> [ライブラリを管理…] -> “sakuraio”検索 -> [インストール]

ファームウェア更新

ファームウェアを最新のバージョンにアップデートします。マイコンとIoTモジュールをつないで(I2C or SPI)、プログラム例のFirmwareUpdate.inoをマイコンに書き込んでシリアルモニタ起動で自動的に更新の有無確認とアップデート実施がなされます。

Arduino IDEプログラム

CdSセルの電圧をマイコンのアナログピン(A0)で読んで前後の値変化で光を検知してデータ送信します。

WebSocket通信設定

さくらのIoT Platformの開発者向けページでデータ取得するための設定をします。

コントロールパネルにログインして使用のモジュールを登録し、通信サービスにWedSocketを選択します。手順の詳細は以下の通りです。
 https://iot.sakura.ad.jp/developer/pdf/iot_platform_manual_beta.pdf

以下は登録したWebSocketサービスの画面です。モジュールから送信されたデータを確認できます。

WebSocketのURL(wss://〜)は後ほど使用しますので控えておきます。

IFTTTの設定

IFTTTとはif this then thatの略で各種Webサービス同士を連携して自分好みのWebサービス(アプレット)を生成することができます。ここではthis(トリガ)にwebにリクエストを受信できるMaker Webhooksを使用しthat(アクション)にスマホに通知を送るNotificationsを使用しました。

Maker Webhooksのイベント名は”Post”としました。以下をリクエストすると”ユー・ガット・メール”とスマホに通知が来ます。

https://maker.ifttt.com/trigger/Post/with/key/"MakerWebhook-key" 

“MakerWebhook-key”にはMakerWebhookサービス登録時に得られる認証キーを入力します。

Node-REDの設定

Node-REDとはグラフィック化されたwebサービスや機能を線でつないで自分好みのアプリケーションを作成するオープンソースソフトウェアです。私のようにweb通信などに全く精通していない人間にとっては夢のツールです!いままではこの辺の通信関連はお母ちゃんに丸投げでしたから。。。。

Node-REDの導入

以下のサイトの事前準備の節の通りです!!!ありがたい 😀 
IBMが提供するクラウドサービスのBluemix内でNode-REDアプリを作成・動作させます。Bluemixは初期登録から30日間完全無料で使用できます。

アプリケーション作成

さくらの通信モジュールからのWedSocketデータを受けてIFTTTにリクエストするアプリを作成します。

以下のノードを上の図のようにつなぐだけです。めっちゃ簡単だった 😛 !
深緑色のノード(msg.payload)はデバッグ用で接続したノードのメッセージ内容を右側のデバッグウィンドウで確認できます。

  1. websocket inノード

    URLに先程さくらのIoT WebSocketサービスで取得したwss://〜を入力します。
  2. Jsonノード
    受信したデータをObjectに変換します。
  3. switchノード

    さくらのWebSocketのJSONはモジュールからの送信されるchannelsメッセージの他に接続の維持を確認するため、サーバーから定期的にkeepaliveメッセージが送信されます。そこでswitchノードでchannelsメッセージだけ通過させます。
  4. http requestノード

    URLにIFTTTで作成したアプレットのリクエストURLを記載します。

Node-RED 参考

ポストに実装!

CdSセル以外を100均で買ったケースにいれて

ポストに設置!

これでポストに郵便物がくるとスマホに通知が来ます!

課題

通信モジュールのスリープ機能が現状使用できないのでバッテリーは2日ほどしか持ちません。。。ファームやサービスのバージョンアップを待ちます 🙂 

あとはBluemixの無料期間が終了する前にNode-REDを自前のラズパイサーバに導入して完全無料環境にしないと。。。お母ちゃん宜しくーw

追記(2017/4/18)

ついに正式版サービスが開始されました!名前も「さくらのIoT Platform β版」から、「sakura.io」へ。

月額60円で毎月10,000回通信できるポイントが付与(ポイントは追加購入可能)!!ゲロ出るほど安い 😯 !!

しかもβ版モジュールは2018年3月まで無料で さらには100万ポイントまでいただけました!ひゃー

しかもしかも正式版開始に伴いファームウェアアップデートでWAKE_INピンによるスリープモードが使えるようになってました!

WAKE_IN:Highで通常動作
WAKE_IN:LowでDeep Sleepモードに入ります。

構成修正

マイコンPro Trinketのデジタル5ピンをレベルシフタ介してWAKE_INに接続してスリープモードのON/OFFを制御します。

Arduino IDEプログラム修正

光検知で通信モジュールのスリープを解除してサーバーとの接続後にデータ送信してスマホに通知します。その後はスリープモードに入ります。

ポスト投函で光検知からスマホ通知まで数分ほどかかりますが さほどリアルタイム性は必要でなく長期運用が重視される案件ですので今回の修正でどれほど省電力化されたか要ウォッチしたいと思います!

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください