2011年12月24日土曜日

MacでSTM8とSTM32の開発環境を構築する

これまでいろいろなマイコンボードに興味を持ってあっちこっち手を出してきましたが、敷居の低いものは値段が高く、値段の低いものは敷居が高いというような印象を受けています。どちらを優先するかということで悩むところなのですが、Arduinoは自分で作れば(という時点で敷居が高いと思われる可能性はありますが…)かなりお安くできますし、各OSに対応したIDE(しかもわかりやすい)が用意されているという意味でダントツの一押しということになろうかと思います。でも、この世界もARMマイコンへ傾きつつあります。以前に紹介した通り、私自身も色々と買ってみて、時間のない中で試してみようとしているのですが、Arduinoのように簡単に開発環境を整えることができず苦戦を強いられております。 そうした中で、特にスイスのSTマイクロエレクトロニクス(以下「ST社」と略記)が開発したSTM8シリーズとSTM32シリーズのマイコンボードの開発環境をMacで構築することはできないかと考えて、兎にも角にもやってみることにしました。

まず、STM32の方は、chibiegg研究ノートの「STM32の開発環境構築(on Mac OSX)」参考に、devkitARMを導入することにしました。ダウンロードしてきたMac用の.bz2ファイルを展開し、現れたdevkitARMフォルダを「$ sudo cp -r devkitARM /usr/local/」でコピーしました。続いて~/.bash_profileをviで開いて「PATH=/usr/local/devkitARM/bin:$PATH」の一行を書き込みます。これで再起動(ログアウトでもいいはず)すると、使えるようになります。

その他のEclipseEmbedded CDTOpenOCDについては、以前に環境を整えていたのでそのままで使えるはずです。これから試してみたいと思います。一方、AtollicTrueSTUDIO for ARMを使う方法も試してみましたが、予め「Wine」や「MikuInstaller」をインストールした環境でも、現時点で最新のLite版3.0.0をうまく動かすことができませんでした。起動はするものの作業をするウィンドウも開かず、使い物にならないというような状況です。(パーミッションの問題か何かか…)

STM8の方は、さらに大変でした。まず、情報が圧倒的に足りません。 やっとみつけたのがえのたいの電子工作日記の「stm8sマイコン(2)」でした。これを手がかりに、ST社の「TOOLSETS(STVDとSTVP)」(「デザイン・サポート」タグから下へたどったところにリンクされている)をダウンロードして解凍し、MikuInstallerを使ってインストールします。Cコンパイラは別なので、IDEsのページから「Integrated Development Environments for STM8 family」を選択してCosmicの「Cosmic STM8 32K Special Edition Free license」かRaisonanceの「RKit-STM8」のどちらかをダウンロードします。いずれにしてもユーザ名やメールアドレスを登録しなければなりませんので、その作業をしてからのダウンロードということになります。再びMikuInstallerのお世話になってインストール作業は無事完了。

これまでの作業でいろいろといじりすぎてWineの動作がおかしくなったので、Wine環境を再構築するところからやり直しました。「XQuartz」をダウンロードしてインストールしたり、「$ sudo port install wine」でWineを再インストールしたりしました。その後、MikuInstallerを再インストール(dmgを開いてアプリケーションフォルダにコピー&ペースト)して、無事に動くようになりました。
#以下のWebサイトの情報を参考にしました。

大切なのは、各マイコンボードと接続してうまく動かすことが出来るかというところですね。また時間を見つけてやってみます。

【追記】MacPortsでインストールしたWineとMikuInstallerで使っているWineは別のものでした。MikuInstallerのWineを新しいものにする方法は、BLOG「レコーディングエンジニアの杉本さん」の「最新版wineでmikuinstallerを使う。図解入りでやさしいよ!」を参考にして作業をしました。その後、紛らわしいのでMacPortsでインストールしたWineを「$ sudo port uninstall wine」で削除しました。(2012.4.25)

2011年12月23日金曜日

ScratchとPicoBoardで金管楽器の運指確認

小学校で金管楽器の指導をしているのですが、運指表だけだとよくわからないという子どもが多くなり、どのように指導したら良いものかと苦慮しておりました。こちらで指使いを書き込んだ楽譜を配るのも一つの方法には違いないのですが、この辺りは基本中の基本なので、自分で確認して音取りまでできるようになってほしいなぁと思っています。
#そもそも、小学校で普通に担任している教員が金管楽器を指導するのは正直無理なので、日々の練習を含めて子どもたち自身ができることを増やして行かないと、全く上達しないのです。

とは言え、野放しにしていてもどうしようもないので、結局は一人一人指使いを確認する以外にありません。それも、私のスケジュールと子どもたちのスケジュールが合った時だけしか面倒は見られないので、とても効率が悪い状況になります。この状況を解決する方法はないものかと考えて、コンピュータに頼る方法を考えて見ました。それが、ScratchPicoBoardあるいはその互換機を使った「運指確認システム」を作ることです。

材料は、大きめのタクトスイッチ3つと3種類の抵抗でピストンのモジュールを作成。息はモータにプロペラを付けて感知させようと思いましたが、思ったよりも反応が悪くてセンサーとしてイマイチだったので、スライドボリュームで簡単に済ませることにしました。ご存知の方には言うまでもないことですが、3ピストンを使う金管楽器は、ピストンを押す/押さないの組み合わせと息の強さ(唇の締め具合)によって音階を作ります。3つのタクトスイッチを押した(あるいは押さなかった)ときに、8種類の異なる抵抗値が測定できれば良いわけです。

手始めに、スイッチを押して抵抗値を変えることを考えたときに、タクトスイッチを介して抵抗を並列につなげる回路が思い浮かんだのでやってみることにしました。Excelで抵抗値の計算をしながら、自宅にあった10k12k15kの3つの抵抗を選んでHelloBoardにつないでScratchで抵抗値を測ってみました。すると、ちょっと微妙な差だったのでもう少し理想的な数値は出ないものかとあれこれやってみましたが、抵抗が大きくなればなるほどScratchでの値の差が小さくなっていくことがわかりました。ということは…と小さい値のものも試してみたのですが、はじめの3種類よりも扱いやすい値は出てくれませんでした。(3.3k4.7k8.2k辺りでも良いかも知れません)というわけで、そのまま3つの抵抗を使って金管楽器の運指確認システム用センサボードを作ってみました。操作性がイマイチなところはありますが、一応必要な機能は載せられたかなと思っています。

と、ここまでやってみて、スイッチを押して抵抗を通らなくしたら(つまりスイッチを押すと抵抗が減る)、もっと簡単に直列につないでできるじゃないかということに気づきました。(遅!)直列なら抵抗値の計算も単純にたし算(この場合はひき算)すれば良いので楽です。 今まで悩んでいたのがバカバカしいのですが、この方法で1k2.2k4.7kでやることにしました。ついでに、プッシュスイッチを使って、抵抗値を絶縁状態(Scratchでは100)にすると、これでだいぶ金管楽器らしく演奏することができるものができあがりました。Scratchのプログラミングができたら、まとめてWebサイトで報告します。

2011年12月14日水曜日

オカヤドカリの越冬対策

このところ、毎日寒い日が続いています。夜の時間が寒くなり始めた頃から、オカヤドカリの水槽に貼り付けてあるヒーターの電源を入れましたが、今は大小2枚のヒーターを使って水槽内を温めています。11月ごろからは、100円ショップで買ってきた保温シートで水槽を覆ってしまいましたので、普段は中が見えない状態になっています。(家人からは「中が見えない、見栄えが悪い」と不評ですが…)それでも、オカヤドカリたちにとって、寒いのは命を危険に晒すことになりますので、温度対策をしっかりしなければならないのです。

この状態でしばらく大丈夫(温度計で20°を下回らない)だったのですが、真冬並みの気温になってきて、温度計が20°を下回り始めました。最後の放熱場所は、水槽の蓋の部分です。うちでは、園芸用の黒い網状のシートを蓋の内側に入れて(脱走防止対策)その上から透明なプラスチックの蓋を載せています。さらに蓋を固定するために、テープ式のフックを蓋と水槽の両方につけて、髪の毛をとめるための輪ゴムを引っ掛けて固定しています。今はその上に、タオルと新聞を載せて、放熱を防いでいます。これで、明け方でも20°を下回らなくなりました。雪が降る時期になったら、全体をひざかけのようなもので覆う予定です。

防寒対策はこれで十分だと思いますが、一方で空気が乾燥してしまって水分の蒸発が早いという問題があります。水分補給はこまめにしなければなりません。うちでは霧吹きで砂に水を含ませることはしていないのですが、淡水と人工海水を水槽内に用意しています。このところ仕事が忙しくて3日ほど面倒を見ていなかったのですが、先ほど水が減ってしまっていた淡水入れの中で、オカヤドカリの死骸を見つけました。水のある所で脱皮を試みたのではないかと推察しています。まだまだ私自身がオカヤドカリの生態を掴みきれていなくて、かわいそうなことをしたなぁと反省しています。個体が小さいので、脱皮の回数は多いはずです。他のものが元気に生活をしているので、それなりに脱皮に成功しているのですが、適切な環境を整えるためにはまだまだ修業が必要です。

2011年12月11日日曜日

発表会終了…フィジカル・コンピューティング授業

毎年恒例となっておりますが、SPPの助成を受けて取り組んできたフィジカル・コンピューティングの授業の発表会を、去る12月8日(木)、無事に行うことが出来ました。当日は、いつもご指導やお手伝いを頂いている皆さんにもご参加いただき、子どもたちの発表を聞いていただいたり、不具合があったところの調整などに対応していただいたりして、とても助かりました。

今回の課題は、以前にも紹介した通り「人と人とのコミュニケーションを助ける道具(コミュニケーションツール)を作る」ことでした。ミッションとして、「壁(直接顔を合わせることができないという意味)の向こうにいる人とコミュニケーションができる」ことを条件として、KNOPPIX 6.0.1(使っているコンピュータが古くて新しいのは動かないので)上のScratchを中心に、PicoBoardWeDoHelloBoardなのぼ〜どなどをつないでコミュニケーションツールを作らせました。 この環境は、昨年度も使ったものと同様だったので、作業をしていくうちに子どもたちも思い出したらしく、1年前よりはスムーズに作業が進んだと思います。いつの間にか、Linux版のScratchでマイクで録音することもできるようになっていて、活動の幅も広がりました。あとは、日本語入力に対応して頂ければ、何も言うことはありません。
#音を出すためには、起動スクリプトをちょっと書き直す(「-vm-sound-alse」に変更)必要がありました。
#KNOPPIX自体のUSBメモリの扱い方がイマイチなので、保存したはずのファイルが見当たらなくなるという致命的なトラブルが発生してとても困りましたが…。

面白かったのは子どもたちのアイデアです。壁の向こうの相手が何かをしたことをセンサでどのように感知させるのか、そして、それをScratchで処理してどのように(別の人にわかるように)表現するのかと考えた末に、モールス信号を音や光で表現して文字情報を送り合うというアイデアが出てきたり、病気や体の不自由さから話ができない人のために、音や光、手話の写真、パネルに書いた言葉をモータにつけた矢印で指すなどの道具を作るというアイデアが出てきたりして、よく考えるものだなぁと感心しました。モールス信号はデジタルで表現しやすく、通信に使うには良いアイデアだと思いました。さらに面白かったのは、「言葉の壁」に挑んだ子どもたちがいて、Scratchで日本語を認識する仕組みを作って、それに合った外国語を話す仕組みを考えたり、日本語が書かれたボタンを押すと、別の言語に翻訳してくれるという仕組みを考えたりしていました。

この活動は、総合的な学習の時間を使って、普通の子どもたちに取り組ませています。つまり、プログラミングや電子工作などに興味があって、特別に集まった子どもたちではなく、そもそもそういうことに縁のない子どもたちに取り組ませているということです。この活動によってものごとを分析的に考えたり、別のことに応用しようというアイデアが出てきたりして、同じ子どもたちに2年間取り組んでもらって、教育的効果が高いと感じました。ゲーム機を使ってドリル学習をすれば計算力は向上すると思いますが、真の意味での「生きる力」が身につくとは限りません。これからも、こういう活動を通して子どもたちの「生きる力」を伸ばしていけたらと考えています。

2011年12月3日土曜日

ARM搭載のマイコンボード

以前にも紹介してきましたが、最近はARM系マイコン(Cortexアーキテクチャ)を載せた機器(スマートフォンなど)がPCを超える勢いで普及しつつあるようです。これまでAtmelAVRマイコンを載せていたArduinoにも、Cortexアーキテクチャが採用されると聞いて、マイコンボードの世界もARM系のマイコンが席巻するんじゃないかなぁという予感はしております。

私自身は素人ながら、巷で話題になっているARM系マイコンを搭載したマイコンボードなどを買い集めて、どの程度使えるものか実験しようと思っている(本職が忙しくてそれどころではない…)ところです。mbedを除いて、この手のマイコンボードは、開発環境を用意するのが容易ではない(Code RedDevelopmetソフトが使えるものもある)ので、私のような素人にはかなり敷居が高いのですが、趣味の範囲でできる程度のことをボチボチとやっていけたらと思っています。という訳で、私の手元にあるARM系マイコン搭載のマイコンボードを紹介しておきます。

  • MARY基板(NXP LPC1114搭載)…トランジスタ技術増刊「2枚入り!組み合わせ自在!超小型ARMマイコン基板」に付属していた、ちょっと面白いコンセプトのマイコンボードです。ボード同士をつなげて、連携させながら使うことができます。また、拡張基板が用意されていて、それらと組み合わせて使うのも面白そうです。
  • mbed(NXP LPC1768搭載)…開発環境がWebアプリとして用意されていて、ARM系マイコンボードでピカイチの使いやすさだと思います。でも、ちょっと高い。LPC1768はCortex-M3ですが、Cortex-M0のLPC11U24を搭載したものが開発されているので、廉価で気軽に買えるmbedになったらと期待をしています。
  • LPCXpresso(NXP LPCシリーズ搭載)…様々なバリエーションがありますが、私が持っているのは、LPC1769搭載のものとLPC11U14搭載のものの2つです。Code Redの開発環境を使って様々な実験・開発をすることができます。また、同じようなマイコンを載せた他のマイコンボード用に作ったプログラムを動かしてみたいとも思っています。
  • Maple(STM STM32F103RB搭載)…Cortex-M3アーキテクチャのARM系マイコンボードです。姿や開発環境がArduinoに酷似していて、専用のMaple-IDEを使って様々な実験・開発をすることができます。日本では、シリコンハウス共立で取り扱われて(通販でも購入可)います。大阪に旅行に行った際、我慢ができなくて買ってしまいました。
  • STM Discovery(STM 8および32シリーズ)…これもいくつかシリーズがあるのですが、私が持っているのは、32VL8S8Lの3つです。買ったは良いけど、開発環境を構築するのがめちゃめちゃ面倒くさい感じなので、今は手を出していません。いくつか参考になりそうなサイトは見つけたけど、私にはちょっと早すぎたかもと後悔中。
  • Beauto Rover ARM(NXP LPC1343搭載)…以前はルネサスのH8マイコンのバージョンだけしかありませんでしたので全く眼中になかったのですが、ARM系マイコンを搭載したものが発売されたので、早速購入してみました。取りあえず組み立てだけは終わっていますので、LPCXpressoを使って実験してみたいと思っています。

以上が、今のところうちにあるARM系マイコンボードです。開発環境は、MacやLinuxで構築中です。時間を見つけて実験を重ねて、うまく行ったらまたブログにまとめることにします。
#良い情報があったら教えていただきたいのですが…。m(_ _)m