このページは、RaspberryPi の入力機能についてまとめた機能別早見表である。入力機能については,中級編,上級編も順次用意する方向で準備している.
現状:試行錯誤中
1. はじめに
この早見表には,Raspberry Pi にさまざまな情報を取り込む方法(入力方法)をまとめる。Raspberry Pi が取り込む情報は、デジタル情報とアナログ情報に大別できる。
デジタル情報の入力
Raspberry Piが取り込めるデジタル情報には、取り込む情報がそもそも0(ゼロ)か1のいずれかの値しか持たない純粋のデジタル量の場合(注1)と、本来はアナログ量なのだが、Raspberry Pi に取り込む時点であらかじめデジタイズ(デジタル化)が済んでいる場合(注2)とがある。後者にはデジタイズの際の精度(量子化誤差の発生)やデジタイズする間隔の問題(エイリアス信号の発生)などがあり、値の取り扱いには注意が必要である。デジタル情報が1ビットの場合には、GPIOの適切なピンを使えば良いが、ビット数が多い場合やデジタル情報がシリアライズされている場合には同期または非同期のシリアル通信を利用することになる。
(注1)たとえば、スイッチの On/Offを読み取ったり、GPS受信機が送出するデータを受信するといった場合
(注2)たとえば、ある種の温度センサは、センサ内に超小型のCPUとA/D変換器を内蔵しており、計測された温度はただちにA/D変換された上でI2Cプロトコルでセンサ外に送出される。温度はアナログ量だが、Raspberry Pi はデジタイズされた情報をI2CやSPIといったシリアル通信を介して受け取ることになる。
アナログ情報の入力
コンピュータが、アナログ情報を取り込むためには何らかの方法で A/D変換することが必要であるが、Arduinoなどと違い、Raspberry Pi はA/D変換器を持たないので、アナログ値を読み取りたいのであれば、A/D変換器を自前で用意しなければならない。A/D変換器が用意できれば、上述の「本来はアナログ情報であるが Raspberry Pi が取り込む時点ですでにデジタイズされているデジタル情報の場合」に準じた対応となる。
インタフェース回路は重要
最も単純な1ビットのデジタルデータの入力ですら、不適切な実装を行えば、Raspberry Pi は容易に破壊されてしまう。たとえば、データを送り出す側にとっての「1」と「0」に相当する電圧が、Raspberry Pi が受容可能な電圧を逸脱していれば、それは「1」でも「0」でもなく回復不能な破壊をもたらす。また、回路によっては、電圧ではなく電流の多少や周波数の高低で「1」と「0」を表すこともある(注1)。本稿では、Raspberry Pi にデジタルデータを送り出す回路が、Raspberry Pi と適切に接続できるようあらかじめ吟味した上で掲載しているが、類似の回路を実際に試す場合には、それぞれの利用局面に応じて適切なインタフェース回路を作らなければならない。たとえば、押しボタンスイッチをひとつだけ取り付ける場合でも、Raspberry Piからスイッチまでの長さが10cmの場合と10mの場合と100mの場合ではインタフェース回路の構成は全く異なる。
注1:たとえば、工業系で古くから使われているカレントループ方式は、20mA程度の電流の有無で「1」「0」を表している。
2. デジタル入力(デジタル情報の取得)
Raspberry Piがデジタル情報を取り込む場合、7ビットまでであれば、Raspberry Pi の P1ピンヘッダのGPIOポートを介して容易に読み取れる。
パラレル方式
実例:押しボタン(実現方法:GPIO)
シリアル方式
実例:GPS受信機(実現方法:UART, I2Cなど)
3. アナログ入力(アナログ情報の取得)
A/D変換器を付加する方法
A/D変換機能内蔵センサを使う方法
4. その他の方法
あいうえお
別のマイコンの活用
・Firmataの活用
・Gainer / Pepperの活用
映像やサウンドの入力方法
5. おわりに