STM32 Nucleo STM32F072 ― 2015年08月02日
STM32 Nucleo STM32F072 を買ってしまった。
Arduino 互換の pin ヘッダが用意されているのがいい。
Arduino Zero と同じ ARM Cortex M0 コアだが、メモリ容量が少ない。
同じ値段でもっと高性能なコアの Nucleo もあるが、Arduino Zero と同じ M0 コアで、FLASH (128KB) /SRAM (16KB) 容量が ATmega1284P と同じものを選んだ。
STM32F072 は、32-bit CPU で 48 MHz で動作する (Zero と同じ)。
Arduino Duemilanove 1284p は 8-bit CPU 16 MHz 動作だから、32/8, 48/16 の差から、CPU (演算) 性能で 10 倍以上高速だと思われる。
mbed は Web ベースの開発環境なので、ネットに接続できる環境があれば、そのまま使える。
複数のメーカからもいろいろと環境やツールが提供されている。
が、廻り者はローカル (自宅 PC) にフリーな開発環境を構築したいと思う。
Eclipse に ARM plugin を組み込むのだ。
おおまかな手順は、
1) Eclipse + CDT のインストール (すでにインストール済み)
2) Eclipse plug-ins (GNU ARM Eclipse Plug-ins) のインストール
3) toolchain (GNU Tools for ARM Embedded Processors) のインストール
4) デバッグ用ツール (OpenOCD) のインストール
になる。
詳しい手順は、GNU ARM Eclipse (http://gnuarmeclipse.livius.net/blog/) に示されている。
デバッグ用ツール (OpenOCD) については、
https://community.particle.io/t/tutorial-using-eclipse-st-link-v2-openocd-to-debug/10042?redirected=true
を参考にした。
パッケージの名前などに違いはあるが、問題なくインストールできた。
STM32Fxx templates を使って、サンプル・プログラム (C++ Project : STM32F0xx C/C++ Project -> Blink) を走らせてみる。
Include/Timer.h の 33 行目
void // static を削除
Include/BlinkLed.h の 20,21 行目
#define BLINK_PORT_NUMBER (0) // LED は Arduino Port D13
#define BLINK_PIN_NUMBER (5) // PA5 (Port A の bit-5)
のように修正しなければならなかったが、動作することがわかった。
ソース・コードのレベルでのステップ実行やレジスタ/メモリ・ダンプなどができる。
が、FLASH への書き込みができなかったり、Debug が起動できなくなるなどの問題が発生している。
調べる必要がありそうだ。
Arduino (15) Eclipse AVR plugin ― 2015年07月18日
Arduino Zero が発売されたり、Arduino IDE が 1.6.5 (arduino.cc) になったり、Arudino の環境も少しずつ変化している。
このまま Arduino を追いかけるのもいいが、少し遠回りすることにした。
Eclipse IDE (CDT) で Arduino (AVR) の開発環境を構築する。
そのための plugin (Arduino Eclipse Plugin : http://www.baeyens.it/eclipse/) がある。
調べてみると、残念ながら Arudino IDE 1.6.x には対応していない。
もう一つ、AVR Plugin for Eclipse (Eclipse Marketplace) がある。
こちらを使ってみよう。
ただ、いずれも ARM のようなデバッグ環境は用意できないし、Arduino IDE のライブラリもそのままでは利用することはできないので、わざわざ新たな環境を立ち上げることは無駄に思える。
それでも、あえてそれに挑むのが「廻り者」だ。
http://playground.arduino.cc/Code/Eclipse
https://github.com/theolind/mahm3lib/wiki/Integrating-a-serial-output-window-with-Eclipse
の手順にしたがって、インストールする。
Shield-1 (キャラクタ LCD) を動かしてみた。
Project を Build して、AVR ボタンをクリックすれば、プログラムが upload され、動作する。
このまま Arduino を追いかけるのもいいが、少し遠回りすることにした。
Eclipse IDE (CDT) で Arduino (AVR) の開発環境を構築する。
そのための plugin (Arduino Eclipse Plugin : http://www.baeyens.it/eclipse/) がある。
調べてみると、残念ながら Arudino IDE 1.6.x には対応していない。
もう一つ、AVR Plugin for Eclipse (Eclipse Marketplace) がある。
こちらを使ってみよう。
ただ、いずれも ARM のようなデバッグ環境は用意できないし、Arduino IDE のライブラリもそのままでは利用することはできないので、わざわざ新たな環境を立ち上げることは無駄に思える。
それでも、あえてそれに挑むのが「廻り者」だ。
http://playground.arduino.cc/Code/Eclipse
https://github.com/theolind/mahm3lib/wiki/Integrating-a-serial-output-window-with-Eclipse
の手順にしたがって、インストールする。
Shield-1 (キャラクタ LCD) を動かしてみた。
Project を Build して、AVR ボタンをクリックすれば、プログラムが upload され、動作する。
Eclipse で Arduino (AVR) の開発ができるようになった。
Arduino (14) WiFi シールド ― 2015年06月21日
Arduino (arduino.cc) から Arduino Zero (Pro が付かない) が発売されたらしい。
すぐに手に入れたいところだが、そこは我慢して、もうしばらく Duemilanove 1284p で遊んでみようと思う。
前回作ったオーディオ・シールドも順調に動作していて(音質はよくないが)、E-Girls の曲を楽しんでいる。
今回は、WiFi シールドを作った。
といっても、SparkFun Electronics の CC3000 ブレークアウト基板を張り付けただけだ。
廻り者としては随分と手抜きしたものだと思うのだが、日本国内で無線通信を扱うには技術基準適合証明が必要なので、このような出来合いの物を使うほかない。
すぐに手に入れたいところだが、そこは我慢して、もうしばらく Duemilanove 1284p で遊んでみようと思う。
前回作ったオーディオ・シールドも順調に動作していて(音質はよくないが)、E-Girls の曲を楽しんでいる。
今回は、WiFi シールドを作った。
といっても、SparkFun Electronics の CC3000 ブレークアウト基板を張り付けただけだ。
廻り者としては随分と手抜きしたものだと思うのだが、日本国内で無線通信を扱うには技術基準適合証明が必要なので、このような出来合いの物を使うほかない。
完成品の WiFi シールドを買っても良かったが、Micro SD を LCD シールドに組み込んだので省略したいのと、シールドを重ねたときに SPI の CS (Chip Select) が競合しないようにする必要があったのだ。
ところで、キャラクタ LCD ではデータ線 4 本が必要で、そのままでは I/O ピンが不足してしまう。
今後は、キャラクタ LCD を諦めて、グラフィック LCD を使うしかない (オーディオ・シールドの対応も必要だ)。
とりあえず接続テストをしてみる。
SparkFun のライブラリがそのまま使えるので、examples の中から PingTest を実行してみた。
---------------------------
SparkFun CC3000 - Ping Test
---------------------------
CC3000 initialization complete
Connecting to: **********
Connected!
IP Address: ***.***.***.***
Looking up IP address of: www.sparkfun.com
IP address found: ***.***.***.***
Pinging ***.***.***.*** 3 times...
Pong!
Packets sent: 5
Packets received: 1
Min round time (ms): 733
Max round time (ms): 733
Avg round time (ms): 733
Disconnected
Finished ping test
pin 接続を合わせ、SSID と password を書き換えただけで、インターネットに接続できてしまった。
振り返ってみれば、これまでほとんどコードを書いていない。
グラフィック LCD に日本語表示をさせたときくらいだろう。
次は、何かアプリケーションを作ってみたいと思う。
ところで、キャラクタ LCD ではデータ線 4 本が必要で、そのままでは I/O ピンが不足してしまう。
今後は、キャラクタ LCD を諦めて、グラフィック LCD を使うしかない (オーディオ・シールドの対応も必要だ)。
とりあえず接続テストをしてみる。
SparkFun のライブラリがそのまま使えるので、examples の中から PingTest を実行してみた。
---------------------------
SparkFun CC3000 - Ping Test
---------------------------
CC3000 initialization complete
Connecting to: **********
Connected!
IP Address: ***.***.***.***
Looking up IP address of: www.sparkfun.com
IP address found: ***.***.***.***
Pinging ***.***.***.*** 3 times...
Pong!
Packets sent: 5
Packets received: 1
Min round time (ms): 733
Max round time (ms): 733
Avg round time (ms): 733
Disconnected
Finished ping test
pin 接続を合わせ、SSID と password を書き換えただけで、インターネットに接続できてしまった。
振り返ってみれば、これまでほとんどコードを書いていない。
グラフィック LCD に日本語表示をさせたときくらいだろう。
次は、何かアプリケーションを作ってみたいと思う。
Arduino (13) Arduino Zero Pro ― 2015年03月22日
Arduino Zero Pro が発売された。
即完売となり、次回入荷は未定だそうだ。
ところで、Arduino (arduino.cc) から Pro のない Arduino Zero が発表されてから久しいが、知らないうちに Arduino を巡って訴訟沙汰になっていて、この Arduino Zero Pro は、Arduino (arduino.cc) から分離した arduino.org から売り出されたもののようだ。
Zero も Zero Pro も、UNO, Duemilanove と同じ大きさで ARM Cortex-M0 コアのマイコンが搭載されている。
Due も ARM だが、こちらは MEGA サイズで Cortex-M3 コアのマイコンだ。
Zero/Pro のスペックは、32 ビット CPU で 48 MHz、FLASH 256 KB、SRAM 32 KB、3.3V となっている。
これまで、Duemilanove を 3.3V 化し、ATmega 1284P に差し替えて使ってきたが (8 ビット 16MHz/128KB/16KB)、Zero/Pro への乗り換えを検討した方が良さそうだ。
即完売となり、次回入荷は未定だそうだ。
ところで、Arduino (arduino.cc) から Pro のない Arduino Zero が発表されてから久しいが、知らないうちに Arduino を巡って訴訟沙汰になっていて、この Arduino Zero Pro は、Arduino (arduino.cc) から分離した arduino.org から売り出されたもののようだ。
Zero も Zero Pro も、UNO, Duemilanove と同じ大きさで ARM Cortex-M0 コアのマイコンが搭載されている。
Due も ARM だが、こちらは MEGA サイズで Cortex-M3 コアのマイコンだ。
Zero/Pro のスペックは、32 ビット CPU で 48 MHz、FLASH 256 KB、SRAM 32 KB、3.3V となっている。
これまで、Duemilanove を 3.3V 化し、ATmega 1284P に差し替えて使ってきたが (8 ビット 16MHz/128KB/16KB)、Zero/Pro への乗り換えを検討した方が良さそうだ。
Arduino (12) オーディオ・シールド ― 2015年03月15日
画像が表示できるようになったので、次に音声を出力してみたくなった。
Audio Codec LSI VS1063A を入手して、オーディオ・シールドをつくることにした。
回路は、データシートに載っている回路図から、LINE IN, MIC を省いたものだ。
SparkFun Electronics の MP3 Player Shield も参考にした。
毎度のことながら、SMD (Surface Mount Device : 表面実装部品) のハンダ付けには苦労する。
Audio Codec LSI VS1063A を入手して、オーディオ・シールドをつくることにした。
回路は、データシートに載っている回路図から、LINE IN, MIC を省いたものだ。
SparkFun Electronics の MP3 Player Shield も参考にした。
毎度のことながら、SMD (Surface Mount Device : 表面実装部品) のハンダ付けには苦労する。
キャラクタ LCD シールドを重ねて使う。
MP3 ファイルのサンプル (track00[12].mp3) が用意されているので、Micro SD にコピーした。
アクティブ・スピーカを繋ぐ。
ソフトウェアは、SparkFun の Example Code (sketch) がほとんどそのまま使える (ピンの割り当てを変更するだけだ)。
sketch をコンパイル、アップロードすると音が出た。
鐘の音に続いて、ドラムの音が聞こえる。
オーディオ・シールドの完成だ。
最近のコメント