Google I/O 2012 基調講演


20120628google_glass

Google I/O 2012 が開催されました。
YouTube で生中継されました。
日本時間の6月28日1時より基調講演が始まりました。
徹夜して見ていました。

今回は盛りだくさんでした。
新型のガジョットとして、Nexus 7、Nexus Q、Google Grass が発表されました。
特に Google Glass のデモは圧巻でした。
サンフランシスコの上空からパラシュートで降りていきて、会場のあるビルの屋上に着地したあと、マウンテンバイクで会場まで入ってきました。
その間、Google Glass から Google Hangout 経由で インタネット生中継をしました。

YouTube Preview Image

参考
速報:Google I/O 2012 基調講演。Android 4.1 Jelly Bean、Nexus 7 タブレット発表


メニューボタンの罠


20120623menu_buttol

Android 4.0 以降から、メニューボタンが廃止されました。
メニューボタンの代わりに、上段にアクションバーが表示されます。
といっても、相変わらずメニューボタンのある機種も売られていますが。

プログラム開発の方法も、従来のメニュー方式からアクションバー方式に変わっています。
アクションバー方式は、互換パッケージが用意されていますが。
動作する実機のバージョン毎に、2.x系、3.x系、4.x系と数種類のプログラムを記述する必要があります。
参考:サンプルコード ActionBarCompat

これは面倒なので、未だにメニュー方式を使っている人も多いと思います。
下位互換のために、メニュー方式を使っているプログラムでは、下段に action overflowアイコンが表示されます。

20120623action_overflow

Android 4.0 以降でも、メニュー方式のプログラムが作成できます。
特に警告も出ません。
メニューボタンのある機種では、特に問題ありませんが。
メニューボタンのない機種では、action overflow アイコンが表示されないという問題が発生します。

この問題を回避するには、Android 2.x でビルドするしかなさそうです。
なんとも、開発者泣かせですね。

参考
Google、AndroidのMenuボタンに“告別”


横浜ロボット部のADK温度センサ


横浜ロボット部 ADK製作実習 の続きです。

yokorobo ボードに温度センサをつける。
ADK製作実習では、プログラムは原田さんに書き込んで頂いたが、今回は自分で作成する。
方法は Android ADK プログラミング&電子工作バイブル に掲載されています。
プログラムは ソシム社のサイト からダウンロードできます。

1. yokorobo ボード側
1-1. プロジェクトの作成
PIC-ADK開発環境 と同様に、ADKのプロジェクトを作成する。

1-2. プロジェクトの変更
温度センサに変更する
下記を2つのファイルを変更する。
– main.c (変更)
– HardwareProfile.h (変更)

※ main.c はダウンロードした chap5/ADK_Thermometer/ に入っている。

1-3. プロジェクトのビルド
Clean and Build Main Porject を実行する。
エラーなく終了した。(^o^)

1-4 PIC に書き込む
yokorobo ボードに PICKit3 を接続する。
Run Main Porject を実行する。

2. Android側
2-1 Eclipse 環境
Eclipse に ダウンロードした chap5/Thermometer/ をインポートする。
Androrid アプリケーションを実行(Run) する。
エラーなく終了した。(^o^)

2-2 Android にインストールする
Android端末を接続して、再度 実行する。

3. 実機確認
(1) yokorobo ボードに温度センサをつける
(2) yokorobo ボード と Android を接続する
(3) yokorobo ボード の電源を入れる
(4) Android に「このUSBアクセサリーが接続されたときに…」という表示がでる
(5) Android に室温が表示された。(^o^)


PIC24FJ64GB002のPLL98MHzの設定


PIC24FJ64GB002にて、USBホストを使用するためには、PLL98MHz を設定する必要がある。
先人のソースを見ていたところ、いくつかバリエーションがあったので、整理しておく。

1. 標準の設定
(1) CW2 (FLASH CONFIGURATION WORD 2 )
(1-1) POSCMOD_NONE
POSCMD = 11
Primary Oscillator Configuration bits
11 = Primary Oscillator is disabled

(1-2) I2C1SEL_PRI I2C1
I2C1SEL = 1
I2C1 Pin Select bit
1 = Use default SCL1/SDA1 pins

(1-3) IOL1WAY_OFF
IOL1WAY = 0
IOLOCK One-Way Set Enable bit
0 = The IOLOCK bit can be set and cleared as needed, provided the unlock sequence has been
completed

(1-4) OSCIOFNC_ON
OSCIOFCN = 0
OSCO Pin Configuration bit
0 = OSCO/CLKO/RA3 functions as port I/O (RC15)

(1-5) FCKSM_CSDCMD
FCKSM = 10
Clock Switching and Fail-Safe Clock Monitor Configuration bits
1x = Clock switching and Fail-Safe Clock Monitor are disabled

(1-6) FNOSC_FRCPLL
FNOSC = 000
Initial Oscillator Select bits
000 = Fast RC Oscillator (FRC)

(1-7) PLL96MHZ_ON
USB 96 MHz PLL Start-up Enable bit
1 = 96 MHz PLL is enabled automatically on start-up

(1-8) PLLDIV_NODIV
USB 96 MHz PLL Prescaler Select bits
000 = Oscillator input used directly (4 MHz input)

(1-9) IESO_OFF
IESO = 0
0 = IESO mode (Two-Speed Start-up) is disabled

(2) CLKDIV (CLOCK DIVIDER REGISTER)
初期値は 3100
このままでも良いし、明示的に 0100 を設定してもよい

(2-1) ROI = 0
Recover on Interrupt bit
0 = Interrupts have no effect on the DOZEN bit

(2-2) DOZE = 000
CPU Peripheral Clock Ratio Select bits
000 = 1:1

(2-3) DOZEN = 0
DOZE Enable bit(1)
0 = CPU peripheral clock ratio is set to 1:1

(2-4) RCDIV = 001
FRC Postscaler Select bits
001 = 4 MHz (divide-by-2)

(2-5) CPDIV = 00
USB System Clock Select bits (postscaler select from 32 MHz clock branch)
00 = 32 MHz (divide-by-1)

(2-6) PLLEN = 0
96 MHz PLL Enable bit
0 = Disable PLL

2. PLLDIV_DIV2 のときの設定
PLLDIV_DIV2
USB 96 MHz PLL Prescaler Select bits
001 = Oscillator input divided by 2 (8 MHz input)

CLKDIV に 0000 を設定する
CLKDIVbits.RCDIV = 0
FRC Postscaler Select bits
000 = 8 MHz (divide-by-1)

3. PLL96MHZ_OFF のときの設定
USB 96 MHz PLL Start-up Enable bit
0 = 96 MHz PLL is enabled by user in software (controlled with the PLLEN bit in CLKDIV)

下記のように CLKDIV を使って PLL を起動する

unsigned int  = 600;
CLKDIVbits.PLLEN = 1;
while(pll_startup_counter--);
CLKDIVbits.PLLEN = 0;

PIC24FJ64GB002のADK開発環境


Microchip 社からADKキットが発売されています。
PIC24F Accessory Development Starter Kit for Android

ADKキット(PIC24FJ256GB110) の相当品を PIC24FJ64GB002 で実装しました。
実機には 横浜ロボット部の基板 を使用しました。

1. プロジェクトの作成
PIC-ADK開発環境 と同様に、ADKのプロジェクトを作成する。

2. プロジェクトの変更
PIC24FJ64GB002用に変更する
下記を3つのファイルを作成・変更する。
内容は割愛する。
– PIC24FJ64GB002_PIM.h (新規)
– main.c (変更)
– HardwareProfile.h (変更)

3. プロジェクトのビルド
Run -> Clean and Build Main Porject を実行する。
エラーなく終了すれば、OK。

作成したプロジェクトはこちらから。
http://code.google.com/p/ohwada/wiki/PIC24FJ64GB002ADK

4. 実機確認
4.1 PIC側
(1) PIC24FJ64GB002 に下記を接続する。
– USBコネクタ 1個
– LED 8個
– プッシュボタン・スイッチ 4個
– ポテンシャルメータ(可変抵抗) 1個
(2) PICKit3 を接続する
(3) Run -> Run Main Porject を実行する。

4.2 Android側
(1) マーケットから入手する
BasicAccessoryDemo – Microchip Technology Inc

(2) または、Microchip Application Libraries に含まれているソースからビルドする

4.3 PIC と Android を接続する
(1) PIC と Android を接続する
(2) PIC の電源を入れる
(3) Android に「このUSBアクセサリーが接続されたときに…」という表示がでる
(4) Android から LED を点灯できれば、OK

YouTube Preview Image

関連
横浜ロボット部 ADK製作実習
PIC-ADK を Android 4.1 対応にする

参考
PIC24FJ64GB002でADKを試す


PIC-ADK開発環境



Microchip 社からADKキットが発売されている。
PIC24F Accessory Development Starter Kit for Android

PIC と Android のプログラムも公開されている。
Microchip Application Libraries

1. プロジェクトの作成
Create New Project からADKのプロジェクトを作成する。

2. ライブラリのコピー
(1) Android Accessories/Basic Communication Demo – OpenAccessory Framework/Firmware/ からプロジェクトのディレクトリに下記をコピーする
– main.c
– usb_config.c
– usb_config.h
– HardwareProfile.h
– HardwareProfile – PIC24F Starter Kit.h (ターゲットに合わせて)

(2) Common ディレクトリを作成し、
Microchip/Include/ から下記をコピーする
– Compiler.h
– GenericTypeDefs.h
– struct_queue.h

(3) USB ディレクトリを作成する
(3-1) Microchip/Include/USB/ から下記をコピーする
– usb.h
– usb_ch9.h
– usb_common.h
– usb_hal.h
– usb_hal_pic24.h
– usb_host.h
– usb_host_android.h

(3-2) Microchip/USB/ から下記をコピーする
– usb_hal_local.h
– usb_host_local.h
– usb_host.c

(3-3) Microchip/USB/Android Host Driver/ から下記をコピーする
– usb_host_android_protocol_v1_local.h
– usb_host_android_protocol_v1.c
– usb_host_android.c

3. プロジェクトの設定
3-1. プロジェクトにファイルを追加する
MPLAB X IDE は、ディレクトリにファイルを置くだけでは、プロジェクトのファイルとして認識してくれないみたいです。
(1) New Logical Folder から論理ディレクトリを作成する
(2) Add Existing Item からファイルを選択する
 ファイルをまとめて選択する方法がわからなかったので、1つ1つ選択した。
 えらく面倒だった (^^;

3-2. Include パスを設定する
MPLAB X IDE は、上記の方法で Header File を指定しても、コンパイル時に認識してくれないみたいです。
Properties -> x16-gcc -> Preprocessing and messages -> C Include dirs から、
Common ディレクトリと USB ディレクトリ を設定する

3-3. Heap size を設定する
Properties -> x16-ld から、
Heap size を 3000 に設定する。

4. プロジェクトのビルド
Run -> Clean and Build Main Porject を実行する。
エラーなく終了すれば、OK。

5. 実機確認
Starter Kit を持っていないので、実機確認はできず。

PIC24FJ64GB002 を使って Starter Kit もどき を作ってみました。
PIC24FJ64GB002のADK開発環境


MACのPIC開発環境


今までは、PIC の開発環境として、Windows 版の MPLAB IDE が一般的であった。
昨年、Windows の他に、MAC や Linux に対応した MPLAB X IDE が公開された。
そろそろ実用的になったようなので、MAC に構築してみた。

インストール
microchip 社のサイトから、下記をダウンロードして、インストールする。
MPLAB X Integrated Development Environment (IDE)
http://www.microchip.com/pagehandler/en-us/family/mplabx/

バージョンは5月30日時点のもの。
MPLAB X IDE v1.20
MPLAB C18 Lite Compiler for PIC18 MCUs v3.40
MPLAB XC8 Compiler v1.00
MPLAB XC16 Compiler v1.00
MPLAB XC32 Compiler v1.00

Cコンパイラは4種類あり、PIC との対応は下記のようである。
C18: PIC18
XC8: PIC12,14,16,18
XC16: PIC24、dSPIC
XC32: PIC32

XCのインストールでは、Activation Key を要求されるが。
無料版のときは、何も入力せず、Next を押す。

動作確認
起動すると、Start Page が表示される。
チュートリアルが載っているので、さっくり見ておくといい。

(1) 「Create New Project」 から「LEDテストプログラム」を作成する。
ソースコード (PIC24FJ64GB002用) はこちらから。
http://code.google.com/p/ohwada/wiki/PIC24FJ64GB002LED

(2) Run ->「Clean and Build Main Porject」を実行する。
エラーなく終了すれば、OK。

実機確認
(1) PICマイコン (PIC24FJ64GB002) の 26番ピン (RB15) に LED を接続する。
(2) PICマイコンに PICkit3 を接続する。

(3) PICkit3 から電源を供給する。
プロジェクトを Control + クリック で開く。
Properties -> PICkit3 -> Power から、
「Power target circuit from PICkit3」 をチェックする。

(4) Run ->「Run Main Porject」を実行する。
(5) LED が点滅すれば、OK。

補足
ググると、MPLAB X は PICkit3 に対応していないという記事が見つかります。
MPLAB X V1.20 では、特に何もしなくても、使用できました。

参考
PIC開発環境 MPLAB X を Mac にインストールする
MPLAB XとPICkit3でPICベースADKを動かす


MAC が修理から戻ってきた (4回目)


MacBookPro が起動しなくなったので、修理に出していたものが戻ってきた。
これで修理は4回目。 前回は3月

交換部品
922-9771 Bracket, Front Hard Drive, with IR / Sleep / HD Cable

またもや、ブラケットを交換したようだ。
何度も同じ部品を交換するようでは、設計不良という気がする。

AppleCare Product Repair Summary

関連
MAC が修理から戻ってきた
MAC が修理から戻ってきた (2回目)
MAC が修理から戻ってきた (3回目)
・MAC が修理から戻ってきた (4回目)
新しい MAC が届いた


横浜ロボット部 ADK製作実習


2012年6月2日に KBIC(かわさき新産業創造センター) で開催された横浜ロボット部のADK製作実習に参加した。
http://atnd.org/events/29418

今回は、PIC版ADKを組立てて、アンドロイド端末から制御する実習です。
横浜ロボット部のメンバーが執筆した Android ADK プログラミング&電子工作バイブル の出版記念を兼ねています。
実習内容は、第5章 Androidで温度モニタリング に沿ったものです。

組立て前
基板と部品

組立て
基板のスルーホールに部品を挿入し、ハンダ付けする。
久しぶりのハンダ付けなので、最初はうまくハンダが乗らなかった。
少しずつ慣れてきて、最後に付けたピンヘッダはまずまずの仕上がり。

組立て後
PICボードの完成

ボード単体の動作確認
PICボードにLEDを接続する。
原田さんのPCから、PICにテストプログラムを書き込んで貰う。
無事にLEDが点滅した。

ADKの動作確認
PICボードに温度センサを接続する。
原田さんのPCから、PICにADKプログラムを書き込んで貰う。
原田さんのアンドロイド端末と接続する。
温度センサを指で摘むと、アンドロイド端末に表示される温度が上昇する。

完成
ブレッドボードにPICボードと温度センサを搭載する