ラベル STM32 の投稿を表示しています。 すべての投稿を表示
ラベル STM32 の投稿を表示しています。 すべての投稿を表示

土曜日, 4月 02, 2022

推しのマイコンボード(笑)

前回マイコンの記事は2019年12月だから,それから2年とちょっと過ぎた。時系列はよくわからないが,PICマイコンより,ARM系が趣味系では台頭してきたように思う。

個人で持っていたマイコンも,PICはすっかり起動せず。Arduinoを経て,今ではMicroPythonをよく使っている。

書く順序がメチャクチャだが,

それまでの間,職場でSTMマイコンを使う機会があった。本職のソフト屋さんが業務を開始するまで,自分でチェックプログラムを書くことになった。本家のIDEをきちんと使おうということで,STM32CubeIDEを使った。とても楽しく,勉強になった。

そのことに触発されて,手持ちのマイコンボードもラインナップ(笑)を整理,「よく使う順」に書いてみたいと思う。

画像はそれぞれのリンク先から引用させていただきました。

NUCLEO-F303K8


 

以前も使っていたこのボード。最近また使い出した。
使い慣れたSTM32CubeIDEで,ピンやペリフェラルの設定,ソース記載,マイコンへの書き込み,デバッグまで淀みなくできる。内蔵されたSTLINKとの相性は,もちろんとても良くて,別途シリアルモニターを起動したまま開発が進む。
12ビットのADCが2個,めずらしくDACやオペアンプもあるのはアナログ屋さんとしてはうれしい。まさに推しのボード。
ユーザーボタンがないのが惜しい。でもジャンパーピンが1個あって,ボタンの代わりに使えなくもない。ピンが上にかなり飛び出していて,基板の上からソケットを挿入できるのも使い勝手がいい。
CPUのリファレンスマニュアルは日本語翻訳版もある。地味にいい。

NUCLEO-G070RB


ちょっと事情があって手に入れたボード。DAC,オペアンプはない,エントリーレベルのマイコン。STMマイコンの基礎は本当にこれで学ばせてもらった。
GPIOはプルアップ・プルダウンの有無,Open DrainかPush-Pullか選択できる。
ボード上のピンはオスもメスも準備されていて,使いたいときにさっと接続してテストできる。使い勝手がいい。
ジャンパーピンを2箇所変えるだけで,単体のSTLINKとしても使える。本職ではこれをターゲット接続装置として使っていた。もちろんターゲットの開発もできるし,シリアルモニターも同時に使える。NUCLEO-F303K8同様,シリアルモニターを起動したままターゲットのアップデートが可能。
Gシリーズは,STM32CubeIDEでサンプルがいっぱいダウンロードできて,これもかなり参考になる。

Raspberry Pi Pico

すっごくお買い得なボードで,話題になっていたので,とにかく買ってみた。
DAC,オペアンプとかないし,GPIOはプッシュプルしかないし,MicroPython? なにそれおいしいの?と最初は思っていた。
勉強と思ってMicroPythonを使ってADCでデータ収集する環境を作ってみたら,なかなかどうして,使い勝手がいい。MicroPythonの良さによるところが大きいけど。REPLでコマンドを確かめながら,エディターで書いて即実行。コンパイルとか書き込みとかはあまり意識しなくていい。内部にストレージを持てるのがかなり良くて,データ収集にはもってこい。

M5StickC PLUS


別途,小型TFT付きのマイコンボードで遊んだことがあって,表示付きのマイコンは利用価値がある。とくに測定的な要素で使う場合,ディスプレイにリアルタイムで状況を確認できるのは,作業がはかどる。
取り出せる端子は必要最小限なれど,「さっと作ってさっと使う」用途だったら必要十分。
MicroPythonで書いて,内蔵ストレージにデータ記録。ESP32なので,ADCは少しクセがある。線型性がイマイチ。だけど「大まかに変化をつかむ」ぐらいなら十分。何ならオプションモジュールがいっぱい発売されているので,それでカバーできる。
使いやすい画面にするのは意外に手間なんだけど,UIFlowという環境が用意されていて,併用すると楽。
RTCや電池も内蔵しているのもいい。

STM32F411 開発ボード BlackPill

某所で(多分)コピー品が安く売られているボード。USERボタンが有り,MicroPythonが使える,中身は基本的なSTM32マイコンとして使える。

Beetle - Arduino Leonardo 小型互換機












以前ここでも書いたBeetle 悪いところから書いてしまうと,
アナログ屋さんとしては,ADCが10ビットなのが気になる。マイコンの性能なので仕方ない。IOは5Vで,Open Drainができたら良かったのに... UARTとI2Cのポートも側面に出してほしかった...
それをOKとするところでは,
まずはweb editorで,開発が簡単。プラグインを導入すれば,そのままマイコンに書き込める。シリアルモニターも統合しているし,コーディングと動作確認は簡単に行き来できる。
ちっちゃくて,端子がむき出しだから,とにかく気になるポートにさっとはんだ付けして,プログラムで制御するなり,状況を確認したりと,とにかくスピード,手軽さ重視の作業環境の出来上がり。

土曜日, 12月 07, 2019

小型マイコンを使うということ -- 今までのまとめにかえて

自分のブログなので,自分のまとめとしておく。

PIC, AT, STMといったいわゆる小型のマイコンを,趣味,興味から使い始めてみて2ヶ月ほど。その間に,ありがたいことで,職場でも使わせていただく機会があり,いろいろ勉強になった数ヶ月だった。

なんだかんだと,PICを一番使っている。特に,内蔵モジュールのPWMとコンパレータを使った案件は楽しかった! まさにPICを使いこなしている,という雰囲気だ。
ただ,XC8/XC16と,MPLAB IDEには手を焼く。
まず,XC8は整数の扱いが他のコンパイラーと少し違う? 計算が正しいか,入念なチェックが必要。
XC16+MCCは無愛想で,生成されたサンプルがさっぱり理解できない...
とか,細かいところはやはり不満。
そして,ICSPによるプログラム書き込みはいいけど,そのままそれをシリアルモニターできないのはツラい。別途シリアル回線を準備するか,OLED等で状況表示,スイッチ等で動作変更が必要となる。
使う用途は限定されるが,MPLAB IDEのsimulationは,それなりに使える。上記,「コンパイラーは正しく計算しているか?」の検証は,ある程度できる。

STM32 Nucleo + mbed では,上記のようなPICの不満は解消される。
ハードウエア設定はほぼ皆無でよく,サンプルを見てソースコードを埋め込めば,割とあっさりと動くようになる。USBで接続したまま,mbedのweb上のコンパイラーからダウンロードされた .bin を,ターゲットにコピーするようにすれば,即,実行される。さらにUSBを接続したままで,パソコン上でシリアルターミナルソフトで状況確認が容易である。
惜しいのは,大掛かりなmbedの影響か,CPUの能力を100%引き出せてはいないのではないか,ということ。STM32であれば,ST純正の開発環境を使えば少しは違うのかと思うが,まだ試せていない。
職場でも使ってみた。いい感じではあったが,残念ながら,私の接続ミスでターゲットを壊してしまった。反省...

古いSTM32も,mbedで.binをつくり,STLINKでターゲットに書いて実行させることはできるようになった。ただしこちらも壊してしまい,深くは検証できていない。また反省...




アトメルのCPU + Arduinoの環境,小規模な制御は,上記の流れから「かなりいい線」ではないかと思っている。シリアルを接続したまま,書き込みと,そのままArduino IDEのシリアルモニターが使える。Arduino言語はそれなりによくできていて,参考になるコードもいっぱい。コーディングはしやすい。
惜しいのは,クラウドベースの開発環境が無いこと。mbedの「場所を問わずに開発」はよくできている。
それはともかく,もう少し使ってみよう,ということで,職場でも使えそうなこれを発注してみた。

https://www.dfrobot.com/product-1075.html


職場では,ブレッドボードは使わない。実験基板に,あるいは直接はんだ付けしてテストする。小規模な方が,組み込むにせよ,外でテストするにしても,有利である。
USBからプログラム,シリアルモニターが使えそうなので,開発や,状況確認も簡単そうだ。

さて,届くまで楽しみに,別のボードで遊んでいよう。

水曜日, 12月 04, 2019

Nucleo F303K8 arduino IDE で開発する

これ先人の皆さんの,参考になる記事がたくさんあるが,自分の記録として残す。

何回か mbed で試したままのNucleo F303K8だが,そのままでいけるのか? とにかくやってみた。

多少つまずいたが,結果,以下のページの通りだった。感謝!

https://www.denshi.club/pc/nucleo/nucleoarduino1blink.html

  • 確認環境
    • Arduino 1.8.10
    • MacBook Pro macOS Mojave 10.14.6
  • 手順
    • Arduino - Preference... 「追加のボードマネージャのURL」の欄に以下を記載
      • https://raw.githubusercontent.com/stm32duino/BoardManagerFiles/master/STM32/package_stm_index.json
    •  ツール - ボード - ボードマネージャ で STM32 を検索。STM32 Core をインストール。しばらく時間がかかる。
    • ツール - ボード - NUCLEO-32を選ぶ。
    • Board part number で Nucleo F303K8 を選ぶ。
    • ボードを接続。残りは以下のような感じ。Upload method が大事。シリアルポートは認識されたポート。実行時の「シリアルモニタ」で必要となるようだ。
    •  スケッチ例 Blink を出す。
    • LED_BUILTIN を  D13 に変更する。
    • スケッチ - マイコンボードに書き込む を選ぶと,コンパイルと書き込み,実行まで一気に進む。
のはずなのだが,ボードへのbinのコピーでエラーが出る。なぜ?
binは出来上がっているっぽいのだが,terminalで直接コピーしてもダメ。
binではなくて,ボードがうまく認識されていない?
mbedに戻って,mbedでコンパイルしたものを(ブラウザーで直接)書き込みすると大丈夫。こわれたわけではなさそうだ。

ふと気づくと,Arduinoでコンパイルしたbinを受け付けた。なぜ?

はっきりとしたことはわからない。だが,書き込みでおかしい時は,いちどボードを取り外し,再度USBで接続する,という手は試す価値ありだ。

ということで,やっと動き始めた。

つづけてタイマー割り込みを... と思ったのだが,これはまだ解決していない。どうやら,AVR用のタイマーの作法と,STMでは違うようだ。さらに,

http://nuneno.cocolog-nifty.com/blog/2017/02/stm326-735e.html

こちらのページの書き方も,コンパイルが通らない。F1系とも違う??? うーん...

Nucleo F303K8 w/mbed ADサンプリングテスト

いわゆるオーディオ信号の解析に使いたい。20kHzを読むので,最低限 200ks/sec ぐらいは欲しいところだけど,データシートによれば,そのぐらい余裕に見える。
mbedでテストプログラムを作ってみた。
シリアルモニター CoolTerm で結果確認

AD Count 44726
AD Count 44727
AD Count 44726
AD Count 44727
AD Count 44726
AD Count 44727


あれ... これはなんだ?
webで調べる。mbedの影響ではなかろうか。

とりあえず,Arduinoでも試してみよう。

土曜日, 11月 30, 2019

Nucleo F303K8 w/mbed OLED SSD1306を接続

うん,やはりOLEDを接続すると,使いやすそうになる。


いろいろと参考にさせてもらったのでまとめておく。 

オリジナルはsaharaさんのページで紹介されていたmicrochip社のフォーラム。

https://www.microchip.com/forums/m826100-p2.aspx 

ここで投稿されていた zipファイル
https://www.microchip.com/forums/download.axd?file=0;831415

当初は自分の PIC24F に移植。次に PIC16Fに移植したところ,メモリーが足りなくなってしまったので,文字を直接描画するように変更。

今回移植したのは,このPIC16Fのもの。

せっかくなので公開してみた。
https://os.mbed.com/users/numeru55/code/Nucleo-F303K8-SSD1306_128x32_from_PIC/

本当の最初は,以下のライブラリーを使ってみた。
https://os.mbed.com/users/joeata2wh/code/Nucleo-F303K8-SSD1306_OLED/

実行したところ,すぐにOLEDが動くのだけど,プログラムを再コンパイル,ターゲットに再ロードすると,OLEDが真っ黒になってしまう。STMが止まっているわけではなく,OLEDの描画のみがOFFになっている模様。初期化のタイミングかな? 自分のOLEDとの相性なのか...

というわけで,快調に動いていた,PICのプログラムの移植を試みた,という次第。

月曜日, 11月 25, 2019

mbed で STM32 始めちゃいました...

PICでやりたいことはまだあるし,arduinoも動かさなきゃ,という状況なのに,

STM32も動かし始めてみました。mbedで。

  • 買ってきたもの NUCLEO-F303K8 -> 秋月さんページ 
  • mbedのアカウントを作って待機
  • 届いた! とにかくmacに接続する。いわゆるLチカが始まる。初期不良はなさそうだ。
  • https://os.mbed.com/platforms/ST-Nucleo-F303K8/ の右側に,サンプルプログラムがある。https://os.mbed.com/teams/ST/code/Nucleo_printf/ を選んでみる。 
  • [Import into Compiler] をクリック。コンパイラーが起動する。
  • 「コンパイル」をクリック。.bin がダウンロードされる。
  • /Volumes/NODE_F303K8 がマウントされているので,.bin を放り込む。
  • 「ディスクの不正な取り出し」とmacが怒る。書き込みのために一旦アンマウントした模様。
  • CoolTermを起動。 usbmodem*** を選び,9600, 8bit, no parity でつないでみる。
  • おお,動いている!!
ほとんど苦労せずUSB経由のシリアル通信ができるのは,本当にありがたい。PICのことを悪く書くつもりはないが,PICの場合は,かなり調べて,いろいろ試行錯誤して,ようやく動く感じ。MCCのおかげで,かなり楽ではあるのだが,基本的にほとんどお膳立てされているmbedやarduinoは,別の次元の面白さ,としたら言い過ぎか。