How To: BrewPi LCD Add-On

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.

day_trippr

The Central Scruuuutinizer
HBT Supporter
Joined
May 31, 2011
Messages
43,899
Reaction score
31,176
Location
Stow, MA
[Revised 1/11/2015 - in second image, corrected proto board wiring diagram LCD pin 15/16 swap]

Here's a procedure to add a 20x4 LCD display to an Arduino UNO R3 in BrewPi service.

Parts needed:

20x4 White-On-Blue LED-backlit LCD display. I got mine here but you can do better on ebay if you're more patient than I was.

74HC595D 8 bit shift register. You can get them here.

10K ohm potentiometer. Any style you like, it doesn't carry hardly any current, and once you have it dialed in you'll likely not change it again, so accessibility "outside the box" isn't necessary. I used a pc mount style.

(2) 1N4001 or 1N4007 diodes (I've used both). Had them on hand but you can get them at Radio Shack if nowhere else.

20 to 30 ohm 1/4W to 1/2W resistor. Radio Shack.

(2 to 4) .1 to 1UF capacitors rated for 10VDC or higher. Radio Shack.

Hookup wire and a protoboard or equivalent.


Notes:

- The first image shows the wiring diagram used. It is a subset of the documentation provided for the rev C BrewPi shield. For example, you'll note the 10K pullups for IO10, 11 and 13 are missing. That's because the current BrewPi code configures those Uno pins as push-pull, so no pull-ups required.

Also, it's missing the function to turn off the LCD backlight after 10 minutes (from the last push of the rotary encoder switch). That's because I don't have the switches yet so I wouldn't be able to wake the display back up, and I didn't have any p-channel FETs handy. I'll be adding that and the wiring for it once the switch arrives.

- Pin 10 of the shift register can be tied directly to VCC, or optionally through pretty much any resistor value you have handy if you prefer.

- Pin 2 of the 10K pot is the "wiper" pin.

- The second image shows the wiring on a small protoboard. I re-did my original to make it easier to photograph (and hopefully follow). Note that pin 1 of the IC is in the north-west corner.

- The third image shows the back side of the LCD wired to the protoboard. Might come in handy.

- The last image just shows the whole mess all together and running using a Bluetooth interface to the host RPi.

Any questions please feel free to ask here.

Cheers!

brewpi_lcd_wiring.jpg


brewpi_lcd_07.jpg


brewpi_lcd_04.jpg


brewpi_lcd_05.jpg
 
Last edited by a moderator:
Awesome just started going through the brewpi mega thread and now that the brewpi shield is gone this is gold. Thanks for all the work you have done on this project it is appreciated.
 
Thanks, folks :mug:

The spousal unit and I have a wedding out on the Cape of Cod to attend over the next couple of days, but I've been translating this onto a protoshield and should have it working this weekend. I'll post up the layout pics 'n' stuff when that's ready.

It'll have unpopulated/untested support for the rotary encoder and backlight control. When the parts for that show up I'll write that up as well...

Cheers!
 
Thanks, folks :mug:

The spousal unit and I have a wedding out on the Cape of Cod to attend over the next couple of days, but I've been translating this onto a protoshield and should have it working this weekend. I'll post up the layout pics 'n' stuff when that's ready.

It'll have unpopulated/untested support for the rotary encoder and backlight control. When the parts for that show up I'll write that up as well...

Cheers!

Awesome. Can't wait. :) You rule. Making a list of all my brewpi stuff i need. Pretty excited about building this as it's totally the kind of thing i really get into.
 
A few new bits and I'll have another bash at getting this working! Cheers
 
Got the BrewPi protoshield build running tonight.
Nicely compact, not too pricey (protoshield kit was $6).

I've been pulling together documentation for it, should have that ready this weekend - after I figure out how I'm going to cram that display into my BrewPi Bluetooth minions...

Cheers!

Protoshield layout_02.jpg


brewpi_protoshield_minion.jpg
 
Great stuff, I was thinking the shield route myself, though festivities have slowed the mail man. Hope you include the bluetooth setup in your documentation.


froot
 
Glad I held off buying the extra bits, think.

Would you reckon this could be done be an absolute arduino novice?
 
One minion upgraded successfully :ban:

What a friggin' pita though. It would have been easier to build a whole new minion from scratch than to unload the shell to cut in the LCD.

Aaaand there was a slight "modification" that isn't for the faint of heart (or light of wallet if the outcome goes negative): I chucked one of my belt sanders belt-side-up in a bench vise and used it to "take a little off the bottom" of the LCD carriers so they'd fit the boxes. It was actually the gentlest way I could think of - less vibration than any available alternative like razor saws, router bits, various Dremel wheels, bench grinders, etc - and both LCDs survived the experience.

I also had to remove the 9V wall wart guts from its shell and toss the shell - no room for that anymore. Gave it a shrink tubing shell instead, and with that I was able to close the box up!

So...the protoshield implementation supports the basic BrewPi requirements (which is pretty much just connectivity to the relays plus support for the One-Wire bus), plus optional stuff for Bluetooth/Serial module support, heat and cool panel LEDs, On/Off/Auto switches for both cool and heat modes, the rotary encoder switch...and whatever I'm forgetting. The only thing missing is the p-channel FET used to dim the display backlight when idle. There's plenty of space and inserting it later won't be a big to-do.

More when I get to it...

Cheers!

brewpi_satellite_04.jpg


lcd_mod.jpg
 
One minion upgraded successfully :ban:

What a friggin' pita though. It would have been easier to build a whole new minion from scratch than to unload the shell to cut in the LCD.

Aaaand there was a slight "modification" that isn't for the faint of heart (or light of wallet if the outcome goes negative): I chucked one of my belt sanders belt-side-up in a bench vise and used it to "take a little off the bottom" of the LCD carriers so they'd fit the boxes. It was actually the gentlest way I could think of - less vibration than any available alternative like razor saws, router bits, various Dremel wheels, bench grinders, etc - and both LCDs survived the experience.

I also had to remove the 9V wall wart guts from its shell and toss the shell - no room for that anymore. Gave it a shrink tubing shell instead, and with that I was able to close the box up!

So...the protoshield implementation supports the basic BrewPi requirements (which is pretty much just connectivity to the relays plus support for the One-Wire bus), plus optional stuff for Bluetooth/Serial module support, heat and cool panel LEDs, On/Off/Auto switches for both cool and heat modes, the rotary encoder switch...and whatever I'm forgetting. The only thing missing is the p-channel FET used to dim the display backlight when idle. There's plenty of space and inserting it later won't be a big to-do.

More when I get to it...

Cheers!

That looks awesome, mine is just hauled up in a cigar box with a display that doesn't quite work properly.

Spent today drilling a fridge trying to tidily install my temp probes and attachments and a heater, once I get my lcd parts ordered and built I'll be done.
 
Glad I held off buying the extra bits, think.

Would you reckon this could be done be an absolute arduino novice?

Sure. What I'm doing here requires pretty near zero knowledge about Arduinos.
I'm just exploiting the intrinsic feature set in BrewPi - the hard way :)

What this exercise is going to stress is soldering ability.
And perhaps eyesight ;)

If I do a decent job the path will be clear.

To that end I took pics of the second protoshield build this evening - which came out a bit neater than the first with some unnecessary baggage cast off - and updated all my drawings 'n' stuff. After I get my second minion upgraded tomorrow I need to do one more drawing before I throw the whole works up here...

Cheers!

brewpi_lcd_08.jpg
 
I've gone back and forth about doing something like this. It's really cool, but my fermentation chamber is in my garage so it's just not that useful for me. Which sucks, because I love finding any excuse I can to tinker with electronics.
 
Sure. What I'm doing here requires pretty near zero knowledge about Arduinos.
I'm just exploiting the intrinsic feature set in BrewPi - the hard way :)

What this exercise is going to stress is soldering ability.
And perhaps eyesight ;)

If I do a decent job the path will be clear.

To that end I took pics of the second protoshield build this evening - which came out a bit neater than the first with some unnecessary baggage cast off - and updated all my drawings 'n' stuff. After I get my second minion upgraded tomorrow I need to do one more drawing before I throw the whole works up here...

Cheers!

I have one of the shakiest soldering iron hands out there I'd guess, takes me about ten minutes trying to get a wire soldered to the m12 sockets, but I'll definatly give this a go.

Brewpi on the cheap is my first venture into anything that requires an oz of electronics understanding, your project boxes and Bluetooth shenanigans are something that I'll work towards. Out of interest do you have two ssrs rather than a relay in your box, I have some pqlyt ssrs and am trying to work out whether I can just connect them to pin 5 and 6 of the arguing and ground to get them working so I can get rid of my relay.
 
No SSRs, I'm using Sainsmart dual relay cards in these.

I don't know if the Uno is capable of driving random SSR controls, but the official BrewPi rev C shield provided p-channel FETs for switching relays or SSRs...

Cheers!
 
[edited 01/16/2014 - added recommended wire type/size)

The second minion is up and running, so I had time to complete the protoshield build documentation.

The basic scheme supports the One-Wire bus and the LCD display.
Refer to the original post in this thread for links to the larger pieces.

There are also these support options:
- Bluetooth/Serial Module
- rotary encoder switch
- cool/heat panel LEDs

Parts: Starting with what's included in the Arduino Protoshield V6 (latest/greatest) the additional parts required for the basic scheme are:

- 20x4 white-on-blue parallel-entry display
- 74HC595D
- 10K 3-lead trim pot
- (2) IN4007 diodes
- 20 to 30 ohm resistor 1/2W
- 4.7K resistor 1/4W
- I recommend using 24-26 gauge solid, insulated wire

- optional but recommended: 16 pin IC socket
- optional but recommended: extra .1 UF >10V ceramic capacitors (2 or more)
- optional: extra header pins


Add for Bluetooth/Serial Module:
- 1K resistor 1/4W
- 2K resistor 1/4W

Add for Rotary Encoder:
- (3) .1UF >10V ceramic capacitors
- (3) 10K resistors 1/4W

Add for panel LED support:
- (2) 220 resistors 1/4W


Also, I've included a schematic of the AC switching scheme I'm using. This provides independent On/Off/Auto control for the Cool and Heat AC outlets. This uses a pair of 20A rated DPDT On-Off-On switches and a pair of LEDs along with the Sainsmart dual relay card. All of that is optional.


Building the base Protoshield: There is a tutorial for assembling the Arduino Protoshield here. Unfortunately it is for an earlier revision PC board, but almost all of the instructions still apply.

The kit comes with the parts shown in the first picture below.
I used all parts but the two 1x5 headers and one of the 1x6 headers.

Caution: Note which side is "UP" before starting.
The only part that is installed from the BOTTOM side of the board is the 2x3 stacking header (shown at the left edge in the second picture).

Completing the Build:

I prefer not to use Dupont wires with male ends as they need more air space above the board and are intrinsically fragile. I've done this layout so all wire connections use female Duponts.

The kit comes with a strip of 36 header pins which is enough - if you install them where they are needed. If you have extra header pins on hand you can go nuts like I did, but if you're stuck with just the 36 pins in the kit, I've highlighted the 32 pins that need to be present. These pins match up with the jumper wire connection points in the diagram at the bottom of this post.

The IC orientation isn't optimal wrt the Protoshield etch (IC power and ground pins are on the "wrong" sides of the two bus strips), but was to keep the switching inputs to the IC as short as possible as HC series logic doesn't take well to input ringing.

So there it is. Hopefully there's enough here to successfully construct a protoshield, but feel free to post any questions/issues/objections/suggestions here...

Cheers!

brewpi_lcd_new.jpg


ac_power.jpg


protoshield_build_01.jpg


protoshield_build_02.jpg


protoshield_build_03.jpg


protoshield_build_03a.jpg


protoshield_build_03b.jpg


protoshield_build_04.jpg


protoshield_build_05a.jpg


shield_wiring_newest.jpg
 
Really great work, thanks so much for doing this. A couple of questions though. :)

1) Is that a 'real' arduino protoshield? I know there are a lot of versions of these made by various companies.

2) what do i look for on the rotary encoder? is there a part number or something? just go do radioshack?

3) What is the purpose of the power switches? I assume it is just to force on heating and cooling bypassing the brewpi and uses the brewpi in the auto position.

4) I have a ton of metallized polyester film caps can i use these instead of ceramic? I assume I could is there a problem doing that?

Really appreciate this
 
- The shield is the official Arduino stackable protoshield model 2077 version 6; the link provided leads to the official Arduino page. You could use a different shield but you'll have to adjust any affected placement and wiring.

- the rotary encoder switch needs 2 bits plus a push-button (momentary), somewhere around 18 detents per 360° rotation. I ordered this one. I'd be surprised if RadioShack carries these but if it's not out of your way I suppose it's worth popping in and asking.

- the power switches do exactly what you suppose. They are not necessary but I've found them handy to have on my other controllers.

- if your caps are the proper capacitance and rated for a voltage above the Arduino's 5VDC, you can use them.

Cheers!
 
Last edited by a moderator:
In the soldering shot the wires for the rotary encoder seem to be going to Vin, Gnd, and A0. Rather than digital 7,8, and 9. Of course I could be switched around.

froot
 
In the soldering shot the wires for the rotary encoder seem to be going to Vin, Gnd, and A0. Rather than digital 7,8, and 9. Of course I could be switched around.

froot

Oh &*%#@! You're right! Didn't have the actual switch so that latent defect is just sitting there waiting to bite my ass later ;)

Thanks for looking so closely. I'll try to fix that sometime today...

Cheers!
 
So this is CES2015 Week and my largest customers are down in Vegas showing off the toys I designed for them. Which puts me pretty much on break - until they get an off-piste request for something they don't have yet. Then it'll be Go Time.

Until then I can coast a bit, so today I went back through the shield build docs and refreshed or replaced them as needed.

Along with fixing the wiring error noted by froot (thanks again! :mug:) I:

- added missing header pins for the panel rotary encoder and power switches and LED connections (total pins needed for the maximum configuration is now 32)

- rationalized all of the images to match (Photoshopped - I wasn't actually going to extricate and remove all the wires from my shield to reshoot all those pics!)

- totally re-did the wiring diagram at the end.

So that should be all set, but as always feel free to provide input.


Serendipitously, in the process of fixing the wiring bug I also resolved intermittent problems Minion #2 was having last night. At various times it would lose the Bluetooth connection, scramble the display, reset and reboot, refuse to remain powered up, all the while driving Minion #1 and my patchboard Minion crazy with random comm issues.

It was obviously a power issue, but every time I cracked the case open to stick a scope probe or two inside it would run just fine. I finally shut it down and went to bed.

Today I caught what was going on and troubleshot it down to a broken solder pad for the big honking electrolytic cap on the wall-wart switching regulator output. Aside from the FETs, the output caps are the most critical part in any switcher and this one was electrically disappearing - which made for an interesting (and characteristic) waveform. Drilled a new through-hole for the cap lead and Minion #2 has been running perfectly since :rockin:

Cheers!

minion_twins.jpg
 
Your schematic shows wires going to pins 1-6 and 11-16 on the display but then the last diagram with wire hookups shows 2 wires going to 14 and no 4. Is the rightmost 14 supposed to be a 4? I know this is probably tedious work and thanks again for the work you have done.
 
So there are a pair of LEDs on the official Arduino Stackable Protoshield that aren't committed to any function. Using the shield LEDs to indicate the Cool and Heat states might be desirable, especially for anyone not hooking up panel indicators, so I've come up with a wiring scheme to do that.

Also, I had another shield to build, so I took a step-by-step set of pictures of the complete build including the LED mods.

This sequence begins with the basic Protoshield parts installed (refer to this picture from my earlier post)

The first three pics show three etch cuts that need to be done to free up the LED circuits (for whatever reason the board grounds the LED cathodes and we need those hooked up to IO5 and IO6). The cuts are easily done with a sharp Exacto blade.

The fourth pic restores the ground connection (see the green wire) from pushbutton to pushbutton that was opened by the cuts.

The next six pics show the suggested build progression:
- load the BrewPi-specific parts
- solder them all in
- make all of the very short wire connections (highlighted for visibility)
- make the longer wire connections
- make the even longer wire connections
- connect the LED circuits to 5V and IO pins 5 & 6.

When completed, the green LED will light when IO5 is active (Cool mode) while the red LED will light with IO6 (Heat mode)...

Cheers!


etch_cut_01.jpg


etch_cut_02.jpg


etch_cut_03.jpg


gnd_connection.jpg


build_01.jpg


build_02.jpg


build_03.jpg


build_04.jpg


build_05.jpg


build_06.jpg
 
trippr,
mate your knocking these over at a decent rate, I have the main body of parts on their way, don't suppose your heading to Sydney Australia any time soon? ish? My soldering skills are going to be well tested, I think I might be able to knock one out over a three day weekend or two. (I got spares just in case)

froot

ED: a little off topic but what should I install first pints or brewpi
 
trippr,
mate your knocking these over at a decent rate, I have the main body of parts on their way, don't suppose your heading to Sydney Australia any time soon? ish? My soldering skills are going to be well tested, I think I might be able to knock one out over a three day weekend or two. (I got spares just in case)

froot

ED: a little off topic but what should I install first pints or brewpi


I was wondering he exact same thing, think I'll have most of my components today so I'll give it a bash this arvo if I get a chance.
 
Not the first question that shows my less than Amature knowledge of electronics does the 74HC595D need to have a certain orientation? I can't tell from the drawings, if it follows the same principles of the LCD on the other thread I could probably hazard a guess though
 
- Refer to this image for the prescribed IC orientation. If you want to follow the wiring pictures and have the result work, the IC orientation is supremely important.
Otoh, if you want to wire the card in a different manner you can orient the IC any way you want.

- I've built two identical systems with RaspberryPints and BrewPi, one started with RaspberryPints, the other started with BrewPi. One thing to watch for is their respective default installations end up conflicting in the /var/www folder (you can't have two index.php files in the same folder!) They can live together as long as you rename one of their home page file names (like change one to "brewpi.php").

I avoided that as I have multiple BrewPi instances running and I installed each BrewPi instance in subordinate folders (eg: /var/www/brewpi1, /var/www/brewpi2, etc).

Cheers!
 
Great info that you again for sharing. Looks like I'll be spending February in my home state so I may pack this project around with me in hopes of getting it completed sooner rather than later.
 
Awww.....rats!

After going two for two with perfect LCDs, the third one arrived with production defects.
A half column of weak pixels to the left, and either scratches or maybe dust in/on the array to the far right.

Amazon will exchange it for free but that means I have to remove the headers and clean it up before the UPS guy shows up, then wait for the replacement.

If I wasn't so OC I'd live with it. Can't do it :(

On a happier note, kicked the old chocolate stout, tapped the new chocolate stout. Same as the old stout, the new is wicked pissah delicious! :ban:

Gonna have to brew another batch this week...

Cheers! :mug:

defective_display_02.jpg
 
Why don't they make push fit connectors so that you can test peripherals reliably rather than having to solder and clean up?

Surely a river style connector would be a cheap and quick solution if they made them, it would also mean shakey solderers could get good connections!
 
I was thinking the same thing as I was removing the header today.

Otoh, the odds are whatever header it would have theoretically shipped with would be a problem for my tight fitting application, so maybe having it bare is a win in the end. I dunno...

Cheers!
 
Good news, I now have an LCD display that doesn't scramble, bingo!

Bad news for some reason the backlight doesn't seem to be working View attachment ImageUploadedByHome Brew1420983959.717673.jpg
View attachment ImageUploadedByHome Brew1420984007.134878.jpg

I'm assuming it has something to do with pin 15 and 16

I have the diodes running from
5v to row 26
Then row 26 to 23
27ohm resistor running from row 23 to row 27
jumper cable from 27 to LCD pin 16
Pin 15 goes straight to ground

I'm guessing a dodgy connection somewhere PITA though I tried swapping the LCD but no difference.
 
Swap the yellow and orange wires.

I just found an error in the proto board wiring diagram (the second image in my proto board version instructions) that had the wires to LCD pins 15 and 16 swapped. The schematic and other images were correct so you followed the wrong image ;)

Sorry 'bout that. I've corrected the originals.

Cheers!
 
Because the BrewPi AVR code never totally refreshes the entire display in one shot, any glitch that gets to the LCD will corrupt the display and it'll never recover until the AVR is manually reset.

Noise affecting the shift register is the most likely cause of display corruption.
That could be voltage or ground noise at the IC pins, or coupling to the two HC595 clock signals (Uno IO13 to pin 11/SCLK, and IO10 to pin 12/RCLK), or the output to the LCD clock (LCD pin 6).

I see that the passives on your proto board have very long leads. That reduces the effectivity of the capacitors, so I'd start by cutting them down to ~1/4" and stuffing the parts fully into the board. Also, move one of them over close to the IC power pin (8) - refer to my original proto board placement. And the more of those caps across power and gnd, the better.

If you're driving a relay module, don't power it from the proto board; connect its power and ground directly to the Uno. And you might disconnect it long enough to determine if it's playing a role in the LCD corruption - that could help narrow down the root cause.

There's no doubt the protoshield implementation is hardier wrt noise immunity as most of the connections are relatively short, especially the IC power/gnd path and the three IC input signals. But I had the bread board version running with a dual relay module on my desk, and other than occasionally zapping it with static (it's wicked bad here these days, I can draw inch arcs at will) the display was solid...

Cheers!
 
So this is where I come across really thick.

If you're driving a relay module, don't power it from the proto board; connect its power and ground directly to the Uno. And you might disconnect it long enough to determine if it's playing a role in the LCD corruption - that could help narrow down the root cause.

I do have the relay connected to the breadboard and also the temp sensors.

What other 5v source is their on the UNo that I can use? I know I can move the temp probes to the 3.3v but without 5v my relays don't switch
 
This pic shows all of the 5V (red) and Ground (yellow) pins on the Uno R3 board.

Additionally, there is an unused pin on the left side (Green) that you can wire on the back side to the closest 5V pin to give yourself an extra 5V connection. I do this on all my Unos...

Cheers!

ArduinoUno_R3_Pwr_Gnd_Pins.jpg
 
Thanks for all your help with this Daytrippr

I've made the amends as you suggest my board looks identical to yours now although I added in 3 extra caps between power and ground.

I've moved the power over to the 5v and ground opposite to the usb in.

The display still scrambles though. It only scrambles when the relay powers something though, I.e when the relay was plugged into the 3.3 v the light would switch on to indicate that the relay had triggered but the relay hadn't actually created the circuit to power the fridge or heater.

So it seems to only scramble when the fridge is either actually cooling or heating.

The only difference I can think of now is mine is in a wooden box and also UK is 240volts.
 
Back
Top