遅くなりましたがなんとか!
みなさんこんにちはYUUKIです。
9月になりました!(はやっ…)
止まない雨で秋並みに涼しい日々が続いたかと思えば、蒸し暑い日々に逆戻り…
まだまだ残暑が続きそうなので気をつけてお過ごしくださいね。
さて、ブログ更新までかなり時間が空きました。
その間にいろいろありました。
STM32の開発環境インストールしようと思ったら今まで問題なく動いていたubuntuがグラボと干渉してうまく起動できなくなったり、動作が鈍くなったり…
使い慣れたmac用のキーボードとMOZCがうまく動作しなくなったり…
やっとLチカをと思ったら書き込んでもチカチカしなかったり…
ubuntu問題は何か機会があればお話するとして…Lチカできない問題はものすごく単純なミスだったのですが、初見プレイだとわかりづらいと思ったので説明していきたいと思います。
各部品を動かせるようになる
前回の記事でお見せした開発計画の3セクション目の作業です。マウスに使用する各部品をそれぞれ動作確認し使えるようにしていきます。(青色の部分です!)
モーター、フォトトランジスタ、赤外LED、モータードライバ、シリアル変換、ジャイロ、開発ボードとこれらを動かせるように且つある程度の理解をしてから回路を作っていこうと思います。
・・・昨今の部品調達が難しい問題ゆえにとりあえず部品注文しているのが後で裏目にでないか心配だったりします。本来ならもう少しスペックを煮詰めるべきなんだろうなぁ…と思いながら作業しています(笑)
まずは開発環境を構築。
まずは開発環境を整えていくことから始めます。
STM32を使っていくのでSTMicroelectronics社から提供されているソフトを使うことになりますが、初心者にうれしい統合開発環境としてSTM32CubeIDEが提供されているのでそれを使うことにしました。
・開発PCーubuntu20.04LTS
・開発環境ーSTM32CubeIDE1.7.0
・開発ボードーSTM32F446 Nucleo
以上の組み合わせでやっていきます。
(このCubeIDEをダウンロードしようと思ったあたりからubuntuの調子が悪くなるんですよね…Gurbブートローダーを読み込まないのでBIOSから起動して動かしていても、Chromeがフリーズしたり、設定に入ろうとするとログオフします。SSDの劣化を疑いましたが、Intel内蔵グラフィックのPCだと問題なく動作することから原因はグラボと干渉しているからと結論付けました。対策はいくつか把握していますが、時間があるときに手を出そうと思います。このために無駄に一個SSDを買い足しました(涙))
インストールですが、諸先輩方の記事を参考にSTMicroelectronics社からダウンロードしてきます。この時名前やメールアドレスを求められ、入力後リンクが送られてくるのでそこから欲しいバージョンをダウンロードします。
ubuntu環境でのインストールからLチカまでをのりさんが詳しく解説してくださっていましたので参考にしました。自分でも、このインストール手順を紹介! と思いましたが、肝心のインストール中のスクショを取り忘れておりましたので割愛します(スミマセン…)
インストール手順はのりさんの記事を見ていただくとして、自分の環境ではできなかった部分を一つ紹介します。
インストールしてNucleoへの初回書き込み時にデバックに関する設定の画面が表示されます。
のりさんの記事では、Startupタブをクリックして、「Set breakpoint at:」のチェックを外しています。どうやらこれをしないと、毎回main関数の最初でbreakpointが発生して動作が一時停止するそうです。ここでチェックを外しています。
私の場合、ここでチェックボックスを操作できなかったので。とりあえず初回設定に関してはこの部分はスルーしました。
この部分の対策は、この後で「Debug Conflgurations」で設定をしてあげるとチェックボックスが操作可能になっていますので必要な場合はそこから外してみてください。
ここを選択すると
このように操作ができる状態になっています。
ここからが本題のLチカ!
さてここからStep1としてNucleoに実装されているLEDを点灯させてみたいと思います。
まずは私がやった手順をそのまま書いていきます。
はじめにCubeIDEのほうで使うマイコンを指定します。
「Start new STM32 project」選択しプロジェクトを新規作成します。
次にマイコンを決めます。
見えづらくて申し訳ありませんが、STM32F446REを選択しています。
Setup画面がでるので名前を入力して使用言語をお好みで決めてそれ以外はデフォルトのままで
「Finish」します。するとプロジェクトができるのでその中の「.ioc」を選択するとSTM32のピンの設定ができます。
写真のようにピンを選択するとこのように指示ができますので、とりあえずLチカだからGPIOのOutputと思いそれを選択。
ちなみにNucleoのマニュアルに光らせたいLD2がどのピンに対応しているか調べたところPA5もしくはPB13だったのでPB13を選択しています。
するとこのようにコードが出てきますのでUSER CODEのBEGINとENDの間にコードを記入していくだけでいいそうです。ということで早速、ピンを指定してLEDを光らせてみようとコードを記入…
おそるおそるビルドしてみます。(金槌マークの右隣のBUILDALLのアイコンクリックかCtrl+Bでできます。)
エラーがおきるとこのようになります。4カ所エラーがあるようですが、何がダメなのかこの時点でよくわかってないので別の書き方を探しました。
しおたにさんの記事を読んでいると前回のLD2のピンを指定するのではなくPB13を指定しているような書き方を見つけたのでこちらでビルドしてみます。
コンソール画面にエラーゼロと出ていれば成功です。
このあとRUN(緑の再生ボタンアイコン)をクリックするとボードに書き込まれます。
このようにコンソールに表示されれば成功です。
さて・・・ボードのLEDはチカチカしているでしょうか・・・
はい。光っていません(笑)
なぜでしょう・・・というところで詰まりここでも時間を使いました。
ちゃんと諸先輩方とやってることは同じなはずなのに…
と思って何度もブログを読み返すと初っ端で間違えていました。
気づく方はこのブログを読んですでにオチが見えていたかと思いますが、このCubeIDEはマイコンの選択もできれば開発ボードごと選択することができるようになっていました。
タブを見ると横にboardselectorなんて書いてあるじゃないですか!
見つけましたSTM32F446 Nucleoです。
これを選択して新たにプロジェクトを作り1回目と同様のコードを書き書き込んでみると…
無事光りました!
これで開発環境構築ができたので次回から各部品の動作確認ができます。
次回
ここまでかなり時間をかけてしまった気がします。もう少しリズミカルに作業ができたらなと思うので頑張ります(汗)
さて次回から、購入したパーツの操作確認をどんどんやっていくわけですが、とりあえず調べてできそうなものから順々に手を付けていきたいと思います。
それではっ…
YUUKI