実は去年の12月に、つい勢いでRaspberry Piを買ってしまいました。
適当にセットアップし、「よっし、これでLinuxの勉強するぞー」と意気込んだものですが 今はあまり触れられていないです。sshでつないだりvncでつないだりできた途端、飽きたんですね。
さて、Raspberry PiにはGPIOと呼ばれる汎用入出力インターフェースが存在します。
これを使って、電子工作をしてみよう…!というのを新たな目標にしたいと思います。
…というものの、私は電子工作を全くしたことがありません。
ハンダごてやブレッドボードは何故か持っていますが、一切触ったことはありません。LEDを光らせたこともありません。というか小学生レベルの電子回路も分かってません。電流と電圧の違いすらイマイチ…。
というわけで、今回から数回に分けて(不定期に)、「そんな私がRaspberry Piで電子工作ができるまでのサクセスストーリー…!」を展開していく所存であります。(予定)
まずは基礎を学んでいきます。
とりあえず「電子回路 小学生」、「電子回路 基礎」で検索してみてそれっぽいサイトで勉強します。
http://www.tsystem.jp/freecircuit/freecircuitrelay22.html
http://www.kairo-nyumon.com/electric_basic.html
…うん、長い。吐き気がしてきました。
ちょっと方針変更。
LEDをチカチカさせること(通称Lチカというらしい)を第一目標に、都度必要な知識を覚えていくことにします。
「彼を知り、己を知れば百戦危うからず」
私が無知なのは知っているので、まずは彼(GPIO)を知りましょう。
「ラズベリーパイ GPIO」で検索して出てくるサイトでは、大体『GPIOのレイアウトについては http://elinux.org/RPi_Low-level_peripherals に載ってます。』みたいに書いてくれるんですが、(知識がないのも含め)英語なんでよくわかんないです。
なので私はGoogle翻訳を駆使して理解を進めていきます。
(※以下は私の理解なので誤っている可能性が大いにあります。間違いにお気づきでしたらご指摘くださると助かります。)
はじめに
おなじみのUSB、Ethernet、HDMIポートに加えて、ラズベリーパイはチップとサブモジュールとより直接的に接続するための低レベルのインタフェースを提供します。
GPIO(汎用入出力)の2×13のヘッダピンには、SPI(シリアル・ペリフェラル・インタフェース)、I2C(アイ・スクエア・シー)、UART(シリアル通信)、3.3Vと5Vの電源が含まれています。
これらのインタフェースは、"プラグアンドプレイ"ではありませんので誤配線しないように注意が必要です。
ピンは3.3Vの論理レベルを使用しており、(Arduinoのような)5Vトレラント機能はありません。
また、ソフトウェア対応可能なCSI(カメラシリアルインターフェース)やDSI(ディスプレイシリアルインターフェース)のフレックスケーブルコネクタ、およびCEC(家電制御)と呼ばれるHDMIコネクタ内部のシリアルリンクはまだありません。汎用入力/出力(GPIO)
汎用入力出力(GPIO)はソフトウェアから制御可能(入力/出力の変更も含めて)なチップ上の汎用ピンです。
ラズベリーパイは、周辺機器や拡張ボードが入力と出力を公開してCPUにアクセスすることを許可します。
このGPIOについての一般的な情報については、GPIOを参照してください。
ラズベリーパイのBCM2835のGPIOについてさらに具体的な情報については、 RPi_BCM2835_GPIOsを参照してください。
ラズベリーパイの基盤には2×13に配置された26ピンを持っています。ピン間のピッチは2.54mm(100mil)です。
P1としてマークされて拡張ヘッダーは、8つのGPIOピンとI2C、SPI、UARTだけでなく、3.3V、5VとGNDを提供します。ピン1は、最初の列のと一番下の行のピンです。GPIOの電圧レベルは3.3Vで、5Vトレラントではありません。ボード上に過電圧保護機能はありません。
なぜなら、真面目なインタフェース連結に興味がある人は、メイン基盤に直接ハンダ付けすることよりもバッファやレベル変換したアナログI/Oを実装した外部ボードを使用するからです。すべてのGPIOピンは、SPI、PWM、I2Cなどの代替機能を提供するために再構成することができます。
リセットした時、GPIO14&15は代替機能UARTに割り当てられており、これら二つは17個のGPIOピンの合計を提供するために、GPIOに戻すことができます。
その機能とアクセスする方法の詳細は、チップセットのデータシートに詳述されています。GPIO入力ヒステリシス(シュミットトリガ)をオンまたはオフにすることができ、出力のスルーレートは、高速または限定されず、ソースすることができ、電流は2mAから16mAまで設定可能です。
チップセットのGPIOピン0から27が同じブロックであることに注意してください、これらのプロパティは、ピンごと、ブロックごとに設定されていません。
GPIOパッドコントロール(GPIOデータシートの付録をご参照ください。)、特にSSO(同時出力)について注意してください。
干渉を避けるため、駆動電流はできるだけ低く抑える必要があります。
まとめ
上記記述からGPIOについて読み取れた内容をまとめます。
- 2×13の計26個のヘッダピン。GPIOには、SPI、I2C、UARTなどのインターフェースを含むほか、および3.3V、5V、GND(Ground)を備える
- SPI、I2C、UARTに対応した機器が使用可能ということ
- GND=電源のマイナス極
- GPIOピンは3.3Vで動作する。過電圧保護機能はない。5V流すと危険。
- ピンピッチは2.54mm
- 代替機能(SPI, PWM(パルス幅変調), I2C)はピンの変更可能。UARTはGPIOとして使用することも可能。
- 出力電流は2mA~16mAまで可能
うーん、わかったようなそうでもないような、、、
と悩みながらググっていたいたところ、素敵な感じの資料を見つけました。
これも読んで勉強してみます。
次回につづく。