もなかアイスの試食品

「とりあえずやってみたい」そんな気持ちが先走りすぎて挫折が多い私のメモ書きみたいなものです.

Raspberry Piを買ったので、ちょっと触ってみた

昔からArduinoを触ったことがあったけど、電子回路が正直苦手・・・

そこでOSが載っているRaspberry Piの方が色々使い方のイメージが湧いてくるかなーと思ってた

最近やっと買ってきてたので「Hello World」ごとく少しいじってみた。

f:id:monakaice88:20160202025013j:plain


買ってきたもの

  1. Raspberry Pi2スタータキット(無線版)
  2. ブレッドボード接続 T型基板

    Amazonのリンク張っているけど、秋葉原千石電商にあった似たような商品を買った

Hello World的なこと

こういうものの「Hello World」みたいなことといえば、とりあえずLEDを光らせる

「Raspberry pi led」で一番上に表示されるサイトを真似しながらLEDを光らせてみた。

↓参考サイト

GPIOでLEDの点滅(Python) | Make.GPIOでLEDの点滅(Python) | Make.

GPIOを制御するライブラリをインストールする

GPIO Pythonライブラリをインストール

$ sudo apt-get install python-rpi.gpio

最初はインストールコマンドがコケた。パッケージの更新をやったところ、うまくGPIO Pythonライブラリを インストールすることができた。

$ sudo apt-get update

PythonでGPIOを制御する

とりあえず参考サイトのソースをコピペ。

2秒間LEDを点灯させ、その後2秒間LEDを消灯させるプログラム

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
while True:
    GPIO.output(11, True)
    time.sleep(2)
    GPIO.output(11, False)
    time.sleep(2)

このプログラムを「/home/pi/work/led_test.py」に保存した


Raspberry Pi と LED をつなげる

参考サイトとほぼ同じ回路をブレッドボードで組み立てた

f:id:monakaice88:20160203031857j:plain


プロフラムの実行

以下のコマンドでプログラムを実行する。

pi@raspberrypi ~ $ cd work/
pi@raspberrypi ~/work $ python led_test.py 

↓ついた!
f:id:monakaice88:20160202025007j:plain


Raspberry Piのピンの指定方法

とりあえずコードをコピペしたサイトでは、

GPIO.setmode(GPIO.BOARD)は、ハードウェアのリビジョン等に関係なく常にGPIOのピン番号を示します。
基本的にGPIO.setmode(GPIO.BOARD)を設定しておけばよいです。

と書いてあり、他のピンの指定方法があるらしい。

調べてみると、以下のサイトに詳しい内容があった。


RPi.GPIOの基本的な使い方 | まめりうむ RPi.GPIOの基本的な使い方 | まめりうむ

改めて内容を記載すると、

Raspberry Piの使用するGPIOのピンの指定方法は以下の2通り

  1. GPIO.setmode(GPIO.BOARD)
    ピンの順番の番号で指定する方法。各Raspberry Piモデルの差異を吸収しやすいらしい(本当かなぁ?)
  2. GPIO.setmode(GPIO.BCM)
    IO●●の後ろの番号で指定する方法。ブレッドボード接続基板を使ってたら分かりやすい

以下のサイトにある画像が、直感的にわかりやすいと思う
Simple Guide to the RPi GPIO Header and Pins

なので、「Raspberry Pi 2 Model B」で「BCM」方式に書き換えると以下のようになる

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
while True:
    GPIO.output(17, True)
    time.sleep(2)
    GPIO.output(17, False)
    time.sleep(2)

ざっくりとコーディングの仕方がわかったので、次はサーボモータLCDを使ってみようと思う。