$30 off During Our Annual Pro Sale. View Details »

M5Stack Core2とAlexaでインターフォンに自動で対応してくれるIoTデバイスを作りたかった話

ufoo68
December 21, 2021

M5Stack Core2とAlexaでインターフォンに自動で対応してくれるIoTデバイスを作りたかった話

ufoo68

December 21, 2021
Tweet

More Decks by ufoo68

Other Decks in Technology

Transcript

  1. M5Stack Core2とAlexaでインターフォンに自動
    で対応してくれるIoTデバイスを作
    @IoTLT vol.82

    View Slide

  2. M5Stack Core2とAlexaでインターフォンに自動
    で対応してくれるIoTデバイスを作
    りたかった話...
    @IoTLT vol.82

    View Slide

  3. 自己紹介
    ● 松永勇太(27歳男性)
    ● 滋賀県在住
    ● エンジニア3年生
    ● たまにお絵かきをする

    View Slide

  4. 最近の出来事1
    滋賀に引っ越しました

    View Slide

  5. 最近の出来事2
    転職しました

    View Slide

  6. 今回の内容
    12/6のIoTLTアドベントカレンダー投稿分です

    View Slide

  7. 新居でやることは??
    そうだね、スマートホーム化だね。

    View Slide

  8. スマートホーム化のオトモ
    スマートリモコンとAlexa

    View Slide

  9. やりたいこと
    こんなんをAlexaで操作したい
    ● M5Stack Core2
    ● M5Stack用Servo2モジュール
    ● サーボモーター

    View Slide

  10. まずはM5Stack一式を購入
    合計1万くらい
    (まあまあの出費)

    View Slide

  11. 開発編

    View Slide

  12. ソースコード全容
    https://github.com/ufoo68/alexa_intercom

    View Slide

  13. PlatformIOを使ってみる
    このArduinoIDEからの卒業♪

    View Slide

  14. PlatformIOのいいところ
    ● vscode拡張なので、vscodeユーザーにとっては使い慣れたエディタでコーディング
    ができるので快適
    ● npmのような特定のプロジェクトに特定のバージョンのライブラリを依存させるよう
    な、モジュール管理ができる
    ● gitでの開発がやりやすいフォルダ構造になっていて、デフォルトで.gitignoreが用
    意されている

    View Slide

  15. サーボモーターを動かす
    基本的には公式のサンプルコードがあるのでコピペ
    M5.begin(true, true, true, false, kMBusModeInput);
    Wire.begin(21, 22);
    なのですが、M5Stack Core2でServo2モジュールを使う場合は、
    以下の初期設定をしよう!!

    View Slide

  16. 動いた

    View Slide

  17. OTAで無線開発しよう
    OTAとは?
    ● Over The Airのこと
    ● アプリケーションを遠隔でアップデートをすることができる仕組み
    ● 今回はWiFiを経由

    View Slide

  18. ネット記事のコードをコピペでOK
    void otaSetup()
    {
    ArduinoOTA.setHostname("m5stack-core2");
    ArduinoOTA
    .onStart([]()
    {
    String type;
    if (ArduinoOTA.getCommand() == U_FLASH)
    type = "sketch";
    else // U_SPIFFS
    type = "filesystem";
    Serial.println("Start updating " + type);
    })
    .onEnd([]()
    { Serial.println("\nEnd"); })
    .onProgress([](unsigned int progress, unsigned int total)
    { Serial.printf("Progress: %u%%\r", (progress / (total / 100))); })
    .onError([](ota_error_t error)
    {
    Serial.printf("Error[%u]: ", error);
    if (error == OTA_AUTH_ERROR)
    Serial.println("Auth Failed");
    else if (error == OTA_BEGIN_ERROR)
    Serial.println("Begin Failed");
    else if (error == OTA_CONNECT_ERROR)
    Serial.println("Connect Failed");
    else if (error == OTA_RECEIVE_ERROR)
    Serial.println("Receive Failed");
    else if (error == OTA_END_ERROR)
    Serial.println("End Failed");
    });
    ArduinoOTA.begin();
    }
    PlatformIO向けの記事でなくても
    基本は動くと思います

    View Slide

  19. Alexaデバイス化しよう
    fauxmoESPを使う
    ● ESP32をPhilips Hue化させるライブラリ
    ● 名目上はAlexaからHueへのライトON/OFF(もしくは明るさ)制御を利用してESP32
    の周辺機器を制御する
    ● 過去のIoTLTで紹介された有名(だと思う)ライブラリ

    View Slide

  20. Alexaを騙せ!デバイス追加を騙せ!
    Alexa用アプリで連携する

    View Slide

  21. 動いた

    View Slide

  22. ここから先はおまけ

    View Slide

  23. オチその1
    壁紙用両面テープじゃ重さに耐
    えきれない🙅

    View Slide

  24. オチその2
    サーボモーターの固定が甘いので
    サーボモーター自体が浮く🙅

    View Slide

  25. まとめ
    ● PlatformIOでvscodeを使った快適なマイコン開発ができる
    ● Servo2モジュールをM5Stack Core2で使うには初期設定の魔改造が必要
    ● OTAでUSBケーブルいらずのデバッグが可能に
    ● fauxmoESPでM5StackをHue化できる

    View Slide

  26. 残った課題
    賃貸の壁であとを残さずに、
    M5Stackとサーボモーターを壁に取り付ける方法

    View Slide