5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Node-RED MCU Edition版 #スタックチャン (Stack-chan)の作例①

Last updated at Posted at 2024-09-01

はじめに

Node-RED MCU Edition版 #スタックチャン (Stack-chan)の動作に必要なモジュールが揃ってきたので、作例を紹介します。

サーボモーターノードは @background さんが作成しています。

Faceノードは @mshioji さんが作成しています。

TTS(Text to Speech)ノードです。

Elevenlabs版

OpenAI Stream版

mp3再生ノードです。

Moddable SDKの開発環境を構築します

技術書典16で頒布した「はじめてのNode-RED MCU Edition補足書 (2024年5月12日版)」の環境構築部分を公開します。こちらの手順を参考にして開発環境を構築します。

Node-RED MCU Editionの開発環境を構築します

Node.jsがインストールされていることを前提とします。
新しいディレクトリを作成して、package.jsonを作成します。

package.json
{
  "name": "mcustackchan",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@background404/node-red-contrib-mcu-servo": "^0.1.0",
    "@kitazaki/node-red-contrib-mcu-mp3": "^0.0.2",
    "@kitazaki/node-red-contrib-mcu-elevenlabs": "^0.0.1",
    "@kitazaki/node-red-contrib-mcu-openaistream": "^0.0.1",
    "@mshioji/node-red-contrib-mcu-draw-face": "^0.1.2",
    "@moddable-node-red/mcu": "file:node_modules/@ralphwetzel/node-red-mcu-plugin/node-red-mcu/nodes/mcu",
    "@ralphwetzel/node-red-mcu-plugin": "github:ralphwetzel/node-red-mcu-plugin",
    "node-red": "^4.0.2"
  },
  "description": ""
}

必要なモジュールをインストールします。コマンドプロンプトでnpmコマンドを実行します。

$ npm i

enebular

enebularのアカウントを作成します。
enebularのクラウド実行環境の機能を利用して、定期的に(10分毎)にポモドーロタイマーを起動します。

作例① (10分ポモドーロ)

構成

全体構成は下図のようになっています。
10分毎に時刻を教えてくれます。

スクリーンショット 2024-09-01 23.11.54.png

enebularのクラウド実行環境の機能を利用して、毎時10分毎(00分、10分、20分、30分、40分、50分)にNode-REDフローを実行しています。
インターネット上のMQTTブローカー(中央のNode-RED)へ接続し、音声(時刻)と顔(表情)の情報を送信します。

「時間」と「分」の発話情報(mp3ファイル)は分けてウェブサーバー(中央のストレージ)に保存しています。
「時間」と顔(口を開いて動かす表情)の情報を送信し、一定時間(1.2秒)経過後に「分」の情報を送信します。
一定時間(1秒)経過後に顔(口を閉じる表情)の情報を送信します。

中央

Node-REDでAedesノード(MQTTブローカー)を動かしています。
ウェブサーバに発話情報(mp3ファイル)を保存しています。

音声(時刻)と顔(表情)の情報を受信します。
「時間」の情報(mp3ファイルのURL)をもとにウェブサーバーからmp3ファイルを取得して再生します。
顔(表情)の情報をもとにディスプレイ表示を変更し、サーボモーターを動かします。
一定時間(1.2秒)経過後に「分」の情報(mp3ファイルのURL)をもとにウェブサーバーからmp3ファイルを取得して再生します。
一定時間(1秒)経過後に顔(表情)の情報をもとにディスプレイ表示を変更し、サーボモーターを動かします。

右(デバイス側)

image20.jpg

中央(MQTTブローカー)

中央(ウェブサーバー)

01、02フォルダに時間(00〜23時)の情報、03フォルダに分(00分、10分、20分、30分、40分、50分)の情報(mp3ファイル)を保存しています。
(01フォルダは「00時です。」02フォルダは「00時」の情報を保存しています。02フォルダと03フォルダを組み合わせて、「00時」「ちょうどです。」を発話させています。)

スクリーンショット 2024-09-01 23.42.06.png

スクリーンショット 2024-09-01 23.41.58.png

左(クラウド側)

image17.jpg

デモ動画

スクリーンショット 2024-09-01 23.34.54.png

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?