#12で使ったah407傾斜センサーをAdafruit.IO経由でクラウド監視します。
Adafruit.IOとは
Adafruit.IOとは米国Adafruit Industriesが提供するクラウドサービスです。くわしくはこちら
Welcome to Adafruit IO | Adafruit Learning System
chromeでの翻訳機能が優秀なのでがんばって読んでみてください。
Adafruit.IOのアカウント作成
無料プランでも十分遊べます。一分間で30のデータを扱えます。データは30日間保存。5個のダッシュボード。10個のfeeds。まずはアカウントを作るところから始めましょう。アカウントを作成したらIOを開いて右上の鍵マークをクリックします。
setting.tomlの書き換え
そうするとuser nameとactive keyが表示されます。pico Wのフォルダを開いてください。setting.tomlを書き換えます。
# Comments are supported
CIRCUITPY_WIFI_SSID="自宅のwifi SSID"
CIRCUITPY_WIFI_PASSWORD="自宅のwifi password"
CIRCUITPY_WEB_API_PORT=80
CIRCUITPY_WEB_API_PASSWORD="passw0rd"
test_variable="this is a test"
thumbs_up="\U0001f44d"
aio_username = "adafuit.IOのUSERNAME"
aio_key = "adafruit.IOの長いActive Key"
2,3行目を書き換えて、8,9行目を書き足します。
Adafruit.IOでfeedsの作成
+ New Feedsをクリックしてdetectという名前でfeedを作成します。
コードを書き込みます
# Raspberry Pi Pico Wでtiltセンサーの値をAdafruit Ioに
import os
import time
import ssl
import wifi
import socketpool
import microcontroller
import board
import busio
import adafruit_requests
import digitalio
from adafruit_io.adafruit_io import IO_HTTP, AdafruitIO_RequestError
led = digitalio.DigitalInOut(board.GP15)
led.direction = digitalio.Direction.OUTPUT
button = digitalio.DigitalInOut(board.GP28)
button.switch_to_input(pull=digitalio.Pull.DOWN)
wifi.radio.connect(os.getenv('CIRCUITPY_WIFI_SSID'), os.getenv('CIRCUITPY_WIFI_PASSWORD'))
aio_username = os.getenv('aio_username')
aio_key = os.getenv('aio_key')
pool = socketpool.SocketPool(wifi.radio)
requests = adafruit_requests.Session(pool, ssl.create_default_context())
# Adafruit IO HTTP API objectをリセット
io = IO_HTTP(aio_username, aio_key, requests)
print("connected to io")
# feedの名前はあらかじめ作っておいたdetectを指定します。
feed_name = "detect"
while True:
try:
# pico wが動きを検知したら
if button.value:
led.value = True
# 1というデータを送ります
io.send_data(feed_name, 1)
time.sleep(1)
# REPLにも表示させます
print('なんか動いた')
time.sleep(1)
led.value = False
except Exception as e:
print("Error:\n", str(e))
print("Resetting microcontroller in 10 seconds")
time.sleep(10)
microcontroller.reset()
このプログラムを書き込んでセンサーをうごかすとAdafruit.IOのサーバにデータが蓄積されていきます。feedsの中のdetectをクリックしてみましょう。センサーが反応した時刻が記録されているはずです。
Adafruit.IOのダッシュボード
今度は監視するためのダッシュボードを作成します。+new dashboard今回はsensorという名前で作ります。そして歯車マークを押してcreate new blockからstreamを選んでデータ元をdetectにするとこんなかんじになります。外からスマホで確認できます。
IoT監視システムの完成
玄関に取り付ければ防犯になりますし、キッチン洗面所トイレに設置すれば独居老人を見守ることもできますね。活用法は無限に広がります。