決まった時間にLEDの明るさを変える

Raspberry PiでLEDの明るさを,決まった時間に変えることを試してみる。

明るさを変える

明るさはPWM調光で変える。その前に,精度の高いPWM信号を生成するのに,WiringPiというツールを使う。

WiringPiのインストー

まず,この書籍のp209に書いてある手順で,Python2用にWiringPi-Pythonをイン ストールする。

(追記)「Raspbianのカーネルと呼ばれるソフトウェアがバージョン4.9になると、書籍のままのインストールコマンドではWiringPi-Python正常動作しなくなります」ので,サポートページ(http://raspibb1.blogspot.jp/)に記載の方法でインストールする。が,rpi-updateを行うと,wiringpiにエラーが出るので,このページ(WiringPiでエラーになった場合のメモ - 豆腐とコンソメ)をもとにダウングレードする。

次いで,サポートページ(応用演習のPDF)にある手順で,Python3用にインストールしなおす。

bluebacks.kodansha.co.jp

一応,これでWiringPiをPythonでインポートできる。 

WiringPi2のインストー

次にWiringPi2をインストール。手順は次のサイトにあるとおり。

hombre-nuevo.com

ようやく,明るさを変える

参考にしたのは次のサイト。書いてあるとおりにすると,徐々に明るくなり,徐々に暗くなるようにできる。なお,wiringpiを用いる場合には管理者権限が必要なので,Terminalで「sudo idle」として開くこと。

blog.kakakikikeke.tk

ここで,余談。wiringpi2は入れなくても良さそうで,最初のimportでwiringpiをいれておけば上記のコードは同じように動く。

決まった時間にLEDの明るさを変える

ようやく本題。参考にしたのは次のサイト。

raspberrypi.stackexchange.com

で,次のコードで指定した時間に明るさを(DUTY1からDUTY2へ)変えられる。

import wiringpi
import datetime
from time import sleep
OUTPUT = 2
PWM_PIN = 18
DUTY1 = 600
DUTY2 =  20
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(PWM_PIN, OUTPUT)
wiringpi.pwmSetMode(wiringpi.GPIO.PWM_MODE_MS)
wiringpi.pwmSetClock(375)
wiringpi.pwmWrite(PWM_PIN, DUTY1)
try:
    while True:
        time = datetime.datetime.now().strftime("%H:%M")
        if time == "00:00":
            wiringpi.pwmWrite(PWM_PIN, DUTY2)
    sleep(0.2)
except KeyboardInterrupt:
    pass
wiringpi.pwmWrite(PWM_PIN, 0)

(参考)決まった時間に処理する

決まった時間に処理する方法としてはcronを使うのが一般的みたい。

make.bcde.jp

Raspberry PIでLED点灯コントロール、Part5 cronとPythonでLEDをコントロール | ものづくりエクスペリメント

Arduinoを使ってみる

Raspberry piに続いて,ArduinoArduino Uno R3)も買ってみたので,使ってみる。

参考にしたのは次のサイト。

Arduino のすすめ

Arduinoでお手軽電子工作:LEDを光らせてみる | Device Plus - デバプラ

初心者でもわかる・できる!Arduinoを使った初めての電子工作実践 | HTML5Experts.jp

開発環境「Arduino IDE」をダウンロード(Arduino - Software)して,Windows PCにインストール。PCとArduinoボードをつないで,ツールからボードとシリアルポートで使用するものを選択。これで一応使えたので,プログラムを作成して,コンパイル→アップロード。

 

複数のLEDを点灯させる

電子工作で最初に出てくるLピカをしてみる。

tool-lab.com

www.marutsu.co.jp

抵抗値計算

電流制限抵抗がないと過大電流が流れてしまうので,抵抗をおく。必要な抵抗値は次のサイトで計算。

diy.tommy-bright.com

使用したLED

秋月電子通商で購入した,次のLEDを使用。

5mm赤外線LED OSI3CA5111A (10個入): LED(発光ダイオード) 秋月電子通商 電子部品 ネット通販

5mm赤外線LED OSI3CA5111A (10個入)
[OSI3CA5111A]
通販コード I-04779
発売日 2011/07/26
メーカーカテゴリ OptoSupply

5mmタイプの赤外線(IR)LEDです。 この赤外線LEDは可視光(赤色)をわずかに残すことで 防犯カメラの威嚇の効果にも最適です。

■主な仕様(Ta=25℃)
・本体:ウォータークリアー(無色透明)
・直径:5mm
・順方向電圧(VF):1.6V(標準)(@50mA)
・放射強度:45mW/sr(@50mA)
・ピーク波長:850nm(標準)(@50mA)
・逆耐圧:5.0V
・半減角:15°(狭角)
・PD:126mW

LEDが1個の場合

手持ちの抵抗が330Ωなので,ひとまずこれで点灯させる。Raspberry PiのGPIOでLEDを光らせる場合,電圧は3.3Vになるので,流れる電流は(3.3V-1.6V)/330Ω=5.2mAとなる(オームの法則から)。

 LEDが複数の場合

順方向電圧1.6Vなので,直列でたくさん点灯させようとすると,Raspberry PiのGPIOから電圧3.3Vでは流れない。そこで,手持ちの24V電源を活用する。10個のLEDを直列に接続すると,流れる電流は(24V-(1.6V×10))/330Ω=24.2mAとなる(オームの法則から)。

 なお,直列接続と並列接続のメリット,デメリットは次のサイトを参照。

LED駆動における直列接続と並列接続 - EDN Japan

余談

チャーリープレキシングによる点灯というのもあるらしい。

http://razzpisampler.oreilly.com/ch04.html

Pi NoIR Camera V2の付属品

赤外線カメラモジュールv2を購入すると,白いプラスチックでできた丸い物と青いシートがついてくる。あまり説明がなかったので,調べてみた。

Raspberry Pi PiNoir Camera V2 | Raspberry Pi カメラモジュール | Raspberry Pi 【通販RS】

白いプラスチック

カメラのピントが合う範囲は概ね1m-無限遠なので,それよりも近距離にピントを合わせるに,レンズを回すための治具。詳しくは次のサイトを参考。

a244.hateblo.jp

a244.hateblo.jp

青いシート

カメラをInfragramのように使える青いプラスチックフィルタ。詳細はRaspberry Pi公式サイトのWhat’s that blue thing doing here? にっちなまとめ。: 光合成を見よう「Infragram」を参考に。

WiFi設定(IPアドレス固定)とVNCによるリモート接続

Raspberry PiIPアドレスを固定する

単一Wifiの場合

まず,家のルーターで接続する際のIPアドレスを固定する。

参考にしたのは次のサイト。このサイトの記載をもとに,DHCPにより割り当てられるIPアドレスを把握して,固定するIPアドレスを決める。

raspibb.blogspot.jp

実際の設定は,ターミナルで次のコマンドを実行し,設定ファイル /etc/dhcpcd.conf を開いて,設定ファイル /etc/dhcpcd.conf を管理者権限で編集する。

sudo leafpad /etc/dhcpcd.conf

そして,ファイルの末尾に次の4行を入力して,保存。再起動。

interface wlan0
static ip_address=192.168.0.100/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

複数Wifiの場合

複数の場合は次のサイトを参考に作業を進める。

kouki-hoshi.hatenablog.com

/etc/wpa_supplicant/wpa_supplicant.conf にWifiの設定が保存されている(作業前に接続したいWifiに接続しておくと,接続情報がこのファイルに保存されている)ので,内容を確認。

次に,/etc/dhcpcd.confを上と同じように開き,ファイル末尾に次の行を入力して保存。再起動。要は,ssidの設定を追加すればOKみたい。

interface wlan0
ssid SSID1 ← wpa_supplicant.confで保存されているSSID
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

ssid SSID2← wpa_supplicant.confで保存されているSSID
static ip_address=192.168.43.123/24
static routers=192.168.43.1
static domain_name_servers=192.168.43.1

追記

画面右上のネットワークのアイコン付近を右クリックすると,Wireless&Wired Network Settingsというメニューがあるので,選択。Network Preferencesウィンドウが表示されるので,ここで設定してもいいみたい。

リモート接続する

RASPBIAN JESSIE WITH PIXELに標準実装されたRealVNCを利用して,パソコンからraspberry piに接続する。

raspberry pi側で,設定-Rasbperry Piの設定-インターフェイスを開き,VNCを有効にする。具体的な方法は次のサイトを参考に。

ラズベリーパイ覚え書き

ラズベリーパイのRealVNC Serverを試します | pinky blog てきとぅ ブログ

パソコン側で,次のサイトから使用するOSに合わせて,viewerを好きなフォルダにダウンロード。

Download VNC Viewer | RealVNC

"Enter a VNC Server address or search"と書かれたところに,上で設定したIPアドレスを入力。"Duplicate VNC Server identity"という警告がでるので内容を確認してcontinueをクリック。UsernameとPasswordを聞かれるので入力する(標準では,piとraspberry)と,接続が始まる。

追記:画面解像度の変更

HDMIケーブルをつながずにリモート接続すると,画面解像度がVGA相当でとても小さいので,次の手順で設定を変更。

Terminalでsudo idle3 /boot/config.txtと入力し,テキストエディタを管理者権限で開く。

RealVNC | Troubleshooting VNC Server on the Raspberry Piを参考に,次のとおり入力する。

hdmi_force_hotplug=1 Tells your Pi an HDMI display is attached.
hdmi_ignore_edid=0xa5000080   
hdmi_group=2  
hdmi_mode=16 Forces a resolution of 1024x768 at 60Hz. See here for more options.

保存して再起動。

Bluetooth マウスとキーボードの接続

毎回USBマウスとキーボードを接続するのは面倒なので,次のサイトを参考にBluetooth接続での利用を検討。

ラズベリーパイ3のBluetoothを使ってみる | pinky blog てきとぅ ブログ

Model Bシリーズ最新版・Raspberry Pi 3!内蔵Bluetoothを使ってみよう | Device Plus - デバプラ

使っているものは次のもの。

 

 

結論から言うと,マウスはBluetooth接続できるけど,「this device has no services which can be used with Raspberry Pi.」と表示が出て,マウスポインタが動かない。Unifyingレシーバー経由での利用は問題なくできている。

キーボードはどちらも,問題なく利用できている。

Pi NoIR Camera V2をひとまず使えるようにする

赤外線カメラPi NoIR Camera V2を使うのが,当面の一つの目的なので,早速使えるようにする。

Raspberry Pi PiNoir Camera V2 | Raspberry Pi カメラモジュール | Raspberry Pi 【通販RS】

Raspberry Pi HD Pi NoIRカメラボードV2
このRaspberry Pi HD Pi NoIRカメラボードで、あらゆるRaspberry Pi又はComputeモジュールに接続し、HDビデオや静止画を撮影することができます。 Pi NoIR (赤外線なし)は、標準カメラモジュールと同じですが、赤外線フィルタは搭載されていません。 したがって、暗闇での写真やビデオの撮影に最適です。
このモジュールには、高速ビデオ画像処理機能と高感度を実現した、ソニーのIMX219PQイメージセンサが採用されています。
Pi NoIRモジュールを使用すれば、固定パターンノイズやにじみのような画質の劣化を軽減することができます。 露光制御、ホワイトバランス、輝度検出などの自動制御機能も備えています。
特長と利点:
赤外線フィルタなし
高画質
優れたデータ機能
8メガピクセル固定フォーカス(小型フォーカス調整工具付属)
1080p、720p60、VGA90に対応
ソニーIMX219PQ CMOS画像センサ
15ピンリボンケーブル
PiへのPi NoIRの接続:
15 cmのリボンケーブルを使用して、モジュールスロットとPiカメラシリアルインターフェイスポート(CSI)を直接接続します。 接続が完了すれば、マルチメディア抽象レイヤ(MMAL)又はLinux用ビデオ(V4L) APIを介してカメラボードにアクセスできるようになります。 代わりに、Picamera Pythonや、オンラインで入手できるライブラリを使用してアクセスすることもできます。

製品の用途:
Raspberry PiのPi NoIRカメラモジュールは、夜間のHDビデオや静止画の撮影に最適です。 赤外線LEDと併用すると暗視が可能になるので、設備の状態や夜行性動物を監視することができます。

備考
暗闇でPi NoIRカメラモジュールを使用する場合は、照明用の赤外線LEDが必要です。 

接続

Raspberry PiをシャットダウンしてからCamera Moduleをつなぐ
リボンケーブルの向きはコネクタ(青くないほう)がHDMIポート側にくるようにする

カメラソフトウェアを使えるようにする

画面左上の「Menu」→「Preference」→「Raspberry Pi Configuration」をクリックすると設定画面が開くので,Interfacesタブを選択し,Cameraを有効にする (再起動が必要)

Pythonで動かしてみる

Worksheet - Getting started with picamera | Raspberry Pi Learning Resourcesを参考にPythonプログラムを書いてみる

追記(2017/3/22)

公式サイトのドキュメント(Camera Module - Raspberry Pi Documentation)によると,カメラを使う方法にはシェルスクリプトPythonの2種類がある。

シェルスクリプトを使う方法は例えば,次のサイトなどがある(日本語のサイトではこの方法の方が多いように思う)。

Raspberry Pi 3 Model Bに専用カメラモジュールを接続する方法 (ラズパイに専用カメラモジュールを接続して Raspbianで写真の静止画撮影や動画を録画する方法)

PythonーPicameraについて,公式ドキュメントは次のサイトにある。

picamera — Picamera 1.13 Documentation