「IoT」カテゴリーアーカイブ

M5Stack UnitCatM 位置情報送信システム実証実験

すき 2
0

以前製作したM5Stack UnitCatMを用いた 位置情報送信システムの実証実験を実施しましたので報告いたします。

 

 

構成おさらい

製作した位置情報送信システムの構成をおさらいいたしましょう。

制御はマイコンXIAOで実施し、30分おきにスリープから起床し5V DCDCをONしてUnitCatMユニットを起動します。
ユニットで基地局の位置情報を取得してサーバにHTTP通信で送信して5V DCDCをOFFしてXIAOをスリープしています。

部品

HTTP通信

サーバへの位置情報送信にはHTTPを採用いたしました。

M5Stack UnitCatM で HTTP通信

 

位置情報取得

位置情報は基地局の座標を取得するATコマンド (AT+CLBS=?) をUnitCatMユニットに送って取得します。

基地局の座標を得るまでに5回までリトライ実行します。

M5Stack UnitCatM を Seeeduino XIAO で制御

 

SIMカード

ここではIIJmioのデータSIMを使用しています。

M5Stack UnitCatM の 消費電力とデータSIM契約

 

乾電池駆動検証

実証実験の準備としましてシステムの乾電池駆動を検証しました。

 

アルカリ単三電池 3本で動かしました。
7/17~7/31までの17日経過しても動作しつづけ、乾電池による長期動作は問題ないことを確認できたので中断終了いたしました。

低消費設計がうまくいっていると言えるでしょう。

M5Stack UnitCatM を Seeeduino XIAO で制御

 

実証実験

東京旅行ついでに実証実験を決行いたしました。

乾電池駆動の位置情報送信システムを箱詰めして、羽田空港の郵便局から自宅に送ってみました。
乾電池が入っていることを伝え、特定記録による陸路での郵送をお願いいたしました。

 

位置情報データ

以下が位置情報送信システムからサーバに送られてきたデータです。

30分おきにデータが来るはずですが電波状況の影響のためかデータが届いていなかったり、基地局座標を得られていなかったりしております。
しかし断続的には座標を得ることができました。

2日かからずに札幌に到着しています。
しかし土日のために実際に投函されたのは月曜日の8/8でした。
その間は最寄りの郵便局の座標が断続的に送られておりました。保管されていたのでしょう。
 

座標プロット

 

 

 

恐らくフェリーも使ってこんなルートでやってきたのだと思う

 

おわりに

無事に位置情報送信システムによる座標取得動作が確認できました!
おもしろいな。

いよいよをもってコレを川に投げ流したくなってきた。。。

obniz で冷蔵庫 牛乳残量計 製作

0
0

HomeMadeGarbage Advent Calendar 2021 |11日目

obniz IoT コンテスト2021 に牛乳残量計を応募しました。
事前にアイディア投稿することで obniz Board 1Y を提供していただき大変お得なコンテストでありました。

はじめての obniz

 

牛乳残量計

詳細は以下のサイトに記載しておりますのでザックリ紹介

 

obnizに牛乳の在庫本数を設定する可変抵抗と開封済み牛乳の残量を計測するロードセルを接続して、1時間に一度測定して牛乳残量データをサーバにアップします。

PCやスマホからブラウザ上でいつでもどこでも牛乳の残量を確認できるようにいたしました。

 

運用状況

本システムは単3電池 3本で動作しております。
省電力を意識してシステム構築いたしましたが、どれほど連続動作したかといいますと

 

約2か月動作しました。乾電池の初期状態にも依存すると思うのですが、まぁまぁ動いたかなと。

こちらは1時間に一回通信してますが、通信頻度を落として長寿命化は狙えるかもしれません。

toio で掛け算学習 九九Qの駆

0
0

HomeMadeGarbage Advent Calendar 2021 |4日目

ロボットトイ toio を用いて掛け算学習ゲームを作成いたしました!

toioの「Do!コン」というコンテストでアイディアを投稿してtoioを提供いただき
実際に製作して応募しました。

 

toioの「Do!コン」

ロボットトイ toio用ビジュアルプログラミングのtoio Doを用いた作品を募集しているコンテストです。

 

アイディア投稿の1次審査に通ると以下のモニター機材をもらえます。

toio本体セット(モニター専用 toio機材)
・ビジュアルプログラミングマット
toioムック本

 

掛け算学習ゲームのアイディアを投稿してtoioをゲットできました!
2021/4/22に届きました!!うれしー!

 

普通に遊ぶだけでも楽しいです。

 

専用マットで絶対座標も認識できます。凄い!

 

九九Qの駆

toio Doというブラウザ上でビジュアルプログラミングできるアプリでゲームを作製しました。

https://protopedia.net/prototype/2233

 

マットに割り振られた数字と2台のtoioを使って九九を遊びながら学びます。

 

九九の問題を出題し正解・不正解を判定する”クイズモード”と
知りたい九九の答えを教えてくれる”せんせいモード”があります。

モードの切り替えはモードが書かれたマットにtoioをおいてボタンを押して選択します。
拡張機能で”音声合成”を追加し音声で各種アナウンスします。

クイズモード

2台のtoioがマット上の数字に移動して問題を出題します。
10の位のtoioと1の位のtoioを解答となる数字に動かしてボタンを押して正解不正解を判定します。
不正解の場合はtoioが正解の数字に移動して教えてくれます。

せんせいモード

2台のtoioをマット上の数字において、しりたい九九の問題をつくりボタンを押します。
2つの数字をかけて10の位のtoioと1の位のtoioが移動して答えを教えてくれます。

 

おわりに

toio Doによるビジュアルプログラミング以外にもBluetooth通信で直接API叩いても制御可能なので今後もtoioで色々楽しめそうです。

toio の姿勢角でモータを制御してみた

M5Stack UnitCatM 位置情報送信システムの省電力化

0
0

前回はUnitCatM で通信基地局位置情報を取得して長期運用を試してみました。

M5Stack UnitCatM を Seeeduino XIAO で制御

30分おきに位置情報をサーバに送る仕様で、400mAhのLiPoバッテリで121時間動作しました。

ここでは消費電力を低減して更に長期の動作を目指しました。

 

 

構成おさらい

本システムの構成を記します。

制御はマイコンXIAOで実施し、30分おきにスリープから起床し5V DCDCをONしてUnitCatMユニットを起動します。
ユニットで基地局の位置情報を取得してサーバに送信して5V DCDCをOFFしてXIAOをスリープしています。

部品

 

省電力化

スリープ時の待機電流がほぼXIAOのパワーオン表示LEDで消費されていますので、LEDを除去してみました。

スリープ時の待機電流 (5V DCDCの待機電流も含む)は以下のとおり
 LEDあり:1.55mA
 LEDなし:122.4uA

1/10以下になりました!

これでスリープ時の消費電力は大きく低減されました。

参考

 

エイジング

スリープ時の省電力化に成功しましたので再度 運用モードでエイジング実施いたしました。

400mAhのLiPoバッテリで
 前回が121時間のところ
 今回は348時間動作しました。

容量の大きなバッテリを用いれば更に長期の動作が期待できます。

おわりに

ここではUnitCatMによる位置情報送信システムの低消費電力化とエイジング動作の確認を実施しました。

長期動作が見込めそうなのでビンに詰めて川にぶん投げたいところですが
これから冬なのでそれは春先に実行するとして、
しばらくは本システムをお出かけ時に持ち歩いて位置情報の精度の検証に当てたいと思います。

次の記事

M5Stack UnitCatM 位置情報送信システム実証実験

M5Stack UnitCatM 番外編 SIM7080G EVAボードを楽しむ

0
0

これまではM5Stack製の SIM7080G  CAT-M/NB-IOT Unitをつこて色々検証してきました。

ここでは別のSIM7080Gが載ったモジュールを入手しましたので報告いたします。

 

 

SIM7080G EVAボード

SIM7080G  CAT-M/NB-IOT Unitと同じLTEモジュール SIM7080G が載った評価ボードをAliExpressで見つけました。

こちらはGPSのアンテナ端子もあり、しかも安いので試しに購入してみました。

LTE用とGPS用のアンテナ付きを購入

技適マークもあり一安心♪

セットアップ

この評価ボードにはマイクロUSB端子がありパソコンとシリアル通信可能です。
ドライバは以下で入手しました。
 https://www.waveshare.com/wiki/SIM7080G_Cat-M/NB-IoT_HAT

ボードは給電後にPWRピンを一瞬 GNDに落とすと起動します。

USBから給電、コマンド送信ができ非常に便利です。

GPS

早速GPSを試してみました。
GPSはSIMを入れなくても楽しめます。

窓辺にボードを置いてGPSによる位置情報取得ATコマンドを送ってみました。

受信できるようになるまでしばらく時間がかかりましたが、非常に精度の良い位置情報を得ることができました。

参考

LTE通信

SIMを挿入すればLTE通信が可能です。
SIMスロットはマイクロSIMサイズでした。挿入方向に注意は必要です。

あとはSIM7080G  CAT-M/NB-IOT Unitと同じようにATコマンドでもろもろ通信制御が可能です。

参考

 

おわりに

今回試したSIM7080G EVAボードはGPSアンテナ端子もあり、USBシリアル通信も可能で非常に便利です。

しかし今 私がやろうとしている #私のボトルメッセージ 計画に用いるには
ちょっと高級すぎる印象でした。

例えば省電力のために逐一電源を切ってからGPSをつかむのに時間かかるという懸念がございます。

十分に電源が確保されていて高精度の位置座標がほしいような用途でいつか使おうかと思います。

しかしやはり携帯通信網の利用は非常に便利で夢が拡がります。

次の記事

M5Stack UnitCatM 位置情報送信システムの省電力化

M5Stack UnitCatM で運用とエイジング

0
0

前回は通信基地局の位置情報取得について記載いたしました。

M5Stack UnitCatM で位置情報取得

 

 

目標

本件の目標は以下の通りです。

  1. 格安データSIM探して契約:IIJmioに決定
  2. 座標情報取得:基地局の位置情報を取得
  3. 外部への通信:HTTP通信で決定
  4. コントローラ選定:Seeduino XIAOに決定
  5. パワーセーブ:XAIOのSleepとDCDCコントロール併用
  6. ビンに詰める
  7. 川に投げる

今回は運用シーケンスの検討とエイジング動作の確認を行いました。

運用シーケンス

本システムのシーケンスは以前確立した通りです。

M5Stack UnitCatM を Seeeduino XIAO で制御

動作は以下を繰り返します。

  • Sleepから起床
  • AT導通確認
  • ネットワーク通信開始
  • 基地局位置情報取得
  • 基地局位置情報を付与して 自宅サーバへHTTP getリクエスト
  • 30分 Sleep

 

位置情報取得

上記 運用シーケンスでモジュールをもってお出かけして観たのですが、位置情報を得ることはできませんでした。。。

 

サーバのログは以下。位置座標はLocation Failで得ることができず。

シーケンス修正

検証したところ、起動後1発では位置情報取得できないことがほとんどであることがわかり、基地局位置情報取得コマンドを複数回リトライするようにしました。

ここでは位置情報を得るまで10回までリトライするようにしました。

相変わらず自宅では位置情報を得ることはできませんが、ちょろっと外に出て位置情報がサーバに送られることを確認できました。リトライ追加のご利益ですね。

 

エイジング

自宅で長期運用してみました。

 

400mAhのLiPoで運用シーケンスでエイジング実検しましたところ
121時間動作しました。

30分間隔通信での消費電力は8.1mWhでしたので理論値は
400mAh × 3.7V ÷ 8.1mWh = 182.7h

まぁもろもろリトライとかフルチャージできてないとかあるのでこんなもんでしょうか。

消費電力のほとんどがマイコンXIAOのパワーON LEDで消費されていますので、今度LEDを取り除いて再実験したいです。

 

おわりに

当初の目標に向かって徐々に進んできております。

次回は更なる低消費電力化とバッテリ選定を実したいと思います。

次の記事

M5Stack UnitCatM 番外編 SIM7080G EVAボードを楽しむ

M5Stack UnitCatM で位置情報取得

0
0

前回はシステムの消費電力測定とデータSIMの契約について記載いたしました。

M5Stack UnitCatM の 消費電力とデータSIM契約

 

目標

本件の目標は以下の通りです。

  1. 格安データSIM探して契約:IIJmioに決定
  2. 座標情報取得:基地局の位置情報で検討中
  3. 外部への通信:HTTP通信で決定
  4. コントローラ選定:Seeduino XIAOに決定
  5. パワーセーブ:XAIOのSleepとDCDCコントロール併用
  6. ビンに詰める
  7. 川に投げる

今回は②の位置情報取得を再検討しましたので報告いたします。

 

位置情報取得の再検証

前回の検証では通信基地局の座標を取得するATコマンドを自宅で試しましたが情報を得ることはできませんでした。
基地局位置情報のコマンドはATコマンドの資料p. 337に記載があります。

この度、ちょっと街にお出かけの機会がありましたので再度試してみました。

USBシリアルモジュールでスマホにつないで Serial USB Terminal アプリでATコマンドを送信して実験しました。

実験結果

札幌の狸小路から国道に抜ける道を歩きながら位置情報を取得してみました。

①: +CLBS: 0,141.352896,43.057192,550,2021/09/27,11:13:19
②: +CLBS: 0,141.355294,43.055670,550,2021/09/27,11:23:58
③: +CLBS: 0,141.357550,43.056538,550,2021/09/27,11:25:16

無事に位置情報を取得することができました!
結構 位置の精度も高かったです。

 

自宅に戻るとLocation Failedで位置情報は取得できなくなりました。
我が家は一体どこの基地局で通信してるんだ。。。

おわりに

屋外で無事に通信基地局の位置情報取得を確認することができました!

次に長期動作の確認をしたいと思います。
あわせてバッテリーの選定もしないといけません。

次の記事

M5Stack UnitCatM 位置情報送信システムの省電力化

M5Stack UnitCatM の 消費電力とデータSIM契約

0
0

前回はコントローラにSeeduino XIAOを選定し、通信動作を確立しました。

M5Stack UnitCatM を Seeeduino XIAO で制御

 

 
 

目標

本件の目標は以下の通りです。

  1. 格安データSIM探して契約
  2. 座標情報取得:基地局の位置情報で検討中
  3. 外部への通信:HTTP通信で決定
  4. コントローラ選定:Seeduino XIAOに決定
  5. パワーセーブ:XAIOのSleepとDCDCコントロール併用
  6. ビンに詰める
  7. 川に投げる

今回は⑤の消費電力詳細測定を実施し、①のデータSIMの契約をいたしましたので報告します。

 

消費電力詳細測定

パワーセーブ動作は前回確立し、通信時以外はXIAOをスリープし通信ユニットCAT-MはDCDCコンバータで給電しSleep中は給電を止めて消費電力を抑えます。

消費電力測定を実施しました。
30分に1回Sleepから起床してSIMの位置情報をHTTPでサーバに通信させます。通信後にSleepします。

Vin = 3.7V で消費電力は 8.09 mWh でした。

通信しない時の待機電力は3.7V × 1.55mAh = 5.735mWh
なので通信1回当たり 1.18mWh消費することになり実にLowPowerであることがわかりました。

約7割がXIAOのPower ON LEDで消費されているので、以下に倣ってLEDを除去するのがよいと考えます。

次回LEDを除去し消費電力を再測定したいです。

 

データSIM契約

これまではスマホのSIM(Jcom KDDI網)を使用して実験してきましたが、
いちいちSIMの載せ替えが面倒なので専用のデータSIMの契約を実施しました。

ここでは”IIJmioえらべるSIMカード”のデータ2ギガ (DoCoMo網)プランにしました。 
以下のAmazonで契約用コードを購入をダウンロードしてコースを選定して契約しました。簡単にできました。

現在は秋の乗り換えキャンペーン(2021年10月31日まで)とのことで契約翌月から3か月データが1GB増量されるとのことです。ラッキー!

 

費用は以下の通りでした。

  • Amazon 契約コード【DL版】:¥350
  • SIMカード発行手数料:¥394
  • 月額使用料:¥748

数日後にSIMカードが到着しました。
SIMカードサイズはミニ、マイクロ、ナノのいずれのサイズにも対応しています(マルチサイズ)。

SIM設定

以下のATコマンドでSIMのAPN設定を実施します。設定後はモジュールに記憶されます。

AT+CGDCONT=1,”IP”,”APN名” 
AT+CNCFG=1,1,”APN”,”ユーザ名”,”パスワード”,3

IIJmioのデータSIMでも問題なく接続が確認できました。

 

おわりに

今回は消費電力測定とデータSIMの契約について記載いたしました。

次回はSeeeduino XIAOのPower ON LED除去による消費電力低減の確認と
通信基地局の位置情報について調査結果をまとめたいと思います。

次の記事

M5Stack UnitCatM で位置情報取得

M5Stack UnitCatM を Seeeduino XIAO で制御

0
0

前回はUnitCatM によるHTTP通信を確認しました。

M5Stack UnitCatM で HTTP通信

ここではUnitCatM を制御するマイコンの検討を行いました。

 

 

目標

本件の目標は以下の通りです。

  1. 格安データSIM探して契約:現在調査中
  2. 座標情報取得:基地局の位置情報で検討中
  3. 外部への通信:HTTP通信で決定
  4. コントローラ選定
  5. パワーセーブ
  6. ビンに詰める
  7. 川に投げる

ここでは目標④、⑤の検討を実施いたしました
 

コントローラ検討

これまではPCからATコマンドをおくって動作確認しておりましたが、実際にはマイコンからコマンド制御する必要があります。

ここではコントローラとしてSeeeduino XIAOを採用しました。
小さくてカワイイですし、しっかりめのパワーセーブ機能もあるためです。

XIAOのシリアル端子(D6, D7)からコマンドを送受信します。

 
しっかりシーケンスを組んで通信の開始や位置情報の取得、HTTP送信を実施します。

 

パワーセーブの検討

マイコン XIAO

XIAOは送信時以外はSleepさせて消費電力を抑えます。

サンプルコードWakeUpOnRTCInterrupt.ino のようにRTCによる設定時刻で起床するようにしたかったのですが
RTCInt.h がないとエラーがでるので
RTCの設定にはSeeed_Arduino_RTCライブラリを使用しました。

消費電流は Vin = 5Vで
 起床時:14.4mA
 Sleep時:1.46mA
とSleepが大きく効いておりました。

以下の参考記事によるとパワーオンLEDを切ると更に消費電力が減るとのことです。
場合によってはLED排除も検討したいです。

参考

UnitCatM

UnitCatMは電源の供給をイネーブルピン付きのDCDCから供給するようにし
通信時以外はXIAOでDCDCのENピンを制御して電源遮断でパワーセーブすることにしました。

これによって通信時以外のUnitCatMによる消費電力は0となります。

 

システム構成

バッテリは未定ですが現状のシステム構成は以下の通りです。
XIAOでATコマンドを送信し、更にDCDCのENピンを制御してUnitCatMをON/OFFします。

部品

 

 

Arduino IDEコード

 

以下のシーケンスでATコマンドをXIAOからUnitCatMに送っています。
 ・AT導通確認
 ・ネットワーク通信開始
 ・基地局位置情報取得
 ・HTTP設定
 ・HTTPステート確認
 ・HTTP 基地局位置情報を付与して getリクエスト

HTTP getリクエスト送信後はRTCアラームを設定してnrgSave.standby();でスリープに入ります。

ここではRTC時刻を2021年1月1日 00:00:00に設定し、
アラームを1分後の2021年1月1日 00:01:00として起床するようにしています。

位置情報サーバ送信→1分スリープ→起床→‥‥を繰り返します。

消費電流は Vin = 3.7Vで
 通信時:45~167mA
 Sleep時:1.55mA
でした。

通信頻度を抑えればかなり長期の運用が可能なのではないでしょうか。

 

おわりに

ついにコントローラの選定もでき、消費電力も抑えれそうなことがわかってきました。

次回はデータSIMを契約して長期の動作確認を実施したいと考えております。

次の記事

M5Stack UnitCatM の 消費電力とデータSIM契約

M5Stack UnitCatM で HTTP通信

0
0

前回はUnitCatM Unitにスマホで使用しているSIMをぶち込んでpingなどで通信を確認いたしました。

M5Stack UnitCatM を味見

 

引き続きいじくりましたので報告いたします。

 

 

目標

前回ぶちあげたUnitCatM を用いての目標は以下の通りです。

  1. 格安データSIM探して契約
  2. 座標情報取得
  3. FTP通信
  4. コントローラ選定
  5. パワーセーブ
  6. ビンに詰める
  7. 川に投げる

目標 ①のデータSIM契約は現在よさげなものを調査中です。

ここでは目標②、③を中心に検討いたしました。

 

通信のON/OFF

前回はUnitの通信の開始のコマンドがなんなのか良く分からずにいたのですが
以下のATコマンドで通信のON/OFFできることがわかりました。

通信開始:AT+CNACT=0,1
通信停止:AT+CNACT=0,0

参考

 

座標情報取得の検討

Unitの位置座標を取得したいと考えております。

ATコマンドの資料を紐解きますとGNSS用のコマンドが用意されております。
しかしUnitCatM UnitにはGNSS用のアンテナ端子はないので携帯通信基地局の位置情報使うことにします。

基地局位置情報のコマンドはATコマンドの資料p. 337に記載がありますので
早速実行してみました。

しかし、
 +CLBS: <locationcode>
   locationcode   1 : Location Failed
と位置情報の取得はできませんでした。

これがSIMのためなのか現状の基地局のためなのか不明です。
引き続き調査進めます。

 

外部通信の検討

Unitの位置情報が取得できた場合、その情報を定期的に外部に送信したいと考えております。

当初はFTPEメールなど考えましたがHTTP通信で実施することにしました。
Urlにクエリパラメータで位置情報を付与することを想定しています。

 

サーバURLとして自宅サーバを指定
HTTP body lengthを設定
HTTP head lengthを設定
HTTP接続
GETリクエスト
 ここでは変数a=1とした

無事にサーバにデータが届きました。

参考

 

おわりに

ついに携帯通信網による外部サーバへのデータHTTP通信が実現できました。

目標の達成にはまだまだ検討項目たくさんありますので
粛々と進めてまいりたいと思います。

次の記事

M5Stack UnitCatM を Seeeduino XIAO で制御

M5Stack UnitCatM を味見

0
0

M5Stackから魅力的なユニットが発売されました。
Cat.M1/NB-IoT対応の通信モジュールSIM7080Gが載ったユニットです。

Cat.M1やNB-IoTとはLTE通信規格の一つで通信帯域は狭く高速ではないものの
低消費電力でIoT端末向けであるとのことです。

とにかくLTE携帯通信網が利用できる通信モジュールがこんなにも低価格で入手できたことは喜ばしい限りです。

 

 

UNITCatM

到着したので早速いじってみました(9/10購入 9/16 DHLで着)。

 

まずはUSBシリアルモジュールを介してパソコンでATコマンドを送ってみました。

 

 

問題なくATコマンドが通りました。
ボーレートは115200でした。

 

LTE通信

ATコマンドが通りましたのでSIMカードで通信テストをしてみました。

通信モジュールSIM7080Gはdocomo、au、ソフトバンクいずれのキャリアも対応しているようです。

そこでスマホのSIM (Jcom SIM au網)を突っ込んでみました。
UNIT CatMのケースをあけるとnanoSIMスロットがあります。

 

以下を参考にATコマンドでAPN設定しました。

 

問題なく通信が確立され、pingやNTPによる時刻取得が確認できました。

 

 

APN設定後に通信が確立するまでのタイミングがまちまちなので、
なにか必要なコマンドがあるのかもしれません。勉強します。

参考

 

今後の目標

とりあえず通信は確認でき どうやらCat.M1で接続されたようですが、NB-IoTを指定できるのかなど色々ナゾです。

ATコマンドの資料やアプリケーションノートで学習が必要となりそうです。

当面は以下を目標に勉強したいと思います。
できるかもわかりませんし、できたとして全て実行するかは現状わかりません。

  • 格安データSIM探して契約
  • 基地局の座標取得 (GNSSというワードもチラついている)
  • FTP通信
  • コントローラ選定
  • パワーセーブ
  • ビンに詰める
  • 川に投げる

次の記事

M5Stack UnitCatM で HTTP通信

はじめての obniz

0
0

電子工作の知識共有サイト『elchika(エルチカ)』にて obniz を用いたコンテスト(投稿受付期間:2021/4/12 ~ 5/16) の案内がございました。

なんと事前にアイディアを申請し審査が通ると実機『obniz Board 1Y』がもらえるとのことで早速応募してみました。

 

 

obnizもろた

無事にアイディア申請が通りobniz Board 1Y をいただくことができました!

初めてのobniz。まずはobnizと私の間にある隔たりを除去し、obnizとの距離を縮めることから始めなくてはなりません。

 

通常のマイコンと異なりobnizにプログラムを書き込むのではなく、ブラウザ上(専用コンソール)でHTML (JavaScript) やブロックプログラミングでコードを作成してビルド-コンパイルなしに実行できるとのことです。

上の動画のようにWiFi接続やコンソールからの制御が本当に一瞬で出来てしまいました。

参考

 

動かしてみる

ブラウザアプリからobnizを制御

早速ブロックプログラミングでブラウザのボタンクリックで数字をカウントしてobnizのLCDに表示するアプリを製作してみました。

簡単にできてしまいました。
この距離だとあまりご利益を感じませんがこれが遠方からでもブラウザを立ち上げてobnizを操作できるということですよね。
色々応用ができそうです。

obnizからブラウザアプリを制御

次にobnizのダイヤルスイッチで数字をカウントして、ブラウザ上のアプリに表示してみました。

 

ブロックは以下のようにしました。

本当に簡単に遠隔操作が可能になりますね。

 

今後のこと

ブロックプログラムによって簡単にobnizの制御が確認できました。
コンテストへ申請したアイディアの実現のために色々と勉強、検証が必要です。

現状の疑問

今の疑問は以下です。調査しないといけません。

  • バックライト調整可否
  • ブロックプログラムでLCDフォントサイズ変更可否
     おそらくできないのでHTML にして変更かな?

obniz Board 1Y スリープ機能

obniz Board 1Yにはスリープ機能が実装されています。

スリープ起床トリガは
  ・タイマー
  ・io0の立上り/立下り
とのことです。

スリープ時には3.3V系がシャットダウンするのでESP32も落ちます。
アプリアクセスで起床などはできないんですね。残念 😥 

しかし、投稿アイディアには低消費電力化も盛り込みたいと考えております。

 

おわりに

obnizをサクッと動かしてみました。

いじりながら「ここまでガッツリ環境提供してまでブラウザから動かしたいもんかね?」と何気なくボヤいたところ

Web屋のお母ちゃんが「環境設定とか書き込み必要ないから、凄く便利」とおっしゃいました。

確かにマイコンの環境構築とか大変だし無線やアプリ連携なんてもっと大変だもんな。

 

というわけでコンテスト投稿に向けてobnizいじり進めていきたいと思います。

Maixduinoと私

0
0

HomeMadeGarbage Advent Calendar 2020 |17日目
SiPEED Advent Calendar 2020|17日目

私がSipeed Maixduinoで行ったことを、良い機会ですのでここでまとめたいと思います。

MaixduinoはSipeed 社のK210搭載AI開発ボードです。2.4インチLCDとカメラモジュールがついて非常にお買い得な商品です。ESP32も搭載されております。

 

 

 

Arduino IDE サンプルコードを堪能

MAixボード用ノArduinoサンプルコードを楽しみました。
 https://maixduino.sipeed.com/en/get_started/install.html

Sipeed Maixduino を Arduino IDE で味見 ーエッジAI活用への道 4ー

物体認識サンプル

スケッチ例の物体認識 mobilenet_v1.ino を試してみました。

音声認識サンプル

MaixduinoにはMEMSマイクが搭載されています。
音声認識サンプルコード voice_control_led_en.ino を試してみました。

モデルにはred, green, blue, turn offの4つの発話があり、それぞれ配列パターンが4つづつ入っておりました。発話認識でGPIOピンを制御してLEDを点灯させています。

 

オリジナル金魚認識モデルの生成 

金魚の画像(240枚以上)を用いて学習し、K210向けの認識モデルを生成してみました。

オリジナル金魚認識モデルの生成 ーエッジAI活用への道 3ー

 

深層学習ライブラリ Keras + TensorFlowで学習して認識モデルを生成し、Maixduinoでも利用できる.kmodelファイルに変換して用いました。

 
かなり正確に認識でき大変驚きました。
 
 

Neopixcel点灯

Sipeed MaixduinoでフルカラーLED Neopixelの制御を試してみました。

Sipeed Maixduino で Neopixel を堪能 ーエッジAI活用への道 5ー

 

MicroPythonコードでMaixduinoに記述します。
Neopixel制御用のサンプルコード ws2812.py を参考にコーディングしました。

 

温度、pHデータをUDP送信

Maixduinoに温度センサpHセンサを接続してMaixduinoでUDP無線送信してみました。

Maixduino で温度、pHデータをUDP送信 ーエッジAI活用への道 10ー

 

センサはMaixduinoに直接接続せずに、Arduinoマイコンに接続してUARTでデータをMaixduinoに送信して搭載されたESP32のWiFiでUDP送信しています。

 

水温とpHが送信されPC上でUDP送信を確認できました。

Raspberry Pi で 金魚水槽管理システム を構築

0
0

HomeMadeGarbage Advent Calendar 2020 |4日目
Raspberry Pi Advent Calendar 2020 |4日目

これまでESP32等で構成していた我が家の金魚水槽システムですが、
この度メンテナンスのし易さや拡張性の高さから制御をRaspberry Pi で実施することにいたしました。

☟従来型の構成は以下の通りです。
家のローカルネットワーク内で水槽の監視・管理を実施しておりました

金魚水槽のフィルターをブクブクから外掛けフィルターへグレードアップ

 

外出時にも対応したいと考え、外部監視・制御にはセキュリティの観点からATOM CamやAlexaアプリの既存のサービスの使用を採用いたしました。

 

 

システム概要

本システムの機能は以下の通りです。

  • 水槽LED照明のON/OFF
  • 自動エサあげ機構
  • 水槽の水温、pHの監視

いずれも自宅内でWebページからの制御・監視が可能で
さらにAlexaアプリと連動させてスマートスピーカ Amazon Echo dot での音声による制御も可能です。
水温、pHについては以前製作した我が家のコンシェルジュのおしゃべりティラノくんに発話で報告させることができます。

外出先からのエサあげ等の制御にはAlexaアプリを用いてスマホで実施し、
遠隔監視にはネットワークカメラ ATOM Cam を使用いたします。

 

構成

以下が本システムの構成図です。
Raspberry Pi Zero W のGPIO端子に照明用のテープLED、温度センサ、エサあげ用ソレノイドを接続し、
pHセンサをマイコンを介してUSB Host端子に接続しています。

部品

  • Raspberry Pi Zero W

     
  • フルカラーLED Neopixel (WS2812B ) 48セル

     
  • 防水温度センサ DS18B20

     
  • pHセンサ PH-4502C

     
  • Arduino Pro Micro 互換ボード

     
  • ソレノイド

     
  • N-MOSFET IRF520PBF

     
  • ダイオード 1N5819

     
  • MOSFET駆動用レベルシフタ

 

各部品の動作確認

本システムはNode-REDで構築しております。
ここでは各接続部品のNode-REDによる動作確認を行います。

Neopixel制御

NeoPixel用のNode-REDノードは存在し以下を参考に導入致しました。
 https://www.npmjs.com/package/node-red-node-pi-neopixel

NeoPixelの信号線をラズパイの12ピン(GPIO 18)し、
以下のようにrpi-neopixelsノードにカラーコードを送るとLEDが点灯いたします。

自動エサあげ機構

エサあげの機構には タカハ製の5Vプッシュソレノイド SSBC-0830/SSBC-0830-01(7.5Ω) を使用いたしました。

筐体は3Dプリンタで製作いたしました。

 

構成は以下の通り

Node-REDでラズパイのGPIOピンを制御して
ソレノイドに5V印可してエサが押し出される仕組みにしました。

水温計

水温系として1 wire温度センサ DS18B20を使用いたしました。

DS18B20のNode-REDノードも存在し、以下を参考に導入致しました。
 https://www.denshi.club/pc/raspi/iot6.html

DS18B20の出力をラズパイの7ピン(GPIO 4)に接続します。

pH計

pH計にはアナログ出力の PH-4502C を使用しました。

センサの校正方法など詳細は以下を参照ください。

pHセンサを味見 ーエッジAI活用への道 7ー

 

ラズパイにはアナログ値の入力ピンがないためArduino互換マイコンのアナログピンにpHセンサ出力を接続し、シリアルでpH値を出力します。

ラズパイのUSB Hostコネクタにマイコンを接続してシリアルでpH値を受信します。

シリアル通信Node-REDノードは以下を使用しました。
 https://flows.nodered.org/node/node-red-node-serialport

 

マイコンArduinoコード

シリアルで文字”1″が入力されるとpHをシリアル出力します。

 

Node-red自動起動設定

以下のコマンドの実行でラズパイ起動で自動的にNode-REDも起動します。

 

水槽システム Node-REDフロー

水槽LED制御

水槽の照明としてLEDテープを48セル設置し、WebページやAlexaによる音声でON/OFF 制御します。

 

① LED ON functionノード

次段に全白のLEDカラーコード(#FFFFFF)を送信します。

 

② LED OFF functionノード

次段にLED消灯カラーコード(#000000)を送信します。

 

③rpi-neopixelsノード

前段からの色信号(ON:#FFFFFF / OFF:#000000)を受けてLEDを制御します。
輝度は30%としています。

エサあげソレノイド制御

WebページやAlexaによる音声でラズパイのGPIO23をON/OFFしソレノイドを 制御します。

 

① ソレノイド ON functionノード

次段に数値1を送ります。

 

② LED OFF functionノード

ON function後200msecの遅延後に次段に数値0を送ります。

 

③ rpi-gpio outノード

前段からの信号を受けてソレノイドを制御します。200msecの間だけ数値1がきてGPIO23がONになりソレノイドに電流が供給されエサが押し出されます。

ラズパイのGPIO制御ノードでGPIO23を制御します。

 

水温・pH測定

Alexaによる音声で起動しおしゃべりティラノくんに発話で水温とpHを報告させます。

 

① rpi-ds18b20ノード

rpi-ds18b20ノード で水温を取得します。

 

② functionノード

前段からの水温を小数点第1位で丸めて変数waterに格納し、
次段に”1″の文字を送信。

 

serial requestノード

前段の文字”1″を受けてpHセンサ値を次段に返します。

 

④ functionノード

前段からのpH値を変数phに格納

 

⑤ templateノード

水温とpHの測定値を受けて、発話内容を生成します。

 

⑥ google-ttsノード

Google Text to Speech APIを呼び出すgoogle-ttsノードを使用しました。
 https://flows.nodered.org/node/node-red-contrib-google-tts

前段からの発話内容を入力して発話のmp3 URLを返します。
言語は日本語(ja-JP)を指定しています。

 

⑦ udp outノード

前段で生成されたmp3 URLをUDPで おしゃべりティラノくんに送信して発話させます。

Webページ生成

“ラズパイのNode-REDのURL/aquarium”にアクセスでWebページを生成します。

ブラウザ表示前に水温とpHを計ってtemplateノードに渡しています。
templateノードにWeb表示用コードを記述しています。

以下がWebページ画面です。

“ごはんをあげる”ボタンで/feedにGETリクエストを投げてソレノイド制御します。
LEDのON/OFFスイッチで/on または /offのGETリクエストを投げてLEDを制御します。

水温とpHの数値を表示します。

Alexa連動

Node-RED Alexa Home Skill Bridge というNode-REDノードを用いてAlexaと連動させ、システムの音声による制御を可能にしました。

Node-RED Alexa Home Skill Bridgeの設定等の詳細は以下を参照ください。
Node-RED Alexa Home Skill Bridge へのユーザ登録や、
スマホのAlexaアプリでNode-REDスキルを有効にしてAlexaサービスとNode-RED Alexa Home Skill Bridgeを紐づける必要があります。

ラズパイで気圧測定

 

デバイス登録

水質の発話報告を起動する”Aquarium”とエサやりソレノイドを起動する”Feed”と
LEDを起動する”水槽”を登録しました。

“水槽”はON/OFF動作させるのでActionにONとOFFを選択しました。

 

Node-RED

Node-REDに登録したデバイスのノードを配置します。

 

定型アクションを編集

以上で登録したデバイスをスマートスピーカAmazon Echoから起動させることが可能になりました。

デバイス”水槽”はLEDのON/OFFを制御するので「水槽つけて」、「水槽消して」で問題ないですが、
“Aquarium”と”Feed”はON/OFFの発話だと不自然なので
Alexaスマホアプリで定型アクションを登録しました。

「アレクサ、ご飯あげて」でデバイス”Feed”を起動してソレノイドを制御します。

 

「アレクサ、水質教えて」でデバイス”Aquarium”を起動してティラノくんに水温とpHを報告してもらいます。

 

動作

水槽設置前の動作テスト

 

ユニットはタッパに入れて水槽裏に設置いたしました。

Webページによる動作

音声による動作

遠隔動作

旅行先でもご飯の供給ができました!

 

追記

みんなラズパイコンテスト

本システムで今年もみんなのラズパイコンテストに応募いたしました。
受賞はできましたが3年連続となるスタートダッシュ賞をいただくことができました♪

新型コロナウイルス接触確認アプリ COCOAカウンター を Leafonyで作製

0
0

厚生労働省が提供する、新型コロナ陽性登録した人との接触を知らせてくれるアプリ COCOA の周辺での起動数をカウントするデバイスを先日いただいた Leafony で製作しました。

Leafony をもろた -Basic Kit で基本動作確認ー

 

 

COCOAカウンター

COCOAはBLEのアドバタイズを検出してペアリングなしに接触を判定しているようです。

ミクミンPさんがM5ATOM LiteでCOCOAの起動を判定できるアプリを作製されたのをきっかけに
様々なCOCOAアプリカウンターがうまれました。

 

  • M5ATOM Matrixを用いたカウンター

 

  • M5StickCを用いたカウンター

 

Leafony COCOAカウンターの作製

以下のLeafを用いてCOCOAカウンターを製作してみました。

BLE通信LeafでCOCOAアプリを検出してLCDディスプレイLeafに検出したアプリ数を表示します。

Arduinoコード

BLE通信Leaf の仕様書とライブラリを参考にコーディングしました。

 

L. 379:BLEデバイスをスキャンし応答があったときに呼ばれるコールバック関数ble_evt_le_gap_scan_responseでスキャン内容を取得します。

L. 384:Bluetooth discovery mode 設定
全てのデバイスを検出します。

L. 406-459:スキャンしたデバイス情報を取得しCOCOAアプリの場合はカウントします。
スキャンしたBLEアドバタイズからCOCOAのサービスUUIDを検出する方法は分からなかったのですが付与されるdataにそれっぽい値(0xFD6F)が入っていたので、この値でアプリを判別しています。

 

↓検出したデバイスの様子 (シリアルモニタ)

 

動作

近傍のCOCOAアプリを検出してカウントできることを確認いたしました。

単三電池Leaf  によって電池一本で手軽に動かせます。←喜びポイント

今度外出時に携えて巷のCOCOAアプリの普及具合を体感してみたいと思います。

Lora通信 土壌センサの低消費電力化

0
0

前回はMakerfabs 様よりいただいたLora通信 土壌センサの基本動作を堪能し、300m以上の伝達を確認いたしました。

Lora通信 土壌センサを使ってみた

土壌センサは単4電池2本で動作可能です。

ここでは、センサの長期動作を目指して消費電力を観測し低消費電力化を目指しました。

 

 

待機時の電流

通信していないときの待機電源電流を測定いたしました。
電源電圧は3.3Vとしました。

① デフォルト

サンプルコード LoraTransmitterADCAHT10.ino をそのまま書き込んだ時の待機電流です。

16.5 mA

② センサ電源OFF

サンプルコード LoraTransmitterADCAHT10.ino のL. 149のコメントアウトを解除して、測定後に温度湿度センサAHT10の電源を切ります。

15.5 mA

若干電流が低下しました。

③ マイコンスリープ

更に待機時にセンサ制御マイコンATmega328Pをスリープさせました。
Adafruitのウォッチドッグタイマでスリープを制御するライブラリを使用しました。
 https://github.com/adafruit/Adafruit_SleepyDog

11.2 mA

④ Loraモジュール リセット

更にマイコンSleep前にLoraモジュール をリセットしてOFFしました。

0.1 mA以下

以上により大幅に待機電流を減らすことができました。

 

通信1回の消費電力

送信パワー 23dBm:約12.0 μW
送信パワー   5dBm: 約  1.2 μW

通信による消費は非常に小さかったです。
さすがLora!

伝送距離に応じて送信パワーを下げたり通信回数を制限するとより低消費電力化が見込めますね(あたりまえ)。

消費電力

1分間の消費電力を測定したしました。
それぞれ約9秒に1回センサ値を送信するように設定しました。

① デフォルト

サンプルコード LoraTransmitterADCAHT10.ino をそのまま書き込んだ時

1分当たり 1.1 mW 消費

④ Loraモジュール リセット

サンプルコードにセンサOFF、マイコンスリープ、Loraモジュールリセットを追加しました。

1分当たり 0.3 mW 消費

1/3以下の低消費電力化に成功いたしました。

 

Arduinoコード ④ Loraモジュール リセット

低消費電力版のArduinoコードを記載します。

サンプルコード LoraTransmitterADCAHT10.ino を元に
Adafruitのウォッチドッグタイマスリープライブラリを導入しコディングしました。
 https://github.com/adafruit/Adafruit_SleepyDog

 
センサ測定後、L. 84で温度湿度センサをOFFします。

測定データ送信後、L. 137-140でLoraモジュールをリセットします。

Loraモジュールをリセット後、L. 143でマイコンをSleepさせて
8秒後(ウォッチドッグタイマ最大値)にSleep解除されます。

Sleep解除後に、L. 63でLoraモジュールを初期化し
L. 65で温度湿度センサをONします。

以上を繰り返し約9秒おきにセンサデータを送信します。

 

おわりに

Lora通信 土壌センサの低消費電力化ができたので単4電池でどれほど持つのか
実験してみたいと思います。

技適未取得機器を用いた実験等の特例の届出の期限が来年1月までなので
どっちが先に切れるのか楽しみでございます。

Lora通信 土壌センサを使ってみた

0
0

またまたMakerfabs 様より素晴らしい製品たちを提供していただきました。

色々いただきましたので随時ここで紹介させていただきますが
今回は Lora Temperature/ Humidity/ Soil Moisture Sensor を紹介させていただきます。

 

 

Lora通信 土壌センサ

Lora Temperature/ Humidity/ Soil Moisture Sensor は温度センサ、湿度センサ、土壌水分センサを搭載し測定データをLora通信で送信するモジュールです。

Lora受信モジュールもいただきました。

Lora通信周波数のラインアップとして433MHz, 868MHz, 915MHzが用意されており、915MHzのセンサと受信モジュールをいただきました。

単4電池 2本で動作します。

下の動画ではセンサデータをLoraで受信し、受信機で更にWiFi送信してスマホで観測しています。めっちゃ便利ですね。

 

Arduinoコード書き込み

以下を参考にセンサと受信モジュールにArduinoコードを書き込みました。

Lora通信 土壌センサ

以下のライブラリを導入する必要があります。
 https://github.com/Makerfabs/Lora-Soil-Moisture-Sensor/blob/master/RadioHead.zip

以下の測定データLora送信サンプルコードを書き込みました。
 LoraTransmitterADCAHT10.ino

センサへのArduinoコード書き込みには3.3V USBシリアル変換モジュールが必要です。
私は以下を使用しました。

ボードは”Arduino Pro or Pro Mini”を選択。

書き込み時に注意が必要で以下の方法で実施しないと書き込みエラーとなります。
 書き込み前にセンサのリセットボタン押して、書き込み開始したらリセットを開放

書き込みが終了すると以下のようにシリアルモニタに
温度、湿度そして土の水分の電圧のデジタル変換値を送信している様子が表示されます。

Lora受信モジュール Maduino Lora Radio (915MHz)

以下のLora受信サンプルコードを書き込みました。
 LoraReceiver.ino

このモジュールにはUSBシリアル変換が再蔵されUSBマイクロ端子が搭載されていますのでUSBケーブル直結でコード書き込みが可能です。

アンテナをU.FL端子に接続して使用します。

 

動作

さてコードも書き込めましたので早速動作確認してみました。
土壌センサからの測定値をLora介して受信モジュールで受信しシリアルモニタで見ています。

いいですぇ。直接通信は場所を選ばないので便利ですね。

屋外実験

どれくらいの距離で送受信できるのか実験してみました。

手軽に実験するために受信モジュールのシリアル値をスマホで観測できるようにしました。
USBホストケーブルを介してスマホに接続してスマホアプリ Serial USB Terminal で受信結果を観ます。

 

豊平公園でどれくらい信号が届くのか実験してみました。

 
豊平公園の端から端まで信号受信ができました。
約338m離れても受信できたことになります。(参考: 地図をなぞって距離を計算)

 

RSSIが-100以下になると受信が難しくなるので338mはギリギリの距離かもしれませんが、
300mは容易に通信できる結果となりました。

 

技適未取得機器を用いた実験等の特例の届出

センサも受信モジュールにも技適マークはなかったので、以下で技適未取得機器を用いた実験等の特例の届出を行いました。

技適未取得機器を用いた実験等の特例制度

参考

MakePython ESP32 Color LCD で ESP32 ScreenShotReceiver を楽しむ

0
0

以前、ESP32_ScreenShotReceiverを用いてMakePython ESP32 Color LCD に動画をWiFiを介して転送を楽しみました。

MakePython ESP32 Color LCD で 動画をWiFi受信 ー ScreenShotReceiver ー

この度、開発者のらびやんさんよりESP32_ScreenShotReceiverの更新がアナウンスされましたので
変更点の確認をするとともに動画転送を楽しみました。

 
 

ESP32_ScreenShotReceiver更新内容

以前はLCDのSPI設定をTFT_eSPIライブラリに依存していたとのことですが
らびやんさんのグラフィックライブラリ LovyanGFXで設定できるようになりました。

また前回は高速化のためにESP32の設定バイナリファイル改造など実施しましたが、TFT_eSPI依存からの開放によって無改造で高速表示(80MHz)が可能となったとのことです。

ESP32_ScreenShotReceiverの使用方法

前回同様にMakePython ESP32 Color LCD でESP32_ScreenShotReceiverを試してみます。

以下のArduinoコードをダウンロードしてMakePython ESP32 Color LCDに書き込みます。
 https://github.com/lovyan03/ESP32_ScreenShotReceiver/tree/master/ScreenShotReceiver

 
グラフィックライブラリLovyanGFXも必要となりますので導入しておきます。
  https://github.com/lovyan03/LovyanGFX/    (ver. 0.1.14)

LCDディスプレイSPI設定

LCDディスプレイの設定はLovyanGFXのコンフィグで設定いたします。

M5StackやM5StickC、TTGO T-Watchなどはコンフィグファイルが既に用意されておりArduino IDEのボードマネージャで指定することにより自動でSPI設定されます。
 https://github.com/lovyan03/LovyanGFX/tree/master/src/config

 

MakePython ESP32 Color LCD用のコンフィグファイルはないので用意する必要があります。
ちなみにArduino IDEでのボードはESP32 Dev Moduleを指定しています。

 

LGFX_Config_Custom.hppをコピーしてESP32_ScreenShotReceiverスケッチ(ScreenShotReceiver.ino)のあるフォルダ内に保存してMakePython ESP32 Color LCD向けに編集します。

ScreenShotReceiver.inoで#include “LGFX_Config_Custom.hpp”追加で設定終了です。

動作

SmartConfigアプリでのESP32のWiFi設定や
Windows用 送信アプリScreenShotSenderの使用方法は前回記事を参照ください。

 

PCのyoutube動画画面 600×600を240×240にしてQuality60%で転送いたしました。
40fps以上達成できています。はやい!!

送信速度調査

ScreenShotSenderで送信元の画像サイズとQualityを変えて送信速度[fps]がどのように変化するか確認してみました。

送信元の画像サイズはYouTubeの画像サイズも変えておりますので送信先の画はほとんど変わらないようにしております。

元画\Quality 1 % 20 % 40 % 60 % 80 % 100 %
300×300 55 fps 50 fps 45 fps 40 fps 30 fps 15 fps
600×600 55 fps 50 fps 45 fps 40 fps 30 fps 15 fps
1000×1000 55 fps 50 fps 45 fps 40 fps 30 fps 15 fps

送信元の画像サイズの影響は小さいようでした。
Quality = 1 %ですと画が荒いので 60 %以上にはしたほうがよさそうです。

ATOM Echo おしゃべりティラノくんをAlexaと連動

0
0

前回はATOM Echo を用いて、我が家を見守るコンシェルジュ おしゃべりティラノくんを製作しました。

AquesTalk と Node-RED と ラズパイで おしゃべりティラノくん作製

定期的に自発発話してくれるティラノくんを
今回はスマートスピーカAmazon Echo Dotと連携させて
こちらからAmazon Echoに気圧を問いかけて発話させます。

 

 
 

Alexa連動

Node-RED Alexa Home Skill Bridge というNode-REDモジュール用いて、仮想のAlexaデバイスを作成して発話応答をNode-REDへ返してティラノくんに気圧を発話させました。

構成

 

 

Node-RED Alexa Home Skill Bridgeの設定

Node-RED Alexa Home Skill Bridge用のアカウントを作成して気圧センサを起動するための仮想のAlexaデバイスを作成します。
 

アカウント登録

以下にアクセスして、Resisterをクリックします。
 https://alexa-node-red.bm.hardill.me.uk/

ユーザ名とメアド、パスワードを登録します。

 

デバイス登録

登録後、Devicesタグを選択してAdd Deviceをクリックします。

 
気圧センサを起動するためのAlexa用デバイス”Barometric pressure”を作成しました。

Name: デバイス名 ” Barometric pressure” 入力
Description: デバイスの簡単な説明記載
Actions: デバイスの動作種類を選択。ここではOnを選択。
     Onで気圧センサ値読み取りのトリガとします。

 

 

Alexaスキル  Node-RED有効化

スマホのAlexaアプリでNode-REDスキルを有効にしてAlexaサービスとNode-RED Alexa Home Skill Bridgeを紐づけます。

 
スキルを有効にするとNode-RED Alexa Home Skill Bridgeのアカウント入力画面に切り替わるので、登録したユーザ名とパスワードを入力します。

 
問題なければデバイス検出画面に移行します。

 
端末の検出をクリックで作成したデバイスが見つかります。

 

定型アクションを編集

作成したデバイスの起動するための発話をカスタマイズするために、 Alexaスマホアプリで定型アクションを編集します。

Node-RED設定

node-red-contrib-alexa-home-skillをインストールします。

設定でパレットのインストールでnode-red-contrib-alexa-home-skillを検索して”install”クリックでノードが追加されます。

 

作成した仮想Alexaデバイス”Barometric pressure”を前回の定時発話Node-REDフローに追加します。

 

① alexa-homeノード

ノードを配置してまずはNode-RED Alexa Home Skill Bridgeで登録したユーザ名とパスワードを入力します。

 
デバイスを選択します。

 

② functionノード

前段のAlexa起動を受けて、定時発話のように
まず「気圧ですね」と発話させてから気圧を報告させます。

 

 

動作

 

Alexaに問いかけるとリアルタイムに気圧を報告してくれるようになりました!

ATOM Echo で おしゃべりティラノくんを作製

0
0

前回は ATOM Echo に定時発話させるためのシステムをNode-REDを活用して構築しました。

ATOM Echo のための定時発話システム構築 -Node-RED の利用-

ここでは、ATOM Echoの購入理由であった おしゃべりティラノくん を実現いたしましたので報告いたします。

 

 

おしゃべりコンシェルジュ ティラノくん

おしゃべりティラノくんとは以前ラズパイで作った我が家のコンシェルジュです。
定時で発話したり気圧センサの測定値を報告してくれます。
スマートスピーカAlexaとも連動しています。

もう2年近く元気に毎日動いてくれております。

AquesTalk と Node-RED と ラズパイで おしゃべりティラノくん作製

ちょっとラズパイZEROはもっと違うことに使いたくなってきましたし
ここで低額のATOM Echoに変更することにしました。

構成

ティラノくんの口を動かすためのサーボモータと気圧センサをATOM Echoに接続しました。
スピーカも壊れてしまったため、高出力のモノに交換しております。

部品

 

システム概要

以下がティラノくんの動作システムの概要図です。

前回同様に定期的に発話させるmp3のURLをラズパイサーバからATOMにUDPで送信します。
URLを受けてストリーミング再生し、その後に気圧センサの測定値をサーバにUDPで返します。

気圧測定値を受けてサーバで気圧報告用の発話mp3 URLをATOMに送ってストリーミング再生します。

ATOMでのストリーミング再生中にサーボをランダムで動かしてティラノくんの口を動かします。

動作

サーボと気圧センサを接続して動かしてみました。

発話中にサーボをランダムに動かうようにしました。

定時発話後に気圧センサの値をサーバに返して、更に気圧用の発話mp3 URLを受け取り発話します。

 

Node-RED

以下が今回のシステムの Node-RED フローです。
①~③は前回と同じで気圧測定値の受信と気圧報告用の発話生成部を追加しました。

④ UDP受信ノード

ATOMで測定した気圧を文字列としてUDPで受け取ります。
ポートを指定します。

⑤ functionノード

前段で受信した気圧測定値を受けて、気圧報告発話文を生成し
②のgoogle-ttsノードに渡してATOMにmp3 URLをUDP送信します。

ATOM Echo用 Arduinoコード

気圧センサBMP280のライブラリは以下を使用しました。
 https://github.com/Seeed-Studio/Grove_BMP280

以下の修正を施して使用しています。

  • センサのI2Cアドレス修正
    Seeed_BMP280.h
     #define BMP280_ADDRESS   0x77 → 0x76に変更
     
  • I2C通信ピン指定
    Seeed_BMP280.cpp
     Wire.begin(); → Wire.begin(26, 32); //SDA, SCLに変更

 

ESP32用のサーボモータライブラリESP32Servoも使用しました。
 https://github.com/madhephaestus/ESP32Servo