名刺サイズの超小型PC「ラズパイ」で遊ぶ(第23回)
レンズ交換式モジュール「High Quality Camera」にシャッターボタンと通知LEDを取り付ける(1/2 ページ)
前回は「Raspberry Pi High Quality Camera」(以下、HQカメラ)を使った撮影を簡単に紹介しました。しかしラズパイですから、単純にスクリプトを動かして撮影するだけでは面白くありません。シャッターボタンを付けて、撮影したらLEDが光って知らせてくれる、というのはどうでしょうか。順を追って解説していきます。
今回も「Raspberry Pi」シリーズの正規販売店としてECサイトを運営するケイエスワイにお借りしたHQカメラを利用しています。
シャッターボタンをつける
まずはボタンを押したらシャッターを切ることができるようにしましょう。この仕組みですが、タクトスイッチをボタンに見立ててラズパイのGPIOにつなげて、その端子が導通したときにシャッターが切れるようにすればよさそうです。そこでブレッドボードにタクトスイッチを取り付け、これの一端をGNDに、もう一端を任意のGPIOにつなげましょう。ここでは12番目のピンであるGPIO18と、14番目のピンであるGNDにつなげました。
あとはPythonのプログラムを作成し、タクトスイッチを押したらシャッターを切るようにすればOKです。ファイル名は「shutter.py」などとしておきましょう。記述するプログラムは以下のようになります。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import subprocess
import datetime
import time
BUTTON = 12 # シャッターボタンは12番
GPIO.setmode(GPIO.BOARD) # ピン番号で配線
GPIO.setup(BUTTON, GPIO.IN)
def shoot(BUTTON):
now = datetime.datetime.now()
DATE = now.strftime('%Y%m%d_%H%M%S')
savephoto="/home/pi/Pictures/"+ DATE +".jpg"
subprocess.call(["raspistill", "-o" ,savephoto])
GPIO.add_event_detect(BUTTON, GPIO.RISING, callback = shoot, bouncetime = 100)
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print('
Stop!
') # Ctrl+Cで中断
GPIO.cleanup()
取り付けたらコンソールから以下のように入力してプログラムを立ち上げましょう。
$ python shutter.py
プログラムを起動するとコマンド入力待ち状態になります。ここでシャッターボタンを押してみてください。撮影して画像がディスプレイに表示されたでしょうか。ボタンを押したときにGPIO18が「HIGH」になり、撮影するアクションが起きるという仕組みです。このあとボタンを押すたびに画像が撮影されていきます。画像は「年月日_時間分秒」という形式のファイル名で保存されます。
なお、画像はホームディレクトリの「Pictures」に保存されますので、ちゃんと撮影できているか見てみましょう。「Ctrl+C」を入力すると、画面に「Stop!」と表示されてプログラムを終了できます。
LEDを光らせる
続いてはラズパイでLEDを光らせる仕組みについてご紹介します。いわゆる「Lチカ」と呼ばれるもので、電子工作の第一歩をこれから踏み出した人も多いかと思います。ご存じの方は飛ばしていただいて構わないですが、後ほどシャッターボタンと連動させるときに、GPIO15(10番ピン)を使うので、そこを念頭に置いてください。
ではLチカです。LEDはそのまま電源につないではいけません。アノード(+)側に抵抗を挟む必要があります。抵抗を挟まずにつなげると壊れたり、最悪は爆発することもありますので注意しましょう。
ところで抵抗値はどのように決めればいいのでしょうか。LEDには流すことができる「順方向電圧(VF)」と「順方向電流(IF)」がありますので、スペックからこの値を調べておきます。今回は秋月電子通商で販売されている「超高輝度5mmピンク色LED」を使いましたが、このLEDのVFは3.1V、IFは20mAです。LEDと直列して回路を構成するので、抵抗値Rはオームの法則から、
R=(E-VF)/IF=(3.3-3.1)/0.02=10(Ω)
となり、つまり10Ω以上の抵抗であれば問題ありません。今回は手元にあった20Ωの抵抗を使いました。接続図は以下のようになります。
パーツを接続したらラズパイを起動して、標準エディタ「nano」などで以下のプログラムを記述して「lchika.py」などのファイル名で保存します。次に
$ python lchika.py
としてプログラムを動かすとLEDが点滅します。終了するには先ほどと同じようにCtrl+Cを押せばOKです。以下がプログラムの内容です。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
LEDPIN = 10 # LEDは10番
GPIO.setmode(GPIO.BOARD) # ピン番号で配線
GPIO.setup(LEDPIN,GPIO.OUT)
try:
while True:
GPIO.output(LEDPIN ,GPIO.HIGH)
time.sleep(1)
GPIO.output(LEDPIN ,GPIO.LOW)
time.sleep(1)
except KeyboardInterrupt:
print('
Stop!
') # Ctrl+Cで中断
GPIO.cleanup()
スイッチを押すとLEDが点滅する
さてLEDが点灯する環境を作ったので、今度はタクトスイッチを押したらLEDが点灯する仕組みを作ってみましょう。タクトスイッチとLEDの配線は以下のようになります。タクトスイッチ側に3.3Vの電源をつなぎ、抵抗を挟んでLEDと接続させます。LED側の抵抗は先ほどと同じく20Ω。タクトスイッチ側の抵抗は1KΩです。
接続が終了したらプログラムを組んで動作させましょう。以下のような内容をnanoなどで記述したら「lchika_switch.py」などのように名前をつけて保存します。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
LEDPIN = 10 # LEDは10番
BUTTON = 12 # タクトスイッチは12番
GPIO.setmode(GPIO.BOARD) # ピン番号で配線
GPIO.setup(LEDPIN, GPIO.OUT)
GPIO.setup(BUTTON, GPIO.IN)
try:
while True:
if GPIO.input(BUTTON) == GPIO.HIGH:
GPIO.output(LEDPIN, GPIO.HIGH)
else:
GPIO.output(LEDPIN, GPIO.LOW)
except KeyboardInterrupt:
print('
Stop!
') # Ctrl+Cで中断
GPIO.cleanup()
では以下のようにプログラムを起動します。
$ python lchika_switch.py
プログラムを走らせたらボタンを押してみましょう。LEDが点灯したでしょうか。ボタンから手を離してオフにするとLEDが消灯します。プログラムの終了は、先ほどと同じようにCtrl+Cです。
Copyright © ITmedia, Inc. All Rights Reserved.
名刺サイズの超小型PC「ラズパイ」で遊ぶ
今やスマートフォンアプリで何でも完結できてしまう時代。しかし、一から自分の手でデバイスを作り上げ、試行錯誤しながらアイデアを具現化する楽しさは格別です。この連載では、テーマや用途にあわせてマイクロコンピュータ(マイコン)と呼ばれる名刺サイズの超小型PC「Raspberry Pi」(通称ラズパイ)の活用方法から具体的な工作手順までを紹介します。
この記事の著者
関連記事
こんなメディアも見られています
ITmedia NEWSに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
本日の新着記事
アクセスランキング
-
1
LINE、着せかえ表示問題を謝罪 希望者に返金へ
-
2
スマート給餌器で38時間の障害、ペットがご飯食べられず 飼い主の苦情殺到 「旅行中なのに」「猫が死んじゃう」
-
3
不正アクセスで一部停止中のNTT西子会社レンタルサーバ、復旧見通しを公表 調査完了は8月末見込み
-
4
コードが書けない筆者が愛車用にアプリを2本自作 「AI製アプリで起業」の夢膨らむも、見えた有料化の壁
-
5
楽天、“攻撃型ドローン”関連報道に「事実と相違ない」 国内販売窓口として導入支援
-
6
楽天、“攻撃型ドローン”報道で問い合わせフォーム設置 ただし「返信はしない」
-
7
終了発表の縦読み漫画「comico」――元重課金ユーザーが振り返る「いつしか開かなくなった」理由
-
8
大阪万博の関係者情報が漏えいか 再委託先のMicrosoft 365アカウントに不正アクセス
-
9
生成AI画像で“架空の女性”に成り済まして政治投稿か 立憲栃木県連の男性党員 一部報道
-
10
Anthropic、8月末にもIPO申請書類を公開か 調達額はSpaceXの過去最大に匹敵と米報道
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR