mbed日記 (1)
長嶋 洋一
2014年9月26日(金)
久しぶりに、CQ出版のN氏からメイルが届いた。 「Interface2015年○月号では、生体信号処理に関する特集を予定しております」とのことで、「■特設記事■ ワンチップ・マイコンでやってみよう!信号処理」の執筆打診である。 このところ「トランジスタ技術」の執筆ばかりだったが、かつてCQで特集記事を書いたり連載していたのは「Interface」だった。
上のように、国会図書館データベースには、ちゃんと「Interface150号特集記事」を107ページもがっつり書いた、という記録が残っていた(^_^)。 こういう面白そうな話は受けない手はないので、いくつかの質問を返信して翌週の回答を待つことにした。 Max日記 が終ったばかりであるが、また、面白いことが始まりそうな予感である。
2014年9月29日(月)
朝イチで、CQのN氏からメイルが届いた。 希望しているのは「生体センシングに必要な信号処理の基礎知識の解説」であり、「読者に上記の理論と実践を示したい」ので「C言語のプログラムが出てこないと、特集が締まりません」とのこと。
そして、ターゲットマイコンの希望として、これまで触ったことのない「ARM Cortex-M4」の指名とともに、具体的に、以下の FRDM-K22F という紹介があった。 さっそく FRDM-K22F に行ってみると、なんとこれはArduinoとピン互換でクロックが120MHzであるという。 まぁ、Propellerの80MHzよりはたぶん性能は落ちるものの、まずまずCでも行けるかもしれない。
とりあえずこれは実験だ、と オンラインショップ に行ってみると、mbedにユーザ登録しろ、というので登録して、とりあえず2個、アメリカからの直接購入をオーダーした。
そして調べてみると、どうもmbedというのはArduinoとかProcessingなどのオープンソースとは違ったオープンソースで、オンラインでコンパイルする、つまり手元に開発ツール(SDK)をダウンロードしないもののようであった。 そうなるとブラウザ上で開発できるのだが、SUACのプロキシサーバはAppleStoreのプロトコルを通さなかったりする(^_^;)ので、果たして研究室で使えるかどうか、という検証が必要である。こういう、新しいCPU/ボードを初めて使う・・・というのが何より楽しいので、直面する「書類書き」のお仕事を棚に上げて(^_^;)、さっそく資料を集めてみた。 このあたりはちょうど、 Propeller日記 の最初と同じ感じである(^_^)。 FRDM-K22Fのサイト には、いちばん下に「Technical Reference」というのがあり、多数のPDF資料がダウンロード出来るようになっているので、とりあえず、 回路図と、 ハードウェァマニュアルと、 リファレンスマニュアルと、 電気的特性データと、 光センサと、 6軸加速度・地磁気センサと、 マスク履歴と、 をゲットして、最初の2つを明日の出張中に読もうとプリントした。
そして、どこかで見た記憶が・・・と調べてみると、なんとトラ技の今月号(2014年10月号)が、このmbedの特集だった(^_^;)。 FRDM-K22F は書かれていなかったが、トラ技は自分のトラ技ボードをイチ押ししていた。
懸案の「SUACで使えるか」のテストについては、トラ技の2014年3月号の付録に、マルツ製の「トラ技ボード」があり、これもmbedに対応していると書かれていたので、まずはオンライン・コンパイラの動作確認は、アメリカから届くのを待たずに出来ると気付いて、さっそく。浜松のマルツに電話して、付録のトラ技ボードのための外付け部品キットと、完成品のトラ技ボードの取り置きを依頼した。 SUACから自宅に帰る途中にマルツがあるので、ここで入手して、今週中に実験することが出来そうだ。2014年10月2日(木)
火曜日に出張で水曜日に朝帰りして午後に講義初日とアカペラ初日、ということで2日スキップした。 お仕事の「書類書き」が最重要なのだが、朝から午前中続けて疲れてきたので、午後になって、気分転換にマルツのトラ技ボードと遊ぶことにした。 以下のように、トラ技3月号の付録の基板に付ける部品キットも買ったが、とりあえず完成品もあるので、まずは後者での動作確認に着手した。
まずはmbedのサイトにもユーザ登録して(先日の登録はfreescaleだと判明)、ボードの一覧から以下のトラ技ボード「TG-LPC11U35-501」を選んで自分のアカウントに追加して、 回路図 もゲットした。
そしてお約束のLEDブリンクのプログラムをコンパイルして、デスクトップにはダウンロード保存されたバイナリファイルも出来た。 ここでトラ技の記事では、「ISPモードにするとドライブとしてマウントされるので、その中のfirmware.binを削除して、代わりにダウンロードされたbinをドライブにコピーすればプログラム(ファームウェア)が書き込まれる」とあったのでやってみると、見事に、出来なかった(^_^;)。 何度やっても、消したつもりのfirmware.binがゾンビの如く蘇り、アンマウントもされないのだった。
そこで CQのサイト から、 mbedCQページ に行き、「追記」として、「ファームウェアの書き込みにMacを使用する場合に、書き込みに失敗するケースがあるようです。 その場合はWindows環境で書き込んで頂くか、下記の Lynx-EyED さんのブログの最後の部分で説明されているターミナル.appからコピーする方法で書き込んでください」 というのを発見した。
そこで Lynx-EyED さんのブログ というところに行き、解決法を発掘した。 結論としては以下のようにターミナルで直接に操作するのだった(^_^;)。 これはトラ技ボードに固有の現象とは限らず、もしかするとfreescaleでも同じなので、備忘録として手順を以下に整理しておく。
ということで、とりあえず知りたかった「mbedの開発環境はSUACの研究室でもOK」(プロキシに拒絶されるようなAppleStore/iTunesのような
- ボードをUSBに繋いでおく
- mbedツールで開発してコンパイルする
- 出来たバイナリをデスクトップにダウンロードしておく。.binファイル名前は何でもOK
- ISPモードにする。トラ技ボードの場合には「ISP SWを押す」→「reset SWを押す」→「reset SWを離す」→「ISP SWを離す」
- これでデスクトップに「CRP DISABLD」というドライブが出現する
- 「ls Desktop」でbinファイル名を表示
- 「ls /Volumes」でドライブ名を確認。スペースがあるので指定は「/Volumes/CRP\ DISABLD/」となる
- 「rm -rf /Volumes/CRP\ DISABLD/*.bin」でドライブ内のbinを消去
- 「cp Desktop/######.bin /Volumes/CRP\ DISABLD/.」でデスクトップのbinをドライブにコピー
- 「sudo umount /Volumes/CRP\ DISABLD/」でアンマウント。1回目に失敗しても次で成功する
- USB接続のままリセットで新プログラムで稼働(^_^)
邪悪な特殊なプロトコルを使っていない)という事は無事に判明した。 これで、あとはアメリカからサンプルが届けば、freescaleボードでも実験に入れることになる。2014年10月4日(土)
台風18号の足音が南大東島あたりから近づいてくる週末である。 昨日はゼミ初日、そして碧風祭で今年も2-1回生が企画している「お化け屋敷」のミーティングがあったが、それ以外の時間は全て、最重要課題のお仕事「書類書き」で潰れた。 そんな午後、なんと業者ルートで発注していたfreescaleボードと、さらに以前に注文していたLittleBitsのハンダ付けキットが届いてしまった。 しかし開ける余裕もなく、グッと堪えていたのだった。そして今日になり、研究室のテーブル上にあるこいつらを見て、思わず開けつつ撮ったのが、 これ である。 いやー、実に、ソソラレル(^_^)。 それでもグググッと堪えて、マル一日頑張って、なんと、夕方には最重要課題のお仕事「書類書き」が、終ってしまった。 終ったというか、無理矢理に終らせた、というのが正しいが、まだ修正ステップはあるものの、一気に解放された気分になった。 これで、明日のカラオケオフを経て、来週からはいよいよmbedと遊べそうである。 ただし月曜日には台風直撃で、朝から暴風警報で全学休講になる可能性がかなり高い模様である。
2014年10月6日(月)
昨日は雨ニモ負ケズに7時間で31曲を歌い倒して(もう「謎のリスト」は省略(^_^;))、晩に無事に帰宅した。 その後、真っすぐに近づいてきた台風18号によって夜には以下のような警報が出て、翌朝にもまだ台風が到着しないので、以下のようなSUACルールによって、終日全学休講となる、と確定しての朝を迎えた。
さすがにいつもの通勤時間(朝06:30-07:00)は強烈な暴風雨で控えたが、朝8時を過ぎた時、フト風が止んで小雨となったので家を出て、街中のあちこちの冠水道路を避けつつ、ちょっと風が強まりつつも無事に8時半過ぎに研究室に出て来てみると、なんとちょうど浜松に上陸して、あの静けさは「台風の目」の付近だったらしい。
そして、9時を過ぎてみれば、まだ風はあるもののいつもの「台風一過」で、真っ黒だった空はすっかり明るくなり。合間から青空も見えるようになった。 以下のように既に雨雲は東に去っていた。 これでも今日はもう終日全学休講であり、邪魔も入らず、お仕事が捗ることになる。(^_^)
そしてあれこれ事務仕事をしたり台風報道を見たりして、午後になってようやくmbedに着手した。 まずはボードのUSB端子とケーブルのチェックから始まることになる。 かつては「共通規格」だったUSBも、今では以下のように手元にあるのを並べても、パソコンに挿す方は同じに見えるのに、その反対側が物理的に互換性の無いものが4種類もある。(^_^;)
以下の左側はもっとも古い規格のUSBで、プリンタ本体など大きなものは現在でもコレである。 初期のGainerやArduinoもこれである。
右側はポータブルHDDなどで普及した「ミニUSB」で、デジカメとか、新しいGainerやArduinoはこれになっている。 「トラ技ボード」もこれである。 かなり小型で、体感としてはこれがもっとも普及している気がする。
以下の左側は「新しいミニUSB」で、Raspberry Piがこれだったので知ったところであるが、どうやら携帯・スマホでは基本らしい。 今回のfreescaleの FRDM-K22F も、これであると判明した。
右側は、ウイーンで買ったiPad miniがこれなので知ったが、マルツに行ったら、このケーブル(Apple純正で2000円以上)の互換品が、500円とかで売っていた(^_^;)。 こちらはiPhoneで普及しているらしい。
ということで、以下のようにパソコンと繋ぐ、という体制でのスタートとなった。
まずは FRDM-K22F のサイトに行ってみると、いきなりWarningということで、 「mbed SDK support for this platform is not yet complete. If you're interested in contributing to the SDK porting effort in exchange for a platform send an email to support@mbed.org」 と書かれていた。 嫌な予感がする(^_^;)。
とりあえず「Firmware」のところに、「FirmwareUpdate」というのがあるので、リンクに従って、以下の Step by step firmware upgrade instructions に行ってみた。
2つのボタンを使う「トラ技ボード」と違って、基板の角にあるスライドスイッチをスライドしながらUSBを挿すのだという。 なんとこのスライドスイッチ、スプリングが内臓されていて、離した状態ではOFFに戻るという特注品であった(^_^;)。 すると以下のようにBOOTLOADERというディスクイメージがマウントされて現われるので、この中に最新バイナリをダウンロードしてここにコピーすればいいのだという。 「トラ技ボード」と似ているが、たしか「トラ技ボード」ではこの方法では失敗した筈である。(^_^;)
そして、以下のようにデスクトップにマウントされて現れたフォルダの中に、ダウンロードした「20140717_k20dx128_k22f.bin」をコピーしてみると、以下のように、何度やってもエラーが出てマウントが外れて、その後に現れたフォルダにはbinが無くて、基板としても最初のファームウェアが走っている状態(書き込み待ちモードが解除)、という状態になった。 これは「トラ技ボード」で駄目だったのと似ている(^_^;)が、確か「トラ技ボード」では書き込み待ちモードのまま沈黙していたので、ちょっと違う気もする。
こうなれば仕方ない、「10月2日」のところにメモしていた、「トラ技ボード」で駄目だった時の対策をやってみるしかない。 改めてターミナルを開いて、「トラ技ボード」でやった手続き周辺をあれこれ試行錯誤してみたが、今度は「書き込み待ちモードのまま沈黙」になったものの、やはり、sudoになっても、binファイルのコピーを受け付けず、いったんマウントが外れて、再び現われると中身は元のまま、という現象となった。 ユーザアプリケーション(ターゲットプログラム)どころか、その入口のファームウェアのアップデートも出来ないのだった。(^_^;)
・・・これは困った。 ファームウェアを最新にしなくても、開発ツールでユーザアプリケーション(ターゲットプログラム)を書き込めばいいかといえば、冒頭にキッパリと 「mbed SDK support for this platform is not yet complete. If you're interested in contributing to the SDK porting effort in exchange for a platform send an email to support@mbed.org」 と書かれているのだ。 何かトラブルがあっても、それが手続きの単純ミスなのか、環境の未整備が原因の本質的な問題なのか、いずれか曖昧というのは困ったものである。 とりあえず気を取り直して、「FirmwareUpdate」を諦めて、 FRDM-K22F の続き、の以下に従ってみた。
さきほどファームウェアのアップデートに失敗したボードは、抜いてUSBに挿しても「書き込み待ちモードのまま沈黙」になってしまったらしく、スライドスイッチを押さずにUSBに挿しても「BOOTLOADER」というディスクイメージがマウントされるようになった。 そこで仕方なく、別の新品を出して来ると、USBに挿すと「MBED」というディスクイメージがマウントされた。
ここで以下のように「PC Configuration」を調べてみると、ちゃんと「usbmodem」が認識されている。 ここまではとりあえずOKである。
そこでさらに進んで、いよいよ「Downloading A program」である。 ここからの流れは、一見すると楽勝で、
とのことである。 ところがなんと、肝心の「HelloWorld_K22F.bin」をクリックすると、Webレベルで「Not Found」が出た。 おいおいfreescaleよ、どういうミスなんだ。(^_^;)
- 1. Save a program binary (.bin) to the FRDM Platform
- 2. Press the Reset Button
- 3. Hello World!
- 4. To download a different program
仕方ないので、ソースやライブラリなどアーカイブの置かれている mbed_blinky のページに行って、これを自分の開発環境にインポートして、コンパイル(→自動ダウンロード)してみたが、以下のように、表示上はOKなものの、いっこうに成功しない(^_^;)。
仕方ないので、この mbed_blinky のページの右側にある 「Export mbed_blinky」 というのを見つけたので、とりあえずbinをダウンロード(書き出し)しようとしても、以下のように「Export」のボタンが薄くなってい、押せない。(^_^;)
仕方ないので、この mbed_blinky b> のページの右側にある 「Build repository」 というのを見つけたので、とりあえず再ビルドしようとしても、以下のように何故かエラーが出る。(^_^;)
要するに、かなり新しいらしいこのFRDM-K22Fというやつは、まだ練れていない、つまりあちこちバグとか抜けとかあって、テストしてみようにも、いきなり手慣れたベータテスタである事を求められている(開発ツールや利用環境のバグをまず探してレポートすることから始める必要あり)、という事のようなのだ。 仕方なく、一ユーザとして「素朴な質問ですが・・・」ということで、 このページ と このページ の両方のいちばん下にある「Ask a Question」のところに、以下のように、この状況を報告してみる事にした。 しかし、反応があるのか無いのか、それすら不明である(^_^;)。
そして、これを両方に出した直後に届いたメイルによって、「無駄に同じ質問をする奴」となってしまった事を知った(^_^;)。 Developerとして登録した立場での質問なので、書き込んだ場所は違うものの、このDeveloperサイトで4799番と4800番の連番で、以下のように同一の質問が並んだのだった。 ・・・まぁ、これは仕方ない。 とりあえず誰かのコメントがあれば、その書き込みページへのリンクとともにメイルが届くようなので、様子見することにした。FRDM-K22F trouble ? Hello ! I am a beginner of mbed, and I want to try FRDM-K22F now. I bought the FRDM-K22F, and started with - https://developer.mbed.org/platforms/FRDM-K22F/ (1) I cannot get Freescale FRDM-K22F: HelloWorld_K22F.bin https://developer.mbed.org/media/uploads/sam_grove/helloworld_k22f.bin (see - http://nagasm.org/ASL/mbed/fig/012.jpg) Where can I get this ? (2) With https://developer.mbed.org/teams/mbed/code/mbed_blinky/ I imported this "mbed_blinky", to compile/download, but it does not work. http://nagasm.org/ASL/mbed/fig/013.jpg I tried to export "bin" file with https://developer.mbed.org/teams/mbed/code/mbed_blinky/export but I cannot click "Export". http://nagasm.org/ASL/mbed/fig/014.jpg I tried to build with https://developer.mbed.org/teams/mbed/code/mbed_blinky/export but the system said "failed". http://nagasm.org/ASL/mbed/fig/015.jpg What can I do ? Thanks.
そんなこんなで夕方となり、すっかり台風一過の好天だが、台風はもう東北地方の沖に抜けたようである。 今日はこんなところで終わりかな・・・と思っていたところに、「P板.com」からのメイルが届いた。 「P板.com」というのは、 続・Propeller日記(3) の「2012年9月18日(火)」から以降、約5ヶ月、あれこれやりとりした会社である。 開けてみると こんな内容 だった(^_^;)。 P板屋でも暴力団に悩まされるような事があるんだろうか。 最近の暴力団はハイテク化しているが、まさかハードウェアレベルでセキュリティホールを仕込んだシステムを開発して、こっそり電子機器に紛れ込まそう・・・というのかなぁ。
2014年10月7日(火)
いつものように夜中にフト目覚めて、不調に終った実験を思い出していると、およそ3つの対応策が浮かんできた。 以下である。そして研究室に出て来てみると、なんと以下のように「mbed alerts」というメイルが2本も届いていた。 さっそく、mbedサイトに書き込んだ質問に反応があった模様である。 さすが、オープンソースの先端はこうでなくっちゃ。(^_^)
- ホストをWindowsにして再度、実験する。マウントされたドライブ内にあの「ドットで始まる不可視ファイル」が出来るというのは、ファームウェアが邪悪なWindowsである可能性が高いからである。ただし研究室にはXPしか無い(^_^;)
- SUACのプロキシを使わず、Raspberry PiでやったようにモバイルWiFiルータで1day接続にして試してみる。トラ技ボードでは出来たものの、FRDM-K22Fも同様であるという保証は無いので、試してみる価値はある。ただし1日600円かかる(^_^;)
- まだFRDM-K22Fは新しいモデルで、freescaleの対応が完備していないので、時期尚早としてこれを使うのを諦める(当分の間は静観する)。これはCQのN氏にホストの変更(もっと練れているもの)を依頼する必要がある
その内容であるが、時間的に前後するが後の方は以下のようになっていた。 この手のWebボードは、質問者も誰も、いったん書き込んだものは消せない仕様なので、今回のように同じ質問を2回ポストしてしまった場合、それぞれにコメントが付いて議論が混乱するのを避けるには、この書き込みがまさにbestなのである。 さすがである。(^_^)
そして以下が本命の、最初のリプライである。 ちゃんと冒頭に「同じこと2回、書き込むなよ」と突っ込んでくれているので、後から見た人が別の同じ質問に回答するのを抑制している。 こちらも、流石である。(^_^)12 時間, 26 分 ago. Hi, Closing this as a duplicate. Erik responded to your later question.つまり、やはりFRDM-K22Fはまだ新製品で、練れていなくて、とても「mbed対応」と名乗れるような代物ではなかったのだ。 そこでまずは、CQのN氏にこの状況を報告しつつ、以下のようにメイルしてみた(一部)。 これで新たなモデルが指名されれば、それで再度、実験ということになる。14 時間, 37 分 ago. You now got a duplicate question. The issue is that the official mbed lib does not support the K22F yet: Freescale did release the board, put the mbed enabled sticker on it, but didn't actually made sure it was mbed enabled. In the meantime the code has been written however. Delete the mbed lib in the online compiler, and instead import http://developer.mbed.org/users/mbed_official/code/mbed-src/. That is the non-precompiled version of the mbed lib, and also the beta version at the same time. That one should support the K22F, and next time the regular mbed lib is synced with that version also the regular mbed lib will support it.そして、上のコメントにあったように、過去のライブラリをいったん消して、URLが書かれていた「暫定」のライブラリをインポートして試してみたが、以下のように4つのエラーが出て、結論として「Unable to download. Fix the reported errors...」という事になった(^_^;)。 とりあえずは万事休す、である。ですので、ご相談というのは、 ・もっと練れていて(登場から時間が経過) ・性能もソコソコあって ・まずまず有名で出回っていて ・あまり他の書籍等で扱われていなくて ・これぞmbed、という、RAMも十分にあるモデル を改めて指名していただきたい、という事です。
あれこれ届いたメイルに対応したり。2ちゃんのニュースを斜め読みしながらここまで書いてWebに上げてきても、まだ午前10時前だった。 今日は午後に軽音の部長が書類にサインを求めて来る(僕は1期生にSUAC軽音の設立を仕向けたので現在まで「顧問」)アポだけなので、ここで改めてトラ技10月号の「mbed特集」を眺めつつ、自力でも探すことにした。 たしかCQのN氏は、今週は校正で缶詰だ、というのを思い出したからである。
・・・ということで、今日はあとは終日、以下のような「読書」に没頭である。 「読書の秋」、学生も勉強しているが、教員も勉強しているのだ。(^_^)
・・・すると、CQのN氏から速攻でメイルが届き、代替機種として FRDM-K64F というのが来た。 確かに、このページには 「mbed SDK support for this platform is not yet complete. If you're interested in contributing to the SDK porting effort in exchange for a platform send an email to support@mbed.org」 という、あの怪しい断り書きが無かった(^_^)。
さっそく、仕切り直しで、freescaleのサイトから発注し、SUACの出入り業者にも別途に発注依頼するとともに、 FRDM-K64Fのサイト のいちばん下の「Technical Reference」から、 回路図と、 ハードウェァマニュアルと、 リファレンスマニュアルと、 電気的特性データと、 6軸加速度・地磁気センサと、 マスク履歴と、 をゲットして、最初の2つをプリントした。 ただし、じっくり中身を読むのはやはり、基板が届いて実際に実験する時になりそうである。
・・・そして午後になってみると、なんと、前回も個人発注より先に届いたSUACの出入り業者から、以下のようなメイルが届いた。
これは困った。 それだけ、このFRDM-K64Fは「売れっ子」だという証明ではあるものの、手元に無いボードでは実験も出来ず、記事を書くことも出来ない。 とりあえず、この状況をまたまたCQのN氏にメイルした。 果たしてどうなるかは、明日以降のお楽しみである。(^_^;)ご相談いただきました「FRDM-K64F」をお調べいたしましたが, 現在在庫がないようで,各仕入先とも次回入荷未定の状況です。 早ければ,12月末入荷できる可能性もございますが, 出荷に引き当らない場合,さらに入手が遅れる見込みです。・・・と書いて、柄谷行人を読書(哲学)していたところに、またまたCQのN氏からメイルが来た。 僕が実験用に個人カードでfreescaleに発注したのを取り消せないか、という打診と、新しい代替ボードである。 まず、freescaleのサイトに行ってOrder履歴を調べてみると、個人での直接購入ということで後回しにされているのか(^_^;)、statusが"pending"となっていた。 そこで、これはもしかして、と以下のように、駄目モトでcancelを依頼した。
そして新たなmbedボードの提案として、なんと秋月電子のページが出て来た。 STM32 Nucleo Board STM32F401 というものである。 これはArduinoとピン互換だし、なんといっても、安いではないか。(^_^)
さっそくmbedのサイトに行ってみると、この型番ではプラットフォームが出て来なくて焦ったが、ようやく、 ST Nucleo F401RE というページを発見して、ブックマークして、コンパイラに登録した。 実際の詳細は、 STM32 MCU Nucleo というメーカのサイトにある事も分かった。 以下の図を見ると、このボードはほぼハイエンドにある事が分かるが、秋月電子で扱っているところを見ると、最新でサポート不足という心配も無さそうである。 さっそくSUACの出入り業者に発注依頼した。 これは在庫があれば、早そうである。
そしてまたまた仕切り直しで、 秋月電子のサイト から、 製品概要と、 ユーザーマニュアル(ハードウェア編)と、 ユーザーマニュアル(ソフトウェア編)と、 をまずゲットした。 チラッと見ただけであるが、なんかオンラインIDEでなく、Windows版の邪悪な(^_^;)スタンドアロンIDEのスクリーンショットがあったような気がしたが、まずは見なかった事にしよう。(^_^;)
そしてさらに、 メーカのサイト にも、秋月と同様のPDFがあるのを確認したが、こちらの方が新しいrevisionがあったので、 ユーザーマニュアル(ハードウェア編)と、 ユーザーマニュアル(ソフトウェア編)と、 もゲットした。 どうやら、データシートはこれだけのようで、あとはメーカの オンライン・サポート のページもあるのだった。なんと2-3日で、あっという間に、上の4種類のmbedボードと遭遇することになった。 果たしてどうなっていくのか、まったく不明である。
- トラ技ボード - とりあえず動くことだけ確認
- FRDM-K22F - 新製品らしくmbedの環境もライブラリもまだ未整備
- FRDM-K64F - 売れっ子らしいが逆に在庫ナシで入手できない
- ST Nucleo F401RE - これが来たら実験開始?
2014年10月8日(水) (青色LEDとの付き合い)
昨夜19時、世界を素晴らしいニュースが駆け巡った。(^_^)
青色LEDの実用化で超有名な中村修二氏はもちろんだが、その青色LEDの基礎研究も赤崎勇氏・天野浩氏による日本発である、というのは本当に素晴らしい。 STAPでズタズタにされた日本の科学技術の誇りが復権したというのは重要だ。 ただし、昨今の文科省の方針は、短期間に結果を出すことのみに傾注しているので、このような大胆な基礎研究をじっくり支援する風潮は無くなっているのが気になる。
そしてなんと、天野浩氏は浜松出身、それも浜松北高でなく浜松西高だという。 今日から、浜松では卒業生などの西高フィーバーとなりそうな気配である(^_^)。 ここ によれば日本人のノーベル賞受賞者は22人で、そのうち7人が京大卒、さらに京大理学部は湯川秀樹・朝永振一郎・利根川進・赤崎勇の各氏と4人である。 同窓生のノーベル賞にいまさら驚かないのは、僕の大学時代の研究室の遠ーーーーい先輩が湯川秀樹・朝永振一郎だからとしても、これは嬉しい事である。 京大理学部での僕の日々の一端は、 Max日記(3) の「2014年8月26日(火)」のところに書いていたので詳細は省略する。 大学時代に唯一、学んだことといえば、「物理する心 [=道具が無ければ自分で作る]」ぐらいであるが、これは今日まで続いている気がする。
今日はボード納品待ちという事でmbedに進展がなさそうであるが、このニュースを受けて、ここで僕と青色LEDとの付き合いについて整理してみる事にした。 おそらく、青色LEDを実際の制作に使った初めてのケースは、1995年に制作した、上の新楽器「Snakeman」だと思う。 まだ当時は青色LEDの出始めであり、それほど高輝度でもない普通のものが1個1000円ぐらいした(^_^;)。 ここ にあるように、大阪・難波のインド民芸品店で出会った1弦楽器のおもちゃを改造した新楽器で、秋月電子のAKI-H8でなくたぶんAKI-80を活用して、胴体部分を貫通するネックを除去した穴にマイク用のフレキシブルパイプを取り付け対面させ、その間の赤外線ビームを遮断する時間から胴体を太鼓のように叩く演奏者の手の速度をMIDI出力した。 遮断されるのはキットから配線を延ばしたLEDの赤外線だが、片方のパイプの先端に「目玉」のように2個の青色LEDを配置したのである。 作品として「Asian Edge」で実際に活用したが、YouTubeの記録 ★ ★ ★ ★ で映っているかどうかは定かではない。(^_^;)
次に青色LEDを実際の制作に使ったケースは、1998年に制作した、上の新楽器「Hyper Pipa」だと思う (写真は ここ にもある)。 ようやく「高輝度青色LED」が出回ってきた頃で、1個500円ぐらいしたものを、気合いで8個、並べた。 ここ にあるように、秋月電子AKI-H8を活用して、ジャイロセンサ・3次元加速度センサ・ 衝撃センサ等を搭載するとともに、センサ情報に対応して青色LEDをフラッシュ点灯させた。 作品として「Beijing Power」で実際に活用しており、たぶんYouTubeの記録 ★ ★ に映っていると思う。
21世紀になって、青色LEDと、さらに追いかけて白色LEDがかなり普及してきた。 そんな時に作ったのが、2006年に制作した、上の新楽器「Cyber Kendang」である(写真は ここ にもある)。 ここ にあるように、秋月電子AKI-H8を活用して、浜松まつりの時にアクトシティで開催されていたワールドバザールで入手したインドネシアの民族打楽器であるKendangに、304個の高輝度タイプの白色/青色LEDを含む電子回路を取り付けた「光る楽器」である。 民族楽器の改造ということで、アコースティックな楽器音響に悪影響を及ぼさないように配慮して、一切の穴も開けず、接着も皆無である。 スズメッキ線のメッシュ上に構築された電子回路をその弾力で巻き付けているだけであり、軽く縛っているビニタイを取り外すと民族楽器は元々の姿のままである、という部分に強くこだわった。 MAF2006とニューヨーク大学ホール(NIME2007)で公演した作品「Cyber Kendang」で実際に活用しており、たぶんYouTubeの記録 ★ ★ ★ ★ に映っていると思う。
そして高輝度の青色LEDを活用した最後の例は、2009年に作った、上の新楽器「Peller-min」である。 ここ(NIME2010) にあるように(便乗して ここ(ICMC2011) と ここ(ACMP2011) でも発表(^_^;))、 「触らない楽器」をコンセプトとしていて、まずは2重リングに16チャンネルの赤外線センサを配置したマルチ・テレミンとした。 さらにホームセンターで仕入れた「机上ノートパソコン台」を改造して、大きな穴を開けたところに穴あきパンチングメタルをはめて、この穴に計16個、「青色LED+輝度センサ」のペアを嵌め込んだ。 この上空で掌によって「空中モミモミ」すると、掌に反射された青色LEDの光が輝度センサに検出されて音楽演奏情報となるが、重要なのは、この青色LEDの光が楽器の上方に放射されているので、演奏者がこの青色で不気味に照らされる、という演出効果である (デモ)。 作品として国立音大と東京電機大(ACMP2011)で公演した「controllable untouchableness」で実際に活用しており、たぶんYouTubeの記録 ★ ★ ★ ★ ★ に映っていると思う。
その後は、 ジャミーズ娘+ ★ ★ ★ では高輝度「3色LED」を使っていて、また 今年の新楽器 ★ ★ ★ ★ ★ ★ でも、864個の高輝度「白色LED」を使っているので、 僕と青色LEDとの付き合い に記録としては、こんなところである。 せっかくなので、ノーベル賞記念に、何か青色LEDを駆使した、新しいやつを検討してみようか。(^_^)
2014年10月9日(木)
突然の出張として、京都に日帰りして、3年間かけて修復された鳥獣戯画の全4巻のそれぞれ前半の展示というのを見てきた。 建物に入るまでに20分並び、さらに鳥獣戯画の展示室の前で20分並んで、「止まるな」という係員に牛歩戦術で対抗しながら、本物のアウラを堪能してきた(写真ナシ)。また来月にも後半の展示を見に行くが、これは Max日記(4) の「2014年9月3日(水)」の最後のところに書いた、「夢ナビ」というお仕事で東京ビッグサイトに行ったご褒美として個人研究費に上積みされた旅費によって出来たことである。 何かあれば手を挙げて頑張っておくと、後でいい事があるのか。(^_^)
2014年10月10日(金)
朝、研究室に出てみると、ボード発注のキャンセルをしたfreescale社から、「キャンセルを受け付けました」メイルが届いていて、無事に無駄な出費を回避することができた。 さっそくCQのN氏にこれを報告したが、来週のN氏の来訪予定には、上記のように僕のmbed体制がまだ不確定なのに加えて、ちょっと懸念事項がある。先週の台風18号は月曜日に浜松に上陸したが、ほとんど同じルートで、今度はなんと、以下のような900hPaという超巨大台風19号が近づいてきているのだ。 僕もこの週末(日曜→月曜)は筑波→水戸と出かける予定があるが、どうもN氏が来る火曜日の午前というのは、ちょうど浜松付近を通過しそうである。(^_^;)
さて、この日は午前はゼミのミーティング、そして午後には、いよいよM2のリュ君の修了制作の電子回路の制作に入った。 以下のように、最初の4枚だけ写真を撮ったが、あとはリュ君はハンダ付け、そして僕はずっと、久しぶりの「ArduinoとXBee」というのを思い出す作業に没頭したので、写真を摂り忘れていた。(^_^;)
実際には、過去の 続・Propeller日記(1) などから思い出して、 初めてのXBee のページも再現しつつ、以下のようなものを再度、組み立てた。 ただしあれこれ忘れていて(^_^;)、かなり没頭する事となった。
これは、友人のWill Hall氏のドクター研究/制作に関係するもので、 稼働する状態の「Arduino-XBee」と「XBee-USBserial→Max」のモジュールとともに作ったArduinoのスケッチとMaxのパッチが これ であり、サーバに上げてURLをメイルした。 そして、5限にアポがあって「お化け屋敷」の相談に来た2回生に協力してもらって、このシステムの解説ビデオを一発撮りして、YouTubeに上げた。以下である(^_^)。そしてこれをWillに(届けてもらう友人に)宅急便で送って帰宅した。
2014年10月11日(土)
何も予定を入れなかった土曜日であるが、来週火曜日にはCQのN氏が打合せにSUACに来るし、明日・明後日は台風を気にしながらの茨城行きで何も出来ないので、いよいよ「ST Nucleo F401RE」をテストするのは、もう今日しかない。 またまた、お仕事の書類書きも新たに登場してきているので、いつもの事ながらあらえっさっさである。まずは、ブックマークだけしていた ST Nucleo F401RE のページ に行って、せっかくなのできちんと書かれている事を追いかけてみた。 まず「Description」としては、I/Oコネクタとして、「Arduino connectivity support」と「ST Morpho headers」の両方が付いていることで、拡張性が高いと自慢しているが、これは、基板サイズを大きくしているので、一長一短である。 ホストのPCとUSBで直結できる、というのはArduinoと同様であり、今更、自慢するほどのものではなく、もしこれでIDEがスタンドアロンだけであれば、むしろ古風なものと言える。
続いて「Features」であり、スペックが列記されているが、いくつか拾ってみると、CPUは「ARM Cortex-M4 CPU with FPU at 84MHz」とまずまず、RAMは「512 KBytes Flash」とこれも十分、A/Dは「12bit ADC 2.4 Msps up to 10 channels」とArduinoよりも高性能である。 あとは「Up to 10 timers」「Up to 3x I2C, 3x USARTs, 4x SPIs, SDIO」「USB 2.0 Full Speed with on-chip PHY」「96bit unique ID」と、ここらはますまず普通であるが、USARTが3つ、というのは嬉しい。 ホストPCとのUSBで1ポート以外に、MIDIとXBeeとを共存させられる事になる。 Propellerではこれは簡単なものの、Arduinoとかでは逆立ちしても出来ない芸当なので、これはアピールボイントが高い。
電源は「Flexible board power supply: USB VBUS or external source (3.5 V, 5 V, 7 V - 12 V)」とある。 実際のところは、使ってみないと分からない。 そして最後のところに、なんと「 Mass storage (USB Disk drive) for drag'n'drop programming 」という記述を発見した。 これはつまり、この日記の最初のところでトラ技ボードで(なんとか)成功した、そしてfreescaleのボードではツール未整備で失敗した、アレではないか(^_^)。 これが動けば、邪悪なWindowsを引っ張り出さずに、Macでお仕事できるので、印象はまったく変わるのである。
上が、2種類あるうち、Arduino互換のピン定義である。 秋月電子のサイトにあったのより新しいバージョンの ユーザーマニュアル(ハードウェア編)と、 ユーザーマニュアル(ソフトウェア編)と、 は、しかしスタンドアロンIDEの「昔の話」のような気がするので、 メーカの オンライン・サポート のページも含めて当面はパスして、このページをさらに調べていこう。
ピン配置図の下には、以下のように多数の、おそらくArduino互換でない方のコネクタに対応したShield(追加基板)が並んでいたが、当面は関係ないのでスキップした。 ただし、拡張ボードのベンダーである「Seeed社」というのは、もしかして、最近メキメキ世界的に発展している中国・深センのベンチャー企業である、と思い出した。 ここの若くして情熱的で優秀なCEOとは、シリコンバレーでのSketching2013でいろいろ話をして、「お友達」なのである。(^_^)
その次には、お約束の「ST-LINK/V2-1 Firmware」ということで、 Nucleo Firmware のページ にリンクがあったが、ここはダウンロードしたzipを解凍すると、以下のように「.exe」と「.dll」という、邪悪の2大巨頭(^_^;)しか入っていなかったので、とりあえずはupdateせずに、購入したボードの内蔵バージョン(不明)のままで進めることにした。 ここでわざわざWindowsXPパソコンを立ち上げるというのは、あまりに美しくないからである。(^_^;)
ここから、欲しい情報を求めてあちこち歩く中で、 オンライン・サポート のページに Learning というページを発見し、さらに Videos and ePresentations の中に、そのものズバリ 「Getting started with ARM mbed IDE (4:47)」 というムービー(flv)を発見して、とりあえずダウンロードした。 小さくリサイズしてmp4にエクスポートしたmovieが、 これ である。 このビデオの前半はボードの説明で、後半に肝心の情報があった。 要するにオンラインコンパイラでも開発できるが、どうやら上の邪悪なやつをインストールしておくと、そのままマウントされたUSBドライブにbinをダウンロードできる、というものらしい。 ブルータス、やはりお前もWindowsなのか(;_;)。 トラ技ボードのように、「ISPモード」(書き込みモード)化するようなスイッチ操作の「おまじない」を期待したのだが、これが無いらしい。
それでも、とりあえずボードをUSBに挿すと「NUCLEO」というUSBドライブがデスクトップに現われる(マウントされる)ので、このまま、トラ技ボードと同じように出来るか、以下の手順で試してみた。 ★
すると以下のように、エラーが出ることもなく、USBドライブ内にbinがコピーされ、アンマウントされたが、リセットしてもLEDはブリンクせず、さらに再度USBに繋ぎ直すと、binは消えていた。 これはつまり、「暖かく無視された」というやつのようだ。(^_^;)
- ボードをUSBに挿すとデスクトップに「NUCLEO」というドライブが出現する
- mbedツールで開発してコンパイルする
- 出来たバイナリをデスクトップにダウンロードする
- 「ls Desktop」でbinファイル名を表示
- 「ls /Volumes」でドライブ名を表示
- 「rm -rf /Volumes/NUCLEO/*.bin」でドライブ内のbinを消去
- 「cp Desktop/######.bin /Volumes/NUCLEO/.」でデスクトップのbinをドライブにコピー
- 「sudo umount /Volumes/NUCLEO/」でアンマウントする
そして、 サンプルのblinkのページ の「Questions」のところに、 こんな質問 を発見した。 「Disk was ejected while importing binary file into Nucleo via Mac. What's the problem?」 というタイトルで、中身は「I tried to import binary file into Nucleo-F103RB via my MacBookAir but it failed because disk was ejected improperly while importing the file. Is this because I did it in Mac?」と、まさにずばり、この現象である。 やはり、同じような事を考えて、同じような事をやっているご同輩は、世界のどこかには、いるのだ。(^_^;)
そしてこの回答が1件、「That is working as intended: press the reset button and it should be programmed. Due to the way OS's buffer USB drives it needs to eject it and remount it to make your OS refresh its contents.」とあった。 そこで、ボード上のresetスイッチを色々な組み合わせで押しつつ試してみたが、上の現象はまったく不動であった。
上の回答に対する返信として、「Thanks for answering my question. Following your advice, I pressed the button and imported a binary file into my MacBookAir. Unfortunately it didn't work but I confirmed that it worked in Windows PC. I suppose Nucleo is available only in Windows OS.」 と書かれていたので、質問者はMacを諦めて、邪悪なWindowsを使ったようである。 元々、メーカが対応機種としてWindows限定としている邪悪なものなので仕方ないと言えばそうだが、これで「mbed対応」と謳うというのは、いかがなものだろうか。 「mbed」とは、オンラインコンパイラを使うことと、ホストがWinでもMacでもLinuxでもOKであるところが「売り」だと思うのだ。 トラ技ボードでも(一応)出来て、入手できなかったfreescaleボードでも出来るのだから、STMicroelectronicsが出来ない、というのは、単なる手抜きではないのか。(^_^;)
とりあえず簡単にメゲずに、回答者の「That is working as intended: press the reset button and it should be programmed.」を信じて試行錯誤してみると、「cp Desktop/Nucleo_blink_led_NUCLEO_F401RE.bin /Volumes/NUCLEO/firmware.bin」とやったのと、「sudo cp Desktop/Nucleo_blink_led_NUCLEO_F401RE.bin /Volumes/NUCLEO/firmware.bin」とやったのでは、デスクトップにマウントされたUSBドライブに「firmware.bin」が現われる(けれど後で見ると消えている)のは同じとしても、ボードのUSBコネクタ横のLEDが、「sudo」の時だけ赤と緑が何度か点滅する、という現象(本当に内部flashメモリに書き込んでいる??)などを発見した。 ただし、結局のところ、Macだけではやはり無理、という結論になった。
・・・そして夕方まで3時間ほどあれこれトライする事になったが、結果として、WindowsXPマシンを「書き込み器」とすることで、なんとかこのボードを使える見通しが立った。 とりあえず、上記にあったドライバ関係はWindows7/8用のものだったようで、何度トライしてもドライバのインストール等のエラーが出まくって困ったが、 あちこち探り回って ここ でゲットした これ が、WindowsXPに対応したドライバ関係であり、これでようやくインストーラの「失敗」を抜け出して環境設定できた。 ここに、 ここ でゲットした これ が最新のファームウェアであり、無事に書き込みに成功した。
これによって上のように、Mac上のツールで開発してデスクトップにダウンロードしたbinファイルを、Macのバックグラウンドとして「ファイル共有」をONにしておいて、WindowsXPマシンのCuteFTPで、直接にUSBドライブとしてマウントされている「ST Nucleo F401RE」に転送(どこかに転送したものをドラッグドロップのコピーでもOK)すれば、そのままアップロード完了となって、リセットボタンでスタートする事を確認した。 あくまで、研究室内のネットワークを転送に使うとしても、Windowsマシンでブラウザを開かない(インターネットに出て行かない)というのがポイントである。(^_^;)
その後、せっかくなので、つまらない単純作業ではあるが、今回、秋月電子から仕入れた計10個の「ST Nucleo F401RE」に対して、いちいち「新しいハードウェア」のドライバをインストールしつつ、全て最新のファームウェアに書き換えて。いつでも使えるようにした。 およそ30分ほどの作業であるが、それでも、次第にクリックする場所とタイミングを覚えて、効率が上がっていくのが面白い。 これをここでやっておかないと、後では「思い出し」に凄い時間がかかる、というのがいつもの事なのだ。 今後、何かの作品で使ってみるかもしれないが、メリットがあるとすれば、豊富なシールド類というところかな。
・・・とここまで書いて、今日のお仕事も終わりで帰ろうかな・・・というところで、フト気付いた事があった。 最新のファームウェアにupdateした「ST Nucleo F401RE」ボードに対して、上述したような方法で、Macで試していなかったのである。
そこで駄目モトでやってみると、なんとなんと、デスクトップにダウンロードしたbinを、ただ単に「NUCLEO」フォルダにドラッグドロップするだけで、つまりトラ技ボードではターミナルを開いて転送していたような手続き(↑の★)もなく、 本当に出来てしまう 事を確認できた(^_^)。さすがである。 旧バージョンに対して「いかがなものだろうか」と文句を書いてしまって、いやいや失礼しました。 「ST Nucleo F401RE」はトラ技ボードよりもずっと、本物の「mbed対応」を完成させていた、とここで明記しておこう。 そして帰宅直前に、embedの「ST Nucleo」ページの「Blink」会議室にあった前述の「Q&A」の この質問 のところに、「最新ファームウェアにしたら、MacBookAirでも出来ました」と書き込んでおいた。 Give & Take、質問するだけでなく、他人のためになる情報は提供するのが、オープンソース文化の真髄である。(^_^)
2014年10月13日(月)
昨日は東京に行き、筑波で母親の顔を見てから水戸に行き、中学の同窓会があった。 そしてこの日、台風19号と向かい合うベクトルなのでちょっと早目に水戸を出て、早い昼食として上野のアメ横の回転寿司を堪能してから、無事に浜松に帰ってきた。 その記録(ラッキーあり)は、 ここ にある。大学に到着してみると、午前中に愛知県東部に出た暴風警報でまたまた全学休講となっていて閑散としていたが、その30分後には風雨が強まってきた。 そこで上のWebを上げたところで帰宅して、お土産の「納豆カレー」が夕食となったが、その結果は これ であった。(^_^;)
2014年10月14日(火)
台風一過、静岡県の暴風警報は午前5時に全て解除となり、一部学生の希望も空しく、SUACは通常営業に戻った。 平常運転となった新幹線でCQのN氏が研究室に来訪して、原稿執筆に向けての打合せがあり、生体/人体の信号処理のテーマの中で、僕は実際に「作ってみる」パートとして、なんと筋電をメインに取り扱うことが決定した(^_^)。 筋電関係の僕の記録としては、もっとも最近では これ と これ と これ とがあり、それ以前は ここ に膨大にあるが、特にまとめたものとしては これ と これ とがある。こうなると、この「mbed」日記も、「mbed筋電日記」という内容になっていきそうであるが、インターフェースに執筆する部分はここではあまり書かないことになるので、当面は、このまま進めることにしよう。 さっそく、 VPP の仲間である、友人の照岡さんにメイルした。 アナログの専門家である照岡さんとの付き合いは、Nifty以来、ずーーっと長いのである。 今日はここまででグッと堪えて、後は書類のお仕事に没頭である。 サッサとそっちを片付けて、「mbed筋電の日々」に突入したいのだ。
2014年10月15日(水)
朝イチで研究室に出ると、さすが、我が友、照岡さんからメイルが届いていた。 ちょうど、脳波センシングの回路の最新設計をしたところだという事で、欲しい最新の筋電センサ回路が届いてしまった。 これで一部の部品を発注して、おいおい進めることになる。
そして午前中はM2のリュ君が研究室で修了制作作品のハンダ付け作業をしている横で、懸案の書類書きのお仕事を、無理矢理にやっつけた。 後の修正はあるものの、もうこれは自分の中ではオシマイである。(^_^;)
さらにこの合間に、学内のお仕事メイルが数本、行き来して、さらに今年のメディアデザインウイーク・スケッチングワークショップの講師への打診メイルと回答が行き来して、日程だけ「11/23(日)〜11/24(祝)」と確定してしまった。 今年は、メディア造形学科だけでなく、生産造形学科・空間造形学科・院生などにも参加を募る予定である。
そして、5ヶ月前に注文していたブツが、遂に上のように届いた。 これは、 この クラウドファンディングで出資したもので、地元・浜松のキッコサウンドというベンチャーの製品である。 この会社には、ゼミ等の学生を連れて 見学 にも行ってきたし、ここの辻さんはメディアデザインウイーク・スケッチングワークショップにも参加してくれている。
4-5限には「サウンドデザイン演習」で、今日は学生は電子工作キットの製作(ハンダ付け)があり、放課後はアカペラなので空き時間は3限しかなく、これでちょっと遊んでみよう・・・と思ったが、残念ながら断念バーグとなってしまった。 これはiOSからMIDIと通信するので、ちょうどウイーンで新しく買ってきたiPad miniが適役なのだが、なんとSUACのプロキシがApple Storeのプロトコルを通さないので、肝心のアプリがダウンロード/インストール出来ないのである(;_;)。 それだけのために1日600円のモバイルWiFiルータを契約して繋ぐのもナンなので、週末のゼミまで待つことにした。
2014年10月16日(木)
この日の予定は3限にお化け屋敷のアポ、そして4限に学生委員会の会議だけ、ということで、いよいよ「ST Nucleo F401RE」と遊べるか・・・と、まずは「NucleoF401RE」を「ぬ」と辞書登録した。 もうメーカ名のSTは省略である(^_^;)。 このようにこれまで登録した固有名詞としては、ArduinoとかAKI-H8とかGainerとかがあるが、試しに僕のお仕事パソコンの「ことえり辞書」を見てみると、およそ以下のようになっていた。 これは、「カナ入力」をしている僕だからこそなのだろうか。そして、NucleoF401REと遊ぼうと思った矢先、前日にあれこれ手配していたメイルの返信が届いて、来月に開催予定のSUACメディアブザインウイーク2015番外編のワークショップについてのWebを作るのが先決、と気付いて、午前中いっぱいかかって、 このような ページを作った。 これは講師と中身を相談しているところなので、まだまだ改訂して、実際には来週以降に公開することになる。"あ","Arduino","普通名詞" "あ","AKI-H8","普通名詞" "く","Chronostasis","普通名詞" "げ","Gainer","普通名詞" "じ","XBee","普通名詞" "す","SUAC","普通名詞" "す","SuperCollider","普通名詞" "に","(^_^;)","普通名詞" "ぬ","NucleoF401RE","普通名詞" "ば","\","普通名詞" "ぱ","Python","普通名詞" "ひ","PureData","普通名詞" "ぶ","BrightEyes","普通名詞" "ぶ","Blink(1)","普通名詞" "ぷ","Processing","普通名詞" "ぷ","Propeller","普通名詞" "べ","BeagleBone Black","普通名詞" "ら","Raspberry Pi","普通名詞" "こん","Computer Music","普通名詞"さらにその合間に、ゼミの土佐谷さんから、卒業制作の企画書案が届き、あれこれ修正して何往復かして、遂に決定版が完成した。 ネタばれするのも何なのでここには置かないが、最後に「何より僕自身が、この作品の実現に立ち会えるのが今から楽しみです」とメイルした。 これは本当に楽しみな作品企画である。 今日は夕方までに、各ゼミの4回生が卒制の企画書を提出して、明日は学科会議で企画書の審査である。 ここでOKをもらわないと、メディア造形学科の学生は制作に着手できないというルールなのだ。
そして3限のお化け屋敷のアポは、今回も短時間で終ってしまった。 どうも、会場となる中講義室のマップと、その中のどこで何がどう起きるか・・・という作戦の詰めが甘いのが気になる。 実際の寸法できちんとマップを作って、センサとパソコンと広義のディスプレイの位置と向きを設計することで、ようやく各要素を接続するケーブルの配置と長さが決定して、センサやGainerやスピーカやソレノイドのケーブル加工がスタートするのだが、そこまで到達していないのである。 再度の検討を促して、今回もアッサリと「また次に」となってしまった。(^_^;)
すると研究室の電話が鳴り、事務局からで「日本テレビの人」から電話だという。 こういう昼間に、それも事務局の代表番号を経由して電話してくる(直通の番号を知らない、つまり名刺交換とかした事の無い)人というのは、ほぼ100%、不動産関係の売り込みセールスである(^_^;)。 ・・・と警戒しつつ電話を受けると、なんと本当に「日本テレビの人」だった。 なんでも、年末のクイズ番組の関係で調査をしていて、僕の このページ に辿り着いたらしく、「クロノスタシス」という用語についての質問だった。 まぁ、この言葉はまだ新しくて日本語にもなっていないので、クイズに出題するのはお薦めしません、と話したが、クイズ上級者の特番の心理学関係のコーナーらしいので、もしかすると出題されるかもしれない。 誰か、もし日テレのクイズ番組で「クロノスタシス」が出題されたら、教えて下さい。(_o_)
4限の会議はズルズルと延びて、16時半に研究室に戻るとようやくゼミの森川さんからの企画書案(15時前に発信)が届いていて、コメントして返信した。 これをメイル往復して改訂しないうちは帰れない(^_^;)ので、とりあえず上のように、NucleoF401REを繋いでみた。 これから当面、つねに起点は ここ からとなり、さらに コンパイラ を開いておく事になる。
プログラム開発の手順としては、まず、プログラムを作成/編集/改訂して、上のように「Compile」する。
「Compile」でエラーが無ければ、上のように、結果の「.bin」ファイルをダウンロードするか聞いてくるので、ダウンロードする。
そして、この「.bin」ファイルを、マウントされている「NUCLEO」アイコンに投げ込むと、上のようにアンマウントエラーが出るものの、実際にはちゃんとNucleoF401REにアップロード転送されていて、もう新しいプログラムで走っている。 このエラーメッセージを無視すればいいのである(^_^;)。 時には「NUCLEO」アイコンが消えるが、その場合にはNucleoF401REをUSBから抜いてまた挿せばいい。 時には「NUCLEO」アイコンが消えないが、その場合には、そのまま続ければいい。 これはもう、とてもトラ技ボードには戻れないほど、洗練・完成されているのだ。
2014年10月17日(金)
昨日は18時ぎりぎりで、無事に第3版の森川さんの企画書も完成した。 そして今日は、まず朝イチで、Arduinoシールド基板のユニバーサル版を発注した。 さらに1限にM1の杉浦さんの企画相談、2-3限に企画審査の学科会議、4限にゼミ、と淡々と進んで終った。ゼミでは3人に、昨日の再現で、オンラインコンパイラとドラッグ&ドロップのファームウェア・アップロードをデモして見せた。 これを見て、C言語で開発できるということで、M2・リュ君の修了制作作品のホストが、PropellerからNucleoF401REに変更される可能性も出て来た。 明日は某マラソンの予定なので、これで今週は終わりである。
2014年10月20日(月)
mbed関係は、2つの部品を発注して納品待ちの状態であり、進展ナシである。
4限に「お化け屋敷」のアポがあり、ようやく全体像が見えてきて、 このように 一気に赤外線センサ3系統のGainerを3セット、作ったところで本日終了である。
あとは、晩までかかって、ようやく上のハル・フォスターの新著を読破できた。 MDWワークショップの使用教室の調査が終ったので、明日には参加者募集のWebの公開まで進めていこう。
2014年10月22日(水)
昨日は、ようやく MDW 「スケッチング」ワークショップ 参加者募集 のページを公開して、参加募集を開始した。 まだ内容の一部は未確定だが、既に第1号として、東京の社会人の参加申し込みが舞い込んだ。そして今朝になり、CQ出版のN氏からのメイルで、午前いっぱい、どたばたと調べることとなった。 「医療センサとして,このようなキットもあるようです」として紹介されたのが ここ であり、「こちらはライブラリもあるかもしれません。いきなり信号処理に注力できるかもですね」として紹介されたのが ここ だった。 前者はどうも、かなーーり似たようなキットが3種類ある。(^_^;)
上の Board Kit というのが、もっとも基本的なもののようで、149ユーロ、「22/Oct/14 00:51 UTC」のレートで20266.76628円である。 それぞれのブロックに分割カットできる基板で、以下が含まれているという。
「BITalino」というのは始めてだが、この会社(サイト)の名前なので、おそらくArduino互換というかArduino拡張として、生体センシングのハードを作った、という事なのだろうか。
- 1x BITalino hardware (MCU, Bluetooth, Power, ECG, EMG, EDA, Accelerometer, Light, LED) as a single board
- 1x 3-lead accessory (for EMG / ECG)
- 1x 2-lead accessory (for EDA)
- 5x Pre-gelled electrodes
- 1x Li-Po Battery 320mAh
上の Freestyle Kit というのが159ユーロ、「22/Oct/14 01:25 UTC」のレートで21629.86641円である。 中身は上の「board-kit」のボードを「with all individual blocks detached: we carefully snapped off the pieces for you」ということで、丁寧にカットしただけで10ユーロの追加である。 これはまぁ、要らない。(^_^;)
そしてさらに、上の Plugged Kit というのが169ユーロ、「Oct 22,2014 01:28 UTC」のレートで22990.23537円である。 さらに10ユーロ高くなって、ケーブルのコネクタと1メートルのケーブルが加わった。 これもまぁ、要らない(^_^;)。 ・・・ということで、とりあえず、まず業者に Board Kit の発注依頼をかけた。 価格と納期によっては断念バーグの可能性もある。
要するに、これらの3つの「キット」は、まさに上のように「元は一つ」という事なのだ。 そして、これらのハードウェアの他に「Software」というページがあり、以下のように
OpenSignals というのが出て来た。 対応OSはWindowsとMacとLinuxだという(^_^)。 詳しくはユーザ登録せよ、というので、このページでユーザ登録してみると、ポルトガルから速攻で以下のメイルが来た。
「 Kickstarterのページ を見て」というのはいきなり心配だが(^_^;)、とりあえずGoogleドライブにある256MB(^_^;)のdmgファイルをダウンロードした。 上の記述によれば、どうやらPythonベースであり、さらにApple Xcodeが必要だということで、現状はあまり役立たない感じがしてきた。 ホストとのやりとりも、ターミナルからテキストベースで、もろUnixである。 マニュアルは これ であるが、あまりコレといったものも見当たらない。Thank you for your contact and interest in our software. First of all I’d like to invite you to back our Kickstarter campaign: https://www.kickstarter.com/projects/bitalino/bitalino-revolution The OpenSignals framework depends on Python and a few additional packages. To start using it on the Mac, you should either install the Anaconda Scientific Python distribution: https://store.continuum.io/cshop/anaconda/ or the HDF5 framework and h5py on your existing Python distribution: http://www.hdfgroup.org/HDF5/ http://www.h5py.org/ Also, make sure that you have Apple Xcode installed in your system; this is a free software available for download at: https://itunes.apple.com/en/app/xcode/id497799835?mt=12 Afterwards, you can download the OpenSignals for Mac from the following link: https://drive.google.com/file/d/0B8MBjoDQHvlIQXJPdk1jSlJVYmc/edit?usp=sharing When you open the DMG file, you should run the executable file named "setup" (the black icon with no extension). Once you run the setup, you should be able to move and run the OpenSignals App from anywhere in your computer. Note that for the time being, in Mac OS X BITalino can only be accessed via the Virtual COM Port. For that you should use the Bluetooth assistant to search and pair your Mac with your BITalino. The default Virtual COM Port name usually is "/dev/tty.bitalino-DevB", and you're advised to check the "Require pairing for security" option as shown in attachment. A known issue that we're working on is that after you close the OpenSignals UI, a couple of processes fail to terminate normally. For the time being, you should open the Activity Monitor App, search for the processes name "Python" and manually quit them.
ここでしばし、 こんなこと をしたが、午後になって再び、上の このページ に戻って、もう少し、ハードウェア回りを調べてみることにした。 このページの右上にある、「General Description」と「Quick Start Guide」というところをクリックすると、それぞれの解説に切り替わるのだった。
まず このページ の「General Description」を見ると、上のようにボードの中央上にマイコンらしきものがあり、ボード左右に3つずつ、計6個のブロックが見える。 そして中央下にある2つ並んだブロックの右側が、USBコネクタがあるのでたぶん電源関係なのだが、その左側のの、以下の赤いところは、アンテナのパターンで明らかなように、なんとBlueToothなのだった。 これは、 このページ の「Quick Start Guide」を見ると、とりあえずBlueToothをONにしろ、と言っていて、つまりこのシステムではBTがdefaultなのだ。 生体センシングでは、ホストPCとUSB接続すると、そこからのノイズが半端ないので、僕も今回はXBeeを使うつもりだったが、さすが生体専用機である。(^_^)
ここにまず書かれているのは、全体としてのスペックで、以下のようなものである。 まぁ、Arduinoベースとしては普通だろう。
- Sampling Rate: Configurable to 1, 10, 100 or 1000Hz
- Analog Ports: 4 input (10-bit) + 2 input (6-bit)
- Digital Ports: 4 input (1-bit) + 4 output (1-bit)
- Data Link: Class II Bluetooth v2.0 (range up to 10m)
- Sensors: EMG; ECG; EDA; Accelerometer; Light
- Actuators: LED
- Weight: 30g
- Size: 100x60mm
上が、中枢となる「Micro-Controller」である。 Arduino Proなどとの互換性は無さそうだが、まぁ機能的にはほぼ同等だろう。 このように切り離してしまった場合には、BlueToothブロックとはどう接続するのか、たぶん後で出て来るのだろう。
上が、「Power」プロックである。 これは普通であるが、DIPサイズのピンが立てられるのは、コネクタとかで増設するのに助かる。
上が、「EMG」、筋電プロックである。 正確には、筋肉の内部に細い探針電極を突き刺していないので、「表面筋電位」である。 定番の回路のようだが、回路図などが公開されていない(^_^;)。 「Applications」として、「Surface electromyography (sEMG) is a technique which is used in many clinical and biomedical applications, in areas like HCI, neurology, rehabilitation, orthopedics, ergonomics, sports, etc. It is widely used as biofeedback tool to assess muscle fatigue, disorders of motor control and low-back pain is also possible with the EMG sensor. Sensing isometric muscular activity, where no movement is produced, enables a definition of classes of subtle motionless gestures to control interfaces without being noticed and without disrupting the surrounding environment. These signals can be used to control prosthetic devices such as prosthetic hands, arms, and lower limbs or as a control signal for an electronic device such as a mobile phone or PDA, sEMG recordings may also be a suitable control signal for some interactive video games.」と書かれている。
つまり、応用領域として「臨床医学、生体医学、神経生理学、リハビリ、整形外科、人間工学、スポーツ、HCI」などが挙げられている。 筋電のいいところは、実際に手や腕を動かさない状態でも力が入っていれば(力を入れようとすれば)情報を取得できるところであり、解説でも「実際には動かずに/周囲に動きを悟られずにジャスチャーできる」とある。 筋電信号によって、義手・義足の制御、携帯・スマホの制御、ビデオゲームのコントローラなどが出来るとあるが、これは実際には、色々とある(^_^;)。 そして、この回路のスペックは以下である。
基準電極と、あと差動増幅用のペア電極として、つまり筋電センサとしては「1チャンネル」である。 これは、僕の筋電センサで言えば「MiniBioMuse-I」、つまり第1世代と同じであり、あまり面白いことは出来ないのである。(^_^;)
- Principle: Differential voltage
- Electrodes: 3
- Bandwidth: 10-400Hz
- Input Impedance: 100G ohm @ 3pF
- CMRR: 110dB
- Range: 0-3,3mV
- Gain: 1000
上が、「EDA」、皮膚電気抵抗、つまりウソ発見器の原理である。 解説として「Electrodermal Activity (EDA) can be defined as a transient change in certain electrical properties of the skin, associated with the sweat gland activity and elicited by any stimulus that evokes an arousal or orienting response. The EDA sensor is capable of measuring the skin activity with high sensitivity measurement power in a miniaturized form factor. With low noise signal conditioning and amplification circuitry, we are able to provide accurate sensing capability and detect even the most feeble electrodermal skin response events.」と書いてあり、応用として 「Some of the applications of this sensor include detection of changes in the attentive, cognitive and emotional states. EDA sensors were also used for relaxation biofeedback, sympathetic nervous system reaction detection, among many others.」 と書いてある。 スペックは以下である。
これは昔からあるシンプルな生体計測手法であるが、8月のEC研究会合宿で、「医者も見放した[てんかん]患者が[治った]みたい」という、素晴らしい研究がこれを活用しているので、ちょっと注目しているところなのだ。 キーワード/キーコンセプトは、Visual Feedbackである(^_^)。
- Principle: Resistive
- Electrodes: 2
- Bandwidth: 0-3Hz
- Range: 0-1Mohm
- Gain: 2
上は、「LUX」、つまりフォトトランジスタによる「明るさ」センサである(Range: 360-970nm)。 これは完全に、無理矢理のスペース埋めであり、環境光の計測とか、光源を用いての血流計測(→脈拍)、というのは確かにそうだが、この形状では、あまり使えたものではない。
上は、「ECG」、つまり心電図のセンサプロックである。 解説は「Conduction of action potentials through the heart generates electrical currents that can be picked up by electrodes placed on the skin. A recording of the electrical changes that accompany the heartbeat is called an electrocardiogram (ECG). Variations in the size and duration of the waves of an ECG are useful in diagnosing abnormal cardiac rhythms and conduction patterns. The ECG works mostly by detecting and amplifying the tiny electrical changes on the skin that are caused during the heart muscle cycle during each heart beat. 」 となっている。 脈拍はこれで取れるので、上の「LUX」はこじつけなのである(^_^;)。 スペックは以下である。
筋電に比べれば、心電図は計測もまずまず楽であり、最近のウェルネス指向にもヒットしていると言える。
- Principle: Differential voltage
- Electrodes: 2
- Bandwidth: 0.5-40Hz
- Input Impedance: 100G ohm @ 3pF
- CMRR: 110dB
- Range: 0-3mV
- Gain: 1100
上は「ACC」、つまり3次元の加速度センサである。 「Bandwidth: 0-50Hz」、「Range: +/- 3g 」と、スペックは秋月電子のセンサやWiiリモコンと変わらない。 まぁ、同じ半導体センサを使っているので、当然である。(^_^;)
上は「LED」、つまり無理矢理のスペース埋めである。(^_^;) ・・・ここまで書いたところで3限が終った。 今日はこれから、「サウンドデザイン演習」で、「お化け屋敷」のシステムの解説と、その場でMaxのプログラミングである。 放課後はアカペラなので、今日はここまで。 ちょっと中途半端だが、続きはまた明日以降となる。
2014年10月23日(木)
昨日は これ についてザッと眺めたところで力尽き、まだ これ について書いていないが、とりあえず両方の基本ボードを発注した業者から、「11月のうちに納品可能」との連絡が届いた。 さらに夕方になって、注文していた新しい筋電センサ回路のための部品が届いたので、いよいよ実験可能となった。 ところが今日は2限に院生のアポ(コンペに応募するアイデアの相談)、午後に学科会議と教授会ダブル、と予定があり、なかなか進めないのが歯痒い。(^_^;)
新しい筋電センサの実験には、久しぶりに精密ハンダ付けが必要となるので、ぽっかり空いているこの週末(ヤフオクでプレミアムチケットを入手して甲子園の日本シリーズのライトスタンドに行く、というのをグググッと堪えるつもり(^_^;))に挑戦するとして。まずは上の、 これ を、1限の時間に片付けることにした。 まず、 このページ は非常に長大であり、いくつものページにリンクで分割されていない、というのが判明した。
昨日、業者に発注したのは、上の、450ユーロ、「22/Oct/14 23:47 UTC」のレートで60976.16639円の これ ではない。 これは単に、電極パッドなどが全部、付録して高価になっているだけである。
発注したのはセンサボードのArduinoシールド、上の、75ユーロ、「22/Oct/14 23:50 UTC」のレートで10162.6944円の これ であるが、業者は海外から調達するセクションを経由したりして、送料を含めて実際には2万円以上をSUACは支払うのである。
上の筋電電極パッド、 これ であるが、このオプションが40ユーロ(5000円以上)というのも驚きである。 まぁ、医療計測機器ではこういう世界だったので、生体センサシステムの電子回路/ボードの部分だけが世界的なスケッチングによってローコスト化されている、という図式であり、「300万円のBioMuseを1/100の3万円で作る」として始めた、僕と照岡さんの筋電プロジェクトの思想が、20年遅れて、ようやく世界的な潮流になった、という事なのだ。(^_^)
このページ の次に出て来る上の図はなかなかファンキーであり、全体像がよく判る。 しかし、この状態はとてもComputer Musicのライブパフォーマンスを行う風情ではなく、完全に病室の患者であるのが致命的で、これでは僕にとっては駄目なのだ(^_^;)。 こちらのシステムでは、センサは以下の9種類である。 これはさらにこのページの下の方で、詳しく見て行こう。
- Patient Position Sensor (Accelerometer)
- Glucometer Sensor
- Body Temperature Sensor
- Blood Pressure Sensor (Sphygmomanometer) V2.0
- Pulse and Oxygen in Blood Sensor (SPO2)
- Airflow Sensor (Breathing)
- Galvanic Skin Response Sensor (GSR - Sweating)
- Electrocardiogram Sensor (ECG)
- Electromyography Sensor (EMG)
そして、上のように、このシールドはArduinoにも、さらに 下駄 をかましてRaspberry Piにも載るのだという。 なるほど、この手があったか(^_^;)。 このシールドのスペックは、以下となっている。 まぁ、ごく普通なので、これは別に驚かない。 ホストのPCとは「The e-Health shield can be powered by the PC or by an external power supply. Some of the USB ports on computers are not able to give all the current the module needs to work, if your module have problems when it work, you can use an external power supply (12V - 2A) on the Arduino/RasberryPi.」 ということで、こちらはWiFiで電気的に分離する、という発想にない事が判った。
- 8 non-invasive + 1 invasive medical sensors
- Storage and use of glucose measurements.
- Monitoring ECG signal.
- Monitoring EMG signals.
- Airflow control of patient.
- Body temperature data.
- Galvanic skin response measurements.
- Body position detection.
- Pulse and oxygen functions.
- Blood pressure control device.
- Multiple data visualization systems.
- Compatible with all UART device.
上がこのシールドの入出力の図であり、さらに以下のように、ArduinoとRaspberry Piとの接続に関する、かなり丁寧な写真が続いている。 さすがであるが、ここまで手取り足取りでないといけない時代なのかなぁ。(^_^;)
そしてなんとこの下に、「Using the library with Arduino」と「Using the library with Raspberry Pi」のがあった。 CQ出版のN氏はこれを見て、「こちらはライブラリもあるかもしれません。いきなり信号処理に注力できるかもですね」と書いてきたようである。 とりあえず、Arduinoのライブラリで最新というのが これ であり、以下のように、一見、膨大なライブラリが充実しているように見える。
ところが、例えば「eHealth/examples/EMGExampleKST/EMGExampleKST.ino」の中身は以下であり、要はサンプリングレートのタイマをセットしているだけで、アナログポートからの筋電信号をそのままシリアルから送っているだけであった(^_^;)。
さらに、例えば「eHealth/examples/EMGExampleSerial/EMGExampleSerial.ino」の中身は以下であり、「eHealth.h」で定義される筋電信号を「eHealth.getEMG()」をそのままシリアルから送っているだけであった(^_^;)。#includeextern volatile unsigned long timer0_overflow_count; float fanalog0; int analog0; unsigned long time; byte serialByte; void setup() { Serial.begin(9600); Serial.println("Starting..."); } void loop() { while (Serial.available()>0){ serialByte=Serial.read(); if (serialByte=='C'){ while(1){ analog0=eHealth.getEMG(); time=(timer0_overflow_count << 8) + TCNT0; time=(time*4); Serial.print(time); Serial.print(";"); Serial.println(analog0); if (Serial.available()>0){ serialByte=Serial.read(); if (serialByte=='F') break; } } } } } これは「生体信号処理」でも何でもないので、幸いにも、原稿執筆に対して影響される事がなく、何の役にも立たない。 また、Raspberry Piのライブラリで最新というのが これ であるが、以下のように、あまりに素っ気ない。(^_^;)#includevoid setup() { Serial.begin(115200); } void loop() { int EMG = eHealth.getEMG(); Serial.print("EMG value : "); Serial.print(EMG); Serial.println(""); delay(100); }
そして、この中の「emg.cpp」の中身は以下であり、こちらも「eHealth.h」で定義される筋電信号を「eHealth.getEMG()」をそのままシリアルから送っているだけであった(^_^;)。
では、ArduinoとRaspberry Piの両方で共通に参照されている「eHealth.h」はといえば、以下のようにコメントを外すとスカスカである。#includevoid setup() { Serial.begin(115200); } void loop() { int EMG = eHealth.getEMG(); Serial.print("EMG value : "); Serial.print(EMG); Serial.println(""); delay(100); } そして、唯一、サイズが大きいので何か中身があるのでは・・・と期待させる「eHealth.cpp」であるが、例えば温度センサのデータを取得する「getTemperature()」メソッドの定義は以下のようで、要するに単純なスケーリングしかしていない。#ifndef eHealthClass_h #define eHealthClass_h #include "arduPi.h" #includeclass eHealthClass { public: eHealthClass(void); void initPositionSensor(void); void readBloodPressureSensor(void); void initPulsioximeter(void); float getTemperature( void ); int getOxygenSaturation(void); int getBPM(void); float getSkinConductance(void); float getSkinResistance (void); float getSkinConductanceVoltage(void); float getECG(void); int getEMG(void); uint8_t getBodyPosition(void); int getSystolicPressure(int i); int getDiastolicPressure(int i); int getAirFlow(void); void printPosition( uint8_t position ); void readPulsioximeter(void); void airFlowWave(int air); void readGlucometer(void); int getGlucometerLength(void); int getBloodPressureLength(void); int version(void); const char* numberToMonth(int month); struct glucoseData { uint8_t year; uint8_t month; uint8_t day; uint8_t hour; uint8_t minutes; uint8_t glucose; uint8_t meridian; }; glucoseData glucoseDataVector[8]; struct bloodPressureData { uint8_t year; uint8_t month; uint8_t day; uint8_t hour; uint8_t minutes; uint8_t systolic; uint8_t diastolic; uint8_t pulse; }; bloodPressureData bloodPressureDataVector[8]; private: void initMMA8452(char fsr, char dataRate); void MMA8452Standby(); void MMA8452Active(); void readRegisters(char address, int i, char * dest); char readRegister(char address); void writeRegister(unsigned char address, unsigned char data); void portraitLandscapeHandler(); void bodyPosition(void); uint8_t segToNumber(uint8_t A, uint8_t B, uint8_t C, uint8_t D, uint8_t E, uint8_t F, uint8_t G ); char swap(char _data); int systolic; int diastolic; int BPM; int SPO2; uint8_t bodyPos; char data[6]; int accelCount[3]; float accel[3]; uint8_t position[]; uint8_t length; }; extern eHealthClass eHealth; #endif 酸素濃度の飽和を取得する「getOxygenSaturation()」メソッドの中身はなんと、「return SPO2;」だけであり、 心拍のBPMを取得する「getBPM()」メソッドの中身はなんと、「return BPM;」だけであり、 皮膚電気コンダクタンスのデータを取得する「getSkinConductance()」メソッドの定義は以下のようで、これも単純なスケーリングしかしていない。#include "eHealth.h" float eHealthClass::getTemperature(void) { float Temperature; //Corporal Temperature float Resistance; //Resistance of sensor. float ganancia=5.0; float Vcc=3.3; float RefTension=3.0; // Voltage Reference of Wheatstone bridge. float Ra=4700.0; //Wheatstone bridge resistance. float Rc=4700.0; //Wheatstone bridge resistance. float Rb=821.0; //Wheatstone bridge resistance. int sensorValue = analogRead(3); float voltage2=((float)sensorValue*Vcc)/1023; // binary to voltage conversion voltage2=voltage2/ganancia; float aux=(voltage2/RefTension)+Rb/(Rb+Ra); Resistance=Rc*aux/(1-aux); if (Resistance >=1822.8) { // if temperature between 25ºC and 29.9ºC. R(tª)=6638.20457*(0.95768)^t Temperature=log(Resistance/6638.20457)/log(0.95768); } else { if (Resistance >=1477.1){ // if temperature between 30ºC and 34.9ºC. R(tª)=6403.49306*(0.95883)^t Temperature=log(Resistance/6403.49306)/log(0.95883); } else { if (Resistance >=1204.8){ // if temperature between 35ºC and 39.9ºC. R(tª)=6118.01620*(0.96008)^t Temperature=log(Resistance/6118.01620)/log(0.96008); } else{ if (Resistance >=988.1){ // if temperature between 40ºC and 44.9ºC. R(tª)=5859.06368*(0.96112)^t Temperature=log(Resistance/5859.06368)/log(0.96112); } else { if (Resistance >=811.7){ // if temperature between 45ºC and 50ºC. R(tª)=5575.94572*(0.96218)^t Temperature=log(Resistance/5575.94572)/log(0.96218); } } } } } return Temperature; }脳波データを取得する「getECG()」メソッドの定義は以下のようで、これも単純なスケーリングしかしていない。 この脳波データで何か判る人がいたら、それは逆に凄いことである。#include "eHealth.h" float eHealthClass::getSkinConductance(void) { float resistance; float conductance; delay(1); float sensorValue = analogRead(2); float voltage = sensorValue*5.0/1023; conductance = 2*((voltage - 0.5) / 100000); resistance = 1 / conductance; conductance = conductance * 1000000; delay(1); if (conductance > 1.0) return conductance; else return -1.0; }そしていよいよ、肝心の筋電センシング、「getEMG()」メソッドの定義は以下のようで、まったく同じであった。(^_^;)#include "eHealth.h" float eHealthClass::getECG(void) { float analog0; analog0=analogRead(0); return analog0 = (float)analog0 * 5 / 1023.0; }周辺ポートをマネジメントするLSIを初期設定する「Initialize the MMA8452 registers」というメソッドは以下であり、データシートを読みながらこれを設定する手間が省ける、というのが、どうも唯一の効能のようである。(^_^;)#include "eHealth.h" int eHealthClass::getEMG(void) { int analog0; analog0=analogRead(0); return analog0; }そして このページ ではその下から、各センサの解説が続いている。 そういえば昨日、このページのどこかから、回路図データPDFとして これ をゲットしていたのを思い出した。 ここから、時に回路図も眺めながら、スクリーンショットとともに、ざっと追いかけることにしよう。void eHealthClass::initMMA8452(char fsr, char dataRate) { MMA8452Standby(); // Must be in standby to change registers /* Set up the full scale range to 2, 4, or 8g. */ if ((fsr==2)||(fsr==4)||(fsr==8)) writeRegister(0x0E, fsr >> 2); else writeRegister(0x0E, 0); /* Setup the 3 data rate bits, from 0 to 7 */ writeRegister(0x2A, readRegister(0x2A) & ~(0x38)); if (dataRate <= 7) writeRegister(0x2A, readRegister(0x2A) | (dataRate << 3)); /* Set up portrait/landscap registers */ writeRegister(0x11, 0x40); // Enable P/L writeRegister(0x13, 0x14); // 29deg z-lock, writeRegister(0x14, 0x84); // 45deg thresh, 14deg hyst writeRegister(0x12, 0x05); // debounce counter at 100ms /* Set up single and double tap */ writeRegister(0x21, 0x7F); // enable single/double taps on all axes writeRegister(0x23, 0x20); // x thresh at 2g writeRegister(0x24, 0x20); // y thresh at 2g writeRegister(0x25, 0x8); // z thresh at .5g writeRegister(0x26, 0x30); // 60ms time limit, the min/max here is very dependent on output data rate writeRegister(0x27, 0x28); // 200ms between taps min writeRegister(0x28, 0xFF); // 1.275s (max value) between taps max /* Set up interrupt 1 and 2 */ writeRegister(0x2C, 0x02); // Active high, push-pull writeRegister(0x2D, 0x19); // DRDY int enabled, P/L enabled writeRegister(0x2E, 0x01); // DRDY on INT1, P/L on INT2 MMA8452Active(); // Set to active to start reading }
上は「Pulse and Oxygen in Blood (SPO2)」である。 指先を挟むクリップが、赤外線LEDとフォトトランジスタのペアになっていて、末端の血流の変化を検出する、という定番中の定番である。 飽和酸素(ヘモグロビン)濃度と、濃淡の変化から脈拍が取れる、というものだが、僕は「耳たぶクリップ」愛好家なので、まぁ、これはパスである。
上が、この「Pulse and Oxygen in Blood (SPO2)」モジュールとのインターフェース回路である。 シリアル通信でなく、何故か、馬鹿正直に8ビット・パラレルのディジタルポートである。 この指先クリップは、どうも上のようにパネルに心拍数などを表示する7セグメントLEDとかが付いているので、このセンサ部分が単独のマイコンシステムとして完結しているようである。 ArduinoだろうがRaspberry Piだろうが、シールドはこのモジュールからの結果データを通信取得しているので、もはや信号処理をするほどの事が無くなっている。
上は心電図、「Electrocardiogram (ECG)」である。 センサ回路は以下であり、かなりしっかりしている。
心電図は以下の左のようにキチンとした定義があり、これの変化を生体のコンディションとして正しく取得するのはけっこう厄介である。
上の右図はこのシステムのスマホアプリ版とLCDモジュール版での表示例だというが、「とりあえず表示してみた」というレベル以上にはならないような気がする(^_^;)。
上は「Airflow: breathing」である。 これは、僕が笙ブレスセンサで実現したようなパイポーラ(呼気と吸気)の圧力センサでなく、モノポーラ(単極)の圧力センサなのか、あるいはもっと単純に、鼻の穴に突っ込んで鼻息を通過させるパイプにリード状の「曲げセンサ(歪みゲージ)」を入れているだけのようである。 センサ回路は以下であり、フジクラのパイポーラ圧力センサ回路のブリッジもなく、単純なアンプである。
上は「Body temperature」である。 たかが体温計だが、これがかなり面倒であり、図のように抵抗トリミングとかが必要となる。 これは、他の変動量が相対的な「変化」を検出するのに対して、「温度」という絶対量を計測するためである。 センサ回路は以下であり、基準電圧との校正回路、そして微調整のブリッジ回路となっている。
上は「Blood pressure」、血圧計である。 これは完全にスタンド゛アロンの血圧計であり、インターフェース回路は以下である。
つまりこの「血圧計センサ」という製品が、ホストのシールドと2ラインのシリアル通信をしていて、パネルには心拍/血圧などを表示するLCDも付いていて、このセンサ部分が単独のマイコンシステムとして完結している。 こんなのまで「たくさんの生体センサが付いてます(*^o^*)」と謳うというのは、ちょっと恥ずかしくないのかなぁ。(^_^;)
ここで5限も終わり、今日はおしまいである。 まだ、 このページ は、半分まで行っていない。 次は「Patient position and falls」ということで、要するに身体に密着させる圧力センサのようであるが、これはまた、明日以降に調べてみよう。 こちらのシステムの筋電センサがどうなっているか、というのも楽しみである。
2014年10月24日(金)
今日は3回生の「メディア造形総合演習I」の企画書審査の学科会議が2-3限にあり、4限はゼミなので、ここを進める時間は1限と5限しかない。 また、昨日の夕方には、早くも来年の NIME2015 の案内(CFP/CFW)が届いた。 ルイジアナというのは行ったことが無かったが、地図で調べると、過去に行ったことのあるニューオーリンズのすぐ近く、と判明した。 日本からだとまずロスかサンフランシスコに飛び、さらにダラスあたりで乗り継いで、計3回のフライトでようやく行ける場所となる。さて、昨日の ここ の続きとなるが、考えてみると、一昨日に調べた ここ は、回路図の情報もたぶん公開していないし、なんかスマートだけど、ちょっと怪しい感じもする。 それに比べて、こちらのシステムは馬鹿正直に全て公開しているのが、気持ちいい。(^_^)
上は「Patient position and falls」、つまり身体の位置(姿勢)のセンサである。 胸あたりに取り付けるベルトとセットになっているが、要するに3軸の加速度センサで、重力方向との角度を検出するものであろう。 回路図は以下であり、
なんとコネクタ部分のところに「Accelerometer」と載っているだけ(^_^;)で、つまりこのシールド上には、何のインターフェース回路も存在しない。 電源とGND以外の信号線は、アナログ2本とディジタル2本、という謎の構成である。 おそらくこの加速度センサは、3軸の全てが電圧出力タイプ、つまり僕が ジャミネータの改造 に使った、秋月電子の加速度センサと同様のもので、ただし信号線が「アナログ2本とディジタル2本」として出力するタイプ、というものなのだろう。
上は「Galvanic Skin Response (GSR)」、つまり皮膚電気抵抗のガルバノメーター・センサである。 体温計と同様に絶対値を計測するので、基準電圧に対してテスターで測りながらの「校正」が必要となる 回路図は以下であり、「Body temperature」の回路と似ている。
このGSRというのは、システム図にもあるように、電極を指先にかなりの圧力で密着させる必要があり、上の図のようにそに微小な変化を検出する、というものである。 あまりにアーティファクトが大きそうで避けてきたのだが、北大の先生のてんかん事例を知ったので、ちょっと今回はここも調べてみたいと考えている。
上は「Glucometer」、つまりグルコースというのはブドウ糖なので、「血糖値のセンサ」ということになる。 遂に、針を挿して血を出して・・・の計測なのだ(^_^;)。 回路図は以下であり、MAX232をインターフェースとしてかました単純なシリアル通信ポートだけである。
これは「Blood pressure」とまったく同じことで、この「血糖値モニタ」という製品が、パネルに血糖値データを表示するLCDも付いた単独のマイコンシステムとして完結している。 そのデータをRS232C経由で受け取っているだけなのだった。(^_^;)
そしていよいよ、上がこのシステムの「Electromyogram (EMG)」、筋電センサである。 取り付け位置としては以下のように、上腕を推奨している。 ここはもっとも良好に筋電が取れるが、たった1チャンネルでここの筋電を取っても、そこからあまり面白い世界には広がらない。(^_^;)
回路図は以下である。 これは、 回路図PDF を見ると、1ページ目にも「EMG」センサ回路があるが、さらに2ページ目に、おそらく改良されたものとして載っているものを整形した回路図である。 さっそくこれは、照岡さんに送って、検討してもらおう。(^_^)
この筋電信号の計測例として載っているのが、以下の図である。 これはまぁ、僕が過去に 報告している ものと大差なく、要するに個々の筋肉に対するインパルスを検出しているのではなくて、それらを積分して、時間あたりのパルス密度として筋肉の緊張状態をセンシングしているだけである。 まぁ、完全に想定の範囲内、ということだ。 「表面の」筋電センサに、突飛な(画期的な・斬新な)方式は無いのかもしれない。
・・・そしてここまでがセンサの解説で、次は「Visualizing the data」のセクションとなった。 これは、外付けの小型LCDモジュール、そしてホストPC上でのデータ可視化ソフト、ということで、何も目新しいものはない。 だいたい、ビジュアライズはMax/jitterとかProcessingとかをを使ってオリジナルに作るので、ここは不要なのだ。 その後は、このセンサ情報をスマホで取得・表示するためのツールの紹介、さらに色々なインターフェースを経由してクラウドに出す、つまりインターネット上でモニタするツール、などのお話で、ようやくこの巨大なページの最後まで行き着いた。 あとは、 e-Healh Sensor Platformのユーザーフォーラム のページのリンクをここに置いておけば、いつでも参照できる。
2014年10月26日(土)
日本シリーズが甲子園で始まるこの週末は、ぽっかりと空いていて、2日間mbedと筋電に没頭するつもりだったのだが、昨日の午後に状況が変わった。 昨日は、朝から喉に異常を感じて、葛根湯を飲んで「龍角散のど飴」を舐め続けていたが、午後には嚔と咳が出て来て、夕方には間違いなく、かなり久しぶりの風邪である、と判明した。 そこで、いつも花粉症の時期にお世話になる耳鼻科に駆け込み、これを飲めば絶対に治る究極の抗生物質「ジスロマック」をおねだりして処方してもらい、昨夜の19時から15時間、寝ていたのである。 ジスロマックは必ず24時間間隔で2錠ずつ3日間、服用すると、1週間は効果が持続する(他の薬を飲んではいけない)、というものであり、あと数時間で2回目の服用というところなので、既に抗生物質が効いてきて、昨夜の喉の腫れが嘘のように「治りつつある」という確信とともに、昼前に研究室に出て来たのである。
さすがにこの体調では精密なハンダ付けは出来ないし、晩には甲子園での日本シリーズ初戦のために(ビールが飲めなくなったのだけ残念(^_^;))帰宅するので、ほんの2-3時間であるが、研究室に出て来たのには理由がある。 実は昨日の午前中に、我が敬愛するアナログの大家、コラボレータの照岡さんに、昨日までのこの日記の情報をメイルしたところ、夕方の帰宅直前に、長大なメイルが届いていたのだが、医者に行くためにしっかり読むことが出来なかったので、ここで咀嚼・整理しておきたい・・・という事で出て来たのである。 以下、照岡さんからのメイルの紹介とともに、自分なりのメモを書き添えていこう。
さすが、ちゃんとチェック済みであった(^_^;)。 公開されていない回路を追うのは、その基板が何層であるかによって、かなり難易度が高くなるので、最近ではあまり出来なくなってきている。 初代MiniBioMuseの頃かもう少し前には、かつて行っていた大阪のイメージラボ(阪大・院生)の青野クン(現・NTT研究所)が、僕が石橋楽器で買ってきたイシバシテルミンを、基板のパターンを追いかけて回路図を復元する、というのを、いわば電子回路技術入門の演習としてやっていたのを思い出した。○bitalino 実は、これは以前に買ってます(^_^)。 書かれている通り、回路図が公開されてないのはダメですね。ちょっと解析しかけたのですが、(基板を眺めた だけです(^^;))、一般的な回路だったように思います。週末に定数を含めて、再度追ってみますね。 (とりあえずEMGだけを攻めてみます)なるほど、センサモジュール内のファームウェアはopen sourceになっていないのは、照岡さんが指摘するように、ここはノウハウとして「お金」(特許etc)が絡む・・・という「大人の事情」があるのだろう。 生体ネタというのは、ヘタに素人が手を出していいかどうかは微妙なところで、アマチュア電子工作というネタ系であればいいが、視点を変えるとテロリストにとって・・・(伏字)・・・というような微妙な世界でもあるのだ。(^_^;)○e-Health Sensor Platform これは初めてみました。面白そうですね。EMGも良いですが、今、私はSPO2の算出ソフトに興味があります。 SPO2は、長嶋さんも書かれてる通り、ハード的には単純なものですが(赤LEDによる脈波と赤外LEDによる脈波の 振幅の絶対値の比)、この比とSPO2の値の関数(テーブル)が、オープンになってないのです。ここからいよいよ、 この回路図 の解析情報が続く。
かつては、高入力インピーダンスのペアFETをアルミ筐体に包んで熱結合したアンプを初段にしていたのが、最近は高性能オペアンプのお陰で、ずいぶん簡単に実現できるようになったものである。 今回のこれら両システムでは、電極に例のジェル付き導電ゴムパッチ電極を使用している。 心電図や電気刺激マッサージ機の、あれである。 筋電の場合には、特に音楽パフォーマンスで「動く」場合にはこれでいいかどうか、なかなか悩ましいが、大人しくしている(病院の検査室とか)であればこれで十分なのだろう。 今回の僕の筋電は、数えると第5世代ということになるが、実は「CQ出版の記事執筆」だけでなく、「新楽器MiniBioMuse-Vの製作」というのもチラッと視野に入れているので(ちょうどNIME2015の案内も来た事だし)、この場合には、電極は違ったものを実験していこうと思っている。まず、左端のAD8221、これは私も使ったことがあります。アナデバの最新の計装アンプで、安定してて低ノイズなのが 売りです。超低ノイズが求められる脳波クラスはこれでやるのがベストだと思いますが、残念ながら動作電圧が単電源で 約5V(両電源で±2.3V)以上なので、今回のプロジェクトには使えないと思います。 ちなみにこの回路では、利得抵抗が240Ωで約200倍です。ただ、初段であまり利得を稼ぐのはおすすめしません。 生体と電極間には電解質(汗)があるので、電池ができて常にDCオフセットが発生してます。それは軽く数10mV程度は あるので、200倍ならすぐに飽和してしまいます。10〜20倍程度に抑えるべきでしょうね。上の方のどこかで「伏せる」と書いていたが(^_^;)、せっかくなのでここで、 ここ と ここ の資料から発掘して、これまでに照岡さんに設計してもらった筋電センサ回路とともに、今回の照岡さんの最新回路を置くことにした。 以下である。次に0.01μFと150kΩのf0=100Hzの1次HPFが入ってます。これは、逆に少し高すぎるようにも思います。 #ちなみにJISの筋電の時定数(C×R)は0.032秒:f0=5Hzです。ただ私もパフォーマンスとか激しい動きを伴う所で 使う場合は基線が派手に暴れますので、1段下げて0.0032秒(50Hz)にしてます。 もし、後でFFTで攻めるなら時定数は0.032秒がおすすめです。 #私のお送りした回路が、もしそうなってなかったら修正をお願いします(^^;;;)。
第1世代 MiniBioMuse-I
第2世代 MiniBioMuse-II
第3世代 MiniBioMuse-II
第4世代 Wiiリモコン手首ベルト用筋電センサ
第5世代 今回の新回路f=1/(2πCR)で計算してみると、e-Healthの筋電センサは約106Hz、照岡さんの最新の筋電センサは約48Hz、となっていて、上記の解説の通りである。(^_^)
ということで、いつも、照岡さんの筋電センサは、中点電位に対して両極に振ってくれているが、その後段の回路では、考えてみると僕も全波整流していたような記憶が・・・。(^_^;)次の回路は、全波整流ですね。でも正に折りたたんでしまうのはちょっともったいないかもです。 筋電には疲れたら元気がなくなる(f特が悪くなる)という特性もあるし、ご存じの通り、両腕電極なら、心拍も同時に 採れるのですが、それも採れなくなりますし。このあたりからは、いよいよ筋電の世界の「濃い」ところであるが、ここでは、以下の話題を省略する。 CQ出版の企画では、生体信号処理、ということなのでちょっと外れてくるマニアックな世界であるが、実は、音楽パフォーマンスであるとか生体制御(意図や意志とフィードバック適応化)の世界では、ここがポイントであると思っているので、こちらは、自分の新楽器の方で追求してみたい。 ・・・そして、上に名前の出て来た「タナカアタウ」との付き合いも、考えてみると、長い。最後のは、いつもの積分回路(+可変利得)で、こちらは時定数0.08秒(f0=2Hz)。 でもTL082を使うのはどうなんでしょうね。電源電圧は何Vかわかりませんが、ここはIOともにレイルtoレイルの アンプにすべきでしょう。ADの有効ビットが減りますので。 で、その時定数、力センサでやるならそれくらいが妥当でしょうが、これではず〜〜〜〜っと以前の水戸の音情研で タナカアタウさんが言ってた、「トリガ」をとるのは困難になるでしょうね。
日本国内で(日本語で)「筋電」を検索すると長嶋に行きつくらしいが、世界的に「筋電」を検索すると、必ずアタウに行きつく。 もともと、スタンフォード大学の院生として、僕も運営委員会として協力していたICMC1993(早稲田大学、それまでの欧州-北米での開催から初めてそれ以外の地域でICMCを開催した歴史的な国際会議)で筋電センサの研究発表を行い(この研究で博士号を取得)、後にカリフォルニアのベンチャーとして筋電(脳波)センサ・システム"BioMuse"を世に出した。 その後、彼自身がBioMuse奏者として、あと2人のメンバーと組んだ"センサーバンド"は一世を風靡して、世界中で公演を行った。 このバンドの日本公演では、ジーベックスタジオのPAスピーカが重低音振動で落下したが、演奏者もスタッフも聴衆も全員、業務用の耳栓が必須という、骨の髄まで痺れる巨大音響のライヴは世界的な伝説である。 僕はベルリンのICMC2000とかパリのNIME2006などで、間近にアタウサウンドを体験している。
アタウとは、新宿アルタ前で待ち合わせをして、新宿のJRガード下の飲み屋で飲んだのが懐かしい。 一緒に飲んだ、パリで活動する作曲家の後藤英さん、イタリア人のその彼女、なども一緒だったので、最初は英語で話しているのに、盛り上がってくるといつの間にかフランス語が行き交い、周囲で飲んでいるおっちゃん達の目が点になっていた(^_^;)。 その後、パリのSonyコンピュータサイエンス研究所の研究者とともにフランス国立の音楽音響研究所IRCAMで活動するとともにスタンフォード大学でも教えていたが、現在はイギリスの大学で教えている。 途中からスマホにPdを入れて、大掛かりなセンサ等でなく、「両手にiPhone」で大音量ライヴをやったのを堪能したのは、たしか NIME2010(シドニー) だった。
だいたい、僕が大会委員長として、SUACで NIME2004 を開催することになったのも、ACMのワークショップを発端にNIMEコミュニティを立ち上げ、ダブリンでの最初のNIME2002を成功させ、続くモントリオールでのNIME2003を仕掛けつつ、その翌年に日本で開催しないか・・・とアタウから打診されたメイルが発端だったのだ(^_^)。 ・・・ということで、とりあえず昨日からの宿題だった、照岡さんメイルの咀嚼は終了である。 来月も再来月もちょっと京都に行く予定があるが、いずれも晩に照岡さんと一杯やれそうで、これも楽しみである(^_^)。
そして帰宅前にフト思い出して、上の図もダウンロードした。 これは、今回のmbedである ST Nucleo F401RE のページ にあった、Arduino互換のピン定義でない方、つまり「Morpho」という名前のピンヘッダの定義である。 M2のリュ君の修了制作の新楽器は、Propellerで作る、ということで進めかけていたが、今回のmbedの話を紹介したところ、C言語であればリュ君も馴染みがあり、より自力でプログラミング出来るということで、ホストをPropellerからmbed(NucleoF401RE)に変更することにしたのである。 Arduinoのピンヘッダではちょっとポートが不足するので、こちらで進めていく事になるので、ここに置いておく、というわけである。
・・・これで帰宅して、ジスロマックの2日目を服用して、大人しく日本シリーズを見たらさっさと寝て、明日はハンダ付けへの復帰を目指そう。2014年10月27日(日)
昨夜の甲子園での日本シリーズは、「6-1」のところまでで就寝し、案の定、11時間睡眠での(途中でしばし目覚めているものの)起床となった。 まだまだ体調は回復途上である。 研究室に出て来て、ときに楽しみである「将棋観戦」とともに、リハビリを兼ねて、納品されていた、「Arduinoシールド拡張ユニバーサル基板」のピンコネクタのハンダ付けをした。将棋については、自分では指さないものの、 こんなページ を作っていて、過去の名局をネットて探しては、その棋譜を追加したり、ニュースでタイトル戦で「名局」という情報があると、棋譜を探して追加したりしている。 つい一昨日も、「第62期王座戦五番勝負 第5局 羽生善治 vs 豊島将之」の棋譜を追加したところで、なんと今日のNHK杯は、その「豊島、強いよね。序盤中盤終盤、隙が無いよね」という豊島七段と、「みうみう」でファンの多い三浦九段の対戦であり、なにより解説が「ハゲてない」木村九段という組み合わせだったのだ。 冒頭から解説の木村九段が「豊島さんは序盤中盤終盤、隙が無い」といきなり一般化しつつあるギャグを飛ばし、2ちゃんねるは大いに盛り上がった。
そして上のように、昼食をはさんで20枚のユニバーサル・Arduinoシールドが出来たところに、なんというテレパシー(^_^;)、照岡さんからのメイルが届いた。 なんと照岡さんも風邪をひいたとのこと(^_^;)。 そして、情報の修正とBItalinoのEMG回路の解析について、さすが、速攻で情報が以下のように届いた。 ちょうど実験を始めよう・・・という直前であり、間に合った。(^_^)
そして、以下のように、今回の新筋電センサ回路のコンデンサの数値の変更連絡があった。 混乱を避けるために、既に上の方に置いてある回路図も、こちらに差し換えたが、僕は電卓を叩いて数値を計算して確認していたのに、どうも文面を読み違えて「OK」だと思っていたようである(^_^;)。長嶋さん、照岡です(^_^)。 その後、体調はいかがですか。実は私も同じような風邪ひいたみたいで、このメールも布団の上で打ってるんです(;_;)。 さて、Nifty時代の自己レスみたいなものですが(^^;)、いくつか補完と例のBitalinoの解析ができましたので その報告です(^_^)。結局、この時定数の値のカットオフ周波数は4.8HzとJIS準拠である、という事で進めていく。 そして、以下のように、bitalinoのEMG部分の回路図の解析結果が届いた。まず、私の回路の修正をば、、、 >> もし、後でFFTで攻めるなら時定数は0.032秒がおすすめです。 確認してみたら、やっぱりきっちり間違ってました(^^;)。 添付の通り、C2とC5の値を10倍に変更をお願いします。前の値でも、テストはできますよ。 パフォーマンスでは、その方が良い位ですが、「JISと違う」って突っ込まれるのもイヤですので(^^;)。 そうそう、ツッコミといえば、筋電を解析して学会発表する際には、12bit,1kHz以上というしばり(不文律)があります。 古参の先生は、まずそこで(そこに不備があれば)、発表者をいじります(^^;;;)。
さすがの解説である(^_^)。 こうなると、いよいよ新しい筋電センサの実験に取りかかる時機到来である。 ちょっと調べたところでは、SUACの図書館には以下のような文献があるので、これも明日、借りて眺めてみる事にした。ということでbitalinoのEMG部分の解析ができました(^^)v。 回路図に起こしたもの(bitalinoEMG.pdf)と、使用ICの規格、フィルタの特性表を添付しておきますね。 #コンデンサの値は実測なので、多少ブレてるかもしれません。 で、回路ですが、初段はINA333、これはいい選択に思います。私のAD627の上位互換で、より小型です。 また、入力のDCオフセットは、初段(INA333)の出力を積分してINA333のリファレンスに戻すことで、等価的に f0≒10HzのHPFを形成し、除去されてます。これもいい感じですね。 また利得も、初段を10倍に低く抑え、後のフィルタ部分で×10×10の計1,000倍と、、、これも妥当な所に思います。 ただ、理解できないのは、次の4次のチェビシェフLPF(f0≒2.4kHz)、アンチエイリアスフィルタにしろ、ノイズ除去にしろ、 少しf0が高すぎる(余り効果がない)のではと思います。 #その部分だけで基板の半分以上の面積を占めるのはいかがなものかと。どうせなら、ハムフィルタでも実装すればいいのにね(^^;)。・・・そして午後ぼちぼち、焦ることもないのでじっくりと、まずは電極の調査と加工からスタートして、 このあたり まで作ったところで、今日はおしまいとなった。 ちょうどAD627のフロントエンド部分までである。 シールドのサイズから、無理に詰め込まず、2チャンネル(×3電極)ということで、まずは進めていくことにした。■生体信号/情報■ 生体信号処理の基礎 佐藤俊輔, 吉川昭, 木竜徹共著 東京 : コロナ社, 2004.1 医用電子・生体情報. 谷口慶治, 若松秀俊著. 共立出版, 1996. 講座情報社会科学, 3. 学研, 1973. 生体情報計測. 星宮望著. 森北出版, 1997. 生体情報工学. 赤澤堅造著. 東京電機大学出版局, 2001 (バイオメカニズム・ライブラリー). 生体情報システム論. 福田忠彦著. 産業図書, 1995 (知識・情報・メディア/シリーズ). 生体情報の可視化技術. 生体情報の可視化技術編集委員会編. コロナ社, 1997. 人間-機械系 : 人による機械の制御. 井口雅一著. 共立出版, 1970 (情報科学講座:B, 生体情報:9. 生物工学:2). ■信号処理■ DSP処理のノウハウ : RISC CPU(SH2)で実現する : 変復調/フィルタ/FFT/SBC/DCT. 西村芳一著. CQ出版, 2000 (Design wave books). ウェーブレット : 信号処理とシステム推定への応用. R. K. ヤング著/袋谷賢吉訳. トッパン, 1997. 基礎からのデジタル信号処理. 宇山靖政著. 東京電機大学出版局, 1995. 計測と信号処理. 鳥居孝夫著. コロナ社, 1997 (メカトロニクス教科書シリーズ:11). ディジタル信号処理の基礎 : はじめて学ぶディジタルフィルタとFFT. 三上直樹著. CQ出版, 1998 (Try computing books). パターン認識. 電子情報通信学会編. 電子情報通信学会, 1988. モジュール化に役立つ実用電子回路集 : 計測制御の信号処理からセンサ/通信インターフェースまで. トランジスタ技術編集部編. CQ出版, 1996 (ハードウェア・デザイン・シリーズ:2. 別冊トランジスタ技術).
そして、ちょうどこの日記をスタートさせて1ヶ月が経過したという事で、ここで「part 1」という区切りにする事にした。 CQ出版の原稿締め切りがたしか12月25日あたりなので、それまでちょうどあと2ヶ月(= 1ヶ月×2)、という事になる。 果たしてどう進展するか、自分でも「お楽しみ」である。
「日記」シリーズ の記録