はじめに
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を作成します。
{
"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分毎に時刻を教えてくれます。
左
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秒)経過後に顔(表情)の情報をもとにディスプレイ表示を変更し、サーボモーターを動かします。
右(デバイス側)
中央(MQTTブローカー)
中央(ウェブサーバー)
01、02フォルダに時間(00〜23時)の情報、03フォルダに分(00分、10分、20分、30分、40分、50分)の情報(mp3ファイル)を保存しています。
(01フォルダは「00時です。」02フォルダは「00時」の情報を保存しています。02フォルダと03フォルダを組み合わせて、「00時」「ちょうどです。」を発話させています。)
左(クラウド側)
デモ動画