MATLAB/SimulinkでRasberry Pi制御その4:Simulink OnlineからラズパイのGPIO Write/Readをする(スイッチを押してブザーを鳴らす)

投稿日:2023年1月7日
最終更新日:2023年1月7日

Simulink OnlineからRaspberry PiのGPIO Read/Writeをやってみる

前回はSimulink OnlineでGPIO Writeブロックをつかって、Raspberry PiのGPIOを制御してラズパイに接続したブザーを鳴らしてみた。

今回はもう少し発展させて、GPIO Readブロックをつかってラズパイに接続したタクトスイッチ(ボタン)の入力をReadし、その値を前回のようにGPIO Writeで書いてラズパイに接続したブザーを鳴らしてみる。

前回同様、ブザーは以下のキットのものを使っている。

 

実行環境

Raspberry Pi 4 Model B

Raspberry Pi OS (Buster)

MATLAB online (MATLAB R2022a)

Simulink online

 

ラズベリーパイに接続する回路

回路図は前回GPIO19に接続したブザーの回路に加えて、GPIO27にスイッチを接続している。スイッチはプルアップして接続しているので、ボタンを離しているときはGPIO27にHIGHが、ボタンを押しているときはLOWが入力される。

実際に接続したのが以下の写真。ブレッドボードの接続は単純なので(というか図を書くのが面倒なので)割愛する。

 

Simulink Onlineから動かす

次に、Simulink Onlineでモデルを作っていく。ベースは前回のGPIO Writeのモデルだが、今回はこちらにGPIO Readブロックを追加していく。まず、ライブラリブラウザーから「gpio」で検索するとGPIO Readが出てくるので、前回信号を発生させていたPulse generatorブロックを、GPIO Readブロックに置き換える。また、GPIO Readブロックをダブルクリックして、以下のようにGPIO numberをGPIO27に設定する。

回路図的にはスイッチを押すとGPIOへの入力がLOWになり、離すとHIGHになるため、このままだとスイッチを離している間はずっとブザーが鳴り続けてしまう。

そのため、今回は以下のようにNOTブロックをGPIO Readブロックの後段に入れて、論理を反転させることで、スイッチを押しているときにブザーが鳴るようにした。(特に何も考えずにconvertブロックは残してたけど、そもそもGPIO Readからは1 or 0が出てくるので消去してもOKだと思う)

あとは前回と同様に実行するだけ。今回はConnected IOを使って実行してみる。以下が実際に実行した結果。ボタンを押しているときにブザーが鳴っていることがわかる。

Connected IOでネットを介してラズパイに接続しているため、タイムラグが大きいんじゃないかと思ったが、意外とタイムラグは少なかった。ちなみに、実行中は以下のようにScopeを追加することで、リアルタイムに入出力の変化を見ることもできる。

GPIOブロックはこの辺にして、次回はまた違うブロックをつかってラズベリーパイを動かしてみたい。

 

参考文献

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

 

MATLAB/Simulink記事まとめ

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

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

 


投稿者: wakky

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

コメントを残す

メールアドレスが公開されることはありません。

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