著者:麻生二郎
電子回路を触ってみたい、作ってみたい、制御してみたいと思ったときに、人気の小型コンピュータボード「Raspberry Pi」(ラズパイ)と組み合わせるのが意外と簡単です。本特集では、市販のモジュールと、ラズパイを使って電子回路
の作成や制御を素早く実現する方法を紹介します。
シェルスクリプトマガジン Vol.60は以下のリンク先でご購入できます。![]()
![]()
#!/usr/bin/env python3
import smbus2
import bme280
i2c = smbus2.SMBus(1)
data = bme280.sample(i2c, 0x76)
print('気温 :' + str(round(data.temperature, 1)) + '度')
print('湿度 :' + str(round(data.humidity, 1)) + '%')
print('気圧 :' + str(round(data.pressure, 1)) + 'hPa')
#!/usr/bin/env python3
from lcd_st7032 import ST7032
lcd = ST7032()
lcd.write("Shellscript")
lcd.setCursor(1, 0)
lcd.write([0xbc, 0xaa, 0xd9, 0xbd, 0xb8, 0xd8, 0xcc, 0xdf, 0xc4])
#!/usr/bin/env python3
import smbus2
from i2csense.bh1750 import BH1750
bus = smbus2.SMBus(1)
sensor = BH1750(bus)
sensor.update()
print(sensor.light_level)
print(sensor.current_state_str)
#!/usr/bin/env python3
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN)
try:
while True:
rain = GPIO.input(17)
if rain == 0:
print("雨が降り始めました")
GPIO.cleanup()
break
except KeyboardInterrupt:
GPIO.cleanup()
#!/usr/bin/env python3
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN)
try:
while True:
fire = GPIO.input(17)
if fire == 0:
print("火災が発生しました")
GPIO.cleanup()
break
except KeyboardInterrupt:
GPIO.cleanup()
#!/usr/bin/env python3
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN)
try:
while True:
pir = GPIO.input(17)
if pir == 1:
print("人が侵入しました")
GPIO.cleanup()
break
except KeyboardInterrupt:
GPIO.cleanup()
#!/usr/bin/env python3
from time import sleep
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
try:
for i in range(0,3):
GPIO.output(17, GPIO.HIGH)
GPIO.output(17, GPIO.LOW)
sleep(2)
except KeyboardInterrupt:
GPIO.cleanup()
#!/usr/bin/env python3
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN)
try:
while True:
if GPIO.wait_for_edge(17, GPIO.RISING):
print("指パッチン!")
GPIO.cleanup()
break
except KeyboardInterrupt:
GPIO.cleanup()
#!/usr/bin/env python3
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN)
try:
while True:
rain = GPIO.input(17)
if rain == 1:
print("水分量が足りません")
GPIO.cleanup()
break
except KeyboardInterrupt:
GPIO.cleanup()
#!/usr/bin/env python3
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN)
try:
while True:
if GPIO.wait_for_edge(17, GPIO.FALLING):
print("傾きました")
GPIO.cleanup()
break
except KeyboardInterrupt:
GPIO.cleanup()
#!/usr/bin/env python3
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(17, GPIO.IN)
GPIO.output(27, GPIO.LOW)
time.sleep(0.3)
GPIO.output(27, GPIO.HIGH)
time.sleep(0.00001)
GPIO.output(27, GPIO.LOW)
try:
while GPIO.input(17) == 0:
palse_start = time.time()
while GPIO.input(17) == 1:
palse_end = time.time()
palse_width_time = palse_end - palse_start
distance = palse_width_time * 1000000 / 58
print("距離は {0} cmです".format(distance))
GPIO.cleanup()
except KeyboardInterrupt:
GPIO.cleanup()
#!/usr/bin/env python3
from time import sleep
import RPi.GPIO as GPIO
import sys
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
for _ in range(args):
GPIO.output(17, GPIO.HIGH)
sleep(0.01)
GPIO.output(17, GPIO.LOW)
sleep(0.05)
GPIO.cleanup()