アイディアの種

活動記録

インプット

アウトプット

方向性について湿度で通知するシステムで確定

LINEnotifyを使用する

コードに関しては夏休みに作成したものを基準に調整を重ねる

import spidev
import RPi.GPIO as GPIO
from time import sleep
import requests

# LINE Notifyのアクセストークン
line_notify_api = "<https://notify-api.line.me/api/notify>"
line_notify_token = "rYAHE3W3NuhWd8uV49jPO5NqtJT27RGechcKb2XPQML"

# Vrefは参照電圧、センサーの最大電圧に合わせる
Vref = 3.3

# GPIOピンの設定
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)  # GPIO 17番ピンを出力モードに設定
GPIO.output(17, GPIO.HIGH)  # GPIO 17番ピンをHIGHに設定(ON)

# SPI通信の設定
spi = spidev.SpiDev()
spi.open(0, 0)  # ポート0, CS0
spi.max_speed_hz = 1000000  # 1MHz

# 土壌湿度のしきい値(適切に調整する)
moisture_threshold = 1.5  # 電圧が1.5V以下で乾燥とみなす

# 初期状態の設定
previous_state = None

def send_line_notify(message):
    """LINE Notifyで通知を送る関数"""
    payload = {"message": message}
    headers = {"Authorization": f"Bearer {line_notify_token}"}
    try:
        response = requests.post(line_notify_api, headers=headers, data=payload)
        response.raise_for_status()
    except requests.exceptions.RequestException as e:
        print(f"LINE Notifyエラー: {e}")

try:
    while True:
        # SPI通信でADCからデータを取得
        adc = spi.xfer2([0x06, 0x00, 0x00])
        data = ((adc[1] & 0x0f) << 8) | adc[2]
        voltage = Vref * data / 4096  # 電圧値に変換
        print(f"{voltage:.2f}V")

        # 土壌湿度がしきい値を下回っているかチェック
        if voltage < moisture_threshold:
            current_state = "LOW"
        else:
            current_state = "NORMAL"

        # 状態が変わったら通知を送る
        if current_state != previous_state:
            if current_state == "LOW":
                print("土壌が乾燥しています。水やりが必要です。")
                send_line_notify("土壌が乾燥しています。水やりが必要です。")
                GPIO.output(17, GPIO.LOW)  # LEDを点灯させる(乾燥時)
            else:
                print("土壌湿度は正常です。")
                send_line_notify("土壌湿度は正常です。")
                GPIO.output(17, GPIO.HIGH)  # LEDを消灯(湿度正常時)

            previous_state = current_state

        sleep(10)  # 10秒ごとにセンサーの値を確認

except KeyboardInterrupt:
    pass

finally:
    spi.close()
    GPIO.cleanup()

今回使用する土壌湿度センサが湿度が高いほどセンサーの出力電圧が下がる仕様のためchatGPTの力も借りながら多少調整する。

# 土壌湿度がしきい値を上回っているかチェック
if voltage > moisture_threshold:
    current_state = "LOW"  # 電圧が高い=乾燥している
else:
    current_state = "NORMAL"  # 電圧が低い=湿っている

発表ブースの原案を考える

基本は発表会2の通り

サボテンを直接持っていくというのも難しいため、人の目を引くような体験できる何かを考える

ChatGPTとの対話

スクリーンショット 2024-12-27 9.09.27.png

スクリーンショット 2024-12-27 9.09.34.png

スクリーンショット 2024-12-27 9.09.45.png

スクリーンショット 2024-12-27 9.09.51.png

スクリーンショット 2024-12-27 9.09.58.png

スクリーンショット 2024-12-27 9.10.04.png