Raspberry PI 3 の無線LANに固定IPアドレスを設定する

RaspberryPiのネットワークアドレスを調べる

lxterminalで次のようにタイプして、Raspiの現在のネットワークの状態を確認します。
$ ifconfig
とタイプします。wlan0の項目を見ると、現在DHCPでこのRaspberryPiには192.168.1.21が割り振られています。
ローカルアドレス192.168.1.2~192.168.1.224のうち、後のほうは使われていないとして
currentNet2
アドレスを   192.168.1.221 に固定することにします。

 

設定するアドレスが使われていないか確認する

アドレスが使われていないかの確認には ping コマンドを使用します。アドレス192.168.1.221 と 192.168.1.220で確認します。使い方は   $ ping アドレス で、データを送りつけて反応を調べるので、適当なところでCTRL-Cで停止します。

ping

ping 192.168.1.221の結果は5パケットのうち、0が受信され100%失われました→アドレスは未使用
ping 192.168.1.220の結果は4パケットのうち、4が受信され、0%が失われました→アドレスは使用中
これで 192.168.1.221は未使用であることが確認できたので、使うことにします。

 

固定アドレスを設定する

固定アドレスを設定するには/etc/dhcpcd.confファイルへ設定内容を追記します。nanoエディタを使って書き換えましょう。lxterminalで次のようにタイプしてnanoを起動し、追記内容を書き加えてください。

$ sudo nano /etc/dhcpcd.conf

# 追記

interface wlan0

static ip_address=192.168.1.221/24

static routers=192.168.1.1

static domain_name_servers=192.168.1.1

dhcpcd

編集後、CTRL-Oで変更内容を書き込み、CTRL-Xで終了します。
※注意:ルーターのアドレスは上記とは限らないので気をつけてください。192.168.10.1など。
その場合はstatic ip_address=129.168.10.221/24になります。

 

設定されたアドレスを確認する

一度、RaspberryPiを再起動して、固定アドレスが割り振られたかどうか確認しましょう。
$ sudo reboot now

再起動したら ifconfigでwlan0を確認します。

henkougo

確かに設定したアドレスが割り振られていることがわかります。(終わり)

RaspberryPiのVNC設定方法

RaspberryPiの設定

RaspberryPiデスクトップ上で メニュー>設定>Raspberry Piの設定 を選ぶ。
VNCを「有効」にします。
raspi_settei

RaspberryPiのアドレスを調べる

RasberrtPiデスクトップ上でlxterminalを立ち上げ、

$ ifconfig

でネットワークの設定を調べ、wlan0のアドレスをメモに控えておきます。
lxterminal
上のwlan0:の inet 192.168.xx.xx  がDHCPで割り振られたローカルアドレスです。

PCにRealVncViewer(クライアント)をインストールする

RealVncViewerダウンロードのページです。Windows x86(32ビット)またはx64を選んでダウンロードします。
https://www.realvnc.com/en/connect/download/viewer/windows/
vncviewr

Viewerは圧縮されていないので、ダウンロード先をWindows32ビット環境ならProgram Files(x86)に、64ビットならProgram Filesフォルダにダウンロードします。起動しやすいようにダウンロードした実行ファイルを右クリックして、スタートメニューに登録しておきましょう。

VNCViewer起動

PC上のVNCViewerを起動してください。するとアドレスを尋ねてきますので、先ほどメモしたアドレスを
入力します。

address

認証を求められますので、ユーザー名、パスワードを入力します。ここでは pi,  raspberry です。

authentication

PCの画面にRaspberrypi のデスクトップが表示されます。

desktop

(終わり)

RaspberryPi On ZumoのWi-Fiコントロールシステム(WebIOPI)構築の手引き

RaspberryPiOnZumoのWi-Fiコントロール(WebIOPi)システム構築の手引き

PiOnZumo

スマホやパソコンのブラウザから構内のWi-Fiステーション経由でRaspberryPiOnZumoを
操縦するシステムを構築します。WebサーバーにはWebIOPiを使用します。

コードを入手する→codes

RaspberryPiOnZumoについてのFAQ

1.Arduino LeonardoにアップロードしたCommandReceiver.inoのプログラムの意味がよくわからないのですが。

・Arduinoのプログラムは最初に1回だけ実行されるsetup()関数と,その後繰り返し実行されるloop()関数からできていて,
プログラムはその中身を書くことになります。

・setup()関数内でUSBシリアル通信の初期化をSerial.speed(9600)命令で通信速度9600baudに設定します。

・次にloop()関数内で,Serial.available()関数により通信データがあるか調べ,あれば一文字(コマンド)を変数cに読み取り,
その文字の種類によって,モーターを制御しています。

・arduinoのシリアル通信命令についてはArduino.ccのserial以下をご覧ください。

https://www.arduino.cc/reference/en/language/functions/communication/serial/

 

2.Arduinoにモーターコントロールプログラムを書き込むとエラーが出てうまく書き込めません。

・ZumoMotorLibraryの場所が違っている可能性があります。    /home/pi/sketchbook/library/Zumo-shield/ZumoMotors
というディレクトリ構造になっているか確認してください。

・ArduinoIDEから ツール>シリアルポート を確認してください。    /dev/ACMA0となっているか、たとえば/dev/ACMA1などに
なっていたら、 RaspberryPiとArduinoがUSBケーブルで接続された状態で、RaspberryPiを再起動してください。
( $ sudo reboot now )その後、/dev/ACMA0になっていることを確認してください。

 

3.WebIOPiを起動するとデモページが立ち上がってしまう。

・/etc/webiopi/configファイルが書き換えられていません。11.の項目をもう一度よくチェックして下さい。
デスクトップ環境から直接configファイルをleafPad(エディタ)で開くと、書き込みができません。
lxterminalを立ち上げ、その中で sudo leafpad /etc/webiopi/configとして編集し、保存する必要があります。
これは /etc/rc.localの編集、書き込みについても同じです。

 

4.ブラウザからRasPiのアドレスにアクセスしてもボタンのついたページが表示されない。

・ index.htmlファイルが文法的に正しくない。10.のリストと比べて字句が正しいかチェックして下さい。

 

5.プッシュボタンを押してもRasPiが終了しない。

・プッシュボタンが26, 27ピンに間違いなく差してあるか確認する。
・shutdown.pyのリストをもう一度確認してください。
・shutdown.pyの場所を確認してください。
・/etc/rc.local の内容を確認してください。

3.2 Raspberry Pi B+ インタラクティブモードでLチカ

3.2 Raspberry Pi B+ インタラクティブモードでLチカ

これから、Python(プログラム)でLチカをしてみます。最初はPythonの対話型モード(インタラクティブモード)で、
1行ごとにプログラムを入れてLEDを点けます。次に消します。

(1) Lチカの回路を作ろう

① 組立
下の配線図、回路図をみて、回路を組立て下さい。

raspi_3.2_1 raspi_3.2_2

(2) Pythonを動かそう

① 電源を入れる。
Raspberry Pi B+ / Pi2 B / Pi3 BにACアダプタを繋ぎ、電源を入れます。

② ログインします。
Raspbianが立ち上がったら、ログインして下さい。

③ Pythonを立ち上げます
「sudo python」コマンドを実行して下さい。画面がPythonのシェル画面に変わります。

raspi_code_3.2_1

(3) LEDを点けてみよう

① モジュールの取り込み
「import RPi.GPIO as GPIO」を入力して下さい。
* 「RPi.GPIO」モジュールを取り込みます。

② GPIOの端子の選び方の選択。
「GPIO.setmode(GPIO.BCM)」を入力して下さい。

raspi_code_3.2_2

③ GPIOを選びます。
「LED1 = 5」を入力して下さい。
* 「GPIO5」をLED1にします。

④ LED1を出力にします。
「GPIO.setup(LED1, GPIO.OUT)」を入力して下さい。
* GPIO端子をGPIO番号で選択します。

⑤ LED1をHIGH(+3.3V)にします。
「GPIO.output(LED1, GPIO.HIGH)」を入力して下さい。
* HIGHになるとLED1に電流が流れてLED1が点きます。
* 点かない場合は、配線の間違い等がありますので、確かめて下さい。

raspi_code_3.2_3

(4) LEDを消してみよう

LED1をLOW(0V)にします。
「GPIO.output(LED1, GPIO.LOW)」を入力して下さい。
* LOWになるとLED1に電流が流れなくなりLED1が消えます。

raspi_code_3.2_4

(5) 後片付け

① GPIOの設定を消します。
「GPIO.cleanuo()」を入力して下さい。
* 設定のファイルを消さないと、次に使う時にGPIOが使えなくなることがあります。

② Pythonを終わります。
「exit()」を入力して下さい。
* raspibanに戻ります。

raspi_code_3.2_5

③ 電源をきります。
「sudo shutdown -h now」を入力して下さい。
* ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_3.2_6

3.3 Raspberry Pi B+ Lチカプログラムを作ろう!

 3.3 Raspberry Pi B+ Lチカプログラムを作ろう!
これから、対話型モード(インタラクティブモード)で、作ったプログラムを「nano」エディターを使ってプログラムを作り、
Lチカをします。

回路は3.2と同じです。

(1) Lピカのプログラムを作ろう

① 電源を入れます。
Raspberry Pi B+にACアダプタを繋ぎ、電源を入れます。

② ログインします。
Raspbianが立ち上がったら、ログインして下さい。

③ 「nano」エディター立ち上げます。
「nano rpi_bp_gpio_led1_1.py」コマンドを実行して下さい。画面が「nano」エディターの画面に変わります。

raspi_code_3.3_1

④ プログラムを入れます
サンプルプログラムを見て、入力します。
* 画面は入力が終わった状態です。

サンプルプログラム1

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM) # use GPIO Number

LED1 = 5 # LED1 –> GPIO5
GPIO.setup(LED1, GPIO.OUT) # set GPIO5 output

GPIO.output(LED1, GPIO.HIGH) # LED1 ON

time.sleep(3)

GPIO.output(LED1, GPIO.LOW) # LED1 OFF

GPIO.cleanup()

 

 

⑤ 入力を終わります。
「ctrl + X」を実行します。次に、「y/n」は「enter」を入れます。

⑥入力したプログラムを実行します。

入力を実行します。
「sudo python rpi_bp_gpio_led1_1.py」を実行します。
*LEDが3秒間点いてその後に、「led1 done」のメッセージが出ます。
* LEDが点いたことを確かめて下さい。

raspi_code_3.3_4

(2) Lピカを繰り返してLチカにしよう

Lピカが出来ました。Lピカを繰り返して、Lチカにします。
* Pythonの新しい命令を使います。
* for , in , range(n)

* 書き方
for i in range(10):
インデント 命令
インデント 命令
インデント スペース

① 「nano」エディター立ち上げます。

「nano rpi_bp_gpio_led1a_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

② プログラムを変更します。

サンプルの様にプログラムを変更します。
– 「GPIO.output(LED1, GPIO.HIGH)」の前に「for i in range(10):」を追加します。

– 「GPIO.output(LED1, GPIO.HIGH)」~「GPIO.output(LED1, GPIO.LOW)」をサンプルの様に直します。

* 各命令をインデント(Tabキー)します。スペースは使わないこと。
* 「time.sleep(3)」を「time.sleep(0.5)」に変更します。
* 「time.sleep(0.5)」を追加します。

サンプルプログラム2

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM) # use GPIO Number

LED1 = 5 # LED1 –> GPIO5
GPIO.setup(LED1, GPIO.OUT) # set GPIO5 output

for i in range(10): # repeat 10 times
print(i)
GPIO.output(LED1, GPIO.HIGH) # LED1 ON
time.sleep(0.5)

GPIO.output(LED1, GPIO.LOW) # LED1 OFF
time.sleep(0.5)

GPIO.cleanup()

print(“led1a done”)

 

③入力を終わります。

「ctrl + X」を実行します。
次に、「y/n」は「enter」を入れます。

④ 入力したプログラムを実行します。
「sudo python rpi_bp_gpio_led1a_1.py」を実行します。

* LEDが1秒間隔で10回点滅します。その後に、「led1a done」のメッセージが出ます。
* Lチカをすることを確かめて下さい。
raspi_code_3.3_7

⑤ 電源をきります。
「sudo shutdown -h now」を入力して下さい。
*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_3.3_5

3.4 Raspberry Pi B+ スイッチでLEDをON/OFF

3.4 Lチカを部品にしよう

(1) Lチカを部品(関数)にします。部品は初期化、LEDのオン、LEDのオフの3種類です。
LEDの初期化、LEDのオン、LEDのオフを部品(関数)にします。
*Pythonの新しい命令を使います。
*def
*書き方
def 関数名():
インデント命令
インデント命令
インデントスペース

① 「nano」エディター立ち上げます。
「nano rpi_bp_gpio_led1b_1.py」コマンドを実行して下さい。画面が「nano」エディターの画面に変わります。

② プログラムを変更します。
サンプルの様にプログラムを変更します。 -初期化の関数「def led1_init(): ~」を追加します。
-LED1をオンする関数「def led1_on(): ~」を追加します。

サンプルプログラミング1

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

def led1_init():
GPIO.setup(LED1, GPIO.OUT) # set GPIO5 output

def led1_on():
GPIO.output(LED1, GPIO.HIGH) # LED1 ON

def led1_off():
GPIO.output(LED1, GPIO.LOW) # LED1 OFF

# start

GPIO.setmode(GPIO.BCM) # use GPIO Number

LED1 = 5 # LED1 –> GPIO5
led1_init()

for i in range(10): # repeat 10 times
print(i)
led1_on()
time.sleep(0.5)

led1_off()
time.sleep(0.5)

GPIO.cleanup()

 

 

 

 

③ 入力を終わります。
「ctrl+X」を実行します。次に、「y/n」は「enter」を入れます。

④ 入力したプログラムを実行します。
「sudo python rpi_bp_gpio_led1b_1.py」を実行します。
*LEDが1秒間隔で10回点滅します。その後に、「led1b done」のメッセージが出ます。

raspi_code_3.4_1

⑤ 電源をきります。

「sudo shutdown -h now」を入力して下さい。
*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_3.4_2

(2) LEDを増やそう

作ったLチカを部品(関数)を増やします。部品(関数)にすると、コピーペーストして、少し直すだけで新しい部品(関数)が簡単に出来ます。

①組立
下の配線図、回路図をみて、回路を組立て下さい。

raspi_3.4_1 raspi_3.4_2

② 「nano」エディター立ち上げます。

「nano rpi_bp_gpio_led2_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

③ プログラムを変更します。

サンプルの様にプログラムを変更します。

-初期化の関数「def led2_init(): ~」を追加します。
-LED1をオンする関数「def led2_on(): ~」を追加します。
-LED1をオフする関数「def led2_off(): ~」を追加します。

サンプルプログラミング2

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

def led1_init():
GPIO.setup(LED1, GPIO.OUT) # set GPIO5 output

def led1_on():
GPIO.output(LED1, GPIO.HIGH) # LED1 ON

def led1_off():
GPIO.output(LED1, GPIO.LOW) # LED1 OFF

def led2_init():
GPIO.setup(LED2, GPIO.OUT) # set GPIO6 output

def led2_on():
GPIO.output(LED2, GPIO.HIGH) # LED2 ON

def led2_off():
GPIO.output(LED2, GPIO.LOW) # LED2 OFF

#start
GPIO.setmode(GPIO.BCM) # use GPIO Number

LED1 = 5 # LED1 –> GPIO5
led1_init()

LED2 = 6 # LED1 –> GPIO6
led2_init()

for i in range(10):
print(i)
led1_on()
led2_on()
time.sleep(0.5)

led1_off()
led2_off()
time.sleep(0.5)

 

 

 

 

④ 入力を終わります。

「ctrl+X」を実行します。次に、「y/n」は「enter」を入れます。

⑤ 入力したプログラムを実行します。

「sudo python rpi_bp_gpio_led2_1.py」を実行します。
*LED1とLED2が1秒間隔で10回点滅します。その後に、「led2 done」のメッセージが出ます。

raspi_code_3.4_3

⑥ 電源をきります。

「sudo shutdown -h now」を入力して下さい。
*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_3.4_4

(3) 同じ形の関数をまとめよう

LED1とLED2の部品(関数)はGPIO番号だけが違っています。違っているGPIO番号を引数(ひきすう)で渡すと、初期化、LEDのオン、LEDのオフの部品(関数)をまとめることできます。

LEDを増やしても、作る関数は増えません。

*Pythonの新しい命令を使います。
*def

*書き方

def 関数名(引数):
インデント命令
インデント命令
インデントスペース

① 「nano」エディター立ち上げます。
「nano rpi_bp_gpio_led2a_1.py」コマンドを実行して下さい。画面が「nano」エディターの画面に変わります。

② プログラムを変更します。

サンプルの様にプログラムを変更します。
-初期化の関数「def led_init(leds): ~に変えます。
-LED1をオンする関数「def led_on(leds): ~」に変えます。 -LED1をオフする関数「def led_off(leds): ~」に変えます。
-LED2の関数は全て削除します。

*関数を定義する部分がまとまって、「(2)LEDを増やそう」のサンプルプログラムに比べて、かなりすっきりしました。

サンプルプログラミング3

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

def led_init(leds):
GPIO.setup(leds, GPIO.OUT) # set GPIO leds output

def led_on(leds):
GPIO.output(leds, GPIO.HIGH) # leds ON

def led_off(leds):
GPIO.output(leds, GPIO.LOW) # leds OFF

#start
GPIO.setmode(GPIO.BCM) # use GPIO Number

LED1 = 5 # LED1 –> GPIO5
led_init(LED1)

LED2 = 6 # LED1 –> GPIO6
led_init(LED2)

for i in range(10):
print(i)
led_on(LED1)
led_on(LED2)
time.sleep(0.5)

led_off(LED1)
led_off(LED2)
time.sleep(0.5)

GPIO.cleanup()

 

 

 

③ 入力を終わります。
「ctrl+X」を実行します。次に、「y/n」は「enter」を入れます。

④ 入力したプログラムを実行します。
「sudo python rpi_bp_gpio_led2a_1.py」を実行します。
*LED1とLED2が1秒間隔で10回点滅します。その後に、「led2 a done」のメッセージが出ます。
*実行した結果は前と変わりません。

raspi_code_3.4_5

⑤ 電源をきります。
「sudo shutdown -h now」を入力して下さい。
*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_3.4_6

3.5 Lチカをモジュール(部品のセット)にしよう

 3.5 Lチカをモジュール(部品のセット)にしよう
Lチカを部品(関数)にします。部品は初期化、LEDのオン、LEDのオフの3種類です。この部品を他のプログラムで取り込んで使えるようにします。
回路は3.2と同じです。

(1) Lチカノの部品をモジュール(部品のセット)にしよう

作ったモジュールを使ってみよう。自分で作った、モジュールを「import」して使うことで、自分で作った関数(部品)を使って簡単にプログラムを大きくしていけます。
*Pythonの新しい命令を使います。
*import、as
*書き方
import モジュール名as ニックネーム
*取り込んで、部品(関数)を使うときは「ニックネーム.関数」で使います。

① 「nano」エディター立ち上げます。
「nano rpi_bp_gpio_led1c_1.py」コマンドを実行して下さい。画面が「nano」エディターの画面に変わります。

② プログラムを変更します。
サンプルの様にプログラムを変更します。

サンプルプログラム1

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

def led_init(leds):
GPIO.setup(leds, GPIO.OUT) # set GPIO leds output

def led_on(leds):
GPIO.output(leds, GPIO.HIGH) # leds ON

def led_off(leds):
GPIO.output(leds, GPIO.LOW) # leds OFF

if __name__ ==(“__main__”):
#start

GPIO.setmode(GPIO.BCM) # use GPIO Number

LED1 = 5 # LED1 –> GPIO5
led_init(LED1)

LED2 = 6 # LED1 –> GPIO6
led_init(LED2)

for i in range(10):
print(i)
led_on(LED1)
led_on(LED2)
time.sleep(0.5)

led_off(LED1)
led_off(LED2)
time.sleep(0.5)

GPIO.cleanup()
print(“led2b done”)

 

 

 

 

③ 入力を終わります。
「ctrl+X」を実行します。次に、「y/n」は「enter」を入れます。

④ 入力したプログラムを実行します。
「sudo python rpi_bp_gpio_led1b_1.py」を実行します。
*LEDが1秒間隔で10回点滅します。その後に、「led1b done」のメッセージが出ます。

raspi_code_3.5_1

⑤ 電源をきります。
「sudo shutdown -h now」を入力して下さい。
*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_3.5_2

(2) モジュールを使おう
作ったモジュールを使ってみよう。自分で作った、モジュールを「import」して使うことで、自分で作った関数(部品)を使って簡単にプログラムを大きくしていけます。

*Pythonの新しい命令を使います。
*import、as
*書き方
import モジュール名as ニックネーム
*取り込んで、部品(関数)を使うときは「ニックネーム.関数」で使います。

① 「nano」エディター立ち上げます。
「nano rpi_bp_gpio_led2c_1.py」コマンドを実行して下さい。画面が「nano」エディターの画面に変わります。

② プログラムを変更します。
サンプルの様にプログラムを変更します。
-「import time」の後に「import rpi_bp_gpio_led2c_1.pyas ctrl」を追加します。
-全部の関数定義「def」を削除します。

サンプルプログラム2

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

import rpi_bp_gpio_led2b_1 as ctrl

if __name__ ==(“__main__”):
#start

GPIO.setmode(GPIO.BCM) # use GPIO Number

LED1 = 5 # LED1 –> GPIO5
ctrl.led_init(LED1)

LED2 = 6 # LED1 –> GPIO6
ctrl.led_init(LED2)

for i in range(10):
print(i)
ctrl.led_on(LED1)
ctrl.led_on(LED2)
time.sleep(0.5)

ctrl.led_off(LED1)
ctrl.led_off(LED2)
time.sleep(0.5)

GPIO.cleanup()

 

 

 

③ 入力を終わります。
「ctrl+X」を実行します。次に、「y/n」は「enter」を入れます。

④ 入力したプログラムを実行します。
「sudo python rpi_bp_gpio_led1c_1.py」を実行します。
*LEDが1秒間隔で10回点滅します。その後に、「led1b done」のメッセージが出ます。

raspi_code_3.5_3

⑤ 電源をきります。
「sudo shutdown -h now」を入力して下さい。
*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_3.5_4

(3) 同じ部品名(関数名)でモジュールを使おう
作ったモジュールを使ってみよう。自分で作った、モジュールを「import」して使うことで、自分で作った関数(部品)をそのまま使えるようにします。
*Pythonの新しい命令を使います。

*from
*書き方
from モジュール名import *

① 「nano」エディター立ち上げます。
「nano rpi_bp_gpio_led2d_1.py」コマンドを実行して下さい。画面が「nano」エディターの画面に変わります。

② プログラムを変更します。
サンプルの様にプログラムを変更します。
-「import rpi_bp_gpio_led2c_1.pyas ctrl」を「from rpi_bp_gpio_led2c_1.pyimport *」に変更します。
-使用する関数の「ctrl.」をとります。

サンプルプログラム3

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

from rpi_bp_gpio_led2b_1 import *

if __name__ ==(“__main__”):
#start

GPIO.setmode(GPIO.BCM) # use GPIO Number

LED1 = 5 # LED1 –> GPIO5
led_init(LED1)

LED2 = 6 # LED1 –> GPIO6
led_init(LED2)

for i in range(10):
print(i)
led_on(LED1)
led_on(LED2)
time.sleep(0.5)

led_off(LED1)
led_off(LED2)
time.sleep(0.5)

GPIO.cleanup()
print(“led2d done”)

 

 

 

 

③ 入力を終わります。
「ctrl+X」を実行します。次に、「y/n」は「enter」を入れます。

④ 入力したプログラムを実行します。
「sudo python rpi_bp_gpio_led1d_1.py」を実行します。
*LEDが1秒間隔で10回点滅します。その後に、「led1d done」のメッセージが出ます。

raspi_code_3.5_5

⑤ 電源をきります。
「sudo shutdown -h now」を入力して下さい。
*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_3.5_6

3.6 スィッチでLEDをオン/オフしよう

3.6 スィッチでLEDをオン/オフしよう

スィッチのレベルを読み込んで、LEDを点けたり、消したりします。

(1) スィッチの回路を作ろう

①組立

下の配線図、回路図をみて、回路を組立て下さい。

raspi_3.6_1s raspi_3.6_2s

(2)スィッチのレベルでLEDをオン、オフ」する」プログラムを作ろう

SW1のレベルを読み込みます。レベルの”LOW”、”HIGH”でLEDを点けたり消したりします。SW1が押されると、
GNDに繋がって、レベルは”LOW”になります。離すと、”HIGH”になります。

*Pythonの新しい命令を使います。
*if 、else 命令
*、==、から後ろの命令は、取り込んでも使えない(動かない)ようにします。
*==:等しい、!=:異なる、>:大きい、>=:大きいまたは等しい、=<:等しいまたは小さい、<:小さい
*書き方
*if 変数1==変数2:

インデント命令
else :

インデント命令
スペース

①電源を入れます

RaspberryPiB+にACアダプタを繋ぎ、電源を入れます。

②ログインします。
Raspbianが立ち上がったら、ログインして下さい。

③「nano」エディター立ち上げます。
「nano rpi_bp_gpio_lsw1_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。
プログラムを変更します。
サンプルの様にプログラムを変更します。

サンプルプログラム1

#! /usr/bin/env python

import RPi.GPIO as GPIO
import time

from rpi_bp_gpio_led2b_1 import *

if __name__ ==(“__main__”):
#start

GPIO.setmode(GPIO.BCM) # use GPIO Number

LED1 = 5 # LED1 –> GPIO5
led_init(LED1)

SW1 = 26 # SW1 –> GPIO26
GPIO.setup(SW1, GPIO.IN) # set GPIO25 input

for i in range(20):
print(i)

on_off = GPIO.input(SW1) # read SW1

if on_off == GPIO.LOW:
led_on(LED1)

else:
led_off(LED1)

time.sleep(0.2)

 

 

 

④ 入力を終わります。
「ctrl+X」を実行します。次に、「y/n」は「enter」を入れます。

⑤ 入力したプログラムを実行します。
「sudo python rpi_bp_gpio_sw_1.py」を実行します。

*SW1を押すとLED1が点きます。離すと消えます。
その後に、「sw1 done」のメッセージが出ます。

raspi_code_3.6_1

⑥ 電源をきります。

「sudo shutdown -h now」を入力して下さい。

*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

(3) 部品にしよう

作った部品(関数)でSW1のレベルを読み込みます。
読み込んだレベルは戻り値として返します。

*Pythonの新しい命令を使います。
*return 命令
*、*書き方
*def関数名():

インデント命令
インデントreturn戻り値

① 電源を入れます

RaspberryPiB+にACアダプタを繋ぎ、電源を入れます。

② ログインします。

Raspbianが立ち上がったら、ログインして下さい。

③ 「nano」エディター立ち上げます。

「nano rpi_bp_gpio_sw1a_1.py」コマンドを実行して下さい。

画面が「nano」エディターの画面に変わります。

プログラムを変更します。

サンプルの様にプログラムを変更します。

サンプルプログラム2

#! /usr/bin/env python

import RPi.GPIO as GPIO
import time

from rpi_bp_gpio_led2b_1 import *

def sw_init(sw):
GPIO.setup(sw, GPIO.IN) # set GPIO25 input

def sw_read(sw):
level = GPIO.input(sw) # set GPIO sw input
return level

if __name__ ==(“__main__”):
#start

GPIO.setmode(GPIO.BCM) # use GPIO Number

LED1 = 5 # LED1 –> GPIO5
led_init(LED1)

SW1 = 26 # SW1 –> GPIO26
sw_init(SW1) # set GPIO26 input

for i in range(20):
print(i)

on_off = sw_read(SW1) # read SW1

if on_off == GPIO.LOW:
led_on(LED1)

else:
led_off(LED1)
time.sleep(0.2)

④ 入力を終わります。

「ctrl+X」を実行します。次に、「y/n」は「enter」を入れます。

⑤ 入力したプログラムを実行します。

「sudo python rpi_bp_gpio_swa_1.py」を実行します。

*SW1を押すとLED1が点きます。離すと消えます。
その後に、「sw1a done」のメッセージが出ます。

*(2)のプログラムと同じようにSW1を押すとLED1が点きます。
離すと消えます。
その後に、「sw1a done」のメッセージが出ます。

④ 入力を終わります。

「ctrl+X」を実行します。次に、「y/n」は「enter」を入れます。

⑤ 入力したプログラムを実行します。

「sudo python rpi_bp_gpio_swa_1.py」を実行します。

*SW1を押すとLED1が点きます。離すと消えます。
その後に、「sw1a done」のメッセージが出ます。

*(2)のプログラムと同じようにSW1を押すとLED1が点きます。離すと消えます。
その後に、「sw1a done」のメッセージが出ます。

raspi_code_3.6_3

⑥ 電源をきります。
「sudo shutdown -h now」を入力して下さい。
*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_3.6_4

(4) モジュールを使おう

作った部品(関数)のモジュールを読み込みます。読み込んだモジュールの部品(関数)を使います。

① 電源を入れます
RaspberryPiB+にACアダプタを繋ぎ、電源を入れます。

② ログインします。
Raspbianが立ち上がったら、ログインして下さい。。

③ 「nano」エディター立ち上げます。
「nano rpi_bp_gpio_sw1b_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。
プログラムを変更します。
サンプルの様にプログラムを変更します。

サンプルプログラム3

#! /usr/bin/env python

import RPi.GPIO as GPIO
import time

from rpi_bp_gpio_led2b_1 import *

from rpi_bp_gpio_sw1a_1 import *

if __name__ ==(“__main__”):
#start

GPIO.setmode(GPIO.BCM) # use GPIO Number

LED1 = 5 # LED1 –> GPIO5
led_init(LED1)

SW1 = 26 # SW1 –> GPIO26
sw_init(SW1) # set GPIO26 input

for i in range(20):
print(i)

on_off = sw_read(SW1) # read SW1

if on_off == GPIO.LOW:
led_on(LED1)

else:
led_off(LED1)
time.sleep(0.2)

GPIO.cleanup()

④ 入力を終わります。

「ctrl+X」を実行します。次に、「y/n」は「enter」を入れます。

⑤ 入力したプログラムを実行します。
「sudo python rpi_bp_gpio_swb_1.py」を実行します。

*SW1を押すとLED1が点きます。離すと消えます。
その後に、「sw1a done」のメッセージが出ます。

*(2)のプログラムと同じようにSW1を押すとLED1が点きます。離すと消えます。
その後に、「sw1b done」のメッセージが出ます。

raspi_code_3.6_5

⑥ 電源をきります。

「sudo shutdown -h now」を入力して下さい。

*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_3.6_6

4.Raspberry Pi B+でフィジカルコンピューティング(デジタル/PWM)

 4.Raspberry Pi B+でフィジカルコンピューティング(デジタル/PWM)

これから、デジタルのPWMを使います。PWMで圧電スピーカを動かして、ブザー音、ドレミファ等の音を出すことができます。
また、PWMでRCサーボモータを動かして、回る角度をコントロールすることもできます。
今回は、行いませんがPWMとHブリッジ回路を組み合わせてDCモータの回転スピード、回転方向等をコントロールすることも出来ます。

 4.1 PWMでブザーを鳴らそう

PWMを使って圧電スピーカでをブザー音を出します。
PWMは周波数を変えることが出来ますので、ドレミ等の音を出すことも出来ます。

(1) ブザーの回路を作ろう

①組立

下の配線図、回路図をみて、回路を組立て下さい。

raspi_4.1_1s raspi_4.1_2s

(2) ブザーを鳴らそう

①電源を入れます。

RaspberryPiB+にACアダプタを繋ぎ、電源を入れます。

②ログインします。

Raspbianが立ち上がったら、ログインして下さい。

③「nano」エディター立ち上げます。

「nano rpi_bp_pwm_bz1_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

サンプルプログラム1

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM) # use GPIO Number

BZ1 = 13 # BZ1 –> GPIO13
GPIO.setup(BZ1, GPIO.OUT) # set GPIO13 output

buzzer = GPIO.PWM(BZ1, 1000) # set BZ1 1000 Hz

buzzer.start(50) # start BZ1 duty 50%
print(” buzzer 1000 Hz ,duty 50 %”)
time.sleep(5)

buzzer.ChangeFrequency(500) # change frequency 500 Hz
print(” change 500 Hz “)
time.sleep(5)

buzzer.ChangeDutyCycle(10) # change duty cycle 10 %
print(” duty 10 % “)
time.sleep(5)

buzzer.stop() # stop buzzer
GPIO.cleanup()

④入力を終わります。

「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

⑤入力したプログラムを実行します。

「sudo python rpi_bp_pwm_bz1_1.py」を実行します。

*ブザーが最初は1KHzでなります。約3秒後に500Hzに変わります。
最後にデューティが10%になり音色が変わります。
その後に、「bz1b done」のメッセージが出ます。

raspi_code_4.1_1

(2) 部品を作ろう

ブザーの初期化、開始、停止、周波数変更、デューティ変更を部品(関数)にします。

①「nano」エディター立ち上げます。

「nano rpi_bp_pwm_bz1a_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

②プログラムを入れます

サンプルプログラム2

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

def tone_init(bz):
GPIO.setup(bz, GPIO.OUT) # set GPIO bz output
buzzer = GPIO.PWM(bz, 1000) # set bz 1000 Hz
return buzzer

if __name__ == (“__main__”) :

#start
GPIO.setmode(GPIO.BCM) # use GPIO Number

BZ1 = 13 # BZ1 –> GPIO13
tone1=tone_init(BZ1)

tone1.start(50)
print(” buzzer 1000 Hz ,duty 50 %”)
time.sleep(5)

tone1.ChangeFrequency(500) # change frequency 500 Hz
print(” change 500 Hz “)
time.sleep(5)

tone1.ChangeDutyCycle(10) # change duty cycle 10 %
print(” duty 10 % “)
time.sleep(5)

tone1.stop() # stop tone
GPIO.cleanup()

入力を終わります。

③「ctrl+X」を実行します。

次に、「y/n」は「enter」を入れます。

④入力したプログラムを実行します。

「sudo python rpi_bp_pwm_bz1a_1.py」を実行します。

*ブザーが最初は1KHzでなります。
約3秒後に500Hzに変わります。
最後にデューティが10%になり音色が変わります。
その後に、「bz1a done」のメッセージが出ます。

raspi_code_4.1_2

(3) モジュールを使おう

(2)で作った部品(関数)の入ったファイルをモジュールとして使います。

①「nano」エディター立ち上げます。

「nano rpi_bp_pwm_bz1b_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

②プログラムを入れます

サンプルプログラム3

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

from rpi_bp_pwm_bz1a_1 import *

if __name__ == (“__main__”) :

#start
GPIO.setmode(GPIO.BCM) # use GPIO Number

BZ1 = 13 # BZ1 –> GPIO13
tone1=tone_init(BZ1)

tone1.start(50)
print(” buzzer 1000 Hz ,duty 50 %”)
time.sleep(5)

tone1.ChangeFrequency(500) # change frequency 500 Hz
print(” change 500 Hz “)
time.sleep(5)

tone1.ChangeDutyCycle(10) # change duty cycle 10 %
print(” duty 10 % “)
time.sleep(5)

tone1.stop() # stop tone
GPIO.cleanup()

③入力を終わります。

「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

④入力したプログラムを実行します。

「sudo python rpi_bp_pwm_bz1b_1.py」を実行します。
*ブザーが最初は1KHzでなります。
約3秒後に500Hzに変わります。
最後にデューティが10%になり音色が変わります。
その後に、「bz1b done」のメッセージが出ます。

raspi_code_4.1_3

(4) ドレミをならそう

ドレミファの周波数をリストを使って作ります。
*Pythonの新しい命令を使います。
*リスト
*書き方
変数名=[要素0、要素1、…、]
使用例:
doremi = [220.0, 246.9, 277.2, 293.7, 329.6 ,370.0, 415.3, 440.0]
*変数名に使える文字は「アルファベット」、「数字」、「_」の3種類の半角文字になります。
また、最初の文字はは「アルファベット」、のみです。

①「nano」エディター立ち上げます。

「nano rpi_bp_pwm_bz1c_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

②プログラムを入れます

サンプルプログラム4

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

from rpi_bp_pwm_bz1a_1 import *

if __name__ == (“__main__”) :

#start

doremi = [220.0, 246.9, 277.2, 293.7, 329.6, 370.0, 415.3, 440.0]

GPIO.setmode(GPIO.BCM) # use GPIO Number

BZ1 = 13 # BZ1 –> GPIO13
tone1=tone_init(BZ1)

tone1.start(50)

for freq in doremi:
print(freq)
tone1.ChangeFrequency(freq)
time.sleep(1)

tone1.stop() # stop tone
GPIO.cleanup()

入力を終わります。

③「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

④入力したプログラムを実行します。
「sudo python rpi_bp_pwm_bz1c_1.py」を実行します。

raspi_code_4.1_4

(5) 記号でドレミをならそう

辞書型を使って、”Do”,”Re”,”Mi”で演奏が出来るようにします。

*Pythonの新しい命令を使います。
*辞書型
*書き方
変数名={キー0:要素0、キー1:要素1、…}
使用例:
doremi = {“Do”:220.0, “Re”:246.9, “Mi”:277.2, “Fa”:293.7, “Sol”:329.6 ,”La”:370.0, “Si”:415.3, “D0_”:440.0}
*変数名に使える文字は「アルファベット」、「数字」、「_」の3種類の半角文字になります。
また、最初の文字はは「アルファベット」、のみです。

①「nano」エディター立ち上げます。

「nano rpi_bp_pwm_bz1d_1.py」コマンドを実行して下さい。

画面が「nano」エディターの画面に変わります。

②プログラムを入れます

サンプルプログラム5

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

from rpi_bp_pwm_bz1a_1 import *

if __name__ == (“__main__”) :

#start

doremi = {“Do”:220.0, “Re”:246.9, “Mi”:277.2, “Fa”:293.7,”Sol”:329.6,\
“La”:370.0, “Si”:415.3, “Do_”:440.0 }

cyocyo = [“Sol”, “Mi”, “Mi”,”Fa”,”Re”,”Re”]
GPIO.setmode(GPIO.BCM) # use GPIO Number

BZ1 = 13 # BZ1 –> GPIO13
tone1=tone_init(BZ1)

tone1.start(50)

for scale in cyocyo:
print(scale)
freq = doremi[scale]
tone1.ChangeFrequency(freq)
time.sleep(1)

tone1.stop() # stop tone

③入力を終わります。

「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

④入力したプログラムを実行します。

「sudo python rpi_bp_pwm_bz1d_1.py」を実行します。

raspi_code_4.1_5

⑤電源をきります。

「sudo shutdown -h now」を入力して下さい。

*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_4.1_6

4.1PWMでブザーを鳴らそう

PWMを使って圧電スピーカでをブザー音を出します。
PWMは周波数を変えることが出来ますので、ドレミ等の音を出すことも出来ます。

 4.1 PWMでブザーを鳴らそう

PWMを使って圧電スピーカでをブザー音を出します。
PWMは周波数を変えることが出来ますので、ドレミ等の音を出すことも出来ます。

(1) ブザーの回路を作ろう

①組立

下の配線図、回路図をみて、回路を組立て下さい。

 

raspi_4.1_1s raspi_4.1_2s

(2) ブザーを鳴らそう

①電源を入れます。

RaspberryPiB+にACアダプタを繋ぎ、電源を入れます。

②ログインします。

Raspbianが立ち上がったら、ログインして下さい。

③「nano」エディター立ち上げます。

「nano rpi_bp_pwm_bz1_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

サンプルプログラム

④入力を終わります。

「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

⑤入力したプログラムを実行します。

「sudo python rpi_bp_pwm_bz1_1.py」を実行します。

*ブザーが最初は1KHzでなります。約3秒後に500Hzに変わります。
最後にデューティが10%になり音色が変わります。
その後に、「bz1b done」のメッセージが出ます。

raspi_code_4.1_1

(2) 部品を作ろう

ブザーの初期化、開始、停止、周波数変更、デューティ変更を部品(関数)にします。

①「nano」エディター立ち上げます。

「nano rpi_bp_pwm_bz1a_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

②プログラムを入れます

サンプルプログラムj

入力を終わります。

③「ctrl+X」を実行します。

次に、「y/n」は「enter」を入れます。

④入力したプログラムを実行します。

「sudo python rpi_bp_pwm_bz1a_1.py」を実行します。

*ブザーが最初は1KHzでなります。
約3秒後に500Hzに変わります。
最後にデューティが10%になり音色が変わります。
その後に、「bz1a done」のメッセージが出ます。

raspi_code_4.1_2

(3) モジュールを使おう

(2)で作った部品(関数)の入ったファイルをモジュールとして使います。

①「nano」エディター立ち上げます。

「nano rpi_bp_pwm_bz1b_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

②プログラムを入れます

サンプルプログラム

③入力を終わります。

「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

④入力したプログラムを実行します。

「sudo python rpi_bp_pwm_bz1b_1.py」を実行します。
*ブザーが最初は1KHzでなります。
約3秒後に500Hzに変わります。
最後にデューティが10%になり音色が変わります。
その後に、「bz1b done」のメッセージが出ます。

raspi_code_4.1_3

(4) ドレミをならそう

ドレミファの周波数をリストを使って作ります。
*Pythonの新しい命令を使います。
*リスト
*書き方
変数名=[要素0、要素1、…、]
使用例:
doremi = [220.0, 246.9, 277.2, 293.7, 329.6 ,370.0, 415.3, 440.0]
*変数名に使える文字は「アルファベット」、「数字」、「_」の3種類の半角文字になります。
また、最初の文字はは「アルファベット」、のみです。

①「nano」エディター立ち上げます。

「nano rpi_bp_pwm_bz1c_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

②プログラムを入れます

サンプルプログラム

入力を終わります。

③「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

④入力したプログラムを実行します。
「sudo python rpi_bp_pwm_bz1c_1.py」を実行します。

raspi_code_4.1_4

(5) 記号でドレミをならそう

辞書型を使って、”Do”,”Re”,”Mi”で演奏が出来るようにします。

*Pythonの新しい命令を使います。
*辞書型
*書き方
変数名={キー0:要素0、キー1:要素1、…}
使用例:
doremi = {“Do”:220.0, “Re”:246.9, “Mi”:277.2, “Fa”:293.7, “Sol”:329.6 ,”La”:370.0, “Si”:415.3, “D0_”:440.0}
*変数名に使える文字は「アルファベット」、「数字」、「_」の3種類の半角文字になります。
また、最初の文字はは「アルファベット」、のみです。

①「nano」エディター立ち上げます。

「nano rpi_bp_pwm_bz1d_1.py」コマンドを実行して下さい。

画面が「nano」エディターの画面に変わります。

②プログラムを入れます

サンプルプログラム

③入力を終わります。

「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

④入力したプログラムを実行します。

「sudo python rpi_bp_pwm_bz1d_1.py」を実行します。

raspi_code_4.1_5

⑤電源をきります。

「sudo shutdown -h now」を入力して下さい。

*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_4.1_6

4.2 Raspberry Pi B+ 温度を測ろう!

 

 4.2 PWMでサーボ-モータを回して見よう

(1) サーボ-モータの回路を作ろう

PWMを使ってサーボモータを回します。サーボモータの回る角度はPWM信号のパルス幅で変わります。

(2) 回路を作ろう

①組立
下の配線図、回路図をみて、回路を組立て下さい。

raspi_4.2_1s raspi_4.2_2s

(2) 部品を作ろう

サーボモータ(SG-90)は、

動作パルス:20ms–>周波数50Hz

0度:1.0m–>デユーティ5%

90度:1.5ms–>デユーティ7.5%

180度:2.0ms–>デユーティ10.0%

で動作します。

①電源を入れます。

RaspberryPiB+にACアダプタを繋ぎ、電源を入れます。

②ログインします。

Raspbianが立ち上がったら、ログインして下さい。

③「nano」エディター立ち上げます。

「nano rpi_bp_pwm_sv1_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

④プログラムを入れます

サンプルプログラム1

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM) # use GPIO Number

SV1 =12
GPIO.setup(SV1, GPIO.OUT)

servo = GPIO.PWM(SV1, 50) # set 20 ms / 50 Hz

angle = 0.0 # set angle
new_duty =(1.0 + angle/180.0)/20.0*100.0 # calculate duty
print(new_duty)
servo.start(new_duty)
print(“angle 0 deg”)
time.sleep(0.5)

angle = 90.0 # set angle
new_duty =(1.0 + angle/180.0)/20.0*100.0 # calculate duty
print(new_duty)
servo.ChangeDutyCycle(new_duty)
print(“angle 90 deg”)
time.sleep(0.5)

angle = 180.0 # set angle
new_duty =(1.0 + angle/180.0)/20.0*100.0 # calculate duty
print(new_duty)
servo.ChangeDutyCycle(new_duty)
print(“angle 180 deg”)
time.sleep(0.5)

angle = 0.0 # set angle
new_duty =(1.0 + angle/180.0)/20.0*100.0 # calculate duty
print(new_duty)
servo.start(new_duty)
print(“angle 0 deg”)
time.sleep(0.5)

servo.stop() # stop servo

 

 

⑤入力を終わります。

「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

⑥入力したプログラムを実行します。

「sudo python rpi_bp_pwm_sv1_1.py」を実行します。

*サーボモータが0度、90度、180度、0度とまわります。その後に、「sv1 done」のメッセージが出ます。

raspi_code_4.2_1

(2) 部品にしよう

初期化、回転角の制御を部品にします。

①「nano」エディター立ち上げます。

「nano rpi_bp_pwm_sv1a_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

②プログラムを入れます

サンプルプログラムを見て、入力します。

サンプルプログラム2

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

def sv_init(sv):
GPIO.setup(sv, GPIO.OUT)
servo = GPIO.PWM(sv, 50) # set 20 ms / 50 Hz
return servo

def angle_duty(angle):
duty =(1.0 + angle/180.0)/20.0*100.0 # calculate duty
return duty

if __name__ == (“__main__”) :
# start

GPIO.setmode(GPIO.BCM) # use GPIO Number

SV1 =12
servo = sv_init(SV1)

angle = 0.0 # set angle
new_duty = angle_duty(angle)

print(new_duty)
servo.start(new_duty)
print(“angle 0 deg”)
time.sleep(0.5)

angle = 90.0 # set angle
new_duty = angle_duty(angle) # calculate duty
print(new_duty)
servo.ChangeDutyCycle(new_duty)
print(“angle 90 deg”)
time.sleep(0.5)

angle = 180.0 # set angle
new_duty = angle_duty(angle) # calculate duty
print(new_duty)
servo.ChangeDutyCycle(new_duty)
print(“angle 180 deg”)
time.sleep(0.5)

angle = 0.0 # set angle
new_duty = angle_duty(angle) # calculate duty
print(new_duty)
servo.start(new_duty)
print(“angle 0 deg”)
time.sleep(0.5)

servo.stop() # stop servo

 

 

③入力を終わります。

「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

④入力したプログラムを実行します。
「sudo python rpi_bp_pwm_sv1a_1.py」を実行します。

*サーボモータが0度、90度、180度、0度とまわります。
その後に、「sv1a done」のメッセージが出ます。

raspi_code_4.2_2

(3) モジュールを使おう

(2)で作った部品(関数)の入ったファイルをモジュールとして使います。

①「nano」エディター立ち上げます。

「nano rpi_bp_pwm_bz1b_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

②プログラムを入れます
サンプルプログラムを見て、入力します。

サンプルプログラム3

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

from rpi_bp_pwm_sv1a_1 import *

if __name__ == (“__main__”) :
# start

GPIO.setmode(GPIO.BCM) # use GPIO Number

SV1 =12
servo = sv_init(SV1)

angle = 0.0 # set angle
new_duty = angle_duty(angle)

print(new_duty)
servo.start(new_duty)
print(“angle 0 deg”)
time.sleep(0.5)

angle = 90.0 # set angle
new_duty = angle_duty(angle) # calculate duty
print(new_duty)
servo.ChangeDutyCycle(new_duty)
print(“angle 90 deg”)
time.sleep(0.5)

angle = 180.0 # set angle
new_duty = angle_duty(angle) # calculate duty
print(new_duty)
servo.ChangeDutyCycle(new_duty)
print(“angle 180 deg”)
time.sleep(0.5)

angle = 0.0 # set angle
new_duty = angle_duty(angle) # calculate duty
print(new_duty)
servo.start(new_duty)
print(“angle 0 deg”)
time.sleep(0.5)

servo.stop() # stop servo
GPIO.cleanup()

 

 

 

③入力を終わります。

「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

④入力したプログラムを実行します。

「sudo python rpi_bp_pwm_sv1b_1.py」を実行します。
*サーボモータが0度、90度、180度、0度とまわります。
その後に、「sv1b done」のメッセージが出ます。

raspi_code_4.2_3

⑤電源をきります。

「sudo shutdown -h now」を入力して下さい。

*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_4.2_4

5  Raspberry Pi B+でフィジカルコンピューティング(アナログ)

 5 Raspberry Pi B+でフィジカルコンピューティング(アナログ)

れから、アナログのADCを使います。ADCを使って電圧を測ります。
また、CDSと組み合わせて明るさを測ることもできます。 温度測定IC(MCP9700)と組み合わせて部屋の温度を測ることも出来ます。

(1) 「SPI」パッケージをインストールする準備
MCP9700はRaspberry Pi B+のSPIに繋いで使います。SPIを動かすためのパッケージを準備する必要があります。

① ターミナルの立ち上げ。
以下でターミナルを動かして下さい。
- デスクトップ → 画面上の「LXTerminal」をダブルクリックしてターミナルを立ち上げる。
- リモートログイン → PCの「TeraTerm」を立ち上げる。

② LAN(インターネットに入れる)に接続します。

③ 電源を入れる
ACアダプタのDC5V出力をRaspberry Pi B+のマイクロUSBコネに接続します。

④ ログイン
画面にメッセージがいろいろ表示されて、下の様に「raspberrypi login:」と表示されたら、「pi」を入力します。
次に、「Password:」には「raspberry」と入れます。
* 入力したパスワードは画面に表示されません。もし、間違って入れたときは、ログインにもどりますので、やり直して下さい。

⑤ Raspbianをアップデートします。

「sudo apt-get update」コマンドを実行して下さい。
* 下記のように実行状態のメッセージが表示されます。しばらくして、コマンド入力待ち状態になります。

raspi_code_5_1

⑥ Raspbianをアップデートします。

「sudo apt-get update」コマンドを実行して下さい。
* 下記のように実行状態のメッセージが表示されます。しばらくして、コマンド入力待ち状態になります。

raspi_code_5_2

raspi_code_5_3

⑦ Raspbianをアップグレードします。

「sudo apt-get upgrade」コマンドを実行して下さい。

下記のように実行状態のメッセージが表示されます。しばらくして、{Y/n}入力待ち状態になります。

raspi_code_5_4

* 下記のように実行状態のメッセージが表示されます。しばらくして、コマンド入力待ち状態になります。

⑧ 「pythonのパッケージ」の入手。
「sudo apt-get install python-dev 」コマンドを実行して下さい。
下記のように実行状態のメッセージが表示されます。しばらくして、{Y/n}入力待ち状態になります。
「y」を入力して下さい。

raspi_code_5_5

* 下記のように実行状態のメッセージが表示されます。しばらくして、コマンド入力待ち状態になります。

raspi_code_5_6

⑨ 「git」のインストール。

「sudo apt-git install git 」コマンドを実行して下さい。
下記のように実行状態のメッセージが表示されます。しばらくして、コマンド入力待ち状態になります。

raspi_code_5_7

(2) 「SPI」パッケージをインストールする

① 「SPIパッケージ」のダウンロード。

「git clone http://github.com/doceme/py-spidev.git/コマンドを実行して下さい。
下記のように実行状態のメッセージが表示されます。しばらくして、コマンド入力待ち状態になります。

raspi_code_5_8

② 「SPIパッケージ」をインストールするディレクトリに移動。

「cd py-spidev」コマンドを実行して下さい。
ディレクトリが変わります。コマンド入力待ち状態になります。

raspi_code_5_9

③ 「SPIパッケージ」をインストールする。

「sudo python setup.py install」コマンドを実行して下さい。
メッセージがでます。しばらくして、コマンド入力待ち状態になります。

raspi_code_5_10

④ ディレクトリを戻します。

「cd ~」コマンドを実行して下さい。
コマンド入力待ち状態になります。

raspi_code_5_11

⑤ 電源をきります。

「sudo shutdown -h now」を入力して下さい。
*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_5_12