2026年3月31日火曜日

捨てようか迷っていたタイマーを改造してみた

 キー入力は待ち受け電力が多いためか、 電池があまり持たないタイマーだったので、しょっちゅう電池交換も面倒で、いつのまにか使わなくなったタイマーでしたが、そのまま捨てるのももったいない気がして、試しにTTP223と2sc1815で使うときだけOnにするようにしてみた。  

 TTP223も3uA程度は消費するようので、はたして長持ちするかどうか試してみないとわからないけれど。

 赤色LEDが見えないとOnOffがわかりにくかったので、写真のように、上部からタッチセンサーが見えるように加工した。(タッチセンサの端にハンダが見えますが。これは、センサ本体を中におさめて、延長した導線で、外にタッチ部をだすことを試みたときのもの。あまりうまくいかなかったので、あきらめました。)
 オンのたびモード切替など操作が必要なったり、Offしてから数分置いて完全に電荷が抜けないと再度Onにはできなかったりということはありますが、それでも、少し省エネにはなったのでないかと思います。



2026年3月27日金曜日

苗床管理Esp32c3による温度調整

 しばらく利用してみたが、手元から温度を細かく調整できるのは便利。外気温によって、リレーonの比率が変わるのもグラフから一目瞭然で、異様に比率が高いときは、熱が逃げている可能性もあったりするので、それをみて再度苗床をセットしなおしたりしている。

D2,D3はそれぞれヒーターに密着したセンサーのためかなり高めの温度になっている。D1,D3が制御用のセンサー。発芽までは温度高くてもいいけれど、発芽後はあまり温度が高くても徒長しやすいらしいので、途中から少しさげるようにしている。


2026年3月23日月曜日

追加でEsp32C3を苗床管理用に利用することに

 Esp32C3へのマイク、アンプ追加の実験はうまくいかなかったので、マイクは取り除き、センサとSSRをつなげて、苗床管理用に使うことに。ヒーターと白色LED(徒長防止)どちらにも使えるように考えてみた。管理用のアプリは、すでにあるものを若干拡張して使用予定。


bottleの一部  
esp32c3
 
※esp32c3のAPモードで苦労する。SSIDやパスワードはAPモードで設定したかったのですが、いろいろ注意が必要なようで、うまく切り替えがいかないときは、以下の点の確認が必要なようです。
IDEの設定:
 Board:ESP32C3 Dev Module   CPU:160MHz   Flash Mode :DIO  Flash Freq :80MHz   Upload Speed :460800   USB CDC On Boot :Enabled  Partition :Default   Erase Flash :Only Sketch 変な時 :All Flash
 モードの確認: WiFi.mode(WIFI_AP);
出力は適切か:  WiFi.setTxPower(WIFI_POWER_19_5dBm); 8_5dBmで安定する場合も
チャンネル6でSSID非表示をfalseなら:  WiFi.softAP("ESP32_AP", "12345678", 6, false);
※調整器はケースをアクリル板にしているので、風除室だと紫外線で脆くなりやすいかと思い、車用の塗装スプレーをかけている。

2026年3月22日日曜日

トルバムビガーは成長がゆっくり

せっかく、ESP32の温度調整で芽が出たトルバムビガーですが、光が不足すると徒長しやすいので、LEDテープ(昼光色)の利用も検討中。それまでの間、窓際で少しでも光をあてています。(すでに徒長してしまったので、土を追加していますが、今後どうなるか?)

 

2026年3月17日火曜日

ESP32にマイクとアンプは、負荷が高く断念

 esp32C3のハードの能力ではデジタルで音声処理は難しそうで、せっかくの部品購入ではありましたが、諦めて、別の方法に切り替えました。esp32はテキスト処理にとどめておいたほうがい無難なようです。目的は音声認識英英辞典だったので、GithubPagesに、Javascriptでこちらにサイトをつくってみました。スマホなどからアクセスすると便利に使えそうです。

最初からこの方法を思いついていれば、わざわざesp32で難しいことしなくても、実現できたのですが、、、。

2026年3月15日日曜日

ESP32にスピーカとマイクをつけて実験

 短い音の録音再生(エコー)が可能か実験してみた。今後、raspi経由でいろいろ処理を予定していますが。

 配線の数が多いときは、意外とエナメル線が使いやすい。裏表に通したりしてなるべく干渉しないようにした。PCB等の発注も考えたけれど、配線の変更の可能性もあるし、それなりの料金はかかるので、最小限のユニバーサル基板にしてみた。モジュールが基板からはみ出しているところは、あとでサイズがあいそうな百均のケースに固定できないか、考えたい。

raspiで音声アラームをスケジュールに従い起動

アラームをスケジュールで起動する仕組みを考えてみた。
wavplay.py**********************
import os
import sys
import time
import subprocess
import RPi.GPIO as GPIO 
RELAY_PIN = 27
MAX_LINES = 200
def play_wav(wav_file):
    file_path = os.path.join("/home/pi", wav_file)
    if not os.path.isfile(file_path):
        return f"File not found: {file_path}"
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(RELAY_PIN, GPIO.OUT)
    try:
        GPIO.output(RELAY_PIN, GPIO.HIGH)
        time.sleep(0.2)
        proc = subprocess.Popen(["aplay", file_path])
        proc.wait()

        with open("wavlog.txt", "a", newline="") as f:
         writer = csv.writer(f)
         now_str = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
         writer.writerow([now_str, wav_file])
        with open("wavlog.txt", "r") as f:
         lines = f.readlines()
        if len(lines) > MAX_LINES:
          lines = lines[-MAX_LINES:]   # ← 最新2maxlines行だけ残す
          with open("wavlog.txt", "w", newline="") as f:
           f.writelines(lines)

        return f"Played {wav_file}"
    except Exception as e:
        return f"Error: {e}"
    finally:
        GPIO.output(RELAY_PIN, GPIO.LOW)
        GPIO.cleanup(RELAY_PIN)
if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: python script.py <waveFilename>")
        sys.exit(1)
    filename = sys.argv[1]
    result = play_wav(filename)
    print(result)

crontab -e******************
0 17-19 10 11-12 * /usr/bin/python3 /home/pi/wavplay.py PurchaseKerosene.wav

ちなみに、現在のcrontabの一部
5 6 * * * /home/pi/update-cloudflare-ufw.sh >> /home/pi/tmp/ufw-cron.log 2>&1
*/10  * 13-29 2 * curl -s http://localhost:8080/py/collect >/dev/null
0     8 13-29 2 * curl "http://*.*.*.*/setConfig?setA1=21.5&setA2=21.4&setA3=21.5"
1行目cloudflare関連、2,3行目が苗床ヒーター管理