Stc-1000+

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
My code is no where near a final product, this is still proof of concept stage, but will get me by for a little while.

Eventually I would like to see:

Moving the code from the void loop() and calling it as a sub routine like it should be.

L option added to the list of commands, this would toggle on/off the Log Output subroutine.

A config sub menu (something simple like when you SSH into a router) where it would automatically turn of Log output and have a simple menu like this:

1 [5] Log Interval Time in Seconds
2 [**Fementer#1**,] Header to be display at left of each string (blank is ok)
3 [x] Current Temperature
4 [, SP=] Delimiter
5 [x] Current Setpoint
6 [ ] Delimiter
...

Resulting string would be:

**Fermenter#1**,75.0, SP=74.5

If you type the number on each row, you get a simple prompt to change the contents of each row. When you make a change the entire list repopulates with an example output at the bottom, so you build as you go. So we can have a static list of log parameters, with configurable delimiters between each. When you type exit, you get back to the normal level and can toggle L back on for log output.

I would like to move away from single word based communication and read the entire variable table regardless of what is selected in the menu above, that only controls the print to log output. It could be stored as a table and output each part as required. A simple error checking scheme could be to compare to the last communication table (So store 2 tables), using While loop, to check if there is a difference, ask again for confirmation. Could repeat 2-5 times else fail. The data should not be changing that much between communication intervals. Based on what I looked at this would solve most of my current problems.

I think we really need a CRC check on both read and write communications, but this would require changes on the both Arduino and STC ends.

I need to build a layer on the write functions, I want the write function to read back what it just wrote, to confirm nothing was lost in communications. Should not be to hard to store the Address and Data, perform a read post successful write and compare the Data. Finally we can echo the OK and add a true confirmation of data written. Last thing I want when sending a SP of 73 and get 173 or something stupid because of noise or what ever communication fault.

My coding on Arduino is pretty basic right now, but this C stuff will comeback to me I hope. Maybe after 20 years, it's going to be like learning it all over again...

Lee
 
I think we really need a CRC check on both read and write communications, but this would require changes on the both Arduino and STC ends.

I need to build a layer on the write functions, I want the write function to read back what it just wrote, to confirm nothing was lost in communications. Should not be to hard to store the Address and Data, perform a read post successful write and compare the Data. Finally we can echo the OK and add a true confirmation of data written. Last thing I want when sending a SP of 73 and get 173 or something stupid because of noise or what ever communication fault.
Lee

'Real' CRC is too costly for the STC, but there already is a checksum implemented in the protocol. That is why you even get communication errors, otherwise you wouldn't even know something went wrong.
The 'right' thing to do, is what you were already hinting at. Wrap the read in a loop (i.e try to read x times before giving up and fail) do the same for a write, and then read back to verify.
You really shouldn't need to worry about a faulty value being written. It either succeeds and write or it don't. But validating that the expected value is read back is still a good idea.
 
I've been making pretty good progress with the ESP stuff. Greatly improved on the HEX flashing. Now you can load a page (hosted on the ESP) and stream the HEX file over a websocket to the ESP, that flashes the STC on the fly. The profiles should be editable (using a modified version of the profile editor). There is a page for the set menu.
The major parts left are:
* Logging
* Documentation
* And oh my <insert deity of choice>, does the code need to be cleaned up. The web pages needs polishing and a consistent interface (which I suck at), and there are a lot of minor improvements to be done.

But over all, now it works pretty smooth! I think this could be good given time and some TLC :)
Sounds like a great start...I'd hoped to be in a position to contribute by now, but it's been going pretty slowly for me. I managed to get a development environment built in Linux and was feeling pretty good about where I was at, flashed my ESP with some sample code and bricked it. I was able to eventually recover it, but still haven't been able to flash it successfully without bricking it again. Still trying to figure out where I'm going wrong. I haven't given up on it, but the learning curve has been pretty steep for me.
 
@alphaomega

Hi Mats,
I see you guys have been working on making some optimizations to the code base.
Do you plan on making a new release? --- So those who have deviated from the main stream (ie, me) can benefit from it?

btw, I have not forgotten about the comments you made in relation to the "menu lock" feature.
It turned out that my son has no interest or whatsoever in playing with the STC, so I have kind of postponed working on it (plus I only have one unit and will be tied for a few more weeks).

cheers
 
hehe.. only 28 more instructions to implement CRC-8-CCITT :)
(or 83 more for CRC-16-CCITT)

OK, I stand corrected :)
Anyway, I don't think there is a real problem using checksum instead of CRC. But, on the other hand, I'm not against making improvements.

@alphaomega

Hi Mats,
I see you guys have been working on making some optimizations to the code base.
Do you plan on making a new release? --- So those who have deviated from the main stream (ie, me) can benefit from it?

btw, I have not forgotten about the comments you made in relation to the "menu lock" feature.
It turned out that my son has no interest or whatsoever in playing with the STC, so I have kind of postponed working on it (plus I only have one unit and will be tied for a few more weeks).

cheers

A release is probably some time away. Once the optimization stuff and a new dual probe implementation is 'semi stable', I will push it to master and then I'll probably give some time for potential bugs to surface, before making a release.
 
Quick usage question.

If I want to advance the profile to the next step; I have do to :
A. set ST to the next number
B. set DH to 0

I'm trying to end my fermentation phase and move to the diacetyl rest. The lager yeast
is working very quick these days.
 
Quick usage question.

If I want to advance the profile to the next step; I have do to :
A. set ST to the next number
B. set DH to 0

I'm trying to end my fermentation phase and move to the diacetyl rest. The lager yeast
is working very quick these days.

I go to the current SP which had the low ferm temp then check the next temp to make sure it is the D- rest temp. Once I find that I go back to the DH for the ferm temp and usually set it to 1. Just because I don't like 0 hrs as a duration. Does that makes sense?
 
First off, thanks for all the great work, and I really like being able to set my fermentation profile and forget about it. I was actually about to buy another STC-1000 and modify it, but the Aliexpress store that the readme links to says "Sorry, this item is no longer available!" Does anybody know if that's a permanent thing? And if it is, where can I buy a good one?
 
First off, thanks for all the great work, and I really like being able to set my fermentation profile and forget about it. I was actually about to buy another STC-1000 and modify it, but the Aliexpress store that the readme links to says "Sorry, this item is no longer available!" Does anybody know if that's a permanent thing? And if it is, where can I buy a good one?

Checked the link from github. Works fine for me.
 
Checked the link from github. Works fine for me.
I followed the link and the store says the item is no longer available!

Skärmbild från 2016-02-14 14-22-57.png
 
I followed the link and the store says the item is no longer available!

Hmm. Yes, I could swear it was available when I posted, but I could be wrong. I couldn't find another STC-1000 listing in their store either.
Maybe you should contact aliexpress and hear if it is temporarily sold out (has happened before) or what.
And bonus points for using Linux!
 
I got 6 from here and will be ordering a few more. http://www.boostbysmith.com/stc1000.html
I've ordered 4 from him all flashed with my settings. Nice guy and good to do business with, especially if you can't do the reprogramming yourself.

This is an amazing project. A huge thanks to alpha and the rest who have helped. I love these controls and the price is right :)

If these controls disappear it'll suck.
 
I need to order one and use it for its intended purpose, to control my aquarium. I want to flash it to get it to read Fahrenheit. They haven't updated their website yet- still showing out of stock.
 
Thank you for a good project and all the fantastic work on this. The Github instructions are great. I just finished flashing my STC with new firmware!

Could someone point me in the right direction as to how to use the communications version of the firmware? I see the paragraph in the users manual on "Single Wire Communication". I'm sure it's obvious, but I'm just missing how to get started reading data here.

Thanks in advance,
-Matt
 
Thank you for a good project and all the fantastic work on this. The Github instructions are great. I just finished flashing my STC with new firmware!

Could someone point me in the right direction as to how to use the communications version of the firmware? I see the paragraph in the users manual on "Single Wire Communication". I'm sure it's obvious, but I'm just missing how to get started reading data here.

Thanks in advance,
-Matt

You can use the same arduino setup used to flash the STC, just add a pulldown resistor of ~10k to ICSPDAT (that is hook it up between ICSPDAT and GND) and a ~1k resistor in series with ICSPDAT. Easiest would be to modify the cable used between the Arduino and STC. It can still be used to flash the STC.
Then upload the com.ino sketch to the arduino and open the serial monitor in the Arduino IDE.
 
You can use the same arduino setup used to flash the STC, just add a pulldown resistor of ~10k to ICSPDAT (that is hook it up between ICSPDAT and GND) and a ~1k resistor in series with ICSPDAT. Easiest would be to modify the cable used between the Arduino and STC. It can still be used to flash the STC.
Then upload the com.ino sketch to the arduino and open the serial monitor in the Arduino IDE.

Awesome, thank you!
 
Just to be clear, should that be on the ICSPDAT line or ICSPCLK line? User manual says ICSPCLK.

Thanks,
-Matt
 
No worries....;)

That does the trick. Thank you for the help. Now to kit the whole thing together and I am in business.

Has anyone found a data logger they like for a Raspberry Pi to hook this to? I'm going to hook this up to my RaspberryPints computer and log how things go.

Again, this is an awesome project! Nice work!

-Matt
 
Ok, all packaged up in a nice enclosure and everything seems to be working great. Now to figure out a data logging solution....

-Matt
 
I'd like to know if I am understanding something correctly. Let's say I wanted to operate this device remotely, say from somewhere out in Internet land. I keep the arduino hooked up to a computer (probably a Raspberry Pi in my case) and can interact with it via the com.ino sketch. So, if I want to set a particular temperature, I can write to address 126 and switch it to run mode "th". Then, I can write to address 119 and set the setpoint. At that point, it should work to hold that particular temperature, yes?

Thank you,
-Matt
 
@mappler: That would probably work (I don't know the addresses by heart, but I assume you are correct).
It just seems a bit 'much', you probably could interface the RPi GPIO directly to the STC (using 3.3v zeners or similar for level shifting), porting the protocol from the com.ino sketch to a native RPi application. But that would mean a lot more work. If you already have the arduino and the RPi, then what you suggested would probably be the easiest/fastest route.
 
In this case, I have a friend of mine running like 8 fermenters he is looking to temperature control individually. We are discussing out some design work for how he wants to do this. The Pi directly would work for one device, but the Arduino should be ultimately cheaper for 8 at a time.

In my individual case, I just packaged the Arduino up into my enclosure. I was having too much fun to try and design it out...;) I've got 3 fermenters going right now, but nothing in my temp control system. I think it is time to brew some beer that needs some temperature ramping!! :)

-Matt
 
I have 5 SCTs on 4 fermenters and 1 for my Keezer, will get another few next order. Each has an Arduino. The code I'm using is modified com.ino setup to output a coma separated string every 5 seconds. it will accept all the regular commands between those 5 second outputs. I have everything connected to a RPi and I VPN in to my home network when i'm on the road and have adjusted programs, profiles and changed setpoints.

I have not got a reliable datalog setup on the RPi to monitor the ports, but I should have something to save the data going in a week or 2. I already have my RPi setup to send to my dropbox, so the datalog python scripts is my last hurdle. Then I can start doing some analysis on heat duty cycle or later cooling and should be able to plot fermentation activity. I plan to add a 1 wire temp sensor for ambient temp tracking too direct to RPi.

Lee
 
i installed a stc1000+ in my fridge recently. however, the temperature is stuck at 15-16C no matter what. even if i set the fridge to "5" or "1" it still hovers around there. it doesn't matter what i set the stc at either, it refuse to go above or below that temperature. i also plugged the fridge separately (but in the same wall outlet.. shouldn't matter right?) and it is still stuck. did my fridge decide to crap out at the same time i installed the stc, or perhaps i wired it wrong? it's funny, because 15C is what i set it at when i first tested it and it seemed to go to 15.0 without issues but after that it refuse to go even into the lower parts of 15C.

i have included some pictures of the wiring. let me know if something looks wrong. i'm only using the cooling. the two brown ones go into port 1 and 8. blue into port 2. green ones are twisted together.

DSC_1624[1].jpg


DSC_1625[1].jpg
 
Just out of interest, in what country were those pictures taken?

Anyway, looking at the second picture, and assuming Brown is hot and Blue is return, the two brown leads from the plug side indeed should go to 1 and 8 (or 7), the brown lead to the socket side should go to 7 (or 8), and the Blue lead should go to 2.

The fridge thermostat should be set to MAX COOL to take it out of the operational equation...

Cheers!
 
I need help with an unflashed STC-1000... if there is no solution, I will be forced to buy an arduino board and join the stc-1000+ family...

Basically every time the unit is unplugged and replugged, the compressor delay goes "blank" (if you go to the parameter F3, it shows no number, the screen is black). Of course, when this happens the STC NEVER turns on the cooling element.

If you power off the unit with the on/off button, the F3 parameter is not affected or "erased". So in the last months, every time there has been a power outage, I have lost control over the ferm temp. Do you think there would be a solution besides flashing the unit (I have 2, with the same problem...).

Cheers!
 
I need help with an unflashed STC-1000... if there is no solution, I will be forced to buy an arduino board and join the stc-1000+ family...

Basically every time the unit is unplugged and replugged, the compressor delay goes "blank" (if you go to the parameter F3, it shows no number, the screen is black). Of course, when this happens the STC NEVER turns on the cooling element.

If you power off the unit with the on/off button, the F3 parameter is not affected or "erased". So in the last months, every time there has been a power outage, I have lost control over the ferm temp. Do you think there would be a solution besides flashing the unit (I have 2, with the same problem...).

Cheers!
Are you sure it's a genuine STC 1000? Can you post any identifying markings on the unit?
 
Welp... I have a POS knock-off... WK-02-K

20160316_223131.jpg


20160316_223120.jpg


I guess this explains the issue... anyone shipping A400_P abroad? (Chile)

:(
 
I'm planning to use by STC-1000+ in a biab setup. Other than the github website are there any additional how-to's or recommend post for the STC-1000+ OVBS? Some things that are not clear to me are how to wire in a 12V pump, how can i easily enable/disable to 12V pump via the STC, and what's the best way to wire in a low voltage SSR. Thanks.
 
Not that I know of, but feel free to expand on the documentation :)
The 'pumpsignal' from the STC is high impedance when pump should be active (high impedance is tech talk that means that it acts like being electrically disconnected) and grounded when pump should be off. The reason for this is because you need a driver for the pump and this allows easy usage of the cheap 8A LED dimmer to drive the pump. Just use one of those as described on github.
If you put a switch on the signal between the STC to the LED dimmer, you can use it to choose between manual (off) and STC controlled (on). The LED dimmer acts as a speed controller for the pump and using the dial you can choose speed from off to fully running.
I have no idea where you are going with the 'low voltage SSR'. You want to use that instead for controlling the pump? There is a schematic on github on how to connect an SSR instead.
 
Sorry the comment about the ssr was not clear. I need to use a ssr to switch a 2000w 120v heating element. Obviously more than the stc can handle. Where can I wire a 3-32 vdc ssr into the stc to switch a heating element?
 
Back
Top