Simulink OnlineからRaspberry PiのGPIOにWriteして動かす
前回はSimulink OnlineでRaspberry PiのLEDを点滅させてみた。今回は、Raspberry PiのGPIOをSimulink Onlineから制御してみる。具体的にはGPIO Writeブロックを使って、ラズパイのGPIOをHIGH/LOW切り替えてみる。
またLEDをつないで確認しようと思ったが、それだと前回の内容と変わり映えしない。ということで、今回はアクティブブザーをラズパイのGPIOに接続して、GPIOの切り替えによってブザーがから音が鳴らしてみる。
ちなみにブザーは以下のキットのものを使った。
実行環境
Raspberry Pi 4 Model B
Raspberry Pi OS (Buster)
MATLAB online (MATLAB R2022a)
Simulink online
ラズベリーパイに接続する回路
回路はブレッドボードに組んでラズパイのGPIOに接続するが、回路図&ブレッドボード上の接続は以下の記事で書いたものをそのまま流用しているので、以下を参照。
回路図だけ再掲しておく。NPNトランジスタを使ってGPIOの出力が不定のときはベースの電位をLOWに落としている。今回はGPIO19ピンを使用している。
実際に接続したのが以下の写真。
Simulink Onlineから動かす
次に、Simulink Onlineでモデルを作っていく。まずは前回同様にMATLAB Onlineを開いて
open_system('raspberrypi_gettingstarted')
を実行して、raspberrypi_gettingstartedを開く。今回はこれを「raspberrypi_gpio」という名前で保存して、GPIOを制御するように改造していく。
まずはライブラリブラウザーでgpioと検索すると、GPIO Write/Readのブロックが出てくる。今回はGPIO Writeだけ使う。
今回はLEDは使わないので、LEDのブロックを削除して、代わりにGPIO Writeのブロックを接続する。ブロックをダブルクリックするとパラメーターを設定できるので、BoardはPi 4 Model B、GPIOはトランジスタを接続したGPIO19を指定する。
今回はConnected IOを使って実行してみる。ハードウェアタブを開いて「IOを使って実行」をクリックする。
以下が実行した結果。Simulink上で信号を発生させているPulse Generatorから1秒ごとにHIGH/LOWが出力されているため、ブザーも1秒ごとに鳴っている。
これでとりあえずGPIO Writeを使ってみるという目的は達成。次回は、GPIO Readブロックも使って、ブレッドボード上の回路でスイッチを押したらブザーが鳴るようにしてみたいと思う。
参考文献
この本のMATLAB/Simulink 6か月ライセンスを使ってやってます↓
Interface 2022年 9月号
MATLAB/Simulink記事まとめ
MATLABとSimulinkの記事は以下にまとめてます。