まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

2014年08月

Arduino Leonardo/Micro互換のPololu A-Star 32U4 Micro

 A-Star 32U4 Microは超小型のArduino Leonardo/Micro互換マイコン。
A-Star 32U4 Micro
(スイッチサイエンス)

A-Star 32U4 Micro(Pololu)

 Arduino Microより小さい。ピンアサインはこちら。
A-Star 32U4 Micro PinAssign

 ピンの一部を出さないことでサイズを小さくしている。Digital13はLEDのみで、Analog2-5はない。32U4だと一部のDigitai端子にアナログ入力が割り当てられるので、使いたければこちらを使用するという考え。
2014pololu

これまでの選択肢としてはこういうのがあった:
Arduino Micro
Pro Micro 5V/16MHz
ダヴィンチ(ストロベリーリナックス)
32U4ブレークアウト
(スイッチサイエンス)

A-Star Programmable Controllersの仲間にはArduino Microと同じサイズのものがあり、動作電圧のバリエーションがある。

以下はA-STAR 32U4 MicroのUSB情報。

Pololu A-Star 32U4:
  製品 ID:0x2300
  製造元 ID:0x1ffb
  バージョン: 1.00
  速度:最高 12 Mb/秒
  製造元:Pololu Corporation
  場所 ID:0xfd120000 / 4
  利用可能な電流(mA):500
  必要な電流(mA):500
 


Galileo / Galileo Gen2のGPIO速度測定

 Galileo Gen2はGPIOがI2CのI/Oエクスパンダ経由からダイレクト制御に変わったということで動作速度が改善されてある。実際、キャラクタLCDはちゃんと表示された。簡単なスケッチを書いて動作速度を確認した。

 以下のスケッチでピン0〜13について0/1を繰り返し動作速度を求める。
https://gist.github.com/houmei/7a9a04c019c31098497a

Galileo 1.0.2 10000ループ
0 44534ms 4453.4us 224.5Hz
1 44684ms 4468.4us 223.8Hz
2 44514ms 4451.5us 224.6Hz
3 44947ms 4494.7us 222.5Hz
4 44785ms 4478.5us 223.3Hz
5 45071ms 4507.1us 221.9Hz
6 44928ms 4492.8us 222.6Hz
7 45096ms 4509.6us 221.7Hz
8 45207ms 4520.7us 221.2Hz
9 45225ms 4522.5us 221.1Hz
10 45298ms 4529.8us 220.8Hz
11 45265ms 4526.5us 220.9Hz
12 45097ms 4509.7us 221.7Hz
13 45188ms 4518.8us 221.3Hz

Galileo Gen2 1.0.2 100000ループ
0 222ms 2.22us 450.5KHz
1 222ms 2.22us 450.5KHz
2 222ms 2.22us 450.5KHz
3 222ms 2.22us 450.5KHz
4 257ms 2.57us 389.1KHz
5 257ms 2.57us 389.1KHz
6 257ms 2.57us 389.1KHz
7 56093ms 560.93us 1.783KHz
8 56027ms 560.27us 1.785KHz
9 257ms 2.57us 389.1KHz
10 222ms 2.22us 450.5KHz
11 257ms 2.57us 389.1KHz
12 222ms 2.22us 450.5KHz
13 257ms 2.57us 389.1KHz

Galileo Gen2はGalileoにくらべて充分高速。ピン7,8だけ極端に遅いのはここだけI/Oエキスパンダ経由になっているからと思われる。他のピンは450KHzと390KHzに分かれているがこれはなんだろう?

Galileo2届いた

 Galileo2届いた。スイッチサイエンスから購入。Galileoの時と同じくパソコンショップでも購入できるようだ。
Intel Galileo Gen 2開発ボード(スイッチサイエンス)

 GalileoとGalileo2の比較レビュー。
Arduino互換IoT向け開発ボードIntel Galileo Gen 2ってどこが変わった?(ひとりぶろぐ)

 さて、以下のドキュメントを読んで準備。
Intel Galileo Gen 2 Development Board Documents

 こちらからGalileo/Galileo2用のArduino IDE 1.5.3をダウンロード。
Software Downloads - Drivers

 MacOSXではアプリケーション以下のサブフォルダに入れたり長いファイル名では動かないことがあった。Arduino→ArduinoG513に改名して置く。
[ツール]→[マイコンボード]→[Intel Galileo 2]を選択。シリアルポートはGalileoと同じでケーブルを接続しただけではすぐには現れない。一分ほど待って選択。
[ヘルプ]→[Firmware update]で確認。現在、最新は1.0.2なのでそのまま。
 サンプルスケッチの01.Basics→BlinkでLチカ確認。USBホストコネクタ近くの緑色LEDが点滅する。

 さてGPIOの速度が気になる所だがLCDを使って確認することにした。Galileoでは表示はできるが更新が遅くとても使えない感じだった。

 LCDでFizzBuzzをやってみる。問題なく動作した。Galileoではinit.lcd(...)を追加しないと動作しないというワークアラウンドがあったが、GPIO直結のせいか必要がなくなった。
https://gist.github.com/houmei/a009ea0622b92779db7b

2014galileo2



Intel Galileo Gen 2 Disti Kit Arduino互換のインテル製開発ボード
Intel Galileo Gen 2 Disti Kit Arduino互換のインテル製開発ボード
Intel
売り上げランキング : 36854


Amazonで詳しく見る
by G-Tools
LCDシールドキット(青)
LCDシールドキット(青)
スイッチサイエンス
売り上げランキング : 80600


Amazonで詳しく見る
by G-Tools

 

Arduinoで任意のUSBコードを送る 解決編

 Arduino Leonardo/MicroはUSBキーボードとして使えるが、Usageコードが101より大きいものは無視されるという問題があった。
PS/2キーボード変換器の製作(18) USBキーボードの無視されるキーについて
対策箇所はわかっていたが、当時はバイナリにパッチするという手段しか思いつかず強引にやっていた。
PS/2キーボード変換器の製作(19) HEXファイルにパッチを当てる
 この後、Arduino IDEのフォルダ内にあるソースをいじると反映されることを知った。Arduino IDEは毎回ソースから全部ビルドしてたのか!コアな部分はコンパイル済と勝手に思っていた。
Turning an Arduino Leonardo into a joystick.(Imarginary Industries)
 この記事ではUSBAPI.h、HID.cppを修正することによりジョイスティックのUSB-HIDを追加している。ということはArduino IDEにあるHID.cppのHID Report Descripterを修正することで日本語キーボードの機種で¥マークなどを入力できるようになるはずだ。
MacOSXだと修正対象のソースはContents/Resources/Java/hardware/arduino/cores/arduino/以下にある。
https://gist.github.com/houmei/2ad9f7a713f46149e72f

HID.cppを差し替え、ライブラリを組み込む。このライブラリはHID.cpp/USBAPI.hと一体化もできると思うが以前作ったのをそのまま流用しているのでこうなっている。

2014shot1
 これはDavinciにArduino Microのファームウェアを書き込んだもの。pin4にスイッチを付けてフリスクの大きめのケースに入れてみた。たったこれだけ。日本語キーボードがついてるものがWindowsXPの古いノートPCしかなかったのでそれに接続して¥マークが入力できることを確認した。

https://gist.github.com/houmei/0ac6873618caa02f22b4

 USBキーボードのUsageコードについては以下からどうぞ。注意点としてUSキーボードのレイアウトが基準。
USB HID to PS/2 Scan Code Translation Table

 ああ、これで数年悩んでた問題が解決だ。変なバイナリパッチ作った時点で誰も突っ込んでくれないのね。


 ついでにPrint ScreenのUsageコード(0x46)を設定して最近話題のエビデンス画面スクリーンショット用ボタンにしてみた。これでハードコピー取り放題よ。
2014shot2

 
記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ