PSoC1(CY8C27443)搭載 Arduino ピン互換ボード
PSoC1duino(C) 2013 Junichi Akita重要説明事項(必ずご一読ください )本キットは個人が PSoC1 を使った電子工作を楽しむことを目的としています。
本キットで提供しているハードウェア、ソフトウエアの全部もしくは一部を製品に組み込んだり販売したりすることはおやめください。本キットを使ったことにより直接的、間接的に被害、損害を被ったとしても一切補償しません。
組み立てに失敗した場合や使用中に故障した場合でも交換、保証、返金などには一切応じられません。
本キットは汎用的に使えるハードウェアの提供を目的としています。このキットで作ることができると例示されたものは本キットの可能性を示したものです。
例示されたものすべてを実際に製作したわけではありません。
充分注意して設計をしていますが、重大な設計ミスやバグがないことの保証はありません。回路、使用部品、基板、ソフトウエアなどは予告なく変更することがあります。
このマニュアルで説明しているボードやアプリケーションソフトウエアはこのマニュアル執筆時点のバージョンを使っていますので、ハードウエア・ソフトウェアの変更により、画面デザイン、操作方法、仕様が変わることがあります。

情報・ソフトウエア入手先
最新情報は下記サイトにて入手可能です。
· PSoC1duino 情報
http://j.mp/PSoC1duino または
http://ifdl.ec.t.kanazawa-u.ac.jp/~akita/plan/PSoC1duino/· トランジスタ技術ウェブサイト
http://toragi.cqpub.co.jp/

用意するもの· PSoC1duino ボード· USB ケーブル(A-miniB)· PC (Windows XP/Vista/7/8)

1.準備
USB ドライバの準備とインストール
CD 内の"CDM 2.08.24 20WHQL 20Certified.zip" を解凍しておきます。
その後、PSoC1duino を PC に USB ケーブルで接続し、ドライバのインストールを求められた場合は、さきほど解凍したフォルダを指定します。
念のため、デバイスマネージャ(コンピュータ→プロパティから:Win7 の場合)を開き、COM ポートが割り当てられているのを確認します。
アプリケーションのインストール
Cypress 社の Web サイト(http://www.cypress.com/) にアクセスし、 Support→
Software Downloads から「PSoC Designer」をダウンロードし、インストールしておきます。なおダウンロードの際にユーザ登録（無料）が必要です。
続いて、CD 内の"PSoC1term200.msi"を実行し、PSoC1duino 用書込・ターミ
ナルアプリケーション PSoC1term をインストールしておきます。
また CD 内のプログラム作成用テンプレート "PSoC1duino_Template.zip" を作業フォルダにコピーし、展開しておきます。

2.PSoC1term の機能と操作
PSoC1term は、PSoC1term でよく使う「プログラム書き込み」と「デバッグ用シリアル端末」を統合したアプリケーションです。 PSoC1term を起動すると、以下のようなウインドウが現れます。主な操作と機能は以下の通りです。

(1)

COM: PC に接続されている COM ポートの一覧。 PSoC1duino の COMポートを選択しておく。

(2)

Baud(Write): プログラム書き込み時の通信速度 (通常は変更しない )(3)

HEX File: 書き込むプログラムの HEX ファイルを指定する(4)

PSoC1 type: PSoC1duino に載っている PSoC1 の種類を選択 (通常は変更しない)(5)

Write: 指定したプログラムを書き込む※シリアル端末が開かれているときは自動的に閉じる(6)

Baud(Term): シリアル端末の通信速度 (標準では 9600bps のままでよい )(7)

TermOpen: シリアル端末を開く(8)

Sending: PC から PSoC1duino に送る文字を入力する(9)

Receiving: PSoC1duino から PC へ送られてきた文字が表示される(10) Clear: Sending と Receiving の内容をクリアする

(11) Binary: このチェックボックスをチェックした状態で、右側のテキストボックスに 16 進数表記文字列入力してから右側の Send ボタンを押すと、バイナリデータを送信する。(例:"120a"→0x12 と 0x0a の 2 バイトが送信される)(12) Quit: PSoC1term を終了する

3.動作テストPSoC1duino 購入時には、次のような機能のテスト用プログラムが書き込まれていますので、これを使って動作確認をします。
l

起動時に LED(オレンジ)が点灯し、"S"の 1 文字を送信(9600bps)する

l

PC の COM ポートから 1 バイトのデータを受信 (9600bps)し、「その値+1」を送り返す。 (例えば"a"を送ると"b"が返ってくる)l

1 バイト受信するとごとに LED の点灯・消灯が切り替わる※ こ の テ ス ト 用 プ ロ グ ラ ム の プ ロ ジ ェ ク ト フ ァ イ ル 一 式 は 、 CD 内 の"PSoC1duino_test.zip" です
1. PC に PSoC1duino を接続し、PSoC1term を起動すると「COM」のところに先ほどデバイスマネージャで確認した COM ポートが現れているのを確認する(複数の COM ポートがある場合は PSoC1duino の COM ポートを選択する)。

2. "Term Open"ボタンを押すと、PSoC1 がリセットされ(DTR リセット)、"Receiving"に"S"が表示される

3. Sending に適当な文字を入力すると、その次の文字 (例: "a"→"b")が表示される。1 文字入力するごとに LED の点灯・消灯が切り替わる

4. TermClose ボタンを押すとシリアル端末画面がグレーになって閉じられる。
再度 TermOpen ボタンを押すと、PSoC1 がリセットされプログラムの実行が始まり、2.に戻る。

4. PSoC1duino ボードのピン配置・設定
PSoC1duino には以下のようなコネクタ・設定用ジャンパピンがあります。

· USB コネクタ(CN8)※裏面に microUSB コネクタを実装できるパターンがあり 、 市 販 の microUSB コ ネ ク タ を 実 装 す る こ と でmicroUSB 接続もできます。ただし自己責任にてご使用ください。

· DC コネクタ: +5V・センター+の AC アダプタ(ジャック内径 2.1mm)を接続できる。使用する電流が不足する場合は AC アダプタを使う。
· I/O コネクタ(D0-D7)(CN1): PSoC1 のピンが接続されている (表 1)· I/O コネクタ(D8-D11)(CN2): PSoC1 のピンが接続されている (表 1)· I/O コネクタ(A0-A5)(CN3): PSoC1 のピンが接続されている (表 1)· I/O コネクタ(電源・A6-A7)(CN4): PSoC1 のピン等が接続されている (表 1)· 給電方法選択 (JP2): PSoC1duino の電源を USB バスパワーとするか DC コネ
クタに接続した AC アダプタとするかを選択する· PSoC1 電源電圧設定 (JP1): PSoC1 の電源電圧を 5V と 3.3V から選択する· A4 ピン機能切り替え (JP3): I/O コネクタの A4 ピンを、PSoC1 の P0.4 または P1.5 のどちらに接続するかを選択する。 (P1.5 は I2C の SDA ピンとして使用可)

· A5 ピン機能切り替え (JP4): I/O コネクタの A5 ピンを、PSoC1 の P0.5 または P1.7 のどちらに接続するかを選択する。 (P1.7 は I2C の SCL ピンとして使用可)· ISP 端子(CN5): プログラム書き込みのために PSoC1 用の書き込み機である
MiniProg を接続する(通常は使用しない )· Arduino ICSP 互換コネクタ (CN6): Arduino Uno などにあるプログラム書き込み用端子と同一の位置に、表 2 のような信号線が引き出してある。一部のArduino シールドにはこの端子を SPI 通信のために使うものがあるため、必要に応じて使う。
· リセットスイッチ (SW1): PSoC1 のリセットをかける。
· インジケータ LED(LED1～3): PC からの送信中(TXD:赤)、PC が受信中(RXD:緑)の各状態と、 D11(P1.6)に接続された LED(オレンジ)。

5. プログラムの開発から実行までの手順
PSoC1duino へのプログラムを USB(COM ポート)経由で書き込むためには、専用のブートローダが必要です。 PSoC1 のブートローダは、 Cypress 社がアプリ
ケーションノート AN2100 として実装例を公開していますが、 PSoC1duino ではこれを少し改造して転送速度を速めたブートローダをあらかじめ書き込んであります。自分でプログラムを作るときには、以下のようにブートローダを含むひな形(テンプレート )を使います。

1. PSoC Designer で新規プロジェクトを作成する。

2. プロジェクト名などを入力後、プロジェクトの作成方法を"Clone"とし、「Clone from Project」で以下のいずれかのプログラム作成用テンプレートを選ぶ。

· 「PSoC1duino27443_Template_with_Modules 」: ボード上の UARTや LED のためのユーザモジュールが配置済みなので通常はこちらを使う。

· 「PSoC1duino27443_Template 」: PSoC1 のユーザモジュール等を何も配置していない真っ白な状態からプログラム開発を始める場合はこちらを使う。

3. PSoC Designer 5.2 以降では、boot.tpl を更新する("Replace the boot.tpl")
か聞かれますが、更新しない ("keep the current boot.tpl")を選んでおきます。

4. 通常通り PSoC1 のプログラムを作成する。 Device Editor でユーザモジュールを配置したり、プログラムを記述したりする。完成したら Generate やBuild を行う。
※一般的な PSoC Designer での PSoC1 のプログラム開発については、インターネット上の情報や書籍を参照してください
5. PSoC1term を起動し、できあがった HEX ファイ
ルを指定して「Write」ボタンを押すと、書き込みが行われる。プログレスバーが右端まで達したら書き込み終了。
6. 書き込みが終了すると転送したプログラムが実行される。PSoC1term のTerminalOpen ボタンを押すと、シリアルターミナルが開き、リセットがかかってプログラムが実行される。ここではテキストまたはバイナリデータの送受信ができる。

6. 実践例
例 1: LED チカチカ
「PSoC1duino27443_Template_with_Modules 」をテンプレートとして新規プロジェクトを作成し、main.c の main 関数に以下のようなプログラムを記述し、PSoC1duino に書き込んで実行させます。
void main(void){
WORD w;
LED_Start();
UART0_Start(UART_PARITY_NONE);
LED_On();while(1){for (w = 0; w < 50000; w++);
LED_Invert();
UART0_PutChar('.');}}
タイマを使った正確な「 LED チカチカ」ではありませんが、 PSoC1duino 上のオレンジ色 LED が点滅します。(おまけとして LED の点滅にあわせて PC へ"."を送信しています )PSoC1duino のピン配置図（名刺サイズ：切り取ってラミネート等すると便利です）

例 2: スイッチと LED
PSoC1duino に LED とスイッチをつなぐ例をみてみます。
1. ブレッドボードなど使って以下のように PSoC1duino と LED、タクトスイッチを接続します。

2. 「PSoC1duino27443_Template_with_Modules 」をテンプレートとして新規プロジェクトを作成します。
3. Device Editor 画面で、ユーザモジュールLED を配置し、そのプロパティを右のように設定します。

4. 同じく Device Editor 画面で、P1.0 (D8)
ピンの Drive Mode を"Pull Down"に設定します。

5. main.c の main 関数に以下のようなプログラムを記述し、実行させます。
void main(void){
LED_1_Start();while(1){
PRT1DR &= 0x01; // set P1.0="1"
if (!(PRT1DR & 0x01))
LED_1_On(); // if SW pressed, turn LED on
else
LED_1_Off(); // otherwise, turn LED off}}
スイッチを押すと LED が点灯、離すと消灯します。
例 3: Touch Shield の使用
市販の Arduino 用シールドの例として、 Sparkfun で販売されている Touch Shield(図 22)を使う例をみてみます。
Touch Shield は、Freescale 社のタッチセンサ IC のMPR121 と 9 個のタッチ電極が載った Arduino 用シールドで、通信方式は I2C、電源電圧は 3.3V です。
1. PSoC1duino の設定ジャンパピンのうち、以下の 3 つの設定を変更します。
· PSoC1 電源電圧: 3.3V を選択· A4 ピン機能: P1.5 を選択· A5 ピン機能: P1.7 を選択

2. PSoC1duino に Touch Shield を接続します。

3. CD 内の”PSoC1duino_Touch.zip” を展開し、その中の Touch.app プロジェ
クトを開きます。
4. Generate と Build をしたあと、プログラムを書き込み実行させます。
5. Touch Shiled の数字ボタンに触れると、その数字の回数だけ LED が点滅します。
※このプロジェクト内の touchpad.c と touchpad.h は、Sparkfun で公開されている Touch Shield 用のサンプルプログラムを整理したものです。低レベルのI2C 送受信関数を PSoC1 用に書き換えたほかは、大半をそのまま流用しています。

表 1: PSoC1duino のピン配置※この配置表をまとめた CD 内の"PSoC1duino_pin.pdf"(p.11 にも掲載)もご利用ください。 (ソースファイル : "PSoC1duino_pin.svg"(Inksc1pe SVG 形式))
D0-D7 コネクタ

D8-D13 コネクタ

D0(RX) P2.0

D8P1.0D1(TX)P2.1

D9P1.1

D2P2.2

D10P1.2

D3P2.3

D11P1.3

D4P2.4

D12P1.4

D5P2.5

D13P1.6

D6P2.6

GND

GND

D7P2.7

AREF-A0-A5 コネクタ

電源/A6-A7 コネクタ

A0P0.0A6P0.6

A1P0.1

A7P0.7

A2P0.2RESET

XRES

A3

P0.3

3.3V

3.3V(レギュレータ出力 )A4(SDA)

P0.4/P1.5

5V

5V(供給された 5V そのまま)(ショートピンで切替 )

GND

GND

P0.5/P1.7

GND

GND

(ショートピンで切替 )Vin

PSoC1 等の電源電圧

A5(SCL)

表 2: Arduino ICSP 互換コネクタのピン配置
PSoC1 のピンArdunoICSP の機能

1

P1.4(D12)

SPI_MISO(D12)2VCC(PSoC1 電源)

VCC

3P1.6(D13)

SPI_SCK(D13)4P1.3(D11)

SPI_MOSI(D11)

5

XRES

RES

6

GND

GND