マイコン工作実験日記

Microcontroller を用いての工作、実験記録

メンバー追加

2014-02-26 07:04:22 | Weblog
ここのところLPCとかKinetisとかを使っており、ATMELとは疎遠になりつつあります。SAM4Lはようやくとクセをつかんだところで、中断したまま。SAMDについては「近頃はM0+マイコンでもUSB普通に使えるのに、USBが無いのもなぁ」と感じておりましたが、ようやくと他社並みのものが出てきました。



ATMELのSAM DシリーズにUSBをサポートしたデバイス SAM D21/SAMD11が追加されました。こりゃもう、使ってみるしかない。あぁ、入手できる日が待ち遠しいです。SOIC 14ピンパッケージなんてのもある。これなら、秋月で買えるようになるかもしれない?!

ちょっと改善

2014-02-23 02:17:48 | Weblog
M24SR-Discoveryに触発されたので、ほったらかしになっていたLPC1114+WCA-009+RF430BPについて記事を書いておくことにします。



Handover selectに続いてSSPのOOB接続をやってみるつもりでいましたが、SSPの仕様を読んでみると2台のデバイスが交互にOOBで鍵を交換する必要があることがわかりました。やはり、Handover requestを使えるようにして、鍵を交換する必要がありそうです。そしてそのためにはAndroid側で自分でソフトを書くか、RF430CL330Hの代わりにTRF7970Aを使ってNFC P2Pをサポートしてやる必要がありそうです。

TRF7970Aについては、いずれ使ってみるつもりだったので、これはこれで挑戦することにするつもりでいますが、RF430CL330Hをもう少し有効に使うべくソフトウェアをちょっとだけ改善。

これまではHandover selectのNDEFメッセージをHard codedしていましたが、これではあんまりなので、次の3種類の情報をつなげたWT32から動的に取得して、NDEFメッセージを組み立て、RF430CL330Hに設定することにしました。
  • Bluetooth device address
  • Device name
  • Class of device
これらの情報は、WT32にSET BTコマンドを送ってやることで取得することができます。



BDADDRだけなら、SET BT BDADDRで取得可能なのですが、NAMEや CLASSについてはこれらを単独で取得することができません。そのため、SET BTコマンドの出力結果をパースすることで、必要情報を取得、NDEFメッセージを作成しています。M24SR-Discoveryと比べるとLCD表示機能が見劣りするので、FT800を使ってLCD表示するようなデバイスを目指してみようかなぁ。

M24SR-DISCOVERY

2014-02-19 23:58:23 | Weblog
世間ではSTのSTM32 Nucleoが話題になっているようです。これまでのDiscoveryでも充分に安かったけど、さらに安くなったからなぁ。



Discoveryについてたセンサーやアンプ等のチップを無くして、シールドとして別途発売ということでなんですね。自分でつなぎたいデバイスがある場合には、余計なデバイスが付いているよりも、こういうスッキリとした構成の方が使いやすので助かりますよね。しばらく待てば秋月にも並ぶことになるんでしょうが、ちょっと複雑な心境。秋月にもこういった安価な評価ボードボードが並ぶようになったのは嬉しいといえば嬉しいのですが、チップ単体で売られているARMマイコンは極めて限定的じゃありませんか。結局のところ、DIPパッケージのあるNXPくらいなものです。他にあるのは時代遅れ/売れ残りのARM7だけです。個人的には、ブリックパッケージが並ぶ店内よりも、升目に区切られた展示販売台にQFPが並んでいるお店であって欲しいのですが。。



さて、Nucleoとほぼ時を同じくして発表されたのが、M24SR Discoveryです。こちらはNFCタグのチップの評価ボードボードなんですが、STM32とLCDが付いています。このDicoveryにはプレミア版があって、そちらにはさらに、オーディオ対応のBluetoothモジュールとオーディオジャックが搭載されています。どうやらNFCによるBluetoothハンドオーバーを、このDiscovery単体で体験できるようです。BluetoothとSTM32はUARTでつながっていますが、これを介してBluetoothのデバイスアドレスを取得するのかな?

GPS+GSM

2014-02-14 19:28:44 | Weblog
AtmelのHPをチェックしていて。新しいリファレンスデザインの説明を発見。

http://www.atmel.com/Images/Atmel-42212-SAM-D20-GPS-Tracker-Reference-Design_AP-Note_AT03821.pdf

SAMD20の評価ボードへ接続可能な、拡張ボードとなっておりそのハードとソフトが解説されています。GPSとGSMモデムがついており、SMSを送れば自分がどこにいるかの応答を返してくれたり、あらかじめ設定しておいた領域外に持ち出されたらSMSでアラームを飛ばしたりといった機能が実装されているようです。シリアルのATコマンドでSMS制御が簡単にできるので、こういうアプリも比較的簡単に作れるんですね。羨ましい。あぁ、今は亡きW-SIMもちゃんと技術仕様が公開されていたならば、こういう工作もできたのになぁ。。。

さてこのデザインですが、ソフトの方も結構まともそうなので、少し読んでみようかと思っています。FreeRTOSを使っており、GPSやGSMのドライバはもちろん、SMSの処理なども全て FreeRTOS上のタスクとして実装されているようです。FreeRTOSはなんとかく敬遠していましたが、ATMELは自前で提供しているRTOSが無いこともあり、FreeRTOS対応のペリフェラルドライバを提供したりと、積極的に支援しています。FreeRTOSを勉強してみる材料としては、サイズとしても題材としても面白い内容だと思います。

これを機会に、FreeRTOSも使ってみようかな。

LPC810とFT800によるアラームクロック

2014-02-11 12:31:11 | Weblog
先日、紹介したLPC810ボードを使ったアラームクロックのデモ動画をようやくと作成、アップロードしました。



誤動作/誤操作を防ぐために、タッチを検出するにはわざとディレイを入れてあります。例えばダイアルボタンにタッチすると、少しして色が明るくなり、その機能が有効になるようにしています。説明するまでも無いと思いますが、緑ダイアルで時刻の設定、赤ダイアルでアラーム時刻設定をおこない、時計の文字板をタッチすることでアラームのオン/オフをおこないます。

画面の右下に数字が表示されますが、この数字はタッチされたオブジェクトの番号を示しています。ボタンやスライダーには異なる番号が割り当てられており、この番号が変化することを割り込みで検知することでボタンのタッチ検出をおこなっています。タッチしていない時には0になるので、リリースもこれで検出できます。

LPC810のフラッシュは、100バイトも残っていません。操作しないでいるとだんだんと画面が暗くなっていき、ついにはバックライトを消灯してFT800はスリープモードに入るのですが、動画だとカメラが明るく撮ろうと頑張ってくれてしまうので、暗さがわかりにくくなっています。ほんとは、FT800をスリープさせたら、LPC810の方も deep sleepくらいはさせたいところなのですが、そのコードを入れるだけのフラッシュが残っていません。

クロックは内蔵RC発振器をつかっていますので、時計として実用的に使うことはできないでしょう。やはり32K水晶をつなぐだけのピン数と内蔵RTCが欲しいところです。

Bricked

2014-02-06 23:43:09 | Weblog
先日、購入したFRDM-KL25ZのKinetisが使い物にならなくなりました。誤ってフラッシュのセキュリティ設定をしてしまい、フラッシュへの書き込みができなくなってしまったのです。ねむいさんの記事を読んでいたんので、Kinetisではこういうことが起こりうるということは知っていましたが、まさかこんなに簡単に自分がそういう目に会うとは。。

何も特別なソフトを作ろうとか、FSECレジスタを操作しようとしていたわけではありません。普通にGCCでビルドした結果を、OpenSDAのMSCドライバを使って書き込もうとしただけです。Windows上の操作としては、hoge.srecをFRKL25ZボードのドライブにDrag&Dropしようとしただけです。とっても簡単な操作で書き込みできるので、便利ではあるのですが、そこに大きな落とし穴がありました。

本来はhoge.srecをコピーしなくてはいけないのですが、自分でも気づかないうちにhoge.elfをドラッグして落としてしまったのです。コピーが終わってもソフトが動き始めないので、最初は何が起こったのかわかりませんでした。誤ってhoge.elfをコピーしたことに気付いたので、hoge.srecをコピーしたもののやはり動きません。コンパイル済みのサンプルLチカをコピーしてもやはり動きません。こうして、「どうやら壊してしまったようだ」と腹をくくるに至ったのです。

確認のために、CrossWorksにJTAGでつないでみると。。



あぁ、やっぱりセキュリティビットが設定されていたようです。試しにクリアーを試みてみたものの。。。



うぎゃー、やっぱりダメです。ログを確認してみると、



クリアに失敗しています。クリアもさせてくれないなんてあんまりだぁ。

こうして、わがFRDM-KL25Zは文鎮と化しました。せっかくJTAG用ヘッダを2つもハンダ付けしたのに、まっとうにJTAGを使ったのは、この死亡診断だけでしたよ。シクシク。

文鎮化することを英語ではBrickedと言うようです。FRDM-KL25Z brickedで検索してみたら、自分と同じように誤ってELFを書き込んだという人を見つけることができました。「この世界には同じ過ちをおかした人がいるんだ」ということを知ることができただけでも、心が癒されるのでした。