はじめに
現在，Arduino はコンピュータらしい使い方，たとえばデータ収集やモータの制御などに多く使われています．その開発のしやすさから，コンピュータの専門でない利用者も急速に増えていて，様々な LEDの点灯や音楽用途などにも使われています．
そして，いろいろな Arduino，Arduino 互換機が発売されています．また，I/O を拡張するために使われる多様なシールドと呼ばれる基板も販売されています．
最近ではArduino MEGAという，より高性能，大規模なマイコン・ボードも一般的になっていますが，従来型のArduinoもまだまだ捨てたものではありません．
市販のシールドは，学習や実験で使う場合には多機能なのはよいのですが，組み込み機器など，特定の用途で使用する場合は，機能が過剰になったり，逆に不足したりと，なかなかぴったりのものは見つからないと思います．
シールドによっては複数のものをスタックして複合で使えるものもあると思いますが，それぞれのシールドの一部の機能を使うために複数のものを組み合わせるのも不経済です．
そうなると，やはり周辺回路（シールドに相当するもの）は自分で作りたくなるでしょう．
本書で使用している自作 Arduino 互換機は，Arduino に周辺回路（シールドなど）を付けるのではなく，周辺回路の中に Arduino を一部品として組み込むというコンセプトで設計してあります．第 1 章でも詳し

オリジナル・ボード
自作Arduino互換機．開発時は上側ボードを下側のボード上に重ねて使う．
下側のボード単体でもア
プリケーションは動く

7セグメントLEDボード

2

はじめに電源アダプタ・ボード

SDカード・
ボード

スイッチ・
ボード

CANボードバーLED
ボード

く説明しますが，同様のコンセプトで作られた製品にArduino MiniやNanoがあります．
本書では，何個かの Arduino（互換機）を組み合わせた製作例も掲載していますが，そういうとき，コンパクトで安価な互換機が真価を発揮できます．もちろん，標準機である Arduino Uno を使っても同様の工作をすることはできます．
これらのボードを使う最大のメリットは，ほとんどをブレッドボード上に，はんだ付けなしで組み立てて，実験や試作をすることができることです．つまり，数か所のはんだ付けでさえ手間がかかり，検証も確実に行わないと動かないことも多くあります．そういう時間は，本書で紹介しているボードを組み合わせることで，短くできます．
本書は，第 1 章から第 3 章までが，Aruduino 互換機を含む個々のボードの説明です．第 4 章以降は，それらのボードを組み合わせた応用事例を説明しています．市販のセンサ・ボードなどを組み合わせることで，もっといろいろな応用も考えられます．ぜひ，本書を活用しながら，素早く，そして役立つコンピュータの応用機器を作ってください．
本書は執筆開始から完成まで 2 年ぐらいかかってしまい，途中で内容を加えたような個所もあり，章の配分がいびつになってしまいました．そういうこともあり，関係各位にはいろいろお世話になりましたが，無事出版することができました．最後になりましたが，CQ 出版（株）の吉田伸三殿並びに関係各位にお礼申し上げます．
2013年2月

中尾 司

応用事例

市販のLCDとRTCを利用した時計

CANを利用した遠隔測定
電源と3本の信号線だけの配線で使える
バーLED

熱電対を使った温度測定と記録

はじめに

3

[第1 章] 組み込み用に使いやすい Arduino を作って使う

Arduino と本書で用いる
Arduino 互換機

Arduino は Creative Commons Attribution Share-Alike 2.5 という，オープン・ハードウェアのライセンスのもとで資料などが無償で公開されているハードウェアです．
PC と通信するためのシリアル通信回路と，マイコン，クリスタルなど簡単な回路で構成されているので，公開情報から自作することも比較的容易です．
本書では，筆者が製作した Arduino の互換機を使用し，それを中心にブレッドボード（＊1）用の小型基板などを組み合わせて実験していきます．

代表的なArduinoと市販品の互換機
UnoNanoPro

MM-FT232

Pro Mini

本書で利用する筆者の互換機#282（P1：AVR部）

写真 1-1#283（P2：USB/電源部）

Arduinoのラインナップ

現在入手できるおもな Arduino と筆者製作の互換機（#282，#283）の外観．MM-FT232 は Pro または Pro Mini に接続できる USB−シリアル変換ボード．
（＊1）ソルダーレス・ブレッドボードとも呼ばれる．

8

第 1 章 Arduino と本書で用いる Arduino 互換機

Arduino に搭載されているマイコンにはブートローダと呼ばれるプログラム（後述）が搭載されていて，PC にインストールした開発環境である Arduino IDE からの操作によって，USB 経由でプログラムをアップロードすると即プログラムを実行できます．
ア ト メ ルエーブイアール

Arduino には ATMEL 社の AVR という 8 ビットのマイクロプロセッサが使用されていますが，このブートローダのおかげで，AVRライタ（プログラマ）などのツールは一切不要です．
まずはこの章で，Arduino互換機と，Arduino IDEの使用法などについて説明します．

1-0 Arduino にはいろいろな形状，種類がある
最初に，市販のArduinoと自作 Arduino互換機の特徴や違いなどについて説明します．

● 各種 Arduinoの特徴を比較
一般的に，ブレッドボードで試作する場合や，機器に組み込む場合は小型のものが適しています．まずは選定時の参考になるように，現在販売されているポピュラな Arduino と本書でメインに使用している互換機を比較してみます．
表 1-1 に Arduino のおもな仕様の対比表を示します．大きさ，形状に関しては，Appendix A に対比図を掲載してあるので，そちらを参照してください．
現在発売されているおもなArduinoのラインナップを写真1-1 に示します．
機能を拡張するために使われる市販のシールドを直結して使用するには，Arduino Duemilanove（2009）
表 1-1

Arduinoのおもなモデルの仕様比較

本書で利用する
Nano
Pro Mini
ProUno/Duemilanove
互換機（P1, P2）
基板外形（突起含まず）
50 × 25mm
43 × 18mm 33 × 18mm
52 × 53mm
69 × 53mm
USB−シリアル変換FT232RL（#283 併用） FT232RL なし（別基板） なし（別基板） AVR/FT232RLAVR の外形
DIP
QFP
QFP
QFP
DIP
AVR の交換○×××○
電源電圧［V］
3.3/5
5
3.3/5（※ 1）
3.3/5（※ 1）
5
8/16
8/16
8/16
クロック［MHz］
1616（クリスタル交換）
専用ボード（※ 1） 専用ボード（※ 1）
USB 回路分離○×○○
×
ブレッドボード直接実装○○○（A4, A5除く）
××
市販シールド使用
×××○○
DC ジャックより電源供給○（#283 併用）
××○○
電源レギュレータ○（#283 併用）
○
○
○
○
（※ 2）
参考価格［円］
1200（#282）
4200
1900
2000
2800/−（※ 2）
1700（#283）−
2000（※ 3）
2000（※ 3）−USB−シリアル・ボード価格［円］（※ 1）5V/16MHz 版、3.3V/8MHz 版として別々の製品として販売されている．
（※ 2）参考価格は販売店や為替レートなどにより変わる．執筆時の価格．
（※ 3）サンハヤト MM-FT232 を想定．
† ピン・ヘッダやピン・ソケットは付属していないものもあるので注意．Pro Mini，Pro の価格はピン・ヘッダ，ソケット付属なしのもの．
† Duemilanove は現在製造されていない．
† #283 などの番号は筆者の製作したボードの管理番号．

1-0 Arduino にはいろいろな形状，種類がある

9

[第3 章] 簡単なI/OからCANなどの機能モジュールまで製作したブレッドボード用アダプタ基板と使い方

この章では，筆者が製作した，ブレッドボードを利用して試作するときに役立つ数々のアダプタ基板について説明し，その使い方をサンプル・プログラムとともに解説します．各ボードには専用のライブラリを用意してあるので，簡単に利用できます．
これらのボードは，第 4 章以降での組み合わせや応用アプリケーションで利用します．

3-1 アダプタ基板…スイッチ・ボード
最初は，四つのタクト・スイッチをダイヤモンド配置した小型のボードです．

● スイッチ・ボード（#285）の特徴，機能
このボードは約 25mm 角の基板上に四つのタクト・スイッチがダイヤモンド状に配置されたものです．
そのほか LED も 2 個ついています．
ブレッドボードとは，9 ピン× 2 列（幅 600mil）のピン・ヘッダで接続できます．

● スイッチ・ボード（#285）の仕様
ボードの部品配置図を図 3-1に示します．回路図は Appendix D を参照してください．
各スイッチの片側は GND に接続されていて，スイッチを押したときに，対応するスイッチ端子 S1 〜S4 が L レベルになります．スイッチ端子は 10kΩの抵抗器でプルアップされています．
LED は電流制限用の 1k Ωの抵抗器が直列に接続され，カソード側が GND に接続されているので，LED端子（アノード側） L1 ， L2 を H レベルにすると，対応する LED が点灯します．

SW1

図 3-1
#285 スイッチ・ボード#285 スイッチ・ボードの部品配置図を示す．4 個のタクト・スイッチと 2 個の LED が実装可能．基
板サイズは約 25 × 25mm．LED には電流制限用の抵抗器が直列に接続されているため，直接ディジタル出力を接続することができる．また，タクト・スイッチにはプルアップ抵抗器が付いている．

70

第 3 章 製作したブレッドボード用アダプタ基板と使い方

LED2LED1

SW4SW2SW3

電源 SW出力 LED入力

3-3 アダプタ基板…バー LED ボード
これは，レベル・メータなどでおなじみの，一列に並んだ 10 セグメントの LED をシリアル信号で制御できるボードです．

● バーLEDボード（#296）の特徴，機能シリアル-パラレル変換のシフト・レジスタ（データがレジスタ内を左もしくは右に移動する機能をもつデバイス）を 2 個使用して 16 ビットの出力ポートとして利用し，三つの信号で，10 セグメントの LED と，6 ビットの出力ポートを操作できます．

● バーLEDボード（#296）の仕様
図 3-3 に示すこのボードでは，8 ビット・シフト・レジスタの HC595 を二つカスケード接続して 16 ビットのシフト・レジスタを構成しています．ビット数が 2 倍になるだけで，基本的には HC595 が 1 個のときと同じ方法で制御できます．
シフト・レジスタの 16 ビットの出力ポート（D0 〜 D9 の 10 ビットはバー LED のセグメントに使用）はシ
フト・レジスタ制御用の CK，DI，LT の 3 本の信号だけで制御できます．CK はシフト・クロック，DI はシリアル入力のデータ，LT は出力ラッチ（出力の状態を保持する）です．
LED の制御には 10 ビットのみ使用しているため，残りの D 10 〜 D 15 の 6 ビットは，汎用の出力ポート（エクストラ・ポート）として使用できます．

● バーLEDボード（#296）の使い方
図3-4と写真3-1に示すように，電源と3本の信号線をArduinoに接続するだけで使用可能です．専用ドエクストラ・ポート
D14〜D15

バーLED
シフト・レジスタ
HC595

エクストラ・ポートD10〜D13シフト・レジスタ
制御信号

図 3-3

#296 バー LED ボード#296 バー LED ボードの部品配置図を示す．基板サイズは約 25 × 25mm．シフト・レジスタを 2 個カスケード接続して 16 ビットに拡張し，10 セグメントのバー LED をドライブする．
制御線は CK，DI，LT の 3 本で制御可能．16 ビットの内，LED で使わない 6 ビットは汎用出力ポートとして使用可能（エクストラ・ポート）．

74

第 3 章 製作したブレッドボード用アダプタ基板と使い方

● TEST3…バイナリ表示（p3̲4̲B10Led3.ino）
10 ビットのバイナリ値として表示させます．右端が最下位ビットで，10 ビットの 2 進数として表示されます（ 1 のビットが点灯）．カウンタの値を 2 進数で表示します．
この事例は， #define TEST3 のみを有効にしたものです．

● エクストラ・ポートの出力
TEST1 〜 TEST3 で共通ですが，LED の点灯動作とポート出力が干渉していないことを確認するために，エクストラ・ポートに単純増加または減少のカウント値（Count2 の値）を出力しています．D10 〜 D13 にLED をつなげば D10 を LSB として 4 ビットのカウンタ値がバイナリで表示されます．

3-5 アダプタ基板… 4 桁 7 セグメント LED ボード
これは，四つの 7 セグメント LED と，セグメント・データ出力用のシフト・レジスタを搭載したボードです．LCD に比べて視認性は高いです．数字以外に，A，b，c，d，E，F も表示できます．

● 4桁7セグメントLEDボード（#298）の特徴，機能シフト・レジスタをセグメント・データの出力ポートにしているため，8 セグメント（小数点含む）の 8ビットのデータは CLK，DT の 2 本の信号線で制御できます．その他，各セグメントの電流制限用抵抗，カラム（桁）信号用のトランジスタも内蔵しています．2 ＋ 4 本の信号線で制御できます．
ボードのサイズは約 50 × 25mm で，外部ピンの幅は 800mil です．シフト・レジスタに 74AC164 を 1 個使っています（図 3-5）．

● 4桁7セグメントLEDボード（#298）の使い方
電源，シフト・レジスタの制御用の CLK と DT の 2 本と桁信号 COL1 〜 COL4 の 4 本を，Arduino の任意のディジタル・ポートに接続します．
7セグメントLEDシフト・レジスタ
AC164

電源

桁切り替えシフト・レジスタ制御

図 3-5#298 4 桁 7 セグメント LED ボード#298 4 桁 7 セグメント LED ボードの部品配置図を示す．基板サイズは約 50 × 25mm．
小型の 7 セグメント LED を 4 個使用している．ダイナミック・ドライブ用．8 本のセグメント信号（a 〜 g，DP）はシフト・レジスタによって生成するため，CLK，DT の 2本で制御できる．それ以外に桁切り替え信号が4本必要．

78

第 3 章 製作したブレッドボード用アダプタ基板と使い方

マイクロSD
カード・コネクタ
LED1

電源 SPⅠ信号 カード挿入
接点信号

図 3-7
写真 3-3 マイクロ SD カードと #290 マイクロ SD
カード・ボード#290 マイクロ SD カード・ボードの外観を示す．基板背面に3.3V 出力の小型レギュレータとレベル変換用ゲート IC の74LVC14 が実装されている．カード・コネクタの横に付いている LED は，SPI の SCK（Arduino の D13 ）と接続されているため，カードにアクセスがあると，チカッと点灯する．

#290 マイクロ SD カード・ボード#290 マイクロ SD カード・ボードの部品配置図を示す．図の上側の列のピンはブレッドボード実装時に当ボードを物理的に安定させるダミー・ピンで，どこにも接続されていない．3.3V レ
ギュレータとレベル変換用ゲート IC は背面に実装されている．

写真3-4#290 SD カード・ボードの背面#290 マイクロ SD カード・ボードの背面を示す．中央にあるのは SOIC の74LVC14A，その左側にあるのが3.3V レギュレータの TAR5SB33．

3-7 アダプタ基板… SD カード・ボード
これは，取り外しができて大容量の外部メモリとして使える，マイクロ SD カード用のアダプタ・ボードです（写真 3-3）．
Arduino Ver.1.0 では SD カード用のライブラリが標準で付属しているので，カード用のインターフェースを用意すれば，簡単にファイルの読み書きができます．フォーマットは FAT16 をサポートしているので，PCでも読み書きができます．

● SDカード・ボードの特徴，機能
図 3-7 に示すこのボードは，25mm 角のプリント基板上にマイクロ SD カード・コネクタと 3.3V 出力のレギュレータ，5V-3.3Vレベル変換用のバッファICを実装したものです（写真3-4）．
Arduino の SD カード・ライブラリは，SD カードを SPI（3-14 項参照）で制御します．制御はライブラリを利用すれば簡単ですが，カードを物理的に Arduino に接続するのが困難なので，ブレッドボードに実装できるマイクロSD カード用のアダプタを製作しました．

● SDカード・ボード（#290）の仕様
このアダプタは 3.3V のレギュレータが実装されているため，5V 電源で 3.3V 系のマイクロ SD カードが82

第 3 章 製作したブレッドボード用アダプタ基板と使い方

CANポート1 CANポート2

16MHzクリスタル

LED
CANポート3

MCP2515
CANコントローラ

ターミネータ使用
設定ジャンパ

抵抗アレイ

SPⅠ信号

図 3-9MCP2551
CANトランシーバ#292 CAN ボードの部品配置#292 CAN ボードの部品配置図を示す．基板サイズは約 25 × 25mm．CAN コン
トローラの MC2515 と CAN トランシーバの MCP2551，16MHz クリスタルという構成．ジャンパをショートすることにより，ターミネータが有効になる．
CAN ボートはコネクタ端子も含めて三つあるが，基板内部で並列接続されているため，CANのコントローラとしては1チャネル分の機能しかない．

基板の部品配置図を図 3-9 に示します．

● CANボード（#292）の使い方
このボードは 1 枚で 1 チャネル分の CAN インターフェースしかもたないため，CAN 通信させるには，最低でもあと 1 台 CAN 機器（ノード）が必要です．3-13 項の実験例では，CAN ボードと Arduino を 2 組用意して CAN で接続し，双方でデータを送受信させて CAN 通信を確認します．CAN ボードと Arduino は，4 本の SPI 制御線（SCK，SI，SO，SS）で接続して使います．
簡単に制御できるように，専用ドライバをライブラリ化しました．次項で説明する wCan2515というライブラリを使います．このライブラリを使う場合，SPI 制御線は任意の Arduino のディジタル・ポートに接続できます．
wCan2515 の説明，使い方などは次項より説明します．

3-10 CAN 用ライブラリ wCan2515
CAN 制御は少し複雑なので，CAN 用ライブラリの wCan2515について少し詳しく説明します．

● wCan2515ライブラリ
このライブラリは，マイクロチップ社の MCP2515 を SPI で制御するためのものです．この IC を使用したものなら，本書で紹介している #290 CAN ボード以外にも流用できると思います．

● wCan2515のメンバ
おもな公開メンバには次のようなものがあります．
・wCan2515(byte sck, byte si, byte so, byte ss, byte rate)…コンストラクタ（ポート番号設定）
90

第 3 章 製作したブレッドボード用アダプタ基板と使い方

写真3-7#129 SPI制御6 桁 7 セグメントLED表示器#129 SPI 制御 6 桁 7 セグメント LED ボードの外観を示す．このボードは PIC で制御している．ファームウェアを変更するこことで，I 2 C 制
御やシリアル制御も可能．このボードの詳細は「マイコンの 1 線 2 線 3線インターフェース活用入門」（CQ出版社）参照のこと．

5V GND#290 マイクロSDカード・ボード

Arduino互換機（AVR部）

SCK（D13）CS（D10）（D11）
MOSⅠ
MⅠSO（D12）

D13（SCK）
D11（SDⅠ）
D12（SDO）
D9（SS）GND 5V

TD62003
PIC16F886#129 SPⅠ制御
6桁7セグメントLED表示器図 3-11

GND 5VSCK（D13）SDⅠ（D11）SDO（D12）SS（D9）SPI 機器との接続

サンプル・スケッチを動作させるときの Arduino 互換機，#290 SD カード・ボード，#129 SPI 制御 6 桁 7 セグメント
LED表示器の配線図を示す．CS（SS）信号を除くSPI信号は並列に接続してある．CS（SS）信号はSPIデバイスごとに変える必要がある．なお，シリアル通信を利用する場合はArduino互換機のUSB/電源部（P2）を接続する必要がある．

3-14 SPI ライブラリを使った SPI 通信の実例

101このPDFは，CQ出版社発売の「Arduino実験キットで楽ちんマイコン開発」の
内容・購
内容
購
法部 本です．法などにつきましては以下のホームページをご覧下さい．
http://shop.cqpub.co.jp/hanbai/books/42/42201.htm
http://www.cqpub.co.jp/order.htm