Raspberry Piにはじめて興味を持った方でも、インターネットへの接続、Lチカと環境センサからデータを取得できるようになるまでの手順をまとめてみようと思います。
myThingsをはじめようキット
今回はスイッチサイエンスから発売されたmyThingsをはじめようキットを使います。このスターターキットを使うとIDCFクラウドを経由して、自作したIoT機器をmyThingsと連係できるようになります。はじめてのRaspberry Piの入門キットとして必要な部品が集まっています。
用意するもの
Raspberry Piなどをすでに持っている場合は、個別に必要な部品を用意します。Lチカだけだと物足りないので、気温、湿度、気圧が計測できる環境センサのBME280もあわせて使います。
- Raspberry Pi 2 Model B(RSコンポーネンツ製)
- Raspberry Pi用microSD 8GB(Raspbian OS 書き込み済)
- FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)
- PLANEX GW-USNANO2A 無線LAN USBアダプタ
- ラズパイで作ろう!ゼロから学ぶロボット製作教室電子部品セット その1(連載第2回向け)
- 固いジャンパワイヤ (ブレッドボード用)
- BME280搭載 温湿度・気圧センサモジュール
USBシリアル変換アダプター
FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)を使ってOSXとRaspberry Pi 2を接続します。Software Installation (Mac)を参考にしてGPIOピンにつなぎます。電圧切り換えジャンパは3.3V側にしてください。電源はUSB ACアダプタから供給するのでこのUSBシリアル変換アダプタから電源供給はしないでください。
- GND 黒 (USB-TTL) -> GND P6 (Raspberry Pi)
- RXD 黄色 (USB-TTL) -> TXD GPIO14 P8 (Raspberry Pi)
- TXD 緑 (USB-TTL) -> RXD GPIO15 P10 (Raspberry Pi)
FTDIのFT232RL用のドライバはVCP Driversからダウンロードしてインストールします。今回のホストマシンはOSX Yosemite 10.10.4です。Mac OS X 10.9 and above
のFTDIUSBSerialDriver_v2_3.dmgをインストールします。Mac OS X 10.3 to 10.8
の場合は、FTDIUSBSerialDriver_v2_2_18.dmgを使います。
OSXからScreenを使ってターミナル接続します。Axxxx
の箇所は環境によって異なります。
$ screen /dev/tty.usbserial-Axxxx 115200 |
無線LAN USBアダプタ
無線LAN USBアダプタはPLANEX GW-USNANO2Aを使います。wpa_passphraseコマンドから無線LANの設定を入れます。
$ sudo sh -c 'wpa_passphrase {ssid} {passphrase} >> /etc/wpa_supplicant/wpa_supplicant.conf' |
今回の無線LAN環境はSSIDステルスモードなので/etc/wpa_supplicant/wpa_supplicant.conf
を編集してscan_ssid=1
を追加します。また複数のネットワーク設定を記述する場合は、priority
を追加します。デフォルトは0で、値が大きい方が優先されます。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev |
/etc/network/interfaces
を編集します。今回はIPアドレスはDHCPから取得するため、iface wlan0 inet manual
をiface wlan0 inet dhcp
またwpa-conf
になっていることを確認します。今回はwlan1
は使いませんがこちらもdhcpに変更しておきます。
auto lo |
wlan0を再起動します。
$ sudo ifdown wlan0 |
DHCPからIPアドレスが取得できたら、pingでインターネットに接続できることを確認します。
$ ip addr show wlan0 |
raspi-configの初期設定
raspi-configをroot権限で実行して、Raspberry Pi 2の初期設定をしていきます。
$ sudo raspi-config |
ファイルシステムの拡張とタイムゾーンの変更を行います。
- Expand Filesystem > Select
- Internationalisation Options > Change Timezone > Asia > Tokyo
再起動します。
$ sudo reboot |
再起動後にファイルシステムがリサイズされました。ようやくパッケージをインストールする準備ができました。
$ df -h |
ファームウェアの更新
初期状態の確認
今回利用しているRaspberry Pi用microSD 8GB(Raspbian OS 書き込み済)のバージョンを確認します。
$ uname -a |
Raspbian OSは3.18.11-v7+
が入っていました。つぎにpiユーザーのグループを確認すると、i2cグループに最初から入っています。piユーザーはsudoなしでi2cデバイスを操作できるようになっています。
$ id -a |
パッケージの更新とアップグレードをします。
$ sudo apt-get update |
ファームウェアの更新もしておきます。
$ sudo rpi-update |
rebootします。
$ sudo reboot |
カーネルのバージョン、RaspbianOSのバージョンが4.0.8-v7+
にあがりました。
$ uname -a |
その他設定
vim
エディタは好みですがvimを使います。
$ sudo apt-get install vim |
バックアップを作らない設定だけします。
set backupdir=~/tmp |
時間合わせ
NTPサーバーを日本のサーバーに設定します。
#server 0.debian.pool.ntp.org iburst |
ntpdの再起動をして時間あわせをします。
$ sudo /etc/init.d/ntp restart |
Python
Raspberry Pi 2でセンサーデータを取得する場合はPythonを使うことが多いです。Pythonの開発環境をインストールします。
$ sudo apt-get update |
Lチカ
Raspberry Pi 2 Model B GPIO 40 Pin Block Pinoutを参考にブレッドボード配線をします。LEDのアノードはGPIO 17
につなぎます。
- アノード (LED) -> GPIO17 P11 (Raspberry Pi)
- カソード (LED) -> 抵抗器1K(茶黒赤金) -> GND P14 (Raspberry Pi)
RPi.GPIOはRaspberry Pi 2にインストール済になっています。
$ apt-cache show python-rpi.gpio |
LチカをするPythonのプログラムを書きます。GPIO17 P11
を使います。PINに11を指定します。
#!/usr/bin/python |
GPIOを操作する場合はroot権限が必要になります。プログラムを実行すると3回、1秒間隔でLチカします。
$ chmod +x led-blink.py |
I2Cをつかう
I2Cのバスを有効にします。最初に必要なパッケージをインストールします。
$ sudo apt-get install python-smbus i2c-tools |
raspi-configを実行してI2Cサポートを有効にします。
$ sudo raspi-config |
- Advanced Options > I2C
rebootします。
$ sudo reboot |
カーネルが3.18 以上の場合は/boot/config.txt
に以下の設定が入ります。
dtparam=i2c_arm=on |
/etc/modules
にI2Cを有効にする設定します。snd-bcm2835
の下に追記します。
snd-bcm2835 |
rebootします。
$ sudo reboot |
lsmodでi2c_devとi2c_bcm2708が表示されるとI2Cが有効になっています。
$ lsmod |
BME280
Raspberry Pi 2にBME280を配線します。
SDI (BME280) -> GPIO2 P03 (Raspberry Pi SDA1) |
i2cdetectコマンドで正しく配線できたか確認します。0x76アドレスを使っています。
$ i2cdetect -y 1 |
サンプルプログラムをダウンロードします。
$ mkdir ~/python_apps |
bme280_sample.pyを実行すると、temp(気温)、pressure(気圧)、hum(湿度)のデータを取得することができます。
$ python bme280_sample.py |
まとめ
ごちゃっとしていますが、まとめると感じになりました。