I've been having some trouble with humidity building up under the lid and on the seat (under the lid) of my home-build wheelie-bin composting toilet - usually when there has been a rapid drop in temperature of several degrees, such as overnight.
I found a fan more suited to the task; an in-line blower fan used to remove dangerous petrol fumes from boat bilges.
However, it turned out to be a little bit too powerful (and noisy!). I didn't want to run it continuously due to noise, the probability that it would totally dry out my composting toilet (not ideal), and it would quickly drain my solar panel/battery system.
A solution was required: I already had a raspberry pi attached to the outhouse to run a timelapse photography project.
I purchased a DHT22 temperature/humidity sensor from Jaycar electronics.
Connection to the GPIO header pins on the raspberry pi was made easy using header plugs from an old computer, and I soldiered the wires directly to the sensor pins.
I just followed the instructions at http://www.circuitbasics.com/how-to-set-up-the-dht11-humidity-sensor-on-the-raspberry-pi/
Which has instructions for the DHT11 and the DHT22 - the only trick was an unexpected error "ImportError: cannot import name Raspberry_Pi_Driver" which I got when trying to use the python code - however, moving the script into the Adafruit source subfolder seemed to help get past the error.
I also purchased a 5v relay from Jaycar electronics.
This uses 5volts from one of the GPIO pins on the raspberry pi to control whether or not 12volts (or 240volts) can pass through.
I followed the instructions at http://www.instructables.com/id/5V-Relay-Raspberry-Pi/
The final python code I used (from within the Adafruit source subfolder) is below (although I've probably tweaked it further by now: I'm not sure running the fan would be useful below 10°C )
#!/usr/bin/python
import sys
import Adafruit_DHT
#check humidity
#if humidity is greater than 60% then
#activate blower for 10minutes
#sleep for 5 minutes if ok
#loop and check again
import RPi.GPIO as GPIO
import time
#blower GPIO channel
channel = 11
# GPIO setup
GPIO.setmode(GPIO.BCM)
GPIO.setup(channel, GPIO.OUT)
def motor_on(pin):
GPIO.output(pin, GPIO.HIGH) #TURN ON
def motor_off(pin):
GPIO.output(pin, GPIO.LOW) #TURN OFF
try:
while True:
humidity, temperature = Adafruit_DHT.read_retry(11, 15) #GPIO pin 15
print 'Temp: {0:0.1f} C Humidity: {1:0.1f} %'.format(temperature,humidity)
if humidity > 60:
print 'Humidity is greater than 60-turning fan on'
motor_on(channel)
time.sleep(60*10)
else:
motor_off(channel)
print 'Humidity is fine'
time.sleep(60*5)
except KeyboardInterrupt:
motor_off(channel)
print 'Fan has been stopped'
finally:
GPIO.cleanup()
print 'GPIO pins cleaned'
So far it seems to be working great, and I can watch the humidity drop over time. 😎