MATLAB/SimulinkでRasberry Pi制御その8:Simulink OnlineでTalkBack Writeを使ってラズパイからコマンドを受ける

投稿日:2023年2月5日
最終更新日:2023年2月5日

Simulink OnlineからTalkBackを使ってラズパイからコマンド取得

前回はThingSpeakにチャネルをつくって遊んだが、ThingSpeakにはTalkBackというアプリが準備されている。TalkBackを使うと、ラズパイに任意に定義したコマンドを送ったり、逆にラズパイからTalkBackでコマンドを受け取ったりできる。

ということで、今回はまずSimulink OnlineのTalkBack Writeブロックを使い、ラズパイからTalkBackでコマンドを受け取ってみることにする。具体的には、ラズパイに接続した人感センサー(PIR)がHIGHになったときに、ラズパイからTalkBackに「alert」というコマンドを送るシステムをつくる。

TalkBack Writeの使い方は、MathWorksの以下のページを参考にした。

https://jp.mathworks.com/help/supportpkg/raspberrypi/ref/talkbackwrite.html

また、PIRセンサーについては、これまでと同じく今回は以下のキットのものを使っている。

 

実行環境

Raspberry Pi 4 Model B

Raspberry Pi OS (Buster)

MATLAB online (MATLAB R2022a)

Simulink online

 

ラズベリーパイとブザーを接続

これまでと同様にブレッドボードは使わずに、ラズベリーパイとPIRはジャンパー線で直接接続した。接続は以下の通り。

  • PIRのGNDをラズパイの+5V(2pin)に接続
  • PIRのOUTをラズパイのGPIO17(11pin)に接続
  • PIRのVccをラズパイのGND(9pin)に接続

実際に接続したのが以下の写真。

 

TalkBackを作成する

次に、ThingSpeak上でTalkBackを作成する。ThingSpeakのChannelを作ったときとどうように、まずはThingSpeakのページを開き、Appsのタブから「TalkBack」を選択する。

「New Talkback」から新しくTalkBackを作成し、以下のようにTalkBackTestを作った。今回は名前をTalkBackTestとした。このページのTalkBack IDと、API KeyをSimulink OnlineのTalkBackのブロックで設定して通信を行う。

これでTalkBackの準備は完了。

 

Simulink Onlineから動かす

いつものごとくMATLAB Onlineを開いて

open_system('raspberrypi_gettingstarted')

を実行して、raspberrypi_gettingstartedを開いて改造していく。

今回は以下のようにモデルをつくった。PIRセンサーがHIGHになったらEdgeを検出して(最初センサー値をそのままTalkBackに入れるようにしたら大量にコマンドが発行されてしまったので)、LEDを光らせると同時にTalkBack Writeブロックで先ほどつくったTalkBackにalertというコマンドを送っている。

以下が実行してみた様子。PIRに手をかざすとエッジが検出されて、alertというコマンドがTalkBack上に送られていることがわかる。

画像も載せておく。以下のように、alertというコマンドが登録されている。今回はコマンドを記録するだけだが、例えば他のデバイスでTalkBackのalertというコマンドを読んでブザーを鳴らすとか、色々なシステムに応用できそう。

TalkBackも簡単に使えたので、色々と便利そうだな~という印象。今回はTalkBack Writeブロックだけ使ったが、次回はTalkBack Readブロックを使って、ブラウザ上でコマンドを発行し、そのコマンドに応じた動作をラズパイにさせるようなシステムを作ってみたいと思う。

 

参考文献

この本のMATLAB/Simulink 6か月ライセンスを使ってやってます↓
Interface 2022年 9月号

 

MATLAB/Simulink記事まとめ

MATLABとSimulinkの記事は以下にまとめてます。

MATLAB/Simulinkで遊んでみる まとめ

 


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください