まごころせいじつ堂

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

Arduino LCD Keypad Shield

Arduino用のLCDシールドで5つのキーが付いたものがあった。

Arduino LCD KeyPad Shield (SKU: DFR0009)

 16×2のLCDに加えて5つのスイッチが付いている。これはADコンバータの入力につながっていて、押すボタンによってアナログ値を返す。ボタンを押した時の値は正確ではないので、ある範囲内で判定する。
 LCDの配線は前回のLCDシールドとは異なっているが、4bitモードで接続するので特に問題はない。


テスト用のサンプルソースはこちら
https://gist.github.com/64778cae2cc590e76747 

2012LCDkeypadshield
 
LCDキーパッド・シールド for ArduinoLCDキーパッド・シールド for Arduino

OEM
売り上げランキング : 36446

Amazonで詳しく見る
by G-Tools

Arduino:LCDシールド

前回はブレッドボード上でLCDを使ったのだが、配線がびよんびよんしたままだとよろしくないのでLCDシールドキットを購入した。スイッチサイエンス扱いだがアマゾンからも購入できる。1980円。

2012LCD01


 早速作ってみた。スイッチサイエンスのサイトに丁寧な作り方があるので参考になる。なおキットには説明書はありませんが、元々はPrototyping Lab ―「作りながら考える」ためのArduino実践レシピ (Make:PROJECTS)という書籍で使うキットらしいです(この本知らなかった)。

2012LCD02

 ハンダ付けは30分ぐらいで完了。これをArduino UNO R3に取り付けて確認。ピン配置は偶然にも前回ArduinoでFizzBuzzやった時と同じ配線だったのでそのまま実行できた。

2012LCD03


2012lcdshield
 

LCDシールドキット(青)LCDシールドキット(青)

スイッチサイエンス
売り上げランキング : 8129

Amazonで詳しく見る
by G-Tools

こういうのもあった。
LCDキーパッド・シールド for ArduinoLCDキーパッド・シールド for Arduino

OEM
売り上げランキング :

Amazonで詳しく見る
by G-Tools

Arduino USB関連メモ

ArduinoのUSBホストシールド、USBライブラリ、ATmega32U4などのメモ。

Lightweight USB library Framework for USB-SVR Series
lufa-lib 
ドキュメント(120219版)
LUFA Library 120219 

Alternative USB AVR Stacks

Arduino UNOのUSB-シリアルI/Fに使われているATmega8U4をいじる
Arduino サブキーボード 

Arduino Hacking / Building Arduino Atmega8u2 firmware on Linux

Arduino HIDに関するもの

Updating the Atmega8U2 on an Uno or Mega2560 using DFU

Adafruit 32U4のLeonardo化 

Looking for CDC and HID Keyboard Example for ATmega32u4

USBホストシールド
USB Host Shield (HID キーボード篇)

PICとUSBメモ

PICの開発ツール MPLABXはMacOSX用もある。
Macで始めるPIC開発環境まとめ(MPLAB X + C18 + PICkit2 + PK2CMD) 

PIC18F14K50といえば秋月のPIC18F14K50使用USB対応超小型マイコンボード
PICkit3でPIC18F14K50が使えない(その3 事情判明) [PICkit3] 

PICはようしらんのでぼちぼちやる。

Arduino PS/2キーボード関連メモ

PS/2 Keyboard or Mouse
Arduino PLAYGROUND: PS/2 Keyboard Ext2

ArduinoにPS/2日本語キーボードをつなぐ(カナ対応)

ArduinoにPS/2日本語キーボードをつなぐの続き。

 PS2Keyboardライブラリの国際化対応はドイツ語キーボードの記号入力を右Alt併用でできるようにしてあるので、この部分をカナに置き換えた。また、右Alt+SHIFTで拗音など入れられるように書き換えた。

カナ対応のライブラリはこちら。
https://gist.github.com/2356812 

サンプルのスケッチはPS2Simple_test_lcd.inoで、オリジナルのPS2Simple_testにLCD出力を追加している。キーボードから入力した1文字をLCDの左上に表示する。

□PS2Keyboardの修正方針
・通常入力とSHIFT併用入力でUSキー配列と異なる記号を置き換え。右Alt併用でカナ、右Alt+SHIFTでカナシフト入力。
・カナのコードは半角カナをそのまま出力。(utf8でない)
 →半角カナのコードとLCDのカタカナ表示コードが一致するので都合がよい。
  →通常のカナ(かな)のコードだと変換する関数が必要になるため。
 →オリジナルのソースはutf8対応で、0xc0より上の値をunicode変換している箇所があるのでコメントアウト
 ※0x7eはチルダ'~'だが、LCDでは'→'。しかしここだけ。
 
 あとは自由に修正して使ってみてください。いちばん面倒なカナとコードの対応部分は作りましたので:)

ArduinoにPS/2日本語キーボードをつなぐ

ArduinoにはPS/2キーボードを接続するライブラリがオプションであるので実験してみた。

 まずPS/2キーボードを接続するための治具。以前PS/2信号の観測用に作ったものを手直し。

PS2jig2

Pin1(DATA)とPin5(CLK)について、10KΩでPin4(+5V)にプルアップ。ジャンパで設定可能。

PS2jig0

ピンの番号は写真の通り。

PIN1→Arduino Pin2、PIN3→GND、PIN4→5V、PIN5→Arduino Pin3 に接続。

なお、キーボードのCLKを割り込みとして受け付けて処理するので、Arduino UNOの場合はPin3にしか接続できない。

 ではPS/2キーボードのライブラリを設定してみる。Arduino IDEには標準では入っていないので自分で入れる必要がある。
 ARDUINO PLAYGROUND - PS2Keyboard
ここを辿っていくと
PJRC Teensy PS2Keyboard Library
があるので、ここのPS2Keyboard.zip (ver2.3)をダウンロード。

展開すると以下のような構成になっている。
PS2Keyboard¥
keywords.txt
PS2Keyboard.cpp
PS2Keyboard.h
  examples¥
  international¥international.pde
  Simple_test¥Simple_test.pde

このPS2KeyboardフォルダをそのままArduino IDEのlibrariesフォルダの下にコピーする。
Arduino IDEを立ち上げ、Simple_test.pdeを読み込む。

以下、スケッチを修正。
const int DataPin = 2;
const int IRQpin =3; 

ビルドして転送が完了すると、キーボードの入力をターミナルに表示する。Arduino IDEのターミナルはウィンドウ右上の虫眼鏡みたいなアイコンをクリックすると出てくる。
シリアル通信を使っていると、USBケーブルを外したりするとArduino IDEからCOMポートが見えなくなってしまうらしい。この様な場合はWindowsを再起動して対処した。 

 さて、これで確認できるのはUSキーボード配列だが、ライブラリを見てみたら日本語キーボードにも簡単に対応させることができそうだ。すでにドイツ語キーボードの対応が入っているので、ここを参考にすればいけそうな感じ。

 で、作ってみた。PS2Keyboard.cppとPS2Keyboard.hを以下と差し替える。
https://gist.github.com/2334909

使い方はスケッチ内で以下のようにする。
keyboard.begin(DataPin, IRQpin, PS2Keymap_Japanese);

 これでPS/2キーボードが使えるようになった。ただしPS/2テンキーのみの製品は正しいコードが反映されなかったり、応答しなかったりしたので後で調査する。
 ドイツ語配列を元に修正しているので、Altキー修飾はそのままでサボっている。気が向いたらカナにも対応したい。

チェックに使用したキーボード:
USキーボード Microsoft Natural Keyboard Elite
日本語キーボード SANWA SKB-108L 日本語108キーボード
PS/2テンキー IBM KeyPadIII P/N 79F6401 ×応答せず 、FUJITSU FMV-NTKB1 テンキーボード ×コード化け
 

STM32F4 DISCOVERY

単精度の浮動小数点演算回路を持つARMマイコンSTM32F4の評価キット、STM32F4 DISCOVERY。
秋月電子などで扱っている。Cortex-M4、FLASH 1MB、RAM192KBも搭載して1650円という驚きの安さ。
STM32F4-DISCOVERY


STM32F4DISCOVERYDiscovery kit for STM32 F4 series - with STM32F407 MCU

キットには基板のみ。開発用に使うPCと接続するUSBケーブル(mini-B)が必要。
以下、説明書より:
Getting started
1.Check jumper position on the board,JP1 on,CN3 on(Discovery selected).
2.Connect the STM32F4-Discovery board to a PC with a USB cable 'tye A to mini-B' through USB connector CN1 to power the board. Red LED LD2(PWR) then lights up.
3.Four LEDs between B1 and B2 buttons are blinking.
4.Press user button B1,then MEMS sensor is enabled.Move the board and observe the four LEDs blinking according to the motion direction and speed.
5.To study or modify the Discover project related to this demo,visit www.st.com/stm32f4-discovery and follow the tutorial.
6.Discover the STM32F4 features,download and execute programs proposed the list of projects.
7.Develop your own applications using available examples.

 USBケーブルを接続すると基板上のLED3,4,5,6(橙、緑、赤、青)が回転するように点滅する。
青色のボタンを押すと基板の傾きによりLEDが点滅する。もう一度青色のボタンを押すと最初に戻る。
黒いボタンはリセット。

 USBケーブルを挿すとデバイスドライバが見つからない旨のエラーがでるが、このマイコンはST-LINK/V2相当のデバッガで接続されているので対応するデバイスドライバをインストールする。
以下からダウンロード。
ST-LINK/V2 in-circuit debugger/programmer for STM8 and STM32

 開発用のIDEは他社提供のものを使うらしい。説明書にあったのは
Altium,TASKING VX-Toolset
Atollic,TrueSTUDIO
IAR,EWARM
Keil,MDK-ARM

 今回はAtillic TrueSTUDIOをインストールしてみた。
無償のLiteバージョンを使用する。
Atollic TrueSTUDIO® for ARM® Lite v3.0.0

インストーラを起動すると、ブラウザが開いてRegister Lite Version ID登録の画面がでる。ここのcomputer ID欄にインストーラ画面に表示されている文字列をコピペする。
登録情報を送信すると、記入したメールアドレスに登録用のキーが送られてくるので、それをインストーラ画面にコピペして続行するとインストール完了。

とりあえずここまで。

ATmega32U2/16U2/8U2にPS/2機能はあるのか?

ATmega32U2(ATmega16U2,ATmega8U2)のドキュメントを眺めていたらブロックダイアグラムにPS/2の箱が描いてある。USBの端子と兼用みたいだが、本文には何も書かれていない。しかしAT90USB82(AT90USB162)の同じI/Oレジスタ設定には記載されている。ちょっと抜き出してみる。

UPOE - USB/PS2 Software Output Enable Register

R/W Bit 7:6 – UPOE[1:0]: USB/PS2 Output enable
R/W Bit 5:4 – UPDRV[1:0] : USB/PS2 direct drive values
R Bit 3 – SCKI : SCK Input value
R Bit 2 – DATAI : DATA Input value
R Bit 1 – DPI : D+ Input value
R Bit 0 – DMI : D- Input value

このうち、ATmega32U2ではBit3 SCKIとBit2 DATAIの記載がない。

 ひょっとして同一マクロを使っているとしたら、ATmega32U2でもPS/2入力が使えるかも知れない。もちろん保証外だが。

なおAT90USB82ではD- がSDATA、D+がSCLK兼用となっている。
 
AT90USB82 AT90USB162 datasheet
ATmega8U2/16U2/32U2 datasheet

パソコンによる波形観測

以前トラ技の特集で見たような気がして検索してみたら、あった。


高速リアルタイム スペクトラムアナライザー WaveSpectra 

多機能 高精度 テスト信号発生ソフト WaveGene

 どうもマイクロカセットテープの再生速度が遅いみたいなので波形で確認したい。そこで以下の手順で観測した。

(1)WaveGeneで1KHzの正弦波を発生し、基準となるマイクロカセットレコーダーで録音する。
(2)録音したテープを測定したいマイクロカセットプレーヤで再生し、その音をWaveSpectraで観測する。

 同じカセットレコーダで録音と再生をしたら同じになるはずであり、測定しようとするマイクロカセットプレーヤが再生専用なのでこのようにした。
(1)で使うのはOLYMPUS Pearlcorder S722
(2)での観測対象はELEC ELS-1 マイクロカセットヘッドフォン

 で、観測結果。
les1-1khz

これによるとスペクトルアナライザのピークが約900Hzになっている。1KHzの波形と比べ10%も遅くなっている。

また、波形全体をみると大きさに波がある。周期までは観測していないが、耳で聞いて感じる大小の変化とおなじようだ。このプレーヤは自分で駆動系を修理したので、そのせいかもしれない。まあもともと動いていなかったし古いので正確なことはわからないが。

 ということでこの実験はWindows7(32bit) Dell Precision M4300内蔵のスピーカーとマイクで行った。たいへん手軽にできてしまい便利だ。
 作者のefu氏に感謝。
記事検索
プロフィール

hardyboy

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