2013年12月6日金曜日

ET2013出展御礼 & DesignSpark & PSoC

バタバタのさなか、さる11月20日~22日の3日間、横浜みなとみらいにて
組込総合技術展 Embedded Technology 2013
が行われ、
関西スマートヘルスケア産業創出イニシアティブ(関西パビリオン)
の1ブースとして出展してきました。

さて、昨年も出展したのですが、ことしは初日の人出がおもわしくなく、比較的閑散とした船出?
でした。(公式にも1~2割減だったようです)
出展場所も、微妙に悪いのか、

1.カンファレンスブース前で人が通過
2.大手およびお目当ての組込ブースは外周&会場奥に固まっている

というのも大きく影響しているものと思っています。
もっといえば、ちょうど東京モーターショウと期間がバッティングしてしまったのも
原因といえば、、、ということなんでしょうか。

それでも、2日目の午後からはそこそこの人出があったのと、
こちらもかなり慣れてきてしまったのもあって、わりとうまく立ち回れたようにおもいます。

相変わらず、自社製品が出せない!というのがOEM中小企業の宿命なんだけど、
ことしは、

1.オムロンの非接触温度センサD6Tをつかって、入退室管理!
2.ZigBee + カメラをつかって、カメラ画像の転送

の2本立てで、展示を構成しました。


ブースの様子



<写真1>
モニタの前にある、赤いボードが
有機ELのディスプレイ。
ZigBeeでカメラ画像が飛んできます!









<写真2>
左側のアームの先に温度センサD6Tがついています。
真ん中のおもちゃ?に使い捨てカイロを仕込んで
ランダムな動向を表示する、という案配です
モニタ上部に取り付けたカメラで、ブース前の画像を、
ちっこいモニタにZigBeeで転送しています。




で、1.のD6Tについては概ね好評。
意外と『なに?それ?』といわれることが多く、興味津々という人もおおかったです。
とりあえず、これをネタに仕事になりそうな雰囲気も少々、というところでしょうか。
ただ、こちらはいろいろトラブルもあって、日刊アップデートとなってしまいましたorz

初日は、PCからの電源供給が十分でないことが発覚、エリア判定して
ランプ用AC電源をONすると、D6Tのリファレンス電圧が下がって、観測温度が
+2度くらい上昇してしまう、という現象に。
結局、その日はエリア判定をなしにして乗り切り、
翌朝のバージョンアップで リレーOn/Offを行わないよう変更。
3日目には、エリア表現を見直して枠囲みなど、再バージョンアップ!となり。。。

ま、このあたりはいいとして、温度センサの評価方法も再検討しないと、
実用上は問題かも、というのが当然のようにわかってしまったということもありました。
ルンバもどきを人に見立てるために、使い捨てカイロを複数抱かせてうごかしていたんですが
2日目の3時すぎには、会場気温が29度を超える温度になり、会場温度と見分けがつかなく
なってしまう、という状況に。
3日目には昼前にはすでに29度越え、夕方には30度を超える暑さで、
もう、なにがなんだか?って状態でした。
本格的にやるなら環境を選ぶということですし、周囲温度の平均化をおこなって、
差分を取る、などの対策は必須のようです。
ま、そこらも含めて
おもしろいデバイスはやっぱり、みんな、おもしろい!とおもってもらえた
ところで、よしとしましょうか(;^ω^)


2.のZigBee画像転送は今年のET West2013での表示のバージョンアップ版といった
ところでしょうか。
ET West2013では、ルンバもどきに設置したカメラ画像をPCに転送していたんですが、
今回はプラスαで、ペンダント型に設えたOLED付き端末に転送して、
ちかくなら、とどくよ~~~っていう展示でした。
こちらも、
ちっちゃいのがええなぁ!
とか、
『お!aitendo!!』
とのお声もいただきました\(^o^)/
ちょっと画面が小さすぎるので、そろそろもう少し大きいOLEDで、とはおもっているけど
さすがになぁ、ってのも。。。(;^ω^)


あとは、ネット上の知り合いがたくさん、来てくれて楽しかったです。
matty(@iqOyOpi)さんとか、
hamayan(@chobichan)さんとか、ありがとうございました!

そうそう、本物(笑)の熊野(@ykumano)さんにもお会いできました!!
最初、わからなくて失礼しました(だって顔しらないもん(;^ω^) )
おもわず、mrubyに走ってしまいそうな自分がこわかった。。。
去年は、チラ見だけで、まともに挨拶できなかった、
渡辺のぼる(@noboru2000gt)さんにも
ちゃんと挨拶できました(笑)

がじぇるねの岡宮さんとか、鈴木さんもありがとうございました。
岡宮さんからはGR-KURUMI用拡張ボードを、鈴木さんからは3Dプリンタで打ち出した
パネル?キーホルダー?をいただきました。
あと、hamayanさんにも、GR-KURUMI用W5500ベースボードをいただきました。
さて、ルネサスナイト4向けになにかつくらないと。。。。(汗






右下のLifeTouchNOTE上に、
さも自社製品のごとくおいてあるのが
左から、
GR-KURUMI用Eyesシールド(仮) (岡宮さん)
GR-KURUMI
雪だるま風?ペンダント?(鈴木さん)
WallNetどこでもEther with KURUMIちゃん(hamayanさん)




結局、最終日にはこんな画面に。
ちゃんと、るんばもどきに追従します。
ログ機能も、SQLiteでカンペキ(笑











結局、最終日に社長が来てくれるまで、一人で切り盛りしてたので、あんまりしっかりは
みれなかった、ETですが、チラ見した限りでおもしろそうなのは、以下のとおりでした。

1.Microchipテクノロジーの3Dジェスチャー”タッチ”パッド
いわずとしれた、PICの総本山です。
タッチパッドの周囲にアンテナパターンをいれておいて、高さ方向の位置まで
検出できるようにした『タッチパッド』でした。
つかいようによってはおもしろいなぁ、とおもったんだけど。
サンプルボードは17000円くらいらしい。
まぁチップかって自分でボードつくっちゃえばいいんだろうけど。
さて、ナニにつかお?


ボードの四方にあるアンテナパターンで
磁界を発生させて、空間容量を量るらしい。

デモ画面。右上の枠内に、動きがトレースされる。
おもしろい!


2.CRI・ミドルウエアで展示?の超音波スピーカー
パラメトリック スピーカーっていうのかな。
超音波で、指向性を持たせたスピーカを展示してました。
っていうか、この会社はD-AmpドライバーというFET一個でアンプを構成できるソフト環境を
ウリにしてるの会社なので、このスピーカーがうり、というわけではないんだろうけど(;^ω^)
石黒(@abashiri7)さん、おじゃましてごめんね~~
でも、おもしろいよね!!





3.Intel Galileo と iCOPの86Duino
Intelブースで、噂のGalileoが展示実演していました。
YAMAHAのeVY1シールドで、おしゃべりしてました(;^ω^)
意外と小さくて、なかなか好印象。実はこれで大概のことができちゃうわけで
ちょっと触ってみたい!衝動がこわい(笑

うわさのGalileoボード。
1月に発売延期になったみたいだけど、
7500円で手に入るのは大きいかも。

eVY1シールドでしゃべってました。。。


台湾パビリオンのiCOPでは、86DuinoEduCakeが展示されていました。
独自DOSでうごくモデルだそうで、Arduino互換でうごくとのこと。
ケース上にブレッドボードを配しているのはおもしろいなぁ、と。
価格は7000円くらいになるらしいけど、Galileoとはちょっと対極にあるような印象でした。
なんでやろ?
もうすこし、宣伝がうまければうまくいくのかな?(;^ω^)





そうそう。DMPってブースに、日本未発売のNintendo2DSが展示されてた。
意外に重い。
本当に3DSから3Dとっただけみたい。(形状はちがうけど)
でも、それなら普通にDSでよかったんとちがうか?というツッコミはなしで。




閑話休題。


帰ってきて早々にいろいろ出張作業が絡んでてゆっくりできなかったんだけど
その中で、RSの図面CAD、DesignSparkPCBの講習会に参加してきました。

回路図書いて、PCB基板のデータをつくると、3Dに展開できる、という
なんともおもしろいCAD。
ただ、なんとも取っつきがわるいソフトで、なかなかやる気になれないので
さっさと教えてもらおうという算段ですね。

部品の一部はRSコンポ-ネンツのデータで供給されるので、うまく部品が
あれば、部品作成の手間が省ける、ってもんです。
最終的にどこまで手が省けるのかは微妙ではあるんですが、いまの
D2CADでは、限界もあるし、そろそろ本格的にうつってみるのもいいかも、
というところです。


そうそう、クリスマスまでの間、
京都駅大階段のところでクリスマスイベントが開催されています。




でっかいクリスマスツリーで、夕方5時からは階段がデッカイスクリーンになって
いろんな模様が浮かび上がっています。(LEDで点灯動作させてる!)
うまくパターンつくったなぁ、なんておもいつつ、眺めていました。

え?なんでこんなところに、って?
このイベント用にどれだけ、人が流れてきたか、をカウントする装置をつくって
設置しています。
その装置には、PSoC3ボードとGR-KURUMIとXBeeをつかってガシガシやってる
わけです。
このPSoC3ボードは、matty(@iqOyOpi)さんの『ITショップえとせとら』のPSoC3ボード
使わせてもらってます。
ありがとうございますぅ(;^ω^)

ね、意外といろんなこと、してるでしょ?(エッヘン)




2013年10月7日月曜日

TWELiteのアプリ生成 備忘録

なんだか、結構バタバタしてる。

Digi InternationalXBeeをもっぱら使うことがおおいのだけど、
『最近話題?のTOCOS TWELiteでいかない?』とのお誘いをうけて
こいつをつかっていました。

TWE-Lite DIP(トワイライト・ディップ)


XBeeとの違いは、OpenRISCの32ビットマイコンが載ってて
自分に使いやすいようにプログラムしなおして使う、という部分でしょうか。
もちろん、そのままでも使えはしますが、便利じゃない(;^ω^) 

アンテナ感度的には、わりとよさげ。というか結構安定している。
XBeeだと、5,6mごとにガツッって感度が変化する領域があるけれど
それがないかんじ。

問題は、ファームウエアを自分で書き換えられるんだけど、
なかなかわかりにくいことかなぁ。

オリジナルのToCoNet(トコネット)のライブラリを組み込んだTWESDK
Eclipseベースで、Cドライブのルートに解凍するかぎりにおいては
そのままで使えるお手軽さ。
ただし、2013/9月号 SDKでは、改行コードがUNIXベースのLFだけと
CR+LFの混在になってたり、いろいろするし、肝心のEclipseの立ち上げが
異様に重い、という問題が、ぼくの環境では発生する、ということで、ちょっと
めげそうになってた。
後者に関しては、中の人の助言で、
を再導入するだけで、すっきりうごいたけれど。

ここらは、悩むひとがいるかもね。

で、標準アプリのApp_TweLiteを改造していったわけだけど、
全体の見通しがわるくて、イマイチわかりにくい。

というわけで、自分的に次回のための備忘録をば。

TOCOSのHPによれば、以下の図が示される。



で、Master.cに記述される内容はほぼこれを踏襲しているんだけど、
実イベントに関する記述は実際には、書かれていないのであんまり意味がなかったりする。

つまり大事なのは右側のフローで、スタート種別が2種類あるってことが重要なわけだったりする。

===============================================================================

[コールドスタート]                                        [ウォームスタート]
void cbAppColdStart()         void cbAppWarmStart()
vConfig_UnSetAll(); -----------------
vInitHardware(FALSE); vInitHardware(FALSE);
子機親機選別 -----------------
ToCoNet_vDebugInit();(UART設定) ToCoNet_vDebugInit();(UART設定)
ToCoNet_vDebugLevel(0); ToCoNet_vDebugLevel(0);             vProcessEvCoreSlp [ 子機スリープ利用 ]
    or
    vProcessEvCorePwr [ 親機/子機/中継 ]
ToCoNet_vMacStart(); ToCoNet_vMacStart();
ToCoNet_Event_Register_State_Machine() -----------------

===============================================================================

こんな感じでルーチンがわかれてて、要は、コールドスタートなら動作モードを
分別して、イベントとして
            vProcessEvCoreSlp [ 子機スリープ利用 ]
    vProcessEvCorePwr [ 親機/子機/中継 ]
のいずれかをセットされるので以降は、このいずれかだけを問題にすればよい、というわけだ。

本体関数としては  vProcessEvCore()もあるけれど、こいつは外形だけでとくに気にする
必要はないみたい。
実体関数である、これらのなかも、実はステート管理変数が

 pEv->eState== E_STATE_RUNNING:

となっている場合のみに注意すればよいみたい。
ここでは、転送条件を判定した上で、

sAppData.sIOData_now.i16TxCbId = i16TransmitIoData(bQuick);

とすることで、無線転送処理をおこなっている。

時間処理に関しては、
void cbToCoNet_vHwEvent(uint32 u32DeviceId, uint32 u32ItemBitmap) 
case E_AHI_DEVICE_TICK_TIMER: // 基準制御周期
case E_AHI_DEVICE_TIMER0:     // タイマー0制御周期

があり、ここで、自分に必要な時間処理をおいておけば、ぬるいが判定ができる。

ハードウエアの割り込み自体は

PUBLIC uint8 cbToCoNet_u8HwInt(uint32 u32DeviceId, uint32 u32ItemBitmap)

に記述する。

sAppData.sIOData_now.au8Input

が、すべての統括をしているようにはみえるんだけど、現状のアプリだと
DI4はうまくよめていない雰囲気だ。
まぁ、僕の場合は、

uint32 Bitmap = ~u32PortReadBitmap(); // IO入力部の取得( L = 1 / H = 0 )
if (( Bitmap&0x0010000 )==0)) {
return i16Ret;
}

のように記述することで、DI4の状態をみたので事なきをえてるけど。
これについてはコールドスタート時に

uint32 Bitmap = ~u32PortReadBitmap(); // IO入力部の取得( L = 1 / H = 0 )
vfPrintf(&sSerStream, "!INF DIO --> %021b"LB,  Bitmap);

という表示ルーチンを適宜挿入しておいて、状態変化を観測して、確認した。
ファーム自体が、本当にうまくうごいているのか?それとも自分の書き方がわるいのか
を確認する術がないのが、微妙にイラっとする。

ま、デバッガがないのはちょっとな~~となってしまう。
ここらは外部デバイスに特化したXBeeのほうが扱いやすいな、とおもう点ではある。
だって、手慣れた環境で、扱えるからね。

手慣れた、といえば、Eclipseも、人のコードをアチコチ参照しながら読んでいくには
かなり扱いにくい、と感じる。
自分のソースだと、なにがどこにどんな形で定義されているのかは、自分がよくしってるんだけど
さすがに探しながら、となると、検索一つとってみても、なかなか。

というわけで、VisualC++ 2010Expressのプロジェクトをつくって、ソースコード編集が
できるようにしてみた。

さすがにすごくつかいやすい。

ソリューションを一つ用意して、自分のアプリのコード(*.cと*.h)を登録。
プロジェクトのプロパティで、Includeパス設定を行って、下記を登録。


C:\TWESDK\Wks_ToCoNet\MyApp_TweLite\Master\Source
C:\TWESDK\Wks_libToCoNet\libToCoNet\include\ToCoNet
C:\TWESDK\Wks_libToCoNet\libToCoNet\include\ToCoNetUtils
C:\TWESDK\Wks_libToCoNet\libToCoNet\include\ToCoNetUtils\AES
C:\TWESDK\Wks_libToCoNet\libToCoNet\include\ToCoNetUtils\fixmath
C:\TWESDK\Wks_ToCoNet\MyApp_TweLite\Common\Source
C:\TWESDK\514x\Components\HardwareApi
C:\TWESDK\514x\Components\Common\Include
C:\TWESDK\514x\Components\HardwareApi\Include

.vcxprojファイルのIncludePath指定をエディタで書き換えてもOK。

<IncludePath>C:\TWESDK\Wks_ToCoNet\MyApp_TweLite\Master\Source;C:\TWESDK\Wks_libToCoNet\libToCoNet\include\ToCoNet;C:\TWESDK\Wks_libToCoNet\libToCoNet\include\ToCoNetUtils;C:\TWESDK\Wks_libToCoNet\libToCoNet\include\ToCoNetUtils\AES;C:\TWESDK\Wks_libToCoNet\libToCoNet\include\ToCoNetUtils\fixmath;C:\TWESDK\Wks_ToCoNet\MyApp_TweLite\Common\Source;C:\TWESDK\514x\Components\HardwareApi;C:\TWESDK\514x\Components\Common\Include;C:\TWESDK\514x\Components\HardwareApi\Include;$(IncludePath)</IncludePath>

これで、コード補完が効くので、解析するにはすごく便利になる。

ま、でたばっかりのデバイスなので、行き届かない部分がかなりあるけど
おもしろいのも事実。
もっとドキュメントをわかりやすくかいてくれるとありがたいな~とか、
おもったりしています。

というわけで、今後も期待していたりして。


PS.
TWELite-DIPの話題ついでに、汎用書き込み基板TWE-Lite R(トワイライター)について。
これ、かなりイケテル。
単体書き込み器としてもいいけれど、USBシリアル変換つき基板として
TWE-LiteDIPにはそのまま使いたい気分のボード。

ただ、この基板に TWE-LiteDIP をのっけた場合、若干の不都合が生じるのに注意が必要だった。

TWE-Lite R をUSBにつながずにいると、外部電源で駆動させていてもTWE-LiteDIPがうごかない。
いろいろしらべていくとTWE-LiteDIPのリセットピンにFT232のCBUSがつなげられており、
FT232が機能していない状態ではこのピンがLに保持されており、リセットが解除されない。

というわけで、実動回路にもこの基板を流用する場合には、TWE-Lite Rに実装されている
ダイオード D1 を外してしまうことで、利用できるようになる。
副作用として、自動の書き込みはできなくなるけれど、これについてはPROG+RSTボタンの
押し下げで対応できるので、問題ない。
ジャンパくらい、つけといてほしかったなぁ、というのが正直な感想。
ま、こういうこともあるよね。








2013年9月6日金曜日

ひさびさの更新!!

まいどです(笑

いや、前回の6月18日更新から、はや3ヶ月orz
もうその間に、なにがあったのか、思い出すのも難しくなりつつあります。
いかんいかん、こんなことでは!!

5月に母が急逝して、ばたばたしてるまにETとCQ出版の原稿書きなど
ぐひっちゃかめっちゃかの感があったので、なにかと大変でした。

7月4日は、サイプレス PSoCワークショップ レベル3 を受講しにいったなぁ。
レベル2がいまいちだっただけに、結構おもしろかった。
VerilogHDLで内蔵UDBを扱う!とかかなり現実に即した内容で
コントロールレジスタなどの使い方も『そうか、そういうこと?』ってかんじだった。
まぁ問題は、Verilogで書いたカスタムコンポーネントのシミュレーションの方法が
ないので、別にテストベンチでガッツリつくった上で、カットアンドトライになるのは
勘弁して欲しい感じではあるけれど、PSoCをつかう最大のメリットになる部分なので
このあたりをもっと強化していってほしいなぁ。

ちなみに、コア部分にARM CortexM0を採用したPSoC4がでたけど、これについては
微妙な感じだった。
というのも、内蔵するUDBが少なすぎて、なかなかベストな使い方がみつからない。
ここらあたりは、PioneerKitがArduinoのフォームファクタをベースにしていることから
して想像すべきだった(>_<)
Arduinoにできるくらいのことは、Arduinoに任せておけばいいのにね。

あと、20日には、ルネサスナイト3だったか。
こっちは、テレビ会議がとぎれてしまったり、なにかと波乱のあった会だったけど、
それなりにおもしろかった。
やっぱり、おもしろいことやろうとしている人たちのそばにいると、わくわくするわ。

月末になると、VSハッカソンの延長で、.NET Microframeworkのハッカソンに参加。
奈良県産業振興総合センター主催?で、マイクロソフト エバンジェリストの太田さんや
株式会社デバイスドライバーズの日高さんなど、有名人が参加してわりとおもしろかった。

.NET GadgeteerのCerberusをつかったけれど、もう手にはいらないのかも。
決して情報が潤沢ではないのだから、安定長期供給は必須だとおもうんだけどなぁ。
使い慣れた、VisualStudioでマイコンのファーム開発ができるんだから、うまく情報を
だしていけば、絶対おもしろいことできるはずなんだけど。

というわけで、閑話休題。

8月25日発売の、CQ出版 月刊誌 Interface 誌 で少し記事を書きました。
6章と10章の2つを書かせていただきました。



初めての記事執筆でもうヒッチャカメッツヤカ
だったんですが、なんとか形にできました(笑

XBeeのほう(6章)が最初だったので、なんか
浮き足立ってしまって、結局ナニがいいたいのか
わからないような内容になってしまいました。

10章のほうは、ちょっと落ち着いてかけたかな。
さすがに時間が短くて、本格的に運用するところ
まではかけなかったんだけど、ま、そういうもんかも
しれません。

それにしても、雑誌に記事がのるなんて
想像もしなかったので、すごくうれしい!!

発売日の8月25日がちょうど母の百ケ日忌だったので
タイミングの妙というのか、なんだか不思議な
気分でした。


ま、ぼくよりも、ヨメのほうがよろこんでましたが(;^ω^) 



この記事を書くにあたって、XBeeのRSSIをしらべていたんですが、記事を書き始めてから
かなり焦りました。
もともとあまり精度がないのはわかっていたけれど、RSSIの落ち着きがないというか、
5m間隔くらいで、『ガツ!』ってレベルが変わる領域がある予感。
単純なばらつき、というわけでもないような感じなので、なにかあるのかもしれません。

最近つかいはじめた、TOCOSのTWE-Liteだと、そういう感じがないし、入力レベル自体も
かなり安定しているので、チップアンテナの作り込みがうまくいってないのかな?


しかし、無線系はなにかとやってみないとわからないことが多々あって大変だなぁ、つくづく
感じる体験でした。


2013年6月18日火曜日

ET WEST2013 御礼 & TOCOS TWE-LITE

あ~、3ヶ月の放置状態、いかんなぁ

あれからいろいろあったけど、一応元気にしてます(笑

某所の仕事でルネサスのRX621でガッツリあそんで(!)、デバッグやりにくいとか、
マニュアルわかりにくい、とか、いろいろあったけど、まぁ、それなりによく出来てる
マイコンだな~っておもってたんですよね。

そうこうしてるうちに、ひょんなことから、
がじぇるね』第2段、GR-KURUMIボードプロデューサーになってしまったりして、
KURUMIガイドブック&作品集に載せてもらったり、結構がちゃがちゃとしてました。



個人的にはRXよりはRL78のほうが好きなので、結構楽しめてます。
昇圧型レギュレータが載っているので、電池1本でもうごくのは結構うれしかったりして。
マイコンとしての機能は標準的だけど、実はArduino互換としてよりも、
CubeSuite+でガッツリつくったほうがカンタンだったりしますが、ここら辺は
完全に趣味の問題ですね。

デバッグがいるような内容なら、さっさとCubeSuite+とE1でやったほうが
結果がはやいとおもいます。
とくに省電力機能であるSNOOZEとの掛け合わせでいうなら必然かもです。
まぁ、用途によりますよね。
でもね、こいつが、もうすこし流行ってくれるとうれしいなぁ。

この流れで、Fuji-SAKURAプロジェクトにも首を突っ込むことに(苦笑
要は、富士通セミコンのFM3マイコンのSAKURAボードを作っちゃおう!
ってことらしい。
僕的には、Arduinoもどきはもう「おなかいっぱい」なので、そろそろ
mbed化か、.NET MicroFramework化で行って欲しいなぁ、とおもってしまう。
まぁ、新しいものつくれるんなら、それはそれでたのしまないとね。
だれか、mbed HDK を申請してくれないかなぁ。



閑話休題。

5月になって、PSoC4もデビューしましたね。
期待していたARM CortexM0+だったわけですが、
肝心の機能のほうが、デジタルブロックもオペアンプも少ない
なんだか中途半端な製品でした。う~ん。
僕的には、PSoC3のCortexM0+版を期待していただけにちょっとがっかり感が。
まぁ、1Mサンプルの12ビットSAR ADが内蔵されているので、使いようによっては
これで十分な用途もおおいかも、とはおもうけど。

マイナビの記事のいうように、PSoC3と5を補完する、というよりは
PSoC1の置き換え需要をねらったモノ、という位置づけなんでしょうね。
それなら、機能的にもわかる気がするし。
ま、4をえらぶなら、4200シリーズしかえらべないけどね。

とにかく、僕的にはPSoCはマイブーム(笑)なので、がんばってほしいところ。
PSoCの無料ワークショップも盛況なようで、レベル1は、7月17日に追加されてますね。
おもしろいですから、みなさん、参加されてみてはいかが?
ちなみに、ぼくは7月4日に、レベル3を受講します\(^o^)/


image:Cypress、Cortex-M0を搭載したPSoC 4製品として第1弾となる2ファミリを発表
ハードプロファイルがArduino互換なのはイケテルかも。
ソフトはオリジナルだけど、多分Arduinoより多機能で
つかいやすいので、ムリしなかったのは正解ですね
image:Cypress、Cortex-M0を搭載したPSoC 4製品として第1弾となる2ファミリを発表
内蔵デバイスをみると、4100シリーズは
明らかに役不足。
必然的に4200シリーズしかえらべないねぇ









































閑話休題、その2

6月13,14日の両日、大阪南港のインテックス大阪にて
組込み総合技術展 Embedded Technology WEST 2013 が
行われました。
事前に台風が予想されていましたが、幸い、好天に恵まれ(すぎ)、
非常に暑い中、来場者のほうは、過去最高の5812人だったそうです。

うちの会社も、ワイヤレスコントロール研究会のメンバーとして
出展しており、今年は、XBeeでのコントロール(例年どおり)に加えて、
CMOSカメラからの画像を送信する!という展示を行いました。
お掃除ロボットもどきの上にカメラを設置して、手持ちのキティちゃんで
デコした状態で、展示です(笑
1フレーム5秒程度で転送できていたので、結構みんな見て行ってましたね。
ZigBeeもなかなかやるなぁと、感心してたりして。


写真: もうすぐ開場

ブース的には、まさかの がじぇるね ブースの斜向かい(笑
木暮さん、岡宮さん、松山さんに、結構あそんでもらいました。

写真: がじぇるね の 斜向かい


今回の展示会、あんまりおもしろい話題がなかったんだけど
個人的にイケテルかも?とおもったのは


TWE-Lite DIP(トワイライト・ディップ)

ZigBeeと謳っているけど、実際にはIEEE802.15.4なのでチョットあれだけど
マイコンとしてみると結構おもしろいかもしれず。
OpenRISCらしい。開発環境がタダなのはいいなぁ。

足ピンの数からいって複雑なことはできないにせよ、
外部にマイコン積まなくてよければうれしいこともあるかもしれないし。
問題は、従来のTWE-Regularみたいに、中途半端なサポートに
なられると困るな~とか思いつつ、でも、おもしろいかな、と
色気をだしてました。
ちょうど、うちのブースの裏だったしね。
知り合いの評価もそこそこ好印象だったので、今後に期待!!




2013年3月19日火曜日

.net MicroFrameworkであそんできた

とうとう、春到来ですね。眼がかゆくてしかたない(T_T)
なんだか仕事に追われて、RL78やらRX621やらPSoC3やら、
もうワケワカメな状態が2週間ほどつづいています(笑




このうえ、この週末には、がじぇっと るねさす大阪ミーティングがあり、
4月にはいると、mbed祭り@大阪があり、とイベントずくめ。
どうやって時間つくるん?と自問自答。。。(笑
ま、なにかとたのしんでるんでいいけどね。
それぞれ特徴があるし。
にしても GR-SAKURA も GR-KURUMI もなかなかサンプル作る時間が
ないので、本格的に出すのはET-Westになっちゃうかもね。ま、それもいいか。



閑話休題。


先日(2013/3/7 & 3/11)に、なら工業技術センターで行われた

IT・RTセミナー 
『クラウドを使った遠隔監視システム工作』

に参加してきました。
内容的には
  cosm(Pachube)をつかったデータのクラウド化

 .net Micro Framework(以下NETMF)をつかって実現してみよう!
という体験講座だったわけです。

cosmは、むかしPachubeと言われてたサイトで、ちょうど東日本の震災のときに
放射能データの共有などの話題で、少し有名になったかな~ってサイトです。
私の場合、NXP mbedをやり始めたときに、ネットワーク系のサンプルが
上がっていたので試したくらいの知識でした。
当時は、公開データしかできなくて、結構???なサイトでしたが
いまはかなり高度になって、使いやすい感じでしたヨ。

ま、こっちはおいといて。

NETMFについては、株式会社デバイスドライバーズの日高さんがこられて
概略をちょいちょいとお話になってられました(笑

ボードはGHI エレクトロニクスのGadgeteer FEZ-Spiderを。


FEZ セルベラスベーシックキットFEZ Panda II

                      スパイダーと Panda II



まぁ、よくできてはいるよね。
スパイダーというだけあって、いろんなのをコネクタくにくにとつけていくと
もう蜘蛛の足状態だし。
自分の環境でいろいろ足し込んでいくなら FEZ Panda IIのほうが
Arduino互換の足なので拡張しやすいかもなぁ。


まぁユニバーサルがそのままではつかえないのが痛いけど、
Spiderでケーブルだらけになるよりましかもしれず。

で、肝心のNETMFなんですが、ちょっと微妙かなぁ。
たしかに、VisualStudio2010と統合されて、C#でつくってデバッグできる
ってのはいいかなぁ、とおもいます。
言語仕様もはっきりしているし、なにより、PCのプログラマには
デファクトスタンダードな環境だし。


ただ、マイコン屋からみると、きわめて中途半端な仕様に映る。
イニシャルはいいとして、メインループで処理待ちをする、という
仕様になっているようで、むかしながらのタスク待ち関数をつくる
ようなイメージで、割り込みとかそういう部分が、かなり中途半端。
メッセージループはメインを出ないと、送信されないようなので、
処理にガッツリ時間をかけると、メッセージがかえらなかったりする。

まぁ、そのあたりに気をつけて書けばすむんだけど、そういう部分の
仕様がどこにドキュメントがあるのか、さっぱり検討がつかないのが
イタイ。

2日目の講習では、EthernetアダプタのMACが全機種おなじという
想像もつかない状態であることが発覚し(笑)たものの、
MACの設定方法がどこにあるか、とか、
そういう
当たり前のドキュメントさえ、どこにあるか判然としないのはいかがなモノか。
ま、会場に来ていた数名の猛者が分業しながら解決したものの
自分一人だったら、あきらめてる(苦笑
というか、これをもって、お客さんのところでデバッグなんてようしません、私。

で、幸か不幸か、オープンソースになったようで、ますますドキュメント整備が
おくれてくるんやろうなぁ、と。

せめて、日本語でサポートされるコミュニティが富士通エレくらいが立ち上げてくれると
ちょっとやってみようかなぁ、となるのに。


2013年2月22日金曜日

KURUMIとPSoC3備忘録\(^o^)/

あ~、ちょっと間隔があいちゃいましたね。
もうすぐ3月だしぃ。
仕事がらみで、バタバタしてたのはいつものこととして、
がじぇルネプロジェクトのRL78duino(以下GR-KURUMI)のプロデューサミーティングに
参加したり、といろいろおもちゃも増えつつあります。

GR-SAKURAはArduino互換のRX63N利用の高機能ボードとして
やっと認知されつつあるようですけど、情報が散逸がちで、
ライブラリも隠蔽状態で、いまいち使い込むには???なかんじ。
それでも展示会なんかで、

『関西ではやらないの?なんで~~』

って、つっこんでいた手前、RL78版で参加せざるをえない?雰囲気に
なってて、2月3日に大阪ミーティングに参加してきました。


GR-KURUMIはRL78/G13をのっけた、Arduino Pro Mini互換の
ちっこい省電力マイコンです。
昇圧コンバータものっけているので、乾電池駆動できるというのが
ウリでしょうか。
SparkfunのFT232RLのアダプタでシリアル通信と書き込みができます。
Webコンパイラでコンパイルもできますが、GCC環境なのでe2studioで
ローカル開発したほうが気持ちいいかも、です。
といっても、GDB+E1でのデバッグはまだまだ不安定なので、
デバッグ環境がととのっている、とはいえないようですけど。




とりあえず、大阪の第2回ミーティングがせまってきているので
mbed用につくっていたライブラリをKURUMI用に改変して
うごくことだけは、確認しました。
案外簡単にうごくのね。
トラブルのほとんどは自分のIOまわりの設定ミス。
やっぱりちゃんとメモしてつくらんとあかんなぁ。

で、さすがにmbedほど高速にはうごかないので、定番のねぎミクも
振っているのがみえるし(汗
とにかく、ライブラリとしてうまくまとめて公開準備しなきゃ。


閑話休題。

やっとPSoCの利用のお仕事、第一弾がきまったのでシコシコとテスト
をつくっています。
ひさびさにつかってみたらKEILのライセンスがきれてるのにうまくUPDATEできない
とか(これは新規インストールしたらできた)、いろいろあったけど、
とにかく、使えるようにはなった(汗

出荷用のボードを起こす時間も費用もないので、CQ出版の

なるものを購入。5040円也。
でも、Amazonで発注してから、
USBコネクタとかいろいろないことが発覚。
秋月でパーツキットも購入。
このとき、この本まで扱っているのに気がついてorz
最初っからこっちで買っとけばよかった。。。。。


このあと、コネクタとか実装するわけだけど、
秋月キットのUSBコネクタが小さくなってて、
ボード端よりかなり内側に実装することになってる。

これでは、USBケーブルがささらない!!
ということで、ヤスリでゴリゴリと削ってなんとか
ケーブルがささるところまではもちこんだけど、こういうのってなんとかならんかったんか?


でも、ここからはおもしろい!!でも、また忘れると困る内容を
備忘録としてまとめておく!!


まず、PSoCのプロジェクトをつくったときに、拡張子が、

cysch ==> スケマティック=回路図面
cydwr  ==> 本体の基本設計

ができるわけだけど、cydwrファイルが重要。普通にクリックすると
Pinsがでてきて、定義した信号名をIOピンに割り付けられるわけだが、
この下側にあるタブで、全体のクロックをまずは調整する必要がある。
これに気がつかないと、せっかく高速のマイコンなのに、3MHzで
うごかすとか、変なことになりかねない。

cydwrのpins画面。下にあるタブに注目すべし!!


















下にあるタブで、clocksをおして、このなかでダブルクリックすると
グラフィカルな画面になる。

clocks画面。実際に変更するには
IMOなどの文字部分をダブルクリックする!



クロック周りの実体設定部がこれ。
ここで、設定しとかないと...

































XTAL:外部供給クロック
IMO :オンチップ高速オシレータ
ILO :オンチップ低速オシレータ
をベースとして、つくるわけだけど、CPUに入るバスクロックと
マスタークロックはやっぱり24MHzくらいにはしたいよね、というわけで
とりあえず、IMOを24MHzにして、PLLなんかも分周比1で、そのまま入れる
ように設定。低消費電力なんかを目指すなら、ここらあたりをうまく調整
しないと!ってことですよね。

さて、ここが設定できたら、もうあとは設計にはいっちゃえばいいわけですな。


マイコンの初歩としてはLチカははずせへんでしょ?
ってことで、サンプルはLチカ。

まずスケマティックをつかって
回路を構成するわけだが、
ここに
 Pin_1
をおいて、cydwrのpinsで任意の場所に割り付けて、
まずはBuild。
そうすると、利用コンポーネントのソースが生成されて
Cから扱えるコンポーネントAPIもつくられる。
要は、ハード構成を変更したら、まず、Build!ってのを
習慣化しないとだめなんだな!

で、あとはmain関数のなかで

==================================

void main()
{
    int clk=0;

    Pin_1_Write(clk);
    clk ^=0x01;
    for(;;){
        Pin_1_Write(clk);
        clk ^=0x01;
        CyDelay( 500 );
    }
}

==================================


とでもすれば、500msごとに点滅する回路の完成。
なるほど。

でもね、CyDelayっておもしろくないな~ってことで、
ほかのマイコン同様、タイマーをつかいたかったので
それでつくったのが、この回路。


上側の回路がLED点滅回路。
下はUARTのテスト用回路.



















タイマーの設定画面。
供給クロックを変えると勝手にperiodも
計算してくれるので、超簡単





















分周CLOCKコンポーネントで10kHzつくってタイマーに入れ、
タイマーをダブルクリックすると、あとは任意の時間を設定して
コンペアマッチ出力(tc)を出してくれます。
ただ、でてくる出力は当然クロック1発分だけですから、外側に
D-FFでラッチするようにしてやると、ソフト挙動に関係なく
光らせることができますね。
この回路ではisr_1という割り込み出力もつくってますが、割り込みを
つかうと、レジスタ待避などのいらない挙動がつくので、ハードウエア
で処理できるならそれにこしたことはないよね!
ってのがわかる回路になってます。

ついでなので、UARTもやってみた。
IOはどこでもいいので、RX/TXをわりつけてUARTの設定で
回線速度とかをごそごそ設定。



おもしろいのはBufferサイズが
可変なこと。

通常のマイコンだと、UART設定
ができても、所詮ダブルバッファくらい
しかないので、受信割り込みで
FIFOをつくって処理してやらないと
だめだったりと、
結構面倒くさい、というか、
ここらが、ソフト屋さんの腕の見せ所だったり
したわけだけど、
PSoCの場合は最初から、バッファサイズ4。任意に増やせるので、僕の場合は
128にしてみた。
こうすると、割り込み&FIFOなんてことしなくっても大丈夫だったりするのだった。

ここまで簡単にUARTをつかえるのってめずらしい。

ちなみにUSBFSでUSBーUARTの機能もあるのだが、
基本的に同じつかいかたでいけるのはすごい。
とりあえず、ここまでのソースを添付しておく。

なんか、おもろいわ~~。


==========================


/* ========================================
 *
 * Copyright YOUR COMPANY, THE YEAR
 * All Rights Reserved
 * UNPUBLISHED, LICENSED SOFTWARE.
 *
 * CONFIDENTIAL AND PROPRIETARY INFORMATION
 * WHICH IS THE PROPERTY OF your company.
 *
 * ========================================
*/
#include <device.h>
#include <stdio.h>

// 割り込みプロトタイプ宣言
CY_ISR_PROTO( ISR_Interrupt );

// タイマー割り込みの実体
CY_ISR(ISR_Interrupt)
{
}

void main()
{
    /* Place your initialization/startup code here (e.g. MyInst_Start()) */
int clk=0;
char c;
int i;
int rcount;
char  buf[50];

isr_1_StartEx(ISR_Interrupt) ; // タイマー割り込みを割り付け

Timer_1_Start();
UART_1_Start();
UART_1_ClearRxBuffer();

CyGlobalIntEnable; // 割り込み許可

//Pin_1_Write(clk);
//clk ^=0x01;
    for(;;)
    {
        /* Place your application code here. */

rcount = UART_1_GetRxBufferSize(); // 受信バッファにあるサイズを取り出す
if ( rcount ){
for(i=0;i<rcount;i++){
c = UART_1_GetByte(); // GetCharは0を除外するのでつかわない
sprintf( buf, "%c = %02x\r\n", c, (int)c );
UART_1_PutString( buf );
}
x = 0;
}
//Pin_1_Write(clk);
//clk ^=0x01;
//CyDelay(500); //ms待ち
//CyDelayUs(500); //us待ち

    }
}

/* [] END OF FILE */


==========================

2013年1月23日水曜日

GR-SAKURA 備忘録

まいど。

え~、年末からごそごそといじり始めたがじぇるねのSAKURAボード




Renesas Rulzにある、がじぇっとるねさすゆーざー会のページにいくと
いろいろ教えてもらえるんですが、なんにせよ固まった情報がないのと
Arduino自体ではない!という点から、どうしたらいいのかわかりにくい
状態になっています。

とくに、ボード上のIOの取り合いと設定が回路図をみて、
利用方法を考えて自分でやってね!的発想で資料が散文している
ので、ひどくわかりにくい。

で、とりあえず、自分に必要な最小限の情報をとりまとめてみたので
ここでは備忘録として残しておこうと。


オンボードLED(正論理出力)
PA0   LED1
PA1   LED2
PA2   LED3
PA6   LED4

オンボードSW(負論理入力)
PA7   SW2

USBホスト ジャンパショートによる接続
J13 USB-DMプルダウン
J15 USB-DPプルダウン
P22 (CN8-P3) DRPD USB Host機能による排他利用
P25 (CN8-P6) DPRPD USB Host機能による排他利用


JP XBeeジャンパショートによる接続
J7 P52 RXD2(CN9-P4) XB-DOUT
J8 P50 TXD2(CN9-P7) XB-DIN
J9 P51 (CN9-P5) XB-RES
J16 VCC33 XB-VCC
J11 P54 (CN9-P2) XB-RTS
J10 P55 (CN9-P1) XB-CTS


SD-Cardと外部CS
PC0 (CN9 -P8 ) SPICS1 SD-CS
PC6 (CN7 -P4 ) SPIMOSI SD-CMD
PC5 (CN7 -P6 ) SPICLK SD-CLK
PC7 (CN7 -P5 ) SPIMISO SD-DAT0
P15 (CN10-P5 )挿入検出  WriteProtectSW

PC1 (CN9 -P7 ) SPICS2

ピン配置と取り合図<上段>
pinCN14CN12CN11  CN9CN7
9 NC
8 NC
743(PD7)51(PE7) 22(PC0)[SD] NC
642(PD6)50(PE6) 23(PC1)[ExtCS]GND
5RES 41(PD5)49(PE5) 24(P50)[XB] 13/SCK (PC5)
43.3V40(PD4)48(PE4) 25(P51)[XB] 12/MISO(PC7)
35V 39(PD3)47(PE3) 26(P52)[XB] 11/MOSI(PC6)
2GND 38(PD2)46(PE2) 27(P53) 10/SS0 (PC4)
1GND 37(PD1)45(PE1) 28(P54)[XB] 9 (PC3)
0(VIN)36(PD0)44(PE0) 29(P55)[XB] 8 (PC2)


 ピン配置と取り合図  <下段>
pinCN15CN13 CN10CN8
7 30(P12) 7(P33)
6 31(P13) 6(P32)
5A0(P40) A6/20(P46) 32(P14) 5(P25)[USBH]
4A1(P41) A7/21(P47) 33(P15)[SD]4(P24)
3A2(P42) 52(P07) 34(P16) 3(P23)
2A3(P43) 53(P06)[DA1] 35(P17) 2(P22)[USBH]
1A4(P44) 54(P35)[NMI] V30 1(P20)
0A5(P45) 55(PJ3) GND 0(P21)

ここで、A0~A7はAD入力ピン。その他の0~55の数字はArduinoのIO番号。
()内の番号はRX63NのIOピン名称。
[]内は排他機能の名称。


こういうのがないんだよね。案外。
で、ぼ~っと眺めるとわかってくるのは、まとまってIOがとれるのは
CN11,12の16ビット分くらいかなと。
内蔵のSDとかUSBホストとか、いろいろテストしたいな~とか
おもっていると案外ポートがとりにくかったりするのが、漠然とわかります。

うん、とりあえず、シリアルのテストがおわったら、
XBeeの接続系統のテスト(APIモード)をやって、
USBホストでADKでもやってみようかな、と妄想中(;^ω^) 


そうそう、LANのほうもやらなくっちゃね。




*** 1/28 SDのP15について記述修正(;^ω^)