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

土曜日, 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系とも違う??? うーん...