VGDD SSD1963 EVK R3B w/ PIC32 I/O Expansion w/ USB II and TY700TFT800480

As mentioned in my last post VGDD now supports a SSD1963 board.  Unfortunately I have the SSD1963 EVK R3B while VGDD was configured for using the Ultima R4.1 board both made by TechToys in Hong Kong.  I figured with enough time to work on it I’d figure it out.

Over the weekend I wired up the EVK board the same way that the Ultima is wired to the FX10A Hirose connector and use that to find the pins on the PIC32 I/O Expansion board.  The EVK board does not include any eeprom or flash chips on them to store touch screen calibrations so you need to supply your own.  As a result of not having that part programmed in yet I disabled the touch calibration until I can work out the correct adjustments to get it working with some form of memory.  My goal at this time was just to get the display working.

After a minor issue where the screen came up blue-tinted but otherwise generally working I kept playing around with the code in VGDD’s XML files and the resulting output trying to figure out what was going on.  A few times it got worse but for the most part it kept working with some type of issue.

Today after getting a few responses from VirtualFab on their brand new forum I started reading through the SSD1963 file to see what was different.  The owner of TechToys has also registered on the forum and he made a few comments about it as well. Armed with a little bit more information it turns out there is a different initialization command format when the Rev 02 TY700TFT800480 board is initialized vs the Rev 03 board that VirtualFab tested with the Ultima and built the XML files for.  After a minute or two I modified the USE_TY700TFT800480_R3 to not include the _R3 and confirmed that it still had the R2 (non _R3) code.  I then enabled an R2 XML file I created with the slightly different Horizontal and Vertical configurations and linked them to the graphics board, disabled the TouchInitialization, compiled, and my familiar roaster splash screen popped back up just fine.

The main difference between the R2 vs R3 LCD panel is that the R3 uses RGB signals while the R2 uses TTL and they are communicating at slightly different bit rates (at least that’s what I think is going on.)  So with that level of progress I decided it would be easier to order some SST25VF016 memory and wire it in to the project rather than to make it work with other memory since everyone seems to be using that same specific chip in their display boards.  It is possible to modify the files to support a Microchip 25LC256 (since I’ve done it in the past) but I figure it’s easier to just FLASH instead.

I’ve had a few conversations with John @ TechToys and he seemed receptive to some of my suggestions about adding some mounting holes to the EVK board so that it can be anchored more easily in a case if you wish to embed it rather than build your own. He also seemed to be considering at least providing a footprint to solder the flash memory to the board if you have it / need it. Since the board needs flash memory to store the touch screen calibration and it’s generally something you do once this will be helpful if it happens. No guarantees but at least it’ll probably be something he’ll think about with any future new board designs.

To wire up a SSD1963 EVK Rev3B to my PicTail Daughterboard I used the following configuration that mimics the Ultima wiring.

SSD PIC32 JP2 PIC32 SSD
TP_XR RB10 1 2
TP_YU RB13 3 4 GND VSS
TP_XL RB12 5 6 VDD VDD
TP_YD RB11 7 8 OE#
D17 9 10 RD4 WR#
D16 11 12 RD5 RD#
LE 13 14 RB15 CS#
D15 RD7 15 16 RD3 DC
D14 RD6 17 18 RD1 RESET#
 D13 RD13 19 20 RE0 D0
D12 RD12 21 22 RE1 D1
D11 RF0 23 24 RE2 D2
D10 RF1 25 26 RE3 D3
D9 RG1 27 28 RE4 D4
D8 RG0 29 30 RE5 D5
D20 31 32 RE6 D6
D21 33 34 RE7 D7
D22 35 36 RE9 TE
D23 37 38 5V 5V_EXT
D18 39 40 D19

The flash chips and a breakout should be arriving sometime in the next couple days.  The last tracking showed them being in San Francisco and should probably arrive tomorrow.

UPDATE – Flash arrived and I wired it to a generic eeprom/flash board I had made previously using a Radio Shack 276-159B and a SOIC-8 Breakout… wire as follows:

*Note* you may need to wire a 10k resistor to SST25VF016 pin 1/CE#.  Then wire 3.3v to the other side of it.  Mine worked without this done but it should probably be there.  Your mileage may vary.

SST PIC32 SST25VF016 PIC32 SST
CE# RD9 1 8 3.3V VDD .1uF Cap GND
SO RC4 2 7 3.3V HOLD#
WP# 3.3V 3 6 RD10 SCK
VSS GND 4 5 RD0 SI

 

SSD1963 now available in VGDD 5.1

I’ve had a few conversations by email with the author of VGDD. He has quite good English knowledge and we’ve come up with a few background similarities that has made it pretty interesting to discuss the product here and there. A few times I’ve mentioned something I’ve done by modifying some of the files that came with the program or discussed something I’d like to see and it turns out he just did it in the next version he’s releasing in a day or two or intended people to be able to do what I had done in a future version that could fully support it easily.

Most of the time we’ve talked it’s been because I’ve looked at the PIC32 sitting on the table and I keep thinking of how I really need to get that touch screen going. I then sit down and update the program and end up building a bunch of screens and compiling things and discover a bunch of weird little bugs and he quickly fixes them and releases a new version.

A couple nights ago I roasted 4 batches of an Ethiopian coffee and found a couple more glitches in my Arduino roast profile and the cooling cycle but it’s getting better. It got me thinking about VGDD again, which I had upgraded to 5.0 a few weeks back, and it turns out there was a 5.1 version now. This time he’s now included TechToys Ultima R4.1 board that includes an SSD1963 controller on it. If you haven’t looked at it before this board accepts a Microchip PIC32 Starter Kit board and has a variety of other things built on such as the SSD1963, an MP3 Decoder, a footprint for a wireless network card and a few other connections. Combined with a 7 inch touch panel it’s about $139 + tax right now.  It seems to be an excellent product but I just think that it was a move in the wrong direction to squish so much into one board. Instead I would have rather it been made to be modular to let you enable/disable sections of it to use those pins in your own ways. I’ve been using the SSD1963 EVK 3B board hooked to my PIC32 expansion IO board for the initial testing I’ve done.  It ends up around $99 w/ a 7 inch touch screen.

My early little touch screen using Microchip brand boards was a lot more money and to get a 7 inch screen today with the new Epson controller would be about twice what I spent for the SSD1963.  The original little screen was pretty good to see what the roast was doing when I first started trying to build a coffee roaster but it was just too small.  This is why I started trying to build a 7 inch touch version of my roast controller which allowed a whole lot more to be done on the screen.

While I had gotten the SSD1963 working in some of the older VGDD versions by hacking the XML files I was not having the same luck with 5.0.  With version 5.0 of VGDD I kept getting errors when I compiled and had issues with the screen not working as I expected when I finally got it to compile and I didn’t have a lot of time to work on it.  Seeing SSD1963 in the Ultima board being supported in 5.1 I figure I just need to ensure I configure the wiring from the EVK board I have to mimic that of the Ultima board I should be able to get it to compile.

Lately (on the Arduino side) due to some changes with the serial output of the project and my attempts at adding more functions to the processing GUI I’ve found that I’ve managed to break the PID/LOG communication to the processing GUI and forgot to commit a copy to my home code repository server and there’s too many changes to really figure out which area got messed up without a lot of work. As a result that lack of visualization is really starting to become an issue so I’m really going to start trying to develop the PIC32 side more to at least process the output of the Arduino and run the touch screen to display it all.

I’m oncall for work this weekend but I hope to be able to verify the wiring with the Ultima schematic and make sure I cable up the EVK board properly and get a screen or two going again using VGDD. I’ll post the wiring info once I get it going.

Pretty on the outside and ugly on the inside prototype

So I’ve been busy doing a bunch of computer maintenance and looking into other things I’ve neglected while building the roaster so it’s been a bit slow.  I decided I wanted to start gluing corners together and drilling some holes to see how the case goes together so I can eventually get back to fixing the issues with the roast controller case.  Over the past several weeks I soldered together all of the boards, made wiring harnesses and figured out a bunch of “oops” moves I had made designing things when I got rushed for time.

Turns out I was not able to get stand offs locally in the sizes I had wanted so the heights are all screwed up where I placed holes on the outside surfaces.  I also forgot to specifically allocate power for the exhaust fan in the original design BUT I did have “Spare” pins allocated. The fan I ordered also was not the right size for the hole template I had used (Inside fan dimension vs outside screw / case dimension)… neither of them were actually labeled right the way every other fan I have is sized.

So with everything screwed or harnessed in place this is what I have for the Arduino…

The Arduino wired for Coffee Roaster control

It is a MEGA2560 mounted on a Crib for Arduino.  On top is an Ethernet Shield w/ microSD slot.  Then I used a variety of crimped headers to connect to some of the pins on the MEGA and on the ethernet shield.  I have twenty five lines in the bundle going to the Arduino.  I had some spare 10 strand cables from a project at Halloween and no 25 strand cables to use so I used one of those cable wraps to keep the all together after connecting DB25 to one end and header pins to the other.  Once the lid for the crib for Arduino is in place it then connects to the back of the enclosure.

Wiring Harness connecting to the back of the controller enclosure

As you may notice the sockets I was using for connecting the power out are the type that snap in.  The majority of these will not snap into most laser cut plastic sheets and instead are designed for aluminum cases.  The plug to the right on the other hand screws in.  These work great with a variety of thicker locations.  The fan was originally going to be on the inside with a wire cover on the outside but with the wrong size fan hole in use I had the wrong cover to fit the fans that I had that would fit the hole.

For the DB25 connectors it turned out good that I had decided to use a cut out pattern  that had the holes on the side for the anchoring hex nuts rather than just having them cut out so that I could mount them to the socket and anchor the connector.  Since the stand offs were too short they don’t allow me to anchor the PCBs to the bottom plate.  Instead I had to screw them to the back plate using normal screws and with the burnt circles on the laser cut work I had to use some washers too to keep it sturdy.  This is what the back plate looks like.

Rear Panel of controller

This panel includes – One non-filtered switched 15Amp Power Entry module, 2 snap in 15 amp convenience plugs, 1 5VDC fan, 2 DB-25.  The left one is the main guts for the LCD, TRIAC control, potentiometers, thermocouple, and a variety of other sensors.  The right includes all the non-essential stuff for backlighting all the buttons on the button pad and a few other things including spare wiring.  You cna see just a screw on the right since it was relatively intact and so it won’t block the DB25 plug being used.  The right DB25 has washers and screws in place.  These are primarily used to attached the PCB in place attached to the back side.

Next up is the inside view of the electronics area:

Rear View of the Back Panel

Rear view of the back panel.  I need to shrink up the crimp connectors around the wire  (they shrink like heat shrink tubing but is actually much firmer).  Also the connector on the right side (the switched power entry module) should have the screws more securely fastened with nuts and washers but this is mainly just a test to ensure it all fits together and then allow me to focus on some programming for a while to see if I can get more working and develop menus etc.  The clear acrylic bar is used to anchor the corners better.  I need to change the locations of the screws since I could not find screws the size I wanted without spending way too much for large quantities of them on the internet and having them shipped to me etc.  The thermocouple board on the right had the same issue with the stand offs so it is just floating loose in there right now.  I need to find somewhere to get the Omron thermocouple sockets where I dont need to order them by the 1000s since it looks like Ryan McLaughlin has stopped selling things on his site when they (used to) have problems getting the newer MAXIM thermocouple chip.  They’re all over the place now but he hasn’t restarted his store up so I don’t know the deal there.

Here is the view down into the enclosure from above:

Top view into enclosure

With the cover on:

Front panel installed on enclosure

Front panel running

Front Panel Running

When I send it back out again for a new case I hope to have a different board to install that will be switching the smaller breakout boards being designed onto the circuit board as well as add a power supply and possibly having an arduino board mated on top of the circuit board perhaps to bring more of the electronics inside.  I might want to try to get a Digilent board perhaps to try converting to it as a transition between Arduino and PIC32 before I completely switch to a dedicated PIC32.

I’ve also been looking at possibly creating a dedicated PC application to communicate with it directly via USB and over ethernet.  I am toying around with the “QT/QML” language but havent gotten too far with it.  I may just go back to Processing though.

RoastGeek Button Pad v 1.0

This weekend the final resistor I was waiting for arrived.  As a result I was able to solder the button pad board together and mount all the buttons.  I placed the board on my infrared preheater, applied some solder paste using the syringe dispenser on each of the pads, and then using a pair of Weitus tweezers started placing 0603 resistors from the piece cut from a reel.  I then turned the heater on and let it sit for a bit before turning it up a few more times until I got close to the temperatures I needed.

RoastGeek Button Pad v1.0 on Infrared Pre-Heater with SMD resistors placed.

Without a stencil it’s pretty hard not to goop too much solder paste onto the pads.  In most cases I had a suitable amount but a few it got a bit too much.  For most of the cases I had too much I removed some while it was still liquid-like from the preheater softening the paste.  I used the tweezers with a tiny bit of paper towel to wipe some away on the worst spots.  Solder paste is essentially  a mixture of a type of flux with a fine dust of the solder.  When the temperature gets high enough the flux material starts to liquify and the solder particles flow with the wet flux-like material towards the meeting point of the pads and the item being soldered.  As you apply a final amount of heat the solder particles melt and the flux-like material starts to evaporate/burn up.  To do this I used a hot air rework station to heat up the area near the resistors.  It has a pretty gentle flow that I can adjust with a knob so I didn’t have any issue of the resistors blowing away.  This tends to be a common problem using a hot air rework tool to solder SMD parts.  Once they were all in place I turned down and then a bit later fully off the heaters and allowed it too cool down.

0603 Surface Mount Resistor soldered to the board with an infrared preheater and a hot air rework tool.

Once the surface mount resistors were in place I tested each pad on each side of every resistor and confirmed that the correct resistance was measured.  This was to confirm that I didn’t have any “over gooping” resulting in the resistor being jumped by solder underneath of it.  Everything checked out ok so I continued on to mounting the buttons and header pin connections by hand with a standard iron.

RoastGeek Button Pad v1.0 with buttons, caps, and headers mounted

At this stage I tested the board with an Arduino sketch and was able to measure each button as expected.  This board has a much more accurate number compared to the last board.  Each button previously would measure a number that ranged 3-4 from the highest to lowest reading.  This one is dead on for almost every single button except for 2 of them that vary by 1.

I then mounted the board to the back side of the control panel.  I discovered that the standoffs I am using are about 1-1.5mm too tall so I will need to either grind them down or find a different set of stand offs.  I’m thinking of getting some Nylon or ABS ones that have a self-retaining clip for the circuit board side and a threaded end for accepting a screw from the front panel.  I also need to begin wiring up some wiring harnesses to go between the LEDs and potentiometer over to the new board.

I’ll add a picture of the mounted board  here once that takes place.

PIC32 w/ TechToys SSD1963 EVK R3B + 7 inch display and VirtualFab VGDD

First let me start off by saying…AAAAAIIIIGGGGGGHHHH!  Ok.  I never claimed to be an expert at what I was doing and I’ll have to say this one really made me fight for it.  I have been attempting to get my PIC32MX795F512L USB Starter Kit II attached to a IO Expansion board and then connect that to the TechToys SSD1963 EVK Rev3B board which then connects to the TY700TFT800480 7 inch touch screen.  Then to create my GUI I was using the VGDD software by VirtualFab.it.

I’ve had almost a week now of evenings and several days where I was uninterrupted and able to work on it.  It took a couple of evenings to make sure all the wiring was correct and get all the various parts assembled together for an EEprom to store calibration data to work.  Turns out I needed a bypass capacitor AND NOT to have a pull up resistor on the chip select pin even though it seemed to be used in most examples I found the opposite way.  Once I got past that issue I worked on getting the demo to work which required some tweaking since I was running the demo on a custom configuration that wasn’t a TechToys multimedia board with everything on it.

After finally getting the basic demo working ok I began trying to figure out VGDD’s XML files to add extra Display and Graphics Cards to the software.  I added an entry for each device and then started to customize the individual XML for each part.  After exporting the project and trying to compile it there was of course a LOT of errors.  In a few cases some of the lines got duplicated and in other cases I had to add additional lines or modify the driver slightly to work cleanly in VGDD’s wizard.

I still need to work on a problem where the exported VGDD project has something incorrectly set with the EEprom where the SPI isnt writing so it only shows a single screen and can’t navigate until the touch is calibrated.  Additionally since the SSD1963 is not part of the original MAL (Microchip Application Library) then I likely need to find an alternate place to put some of the files and explicitly map it that way in the VGDD templates.

Due to some previous problems with VGDD (I started using it very close to the beginning of its existence and it has had dozens of releases over several years now) where it seems my files got “scrambled” here and there I would get all sorts of weird issues while trying to compile them.  As a result I’ve started the screens over from printouts and need to figure out how to adjust a few buttons and text as well as add a whole lot more items to many of the menus.

Here’s the awful camera phone photos in a dimly lit room.  Once I get it working better and update the screens more I’ll dig out the better camera. I’m just happy that things are working right now.

PIC32 and SSD1963 board driving a 7 inch touch screen as programmed by VGDD

Test VGDD screen hacked to work on a SSD1963 board with minimal changes.

I’m pretty close to getting the XML worked out so that I don’t need to modify the VGDD code that gets generated but I suspect I’ll need to work on it for a few more evenings before I get it right.

Update 7/24/12 Afternoon – I’ve managed to get the EEprom code to read/write the calibration properly now from the beginning.  I’m seeing an off effect where the OutTextXY functions are not working while all of the static text displays fine and the functions that make it switch screens do not appear to function.  I have one section that defines the touch screen X/Y ADC pins that appears to be a duplicate with something in another section of code that I have to comment out and I have to force it to display a screen since it doesnt seem to happen automatically (may be part of the switching screen problem though).  I’m going to switch to a regular SSD1926 screen and generate code and start comparing because I must have disabled something making the screen objects invalid.  Outside of adding the display a screen command, and commenting out the other code section it does export without a bunch of errors so I am getting further along now.

Update 7/24/12 Evening- I’ve now managed to get straight through compiles to work without having to modify anything.  I had found an issue with the order of the screens where it tried to put one of the “master screens” as the first screen it loads.  For whatever reason this causes it to black out the screen and not show anything.  After switching it to a more appropriate screen it comes up ok.  It also now transitions from one screen to another when I press the buttons as well.  The only issue I’m having is when there is around 30 buttons on the screen it freaks out and stops displaying them.  I’ve been unable to find a notice about there being a 30 button limit but so far I’ve not found a way around it.  The code is all there for all of the buttons but they don’t show up.

PIC32MX795 on a IO Expansion Board connected to a SSD1963 EVK R3B and TY700TFT800480 7 inch touch screen from Tech Toys with GUI created by VirtualFab.it VGDD.

Preliminary PIC32 roaster GUI created in VGDD on a 7 inch touch screen using a SSD1963 controller.

First order of circuit boards from OSHPark.com

If you were following comments in one of the previous blog posts I just received my first order of circuit boards from OSHPark.com. This order included version 1 of my button board and a preliminary interface board to connect a variety of sensors and some of my other boards to an Arduino Mega 2560.

I got to experience the “joy” of being one of the initial test subjects for the brand spanking new OSHPark.com site. It actually worked pretty well and was rather impressive in terms of the graphical response you got from it. It would evaluate the files you uploaded and convert them into a graphical rendering of the finished product. When I ran my boards through the system I did notice that the silkscreen appeared to be NOT the rear/bottom view as the site described but instead it was the “Superman X Ray Vision” view. If you’ve used Eagle and a few other competing PCB CAD programs this is what you normally see when working on your board. Your test will be “reversed” or “mirrored” and the holes will be in the positions they would be in from above. It is thus like you are looking through the layers from above. I mentioned this oddity in my comments on the job but don’t know if they’ve resolved it yet by changing the code or changing the description.

The timeline for my order is as follows:

  • May 21st – Placed Order (T=0)
  • May 25th – Tweet @laen replied by @OSHPark reported that the system is not sending notices yet. Indicates board have been reviewed and panelized. (T+4)
  • May 29th – Received official email that said boards on panel for May 31st.  Notice website reports May 30th as panel date. (T+8)
  • June 7th – Received notice saying boards sent to the fabricator. Probably just an update to the software of the site and the boards were sent prior to this point. (T+17)
  • June 8th – Received notice saying boards received from the fabricator awaiting de-panelization. (T+18)
  • June 15th – Boards apparently processed for postage based on postmark. (T+25)
  • June 18th – Received boards. (T+28)

As mentioned I expect most of the dates to be unreliable other than the fact that it took 28 days start to finish.  The site still has not changed from a status saying my boards are waiting to be de-panelized and nothing about being shipped.  Obviously it is a work in progress.

Here is the collection of boards received

First order from OSHPark.com. My Button Pad board and the preliminary interface board to connect a variety of sensors to the external Arduino mega.

The spacing seems to be exactly what the CAD said it would be and the holes drilled seem to be very accurate and centered like they should be including some of the very small vias.  I will need to crack off and dremel/sand off the rough spots from the edges where the boards were connected together.

More pics:

Interface board

Button Pad 1.0 with several buttons placed

Button Pad v1.0

Button Pad 1.0 Top

Button Pad 1.0 Rear

At this time I am waiting for 330 ohm 0603 resistors to arrive.  They were on back order and should arrive in a few more weeks.  Once they arrive I need to use my infrared preheater to heat up the boards and then do a quick solder on each of the resistors before connecting all the various through hole parts.  Once that happens I’ll update with a new photo showing the finished boards.

Ordered some circuit boards today.

So I’ve been looking at making a circuit board for some of the roaster project for quite some time.  As the shape/size of the enclosure has started to become real I started trying to figure out what exactly would fit inside the case options.  Some of the items I figured I could prototype/etch myself and others I’d need to send out to get made.

The first board that seemed likely to be something I could make on my own was what I call the “button board”.  It turned out that I decided to send this one off rather than try it myself because I had already made one using Radio Shack parts for an early microswitch version.  The circuit worked great and I happened to be finishing the Laser Cut Roaster Controller case.  The spacing is kind of tight for what I want and rather than trying to drill it manually and the fact that it will ultimately be a pretty permanent part of the project until I switch to version 2 that won’t only use a single analog pin and instead goes entirely digital with a group of pins or I do away with the button pad entirely… so I decided to have it made too.

I wanted it to use 2×5 shrouded pin sockets and some single row pin headers in addition to the MultiMec 3F switches, 1V “Arrow” key caps, some round ones, and some square ones.  I started where I laid out all the buttons and then had some left over pins after allowing for all of the bi color internal lighting LEDs.  I then added some connections for the Fan and the Heat potentiometers that were to the left and right as well as the LEDs on each side.  The wiring harness for each side will had the GND/Voltage and Potentiometer  wires in one bundle and the LED Cathode/Anode wires in the other all connected to a 5 pin connector on their respective sides.

Once I had the design figured out and checked all the spacing and sliced out a paper template with an knife and slid the cover over the buttons and the holes lined up etc I started looking at how much it would cost to get a board made.

One of the first places I looked was BatchPCB.  Once it figured out the whole CAM/Gerber/whatever process and zipped up my files I uploaded the board to the site and a few minutes later it reported it was ready to add to my cart and would cost me $18.83.  I figured I needed at least 2 because I was going to make a second controller at the same time I was making the first one so I always had a “test” one and a “now that I made the first one funky I’m “in the zone” now and can make the second one prettier/better.

So I started thinking I need to double that and maybe a third one wouldn’t be bad since I might use the button pad pattern on this other project I was thinking about.  So two of them is $37.66.  Wow… that’s starting to get kinda spendy for a button pad I’ll probably stop using eventually and need to redo.  PLUS the buttons are horribly expensive too!

I started looking for cheaper options and came across iTeadStudio, SeeedStudio, and DorkbotPDX as some of the more recommended ones.  All would give me 3+ boards and iTeadStudio and SeeedStudio would do around 5 to 10 boards depending on some of the options selected.  A few people reported damaged boards coming back on one of them but usually had replacements to “cover” it but the occasional issues and the frequency of damaged boards showing up seemed a little too weird for me.  Further one of my board has really wide dimensions compared to the height.  This immediately bumped me into a cost structure that made a stack of boards run $70-80+ instead of the 30s.  Additionally since I’m making a prototype that had limited utility and I intend to use hard for a while I figured I’d stick with either BatchPCB or the Dorkbot option since the boards seemed nicer.  For projects that are a little more generic that I could make a lot of a really small boards for mounting certain chips or other devices I’d come back to Seeed or iTead someday.

As mentioned since two boards from BatchPCB cost so much I looked over at Dorkbot PCB Order and realized Laen had launched a new website – OSHPark.com to act as the front end for the PCB ordering.  It automatically reviews the files, renders a bunch of images and then calculates the dimensions and gives you a price and collects money via PayPal or Google Checkout!  One of the big problems with the sites other than BatchPCB was that they all made you email your files to someone who looked them over and then emailed you a price later.  I’m soooo instant gratification when it comes to buying stuff and needing to know the price.  I was VERY tempted to go BatchPCB just to get it in the queue and have a price even if it was high until I saw OSHPark.

When I saw it actually render the images out in such a decent quality and large size it totally stomped BatchPCB.  BatchPCB has HORRIBLE renderings and the price per single board is really pretty awful compared to OSHPark/Laen/Dorkbot.  BatchPCB wants $37.66 for two button boards plus the $10 handling fee per order.  Three of them from OSHPark is $37.70.  So this afternoon at lunch I uploaded my button board AND my interface board.  More on that at the bottom.

Button Board v1.0

RoastGeek Button Pad v1.0 Top

RoastGeek Button Pad v1.0 Bottom

Interface Board v1.0

RoastGeek Interface Board v1.0 Top

RoastGeek Interface Board v1.0 Bottom

As you can see there are numerous connectors on this board.  There are a few resistors and two DB25 connectors.  I’m using the DB25 to connect from the Arduino over to the other boards that will be mounted inside the Roaster Controller Case.  Each one will be attached using a short header pin extension or plugged in directly.  Most of the boards are SparkFun breakouts with a few odd balls.  The connectors marked F_PAD and H_PAD are the ones that go up to the Button Pad V1.0 board and are serviced by that left side DB25.  Most of the other headers and connections go to the other DB25.

The interface board is insanely tight for the routing.  It absolutely will test the software and manufacturing of the manufacturer and will test my selection of screws and stand offs when I try to connect it.  I believe I may have to dig out the plastic stand offs that have “spring clips” instead of screws that I had laying around in storage if it turns out to be too bad.

Like the Laser Cut Case I need to “hurry up and wait” for this one too.  I will be adding comments as I have communication about status and receive the items etc.  I’ve got a LARGE amount of 0603 resistors loaded into a shopping cart at Mouser and DigiKey right now and am trying to figure out the various parts that I need and the back order state/cost/estimated time to ship/etc to decide what I’m going to do.  The biggest problem is finding 330 ohm 0603 resistors.  Apparently nobody sells the damn things in stock.  I have to back order them even though they’ll sell for the same price as the in stock ones in any quantity… they’re just not stocked right now.  I also need to order 2 short 3 foot or so DB 25 cables.

Ordered more stuff – headaches and new replacement stuff

I had a “Chromalyte” LCD screen that came from EIO.  I needed some sort of cable for another thing going on at home and EIO came up having it in some google search.  It was cheap and the price for a similar cable from darn near anywhere else on the planet was about 5 times higher plus obscene shipping on top of that for something that ultimately ends up in a padded envelope and has $2 of postage on it.  Anyway this LCD was supposed to do 20 characters by 4 lines.  Currently I’ve been using a 20 by 2 lines LCD by Newhaven.  The Newhaven works great.  The Chromalyte?  Not so much.

I googled Chromalyte looking for a data sheet and figuring there may be some info somewhere on the internet about it and maybe using it on an Arduino project or something like that.  I noticed I kept finding pages for EIO.  I looked the product over and kept trying to find some sort of marking on it.  I looked at the data sheet found on EIO and it was pretty basic.

It mentioned using some sort of software available for download from Chromalyte’s website to test it from your Windows PC.  I figured maybe I could try that and tried harder looking for some sort of Chromalyte website.  I threw Incorporated into the search and still kept coming up with EIO.  I really started to wonder at this point and went to Archive.org looking for historical websites that were named Chromalyte.  What I discovered?  EVEN YEARS AGO Chromalyte dot com pointed to EIO’s sales pages.  Today?  It’s current contents?  It’s a GoDaddy “is this your website” listing.  But with the history seeming to always be EIO they don’t even seem to be a real company and are instead just a propped up brand name for EIO.

What made me look into Chromalyte so much that I was having problems with?  Newhaven LCD I can serial.print and serial.write decimal or hex codes to it all day long…. move the cursor around on the screen, clear the screen, put text anywhere etc.  Chromalyte? I print serial to it and nothing happens.  I throw in slash n and r to see if that helps and it doesn’t.  I try sending hex codes for all sorts of thing and nothing.  If I serial.write a clear screen it wipes the screen.  If I serial write movement commands and turn on the cursor I can watch the cursor dance around all over the screen.  I print more serial to it and nothing happens.  I serial.println to it? I get a white box IN FRONT OF the text and the line that I want anywhere I tell it to move the cursor to.

Is there anything about this in the data sheet?  Nope.  Anyone used one on an Arduino?  Not that I can find…. Heck if it wasn’t for EIO listings all over the place I don’t think anything comes back about Chromalyte at all.  I’d have to format some search keywords to force it to drop out EIO responses just to see if I could find anything else because when I searched for that name every entry for pages and pages came back as EIO.

The codes it uses are really bizarre compared to most other LCD brands available.  I think I found someone’s code ONCE that actually used a similar command structure for clearing the screen and moving the cursor but all of the other codes were different.  I’m not a stranger to writing to serial driven LCD as well as using parallel, SPI, and I2C to write to text and graphic LCDs.  This thing is just plain weird.

Sure I could probably email EIO and bitch about it but if this thing is this weird it’s just not worth it to me.  It was cheap enough compared to the hundreds and hundreds of dollars I’ve spent on all the other hardware to build a coffee roaster that it’s but a blip.  I just don’t see myself buying another one, ever.

If anyone out there can send me an Arduino program that DOES indeed work on a Chromalyte labeled as a c420a that simply clears the screen, writes Line 1 to line 1, Line 2 to line 2 and so on I’ll be amazed.  If such a thing does occur I’ll permanently install the screen in a project I’ll be doing later to read a flow meter and open/close a water valve on my reverse osmosis water system so that I can punch up a 1/2/5 gallon fill without needing to watch it.  I’m hoping to have it monitor my total water into the system and the output into a bottle and then monitor TDS sensors to gauge water purity.  Then have it alert me to change the filters and keep track of water input purity throughout the year.

To my girlfriend:  Yes I am too lazy to set a timer to track how long I’ve been adding water to a water bottle.  Instead I will design a circuit, solder up a board, write software for a microcontroller, and then mount the thing in a case so that I don’t have to set a timer so I don’t overflow the water bottle.  I know my limitations.  Building a system to turn the water off by itself is FAR easier for me to do.

So anyway today arrived a Newhaven NHD-0420D3Z-NSW-BBW as well as a pair of PCB solderable DB25 connectors, a bag of 100 B3F-1000 type Omron buttons and a few Maxim MAX31855 thermocouple ADC chips.  I figure I’ll make a board up that does 4 inputs at some point so I got enough to do that plus a couple spares.  I still need the sockets though.  Nobody seems to sell those except for Ryan McLaughlin.  After the MAX31855 that he switched to from the MAX6675 became scarce he shut down his store.  Hopefully he will pop back up sometime soon since his boards were really well made and I think he’d be a great resource for DIY’ers building smoker controllers and coffee roasters and other such things.

Anyway this weekend I will be doing my taxes and then spending the rest of time soldering pins to the Newhaven display and connecting it to the roaster controller.  This past two weeks I converted the entire roaster program over to Arduino 1.0 and updated all of the Libraries that I was using to the latest versions.  I few I had to modify slightly due to them not being 1.0 updated but the majority of them were available on the internet updated already.

The conversion to 1.0 made me make a note of all of the libraries I had used and begin to create a list.  If you look at the menu bar you will see “Resources” up top.  This allows you to pick an Arduino link and then get links that go to sites to download the current libraries if you are looking to build your own project.  I’ll be adding a few more projects and libraries that seem useful to DIY Coffee Roasters (and controllers) over the coming weeks too.

Hey you…Yes you…This is what I’m building…

I’m focused on building a Roast Controller GUI to automate and track my coffee roaster.  I wanted to document my progress and share as much as possible.  For several months I seemed to spend a LOT of time trying to deal with blog spammers instead.  It’s sort of weird having all these bells and whistles for the blog software.  I’ve got all sorts of filtering tools installed to stop the blog spammers from even SEEING the blog.  Then for the ones that don’t get stopped looking at the blog there’s yet another array of tools to stop known spammers from registering accounts and commenting.  Pretty much on a DAILY BASIS the system automatically kills upwards of over 150 unique IPs trying to spam this thing.  This leaves the rest of you that stop by here and look things over.  I like you guys.  Every so often I get a comment or an email from one or two of you so I at least know some of you come back regularly and a few have even started following on Twitter.  I know some of you are curious what exactly I’m trying to do as my “target” roaster.

If you’ve been around enough to read the older blogs and/or looked in the forum you might have seen some of the parts lists that I’ve purchased on my path to automation.  I’ve mentioned a few tools I’ve used to develop various pieces and I figured I’d show you some of what I’ve been up to… First of all I need to build a “development board” for coffee roasting automation that will be migrated from Arduino to PIC32 eventually.  I’ve had some renderings made of portions of my current “board layout” I’ve been slowly cobbling together.

View showing dual TRIACs and Heat Sink w/ High Voltage Terminal connections.

Low Voltage pins, position for DB-25 interface to a micro controller wire harness and the control panel socket.

Finally is my favorite piece that I’m eager to get to.  When I can finally get my PIC32 project back up and running I have a GUI mostly built that I need to replace the smaller one with.  I used a tool called VGDD by a guy named Fabio.  His website was found here: http://virtualfab.it/mediawiki/index.php/VGDD:Visual_Graphics_Display_Designer

This product is used to design GUIs for Microchip brand processors.  These include (mostly) the PIC18, PIC24, and PIC32 that can use the Graphics Object Library (GOL).  The Microchip provided tool is pretty much a very crude tool that yields complicated junk that needs a LOT of effort to integrate.  Fabio’s product instead turns the entire process into something pretty simple, allows you to actually write code quicker to control the screen transitions by pressing the buttons and then simulate it (AND send it to other people to review) without ever having to compile it.  It makes the Microchip system quite attractive to create a GUI on.

The great part is with the new GOL 3.0 and some new graphics chips you can create higher resolution GUIs and this development tool doesn’t seem to mind one bit.  One of the screens I built for watching the roast will look like this on the 7″ touch screen.  I cropped a roast curve from one of the logged roasts I made a few weeks ago into the blank space for the graph.  At this time VGDD does not appear to have the chart/graph function included into it.  I’m thinking there’s a way to allocate the space for it in the system but I haven’t really concentrated on it.

Simulated Auto Roasting screen prototype from VGDD.

I figured I needed to clue more of you in as to what was going on and hopefully this helps explain it!

Some of the buttons/controls will change slightly as time goes on but I figured I needed to start allocating space for things as I came up with the ideas and see if it made sense.  As you can see from the date on the GUI mockup there’s been a long time since I started working on that screen.  With the recent Arduino progress I’m feeling like I’ll be getting back to the fancier GUI that will sit on top of the Arduino back end in the coming months.  Eventually I’ll convert some more functions BACK to the PIC32 system since it seems to run faster and can do more of the math faster.  Then I can free the Arduino up to just responding to commands.

Roast controller now at full power.

So I’ve played around with the PID settings.  I haven’t officially sat down and tried to do a “real” tuning since the processing app I’m using right now lets you play with different numbers and feed it back to the Arduino to tweak it.  As a result I came up with a few numbers that flattened out a lot more than it did previously.

First roast with crudely adjusted PID

Next I will need to take it more seriously I wipe out the configurations, dump some junk beans in, and fire up the roaster and calibrate until I can’t stand it anymore and then roast some coffee again.

In regards to the button controller I have figured out a layout that I will likely use but I’m trying to keep this accurate on the schematic system I’m working with to build a real PCB later.  For whatever reason the part in the system appears to not match every other part I’ve seen out there and what I’m currently working with.  I also need to go back to radioshack and buy a resistor I’m going to need because the big multi-pack I have doesn’t include that one resistor that I need to make the math work.

The last couple roasts with this new controller turned out decent enough.  After 3-4 days rest they had extremely good smells (but tasted only “pretty good”.)  Today’s two tests are MUCH closer to ideal roasting the way they worked out and the smells (and the smoke detector) agreed at the right times.  I’ve got two batches waiting that will get consumed over the next several days and we’ll see how it’s going as they rest.  I’ve got a single serve coffee brewer that’s working out better than some of the other ones so it will take me some time to work through all of the beans.