自作ニンニク乾燥機、今年もちょっと改造するよ
今年も自作ニンニク乾燥機を使って、乾燥させています。
フレームも大きくして以降は、容量的にも問題ありません

基本的にはRaspberry PiとPythonのおかげで、全自動乾燥・・ではなるのですが
ただ、去年はちょっと乾燥させすぎたかな?・・と感じていて。
なので、今年は少しだけ乾燥工程を見直してみました。
これまでの乾燥工程では
・基本的に除湿機と有圧換気扇は24時間運転
・34度を超えたら除湿機停止(35度が乾燥に適した温度)
・33度以下になったら除湿機再運転
このような動作になるよう、プログラミングしていました。
除湿機は湿度を下げる為だけでなく、加温も兼ねているので、こういう動作にしています。
ただ、問題点として
・暑い日の日中、除湿機停止していても36度や37度になることがある
・24時間除湿機運転は、電気代が無駄
・実際、乾燥させすぎている
という事で、今年は以下のように修正
・5時~7時と20時~24時のみ除湿機運転
・それ以外は、温度に関わらず除湿機停止
夜間は加温をしない乾燥方法をテンパリング乾燥と呼ぶそうですが、その方式+気温が低い時間帯だけ除湿機を運転する事でなるべく35度を超える事が無いようにしました。
それに合わせて、Raspberry Piのプログラムも若干変更。
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- import gspread
- import RPi.GPIO as GPIO
- import dht11
- import pigpio
- import time
- import datetime
- from oauth2client.service_account import ServiceAccountCredentials
- # initialize GPIO
- GPIO.setwarnings(True)
- GPIO.setmode(GPIO.BCM)
- # read data using pin 14
- instance = dht11.DHT11(pin=14)
- gpio_pin0 = 18
- ##GPIOにアクセスするためのインスタンスを作成
- pi = pigpio.pi()
- pi.set_mode(gpio_pin0, pigpio.OUTPUT)
- while(1):
- jositsu = input('除湿機運転中は10・停止中は0を入力→')
- if jositsu.isdecimal():
- jositsu = int(jositsu)
- break
- key_name = './cert/raspberrypi-1-******-************.json' # GoogleSheet認証キー
- sheet_name = 'RaspberryPi-1sheet' # シート名
- while True: # 全処理繰り返し
- try: #エラーチェック
- if __name__ == '__main__':
- scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
- credentials = ServiceAccountCredentials.from_json_keyfile_name(key_name, scope)
- gc = gspread.authorize(credentials) # JSONキーファイルで認証
- wks = gc.open(sheet_name).sheet1 # sheetをオープン
- while True:
- result = instance.read()
- dtn = datetime.datetime.now()
- while result.is_valid():
- B = result.temperature
- C = result.humidity
- D = 0.62198 * (6.1078 * 10 ** (7.5 * B / (B + 237.3)) * C / 100) / (1013.25 - (6.1078 * 10 ** (7.5 * B / (B + 237.3)) * C / 100)) * 1000
- D = round(D, 1)
- print("測定時刻: " + dtn.strftime("%Y/%m/%d %H:%M:%S"))
- print(" 気 温: " + str(B) + "C") # 元々小数点1桁で数字拾っていたので、簡単な表現に変更
- print("相対湿度: " + str(C) + "%") # 上と同じ
- print("絶対湿度: " + str(D) + "%")
- print(" 除湿機: " + str(jositsu))
- datas = [dtn.strftime("%Y/%m/%d %H:%M:%S"),B,C,D,jositsu]
- wks.append_row(datas)
- H = int(dtn.hour)
- if ((8<= H <= 19) or (0<= H <= 4)) and jositsu == 10:
- pi.hardware_PWM(gpio_pin0,50,84500)
- time.sleep(0.7)
- pi.hardware_PWM(gpio_pin0,50,72500)
- time.sleep(0.5)
- jositsu = 0
- print("8時-19時/0時-4時・除湿機停止")
- if ((20<= H <= 24) or (5<= H <= 7)) and jositsu == 0:
- pi.hardware_PWM(gpio_pin0,50,84500)
- time.sleep(0.7)
- pi.hardware_PWM(gpio_pin0,50,72500)
- time.sleep(0.5)
- jositsu = 10
- print("20時-24時/5時-7時・除湿機運転")
- print("---")
- time.sleep(1200)
- break
- else:
- print("!測定不良!" + dtn.strftime("%Y/%m/%d %H:%M:%S"))
- print("---")
- time.sleep(3)
- except Exception as err: #エラーを検知した場合
- print(err) #エラーをプリントする
- except KeyboardInterrupt: #Ctrl+Cを検知した場合
- GPIO.cleanup() #GPIOを開放
- print("cleanup")
- break #冒頭tryを終了
- print("end")
相変わらず、ちゃんと理解せずなんとなくで修正しているので、どこか変なところがあってもよくわかりません(汗)
でもまぁ、とりあえず動いているのでヨシッ!
これで、ある程度乾燥するところまで自動運転です。
ニンニクの裏側を爪で押して、硬さを感じたらいったんは終了。
今年は乾燥させすぎないよう、注意を払っていきます。
乾燥後は温度・湿度チェックだけ
3週間ほど除湿機を使って乾燥させた後は、有圧換気扇だけの乾燥とし、温度・湿度の監視だけしていきます。
それ用のプログラムも用意しておきました。
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- import gspread
- import RPi.GPIO as GPIO
- import dht11
- import time
- import datetime
- from oauth2client.service_account import ServiceAccountCredentials
- # initialize GPIO
- GPIO.setwarnings(True)
- GPIO.setmode(GPIO.BCM)
- # read data using pin 14
- instance = dht11.DHT11(pin=14)
- key_name = './cert/raspberrypi-1-******-************.json' # GoogleSheet認証キー
- sheet_name = 'RaspberryPi-1sheet' # シート名
- while True: # 全処理繰り返し
- try: #エラーチェック
- if __name__ == '__main__':
- scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
- credentials = ServiceAccountCredentials.from_json_keyfile_name(key_name, scope)
- gc = gspread.authorize(credentials) # JSONキーファイルで認証
- wks = gc.open(sheet_name).sheet1 # sheetをオープン
- while True:
- result = instance.read()
- dtn = datetime.datetime.now()
- if result.is_valid():
- B = result.temperature
- C = result.humidity
- D = 0.62198 * (6.1078 * 10 ** (7.5 * B / (B + 237.3)) * C / 100) / (1013.25 - (6.1078 * 10 ** (7.5 * B / (B + 237.3)) * C / 100)) * 1000
- D = round(D, 1)
- print("測定時刻: " + dtn.strftime("%Y/%m/%d %H:%M:%S"))
- print(" 気 温: " + str(B) + "C") # 元々小数点1桁で数字拾っていたので、簡単な表現に変更
- print("相対湿度: " + str(C) + "%") # 上と同じ
- print("絶対湿度: " + str(D) + "%")
- print("---")
- datas = [dtn.strftime("%Y/%m/%d %H:%M:%S"),B,C,D]
- wks.append_row(datas)
- time.sleep(1200)
- else:
- print("!測定不良!" + dtn.strftime("%Y/%m/%d %H:%M:%S"))
- print("---")
- time.sleep(3)
- except Exception as err: #エラーを検知した場合
- print(err) #エラーをプリントする
- except KeyboardInterrupt: #Ctrl+Cを検知した場合
- GPIO.cleanup() #GPIOを開放
- print("cleanup")
- break #冒頭tryを終了
- print("end")
こちらも、なんとなくで作っています。
動けば(略
気温の高い日は、日中37度ぐらいいってしまう事もありますが、まぁそれぐらいなら問題ないでしょう。
ニンニクは、中途半端に温度下げて保管すると、発芽スイッチ入ってしまうので、多少高いほうが良いです。
大規模農家は、-2度とかの大型保冷庫で保管してたりするんですけどね。
そこまでの設備はありませんので・・
ともかく、出荷出来るほどには乾燥完了です。
あとは皮を剥いたりパッキングしたりシール貼ったり・・
結構まだまだ手間暇掛かりますが、もう少しで店頭に列られそうです!