えっ!
GR-ROSEって
 A*mじゃないの?
から始めた話

https://nagahisa.github.io/20211113-algyan/#/

About me

aboutme.json
{ 
    "name":            "Kenzo Nagahisa",
    "twitter":          "@kenzonag",
    "screen_name" :     "けんぞう",
    "interest": [
        {
            "topic":   "電子工作",
            "level":    "全くの初心者"
        },
        {
            "topic":   "Elixir/Nerves",
            "level":    "永遠の初心者"
        }
    ] 
}

最近全然サボってますが・・・BLOGも 
qiita.com/nagahisa, medium.com/@kenzonag

そもそもの極めて個人的な動機


  • テレビのリモコンが壊れました orz
  • ググって ラズパイゼロでこんなの作りました

我が家のIoTプロジェクト

構成概要

参考サイト
レッツラズパイ!〜Google HomeでLピカさせよう編〜
赤外線LEDドライブ回路の決定版

Wifiが不安定なので有線LANもつけました rpi0+有線LAN

結構な不満(^^;


  • 有線LANボード価格が本体の3倍
  • Linux パッチ適用メンドイ
  • OS起動時にPython動かすって
    …OS要らんやろ


噂に聞くArduinoとかで
何とかならんもんか?

なんか無料でトライ
出来るらしいぞ


「今回、ルネサスエレクトロニクス株式会社様の全面的なご協力のもと、
「がじぇっとるねさすプロジェクトのIoT Edgeデバイス
「GR-ROSE(ジーアール・ローズ)」と周辺部材をどんとご提供頂き、
コンテストを開催する運びとなりました!」

GR-ROSE IoTシステム開発コンテスト meet up!

"ROS"とか"IoT Edge"とか
謎の呪文があるけど
Arduinoって書いてあるし
まっ何とかなるか

「RX65N」搭載

えっ、GR-ROSEって
 A*mじゃないの??

Arduinoって
 A*mじゃないの??

勘違い

と・と・とりあえず
頑張ろう

Step.0


e2studioに出鼻を挫かれる

ううむぅ


色々助けて何とか動いたのですが
・・・
普段Mac使ってるので
結局Webコンパイラにしました:p

Step.1


BeeBotte Arduino Tutorialやってみる

Led Control

This tutorial presents how Beebotte can be used
 to control a led connected to an Arduino board. 
We will use MQTT protocol to connect Arduino
 to Beebotte to subscribe to messages to turn ON or OFF the led.

コミュニティに泣きついたり
WebコンパイラでBeeBotte?

ArduinoJsonとかの
バージョンに悩んだり
ラジバンダリ
・・・

奇跡的に自己解決!

Step.2


有線LANにトライする

Ethernet単体では動くけど
PubSubライブラリが動かない

今回もコミュニティに泣きついたら
有線固定IPでMQTT

有線LANでのPubSubClientライブラリ向けのClientクラスの実装は
していません。
MQTTサンプルで以下のインスタンスを作ってますが、
これに相当するEthernetのClientはないです。
すみませんが、EthernetクラスはROS用、AWS用の残骸のようなものなので、
使用できません。

「ないです」
「使用できません」

・・・
人生、そう甘くはない

有線LANは
折を見て

Step.3


赤外線を受信してみる

赤外線受信時の接続

GR-KURUMIの記事を参考に
GR-KURUMIの機能を使う 外部割り込み編

受信のスケッチ作って
TVリモコンで「1、8、電源」を押下

 remote control test.
type NEC:sz=4 code:40,bf,01,fe,
type NEC:sz=4 code:40,bf,08,f7,
type NEC:sz=4 code:40,bf,12,ed,

我が家のTV電源は
「type NEC:sz=4 code:40,bf,12,ed,」
を送れば良いみたい

Step.4


赤外線を送信してみる

ラズパイで使っていた
送信回路をGR-ROSEへ

rpi0からGR-ROSEへ

GR-KURUMIの記事を参考に
GR-KURUMIの機能を使う 外部割り込み編

送信のスケッチ作ってループ実行

remote control test.
TV on.
TV on.
TV on.

TVリモコンはon/off同じ信号なので
TVがオンオフ

う・う・動いた

感動です!

感動

Step.5


外部割込みで赤外線送信

送信信号定義

// Target IR data.
const unsigned char TVOnOff[] =    {0x40, 0xbf, 0x12, 0xed};

setup()でsetCallback

client.setServer(BBT, 1883);
  // Set the on message callback
  // onMesage function will be called
  // every time the client received a message
  client.setCallback(onMessage);

onMessage()でデータ解析してOKなら送信

  // Send TV-ON
  Serial.println("TV on.");
  irRemocon_txNEC( TVOnOff, sizeof(TVOnOff) );

Step.5


BeeBotte情報を解析する

Google Home→IFTTT→BeeBotte
こんなデータで取得できるので 
それをGR-ROSEで解析

URL:	https://api.beebotte.com/v1/ゴニョゴニョ
Method:	POST
Content Type:	application/json
Body	:	{“data":[
  {"room":"living","device":"{{TextField}}","action":"on"}]
  }

IFTTTとBeebotteを使ってGoogleHomeからRaspberryPiを操作する

こんな感じ

void onMessage(char* topic, byte* payload, unsigned int length) {
  // decode the JSON payload
  StaticJsonDocument<256> doc;

  // Test if parsing succeeds.
  DeserializationError error = deserializeJson(doc, payload);
  if (error) {
    Serial.print(F("deserializeJson() failed: "));
    Serial.println(error.c_str());
    return;
  }
  
  const char* room   = doc["data"][0]["room"];
  const char* device = doc["data"][0]["device"];
  const char* action = doc["data"][0]["action"];

Step.5


スケッチにまとめました

GitHub URL
https://github.com/Nagahisa/20211113-algyan

大団円


感想とお礼

まとめ


  • ラズパイpythonはコピペで動いてBlackBox

  • もしA*mだったら今回も同じでした

  • がじぇるねさん・先人の皆様に感謝

  • こんな機会を与えて頂いた小暮さんに大感謝


    今後はGR-ROSE本来の使い方 "ROS"にも
    挑戦したいです(有線LAN使えるみたいだし^^)

めでたしめでたし

ちょっと
まったぁ〜

応募要件


GR-ROSE+Azureを使って
IoTシステムのアイデアを具現化

Azureを使って

も、もちろん

使っておりますとも

(大汗)

Webコンパイラ: http://tool-cloud2.renesas.com/ Webコンパイラ

→ 13.78.8.20
Azureで動いております

https://ipgeolocation.io/browse/ip/13.78.8.20

ごめんなさい

おしまい