diff --git a/README.md b/README.md index d9497dd..b6e73a2 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,10 @@ -picoReflow -========== +kilnController +============== -Turns a Raspberry Pi into a cheap, universal & web-enabled Reflow Oven Controller. -Of course, since it is basically just a robot sensing temperature and controlling -environmental agitators (heating/cooling) you can use it as inspiration / basis -when you're in need of a PID based temperature controller for your project. -Don't forget to share and drop a link, when you do :) +Turns a Raspberry Pi into a cheap, universal & web-enabled kiln Controller. +Forked from the reflow oven project: [picoReflow](https://apollo.open-resource.org/mission:resources:picoreflow) which I found through a blog post on [succulent ceramics](http://succulentceramics.com/2016/10/07/wifiraspberry-kiln-controller/) + +I used this to add a firing schedule control to a little pottery kiln I picked up second hand. The kiln is 10A/240V rated to 1000 degrees C. It had a door switch and a basic thermostat which allowed for 25%, 50%, 75% or 100% power but no timer. With the kilnController I can now set it up for a bisque or low temerature glaze firing and leave it to its own devices, checking progress every now and then on my mobile phone or PC. **Standard Interface** @@ -17,9 +16,10 @@ Don't forget to share and drop a link, when you do :) ## Hardware - * Raspberry Pi (Rev 2B) - * MAX 31855/6675 Cold-Junction K-Type Thermocouple - * GPIO driven Solid-State-Relays/MOSFETs + * [Raspberry Pi Zero W](https://raspberry.piaustralia.com.au/raspberry-pi-zero-w) - any pi will do but these are about $15 here in Australia + * [MAX 31855](https://www.adafruit.com/product/269) Cold-Junction K-Type Thermocouple (about $6 on eBay) + * [K-Type Thermocouple Sensor](https://www.google.com/search?q=K-Type+Thermocouple+Sensor+1250+1M+SY+site%3Aebay.com.au) -100°C to 1250°C ($3 on eBay) + * Solid State Relay Module [SSR-25DA](https://www.google.com/search?q=Solid+State+Relay+Module+SSR-25DA+25A+%2F250V+3-32V+DC+Input+24-380VAC+Output+pOK) 25A /250V 3-32V DC Input 24-380VAC Output (again, about $6 on eBay) ## Installation @@ -63,8 +63,8 @@ If you also want to use the in-kernel SPI drivers with a MAX31855 sensor: ### Clone repo - $ git clone https://github.com/apollo-ng/picoReflow.git - $ cd picoReflow + $ git clone https://github.com/botheredbybees/kilnController.git + $ cd kilnController ## Configuration @@ -76,14 +76,16 @@ All parameters are defined in config.py, just copy the example and review/change ### Server Startup - $ ./picoReflowd.py + $ ./kilncontrollerd.py ### Autostart Server onBoot -If you want the server to autostart on boot, run the following commands +If you want the server to autostart on boot, run: - sudo cp /home/pi/picoReflow/lib/init/reflow /etc/init.d/ - sudo chmod +x /etc/init.d/reflow - sudo update-rc.d reflow defaults + sudo nano /etc/rc.local + +add the line: + + `sudo python /home/pi/kilnController/kilncontrollerd.py &` ### Client Access @@ -105,8 +107,6 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . -## Support & Contact +## picoReflow -Please use the issue tracker for project related issues. - -More info: https://apollo.open-resource.org/mission:resources:picoreflow +For more info on the parent project, see picoReflow: https://apollo.open-resource.org/mission:resources:picoreflow diff --git a/config.py.EXAMPLE b/config.py.EXAMPLE index f002627..54d97c2 100644 --- a/config.py.EXAMPLE +++ b/config.py.EXAMPLE @@ -13,8 +13,8 @@ listening_ip = "0.0.0.0" listening_port = 8081 ### Cost Estimate -kwh_rate = 0.26 # Rate in currency_type to calculate cost to run job -currency_type = "EUR" # Currency Symbol to show when calculating cost to run job +kwh_rate = 0.28 # Rate in currency_type to calculate cost to run job +currency_type = "AUD" # Currency Symbol to show when calculating cost to run job ######################################################################## # @@ -26,11 +26,11 @@ currency_type = "EUR" # Currency Symbol to show when calculating cost to run # can use whichever GPIO you prefer/have available. ### Outputs -gpio_heat = 11 # Switches zero-cross solid-state-relay +gpio_heat = 23 # Switches zero-cross solid-state-relay (was 11 initially) gpio_cool = 10 # Regulates PWM for 12V DC Blower gpio_air = 9 # Switches 0-phase det. solid-state-relay -heater_invert = 0 # switches the polarity of the heater control +heater_invert = 0 # switches the polarity of the heater control (was 0 initially) ### Inputs gpio_door = 18 @@ -52,7 +52,8 @@ gpio_sensor_data = 17 spi_sensor_chip_id = 0 ### amount of time, in seconds, to wait between reads of the thermocouple -sensor_time_wait = .5 +sensor_time_wait = 10 +# was .5 ######################################################################## @@ -71,7 +72,7 @@ pid_kp = 0.5 # Proportional sim_t_env = 25.0 # deg C sim_c_heat = 100.0 # J/K heat capacity of heat element sim_c_oven = 2000.0 # J/K heat capacity of oven -sim_p_heat = 3500.0 # W heating power of oven +sim_p_heat = 2000.0 # W heating power of oven sim_R_o_nocool = 1.0 # K/W thermal resistance oven -> environment sim_R_o_cool = 0.05 # K/W " with cooling sim_R_ho_noair = 0.1 # K/W thermal resistance heat element -> oven @@ -83,6 +84,6 @@ sim_R_ho_air = 0.05 # K/W " with internal air circulation # Time and Temperature parameters temp_scale = "c" # c = Celsius | f = Fahrenheit - Unit to display -time_scale_slope = "s" # s = Seconds | m = Minutes | h = Hours - Slope displayed in temp_scale per time_scale_slope -time_scale_profile = "s" # s = Seconds | m = Minutes | h = Hours - Enter and view target time in time_scale_profile +time_scale_slope = "m" # s = Seconds | m = Minutes | h = Hours - Slope displayed in temp_scale per time_scale_slope +time_scale_profile = "m" # s = Seconds | m = Minutes | h = Hours - Enter and view target time in time_scale_profile diff --git a/picoreflowd.py b/kilncontrollerd.py old mode 100755 new mode 100644 similarity index 97% rename from picoreflowd.py rename to kilncontrollerd.py index 29169ac..d511fab --- a/picoreflowd.py +++ b/kilncontrollerd.py @@ -21,8 +21,8 @@ except: exit(1) logging.basicConfig(level=config.log_level, format=config.log_format) -log = logging.getLogger("picoreflowd") -log.info("Starting picoreflowd") +log = logging.getLogger("kilncontrollerd") +log.info("Starting kilncontrollerd") script_dir = os.path.dirname(os.path.realpath(__file__)) sys.path.insert(0, script_dir + '/lib/') @@ -38,10 +38,10 @@ ovenWatcher = OvenWatcher(oven) @app.route('/') def index(): - return bottle.redirect('/picoreflow/index.html') + return bottle.redirect('/kilncontroller/index.html') -@app.route('/picoreflow/:filename#.*#') +@app.route('/kilncontroller/:filename#.*#') def send_static(filename): log.debug("serving %s" % filename) return bottle.static_file(filename, root=os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), "public")) diff --git a/lib/init/reflow b/lib/init/kilncontroller similarity index 50% rename from lib/init/reflow rename to lib/init/kilncontroller index 34b24c0..184133c 100644 --- a/lib/init/reflow +++ b/lib/init/kilncontroller @@ -1,31 +1,31 @@ ### BEGIN INIT INFO -# Provides: Start reflow server +# Provides: Start kilncontroller server # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 -# Short-Description: Start Reflow Server -# Description: picoFlow On Raspberry Pi +# Short-Description: Start Kiln Controller Server +# Description: kilncontroller On Raspberry Pi ### END INIT INFO #! /bin/sh -# /etc/init.d/reflow +# /etc/init.d/kilncontroller export HOME case "$1" in start) echo "Starting Reflow Server" - /home/pi/picoReflow/picoreflowd.py 2>&1 & + /home/pi/kilnController/kilncontrollerd.py 2>&1 & ;; stop) echo "Stopping Reflow Server" - reflow_PID=`ps auxwww | grep picoreflowd.py | head -1 | awk '{print $2}'` + reflow_PID=`ps auxwww | grep kilncontrollerd.py | head -1 | awk '{print $2}'` kill -9 $reflow_PID ;; *) - echo "Usage: /etc/init.d/reflow {start|stop}" + echo "Usage: /etc/init.d/kilncontroller {start|stop}" exit 1 ;; esac diff --git a/public/assets/js/picoreflow.js b/public/assets/js/picoreflow.js index 338b4ff..f454f1b 100644 --- a/public/assets/js/picoreflow.js +++ b/public/assets/js/picoreflow.js @@ -4,8 +4,8 @@ var graph = [ 'profile', 'live']; var points = []; var profiles = []; var time_mode = 0; -var selected_profile = 0; -var selected_profile_name = 'leadfree'; +var selected_profile = 2; +var selected_profile_name = 'bisque'; var temp_scale = "c"; var time_scale_slope = "s"; var time_scale_profile = "s";