目的
Raspbery Pi Picoを使って、人感センサーを動かす。
機材
焦電型赤外線(人感)センサーについては以下の記事も参考にしてください。
私は千石電商にて、ピンヘッダがすでにハンダづけされているRaspbery Pi Picoを購入しました。また、秋月電子電商で人感センサーとジャンパーワイヤを購入しました。
環境構築
以下の記事を参考に、環境構築を行いました。
Thonny
VS Codeなど、すでに自分で用意してある開発環境を使わない場合は、PythonのIDE(統合開発環境)であるThonnyをPCにダウンロードします。
自分はVS Codeを使用しておりpython3などを嗜んでいますが、そこにMicroPythonを新たに導入して、ごちゃごちゃになるのが嫌だったので(初心者ゆえ)、Thonnyを使いました。
以下のページから自分のPCにあったダウンロードします。今回はMac用のThonnyをダウンロードします。
インストール後は指示に従って設定していきましょう。
インストールが全て終わると、Launchpadに以下のようなアイコンが出現します。
起動すると言語などの設定画面が出てくるので、自分に合わせて設定して進みましょう。
私の場合はLanguageを日本語に、Initial settingsをRaspberry Pi (simple)にしました。
Raspbery Pi Picoのセットアップ
事前にダウンロードしたMicroPythonを、Raspbery Pi Picoに書き込みます。
Raspbery Pi Pico上の"BOOTSEL"と書いてある白いボタンを押しながら、USBケーブルでMacに繋ぎます。
ちなみに私はUSBハブにUGREENのものを使っています。ここはなんでも良いですが、参考までに。
すると、MacでRaspbery Pi Picoにアクセスできるようになります。Finder上でRPI-RP2という名前で表示されます。
ここでThonnyの Tool > Option >Interpreter を開き、右下のInstall or update MicroPythonより、インストールを実行します。
不正な取り出しのメッセージが来ますが、これはRaspbery Pi Picoが再起動したためなので気にする必要はありません。
プログラミングの実行
以下、Thonnyで操作していきます。
Thonnyの画面の左上にある+マークから新規ファイルを作成します。
今回は、焦電型赤外線(人感)センサーを動かしたいので、以下のようなプログラムを書きました。
これはChat GPTに指導してもらいました。
# モジュールのインポート
import machine
import utime
import uos
PIR_PIN = 15
pir = machine.Pin(PIR_PIN, machine.Pin.IN)
led = machine.Pin(25, machine.Pin.OUT)
def format_time(timestamp):
year, month, day, hour, minute, second, *_ = timestamp
return "{:04d}-{:02d}-{:02d} {:02d}:{:02d}:{:02d}".format(year, month, day, hour, minute, second)
def save_to_file(data):
if not "visitor_data.txt" in uos.listdir():
with open("/visitor_data.txt", "w") as file:
file.write("timestamp,status\n")
with open("/visitor_data.txt", "a") as file:
file.write(data)
while True:
presence = "presence" if pir.value() else "absence"
timestamp = utime.localtime()
current_time = format_time(timestamp)
data_row = "{},{}\n".format(current_time, presence)
save_to_file(data_row)
# presenceが"presence"の場合にLEDを点灯させる
if presence == "presence":
led.high()
utime.sleep(1) # LEDを1秒間点灯させる
led.low()
else:
led.low() # presenceが"absence"の場合はLEDを消灯させる
utime.sleep(5)
プログラムが書けたら、コードを保存します。Thonnyの ファイル > 保存 よりコードを保存します。保存場所は今回、Raspbery Pi Picoとします。
main.pyと名付けておくことにより、PCではなくコンセントなどの外部電源に繋いだとき、自動でmain.pyが実行されます。
これで下準備は完了です。
パソコンから取り外し、外部電源に繋げば、勝手にプログラムが起動し、5秒後ごとに
- 人を感じるとLEDが点灯、presenceと記録
- 人がいなければ、LEDは点灯せず、absenceと記録します
そのデータはtxtデータとして、visitor_data.txtという名前で記録されます。
記録を取り出したり、プログラムをいじる場合は、再度繋ぎ直し、Thonny上でプログラムの実行を停止すると、Raspbery Pi Pico内のファイルにアクセスできるようになります。
以上