VController version 3

Started by sixeight, June 25, 2016, 05:37:32 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

sixeight

EDIT: Version 3 of the VCONTROLLER: the production model:
This version is easiest to build as it has dedicated PCB's and an improved hardware and software design.

Video of version 3 features:


Dedicated forum topic of version 3 building instructions (with videos):
https://www.vguitarforums.com/smf/index.php?topic=21962

Quick jump to version 3 design process:
https://www.vguitarforums.com/smf/index.php?topic=24124.0

Original post:
Sketching for a production model for the VController.



The idea is to have a large PCB (210 x 330 mm) that holds and connects all the displays, LEDS and switches. The switches will have to be PCB mounted types. I have ordered one switch of this type to check it for sizes:

http://www.ebay.com/itm/1-PCB-DPDT-Stomp-Foot-Momentary-Switch-N-O-N-C-GUITAR-EFFECTS-Pedal-212P-/331102850947?hash=item4d17448f83:g:WMUAAMXQlgtSzP7p

The displays will need some kind of spacer to hold them up from the main PCB. And I need to check if I can get them working with the MC23017 chip on Arduino...

But what to do with the connectors at the back? There is some space left:



Maybe some can go on the main PCB (power, USB, MIDI in/out and 4 jacks for external pedals). Then we could have two slots for optional boards for extra MIDI I/O, USB host board, RRC2, raspberry pi?

And now there is no 13 pin connectivity. Should that be separate, or also on an optional board?

If you guys have ideas or suggestions, please let me know...

vanceg

I like the idea of space for option boards.   I don't think I'd need 13 pin I/O on this device, but I could see where having a 13 pin splitter would be useful for a device intended to control multiple "V" devices.

  I absolutely think that having at least 4 inputs for external pedals is a good idea.  I'd love to see a display (or 4) dedicated to labeling these external pedals: It would be wonderful to have a way to know what these pedals are currently assigned to do. Or, perhaps I just have to create a little dedicated super micro display that attaches directly to volume pedals for this ;-)

Quote from:  sixeight on June 25, 2016, 05:37:32 AM
Sketching for a production model for the VController.



The idea is to have a large PCB (210 x 330 mm) that holds and connects all the displays, LEDS and switches. The switches will have to be PCB mounted types. I have ordered one switch of this type to check it for sizes:

http://www.ebay.com/itm/1-PCB-DPDT-Stomp-Foot-Momentary-Switch-N-O-N-C-GUITAR-EFFECTS-Pedal-212P-/331102850947?hash=item4d17448f83:g:WMUAAMXQlgtSzP7p

The displays will need some kind of spacer to hold them up from the main PCB. And I need to check if I can get them working with the MC23017 chip on Arduino...

But what to do with the connectors at the back? There is some space left:



Maybe some can go on the main PCB (power, USB, MIDI in/out and 4 jacks for external pedals). Then we could have two slots for optional boards for extra MIDI I/O, USB host board, RRC2, raspberry pi?

And now there is no 13 pin connectivity. Should that be separate, or also on an optional board?

If you guys have ideas or suggestions, please let me know...

CodeSmart

Any 13-pin in that box would need to be handled very carefully.
There's a whole lot of digital radiation in there.
But I got more gear than I need...and I like it!

sixeight

Quote from:  vanceg on June 26, 2016, 03:25:22 PM
I like the idea of space for option boards.   I don't think I'd need 13 pin I/O on this device, but I could see where having a 13 pin splitter would be useful for a device intended to control multiple "V" devices.

I will see if there is space for four or five option boards. Maybe 13 pin can be a double option board.

QuoteI absolutely think that having at least 4 inputs for external pedals is a good idea.  I'd love to see a display (or 4) dedicated to labeling these external pedals: It would be wonderful to have a way to know what these pedals are currently assigned to do. Or, perhaps I just have to create a little dedicated super micro display that attaches directly to volume pedals for this ;-)

I am not planning on more displays for external pedals. But I could program a button to reveal the functionality of the pedals on the current displays.

vanceg

Quote from:  sixeight on June 26, 2016, 11:03:05 PM

I am not planning on more displays for external pedals. But I could program a button to reveal the functionality of the pedals on the current displays.

That sounds like a reasonable option... perhaps with 4 pedals, 1 single display could be used to show what they all do.  I've long wanted some small display, about 2" x 3" which would attach to the top of a volume pedal (not on the pedal but "above" the toe area) , that could display what that volume pedal is assigned to.  I'm sure it could be done with a little arduino and a display.... but I haven't gotten around to it.



sixeight

#5
We have discussed coloured displays for the VController before. It may actually work in the VController production model with a PCB. Here is the idea

These are the displays I would like to use:
http://www.aliexpress.com/item/Free-shipping-2pcs-lot-LC162E-1602A-16x2-lcd-display-module-RGB-color-colour-LED-backlight-ADM1602K/32221225184.html



12 displays will cost around 80 euro's. We still have to find a nice main display as well.

Two or three displays can be controlled by one PCF8574 Port expander. And the RGB backlights will be controlled from WS2811 Driver chips:
https://www.hobbyelectronica.nl/product/ws2811-led-driver-chip-10-pack/?gclid=CjwKEAjwzN27BRDFn9aAwLmH2yISJABWuEXcSdwWTgajJl76NL66Kaycvc5l0B7_k-KjpM8q0nk1khoCiHLw_wcB

In the attached file I have done a quick Eagle CAD sketch - which was not quick at all, because none of the components were existing ones.

I would like to verify with the electronically skilled members whether this will work or not? Elantric?

Elantric

I've a few gigs and projects this weekend . Will review this early next week

But colored displays will help for many folks

sixeight

#7
I already found some errors in my plan. The PCF8574 chip will not work with three displays and the normal arduino Liquidcrystal_i2c library.
But I found something else. I will have to make my design based upon this:
https://www.adafruit.com/product/714

Schematics are available online.
https://github.com/adafruit/Adafruit-RGB-LCD-shield

I will look into this tomorrow.

sixeight

Here is an adapted version, based upon the MCP23016 port expander. The idea is that this schematic will be implemented four times in the VController, with a unique address for each MCP23016 (which can be set with J1, J2 and J2).

This schematic will control four switches (three for the displays and an extra one at the top of the VController)

The displays are connected to the MCP23016, with shared pins for address, RW and RS and with unique pins for "enable".

This design should work for both normal and RGB displays.

For a normal display, the jumpers can be left out. Backlights will be controlled individually from three pins on the MCP23016. Normal displays only have 16 pins, so pin 17 and 18 are not connected. A three coloured LED will show the state of the button.

For coloured displays, the backlight resistors (BL1, BL2 and BL3) and the three coloured LEDs can be left out. The jumpers JP1, JP2 and JP3 should be placed. Now the backlight is controlled from the WS2811 chip.

I will have to test running displays from the MCP23016 chip, because there is no library that will allow flexible pin mapping and i2c addressing.

MrKleinCZ

Hi Catrinus, just quick review - think that you doesnt need RW on LCD (think you can ground it) and second thing - LCDs had common anode in RGB backlight - in your schema you'll comon catode for LED...
It's wondering that there are no library for this IC for Arduino/Teensy, Ardafruit wrote perfect code for Python and RPi.

sixeight

Quote from:  MrKleinCZ on July 04, 2016, 07:27:57 AM
Hi Catrinus, just quick review - think that you doesnt need RW on LCD (think you can ground it) and second thing - LCDs had common anode in RGB backlight - in your schema you'll comon catode for LED...
It's wondering that there are no library for this IC for Arduino/Teensy, Ardafruit wrote perfect code for Python and RPi.

Thanks. You are right about the LED. It needs to be common anode. There are two libraries for the MCP23017. But they both seem to have the i2c addresses fixed in the library, as they are for the Adafruit rgb display shield.

This post is about the issues with the libraries:

http://forum.arduino.cc/index.php?topic=213548.0

gumtown

Could extend the serial addressed RGB led string maybe?
The addressable chip is available as a separate item.
Free "GR-55 FloorBoard" editor software from https://sourceforge.net/projects/grfloorboard/

sixeight

#12
Quote from:  gumtown on July 04, 2016, 12:09:33 PM
Could extend the serial addressed RGB led string maybe?
The addressable chip is available as a separate item.

What chip are you thinking about?
Running the display itself from ws2811 will probably not work, as it outputs pulse code modulation. Only the back light will work.

gumtown

If the LCD display RGB backlight leds are pin accessible,
you could drive the backlighting colours from the serial addressable led string using 13 of the WS2811 chips added to the current string,

while using the current I2C setup for the LCD displays only.

just a passing though  :)
Free "GR-55 FloorBoard" editor software from https://sourceforge.net/projects/grfloorboard/

sixeight

That is exactly what I have done already in the drawing...

That is why you had me confused...

gumtown

OOps !! I missed seeing the drawing,
yes just like in the drawing.  ;)

RGB backlight LCD will really look nice
Free "GR-55 FloorBoard" editor software from https://sourceforge.net/projects/grfloorboard/

sixeight

Quote from:  gumtown on July 05, 2016, 04:03:04 AM
RGB backlight LCD will really look nice

I hope they will be readable.  I wasn't too fond of the white on blue ones in the first VController.  The ones in the v2 version were much better.

gumtown

I think OLED displays would be best for visibility.
the I2C graphic ones are quite easy to use,
they accept text in the same format as similar commands as the 16x2 lcd, but you can also specify font size, and have mixed character sizes on display,
as well as custom graphic symbols/sprites.


Here is an example of how easy the display commands work using the Arduino SSD1306 library from my project,
below is an error routine which displays a fatal error message, then forces the Arduino to reboot.

void error(int type) {
  delay(1000);
  display.clearDisplay();
  display.setTextColor(BLACK, WHITE);
  display.setCursor(0,0);
  display.setTextSize(3);
  display.println(".ERROR.");
  display.setTextColor(WHITE);
  display.setTextSize(1);
  display.println("Radio" + String(type) + " system Error");
  display.print("Restarting..........");
  display.display();
  Serial.println("Radio" + String(type) + " system Error");
  delay(5000);
  SCB_AIRCR = 0x05FA0004; // if any radio chip not responding, then force reset
}
Free "GR-55 FloorBoard" editor software from https://sourceforge.net/projects/grfloorboard/

sixeight

#18
QuoteI think OLED displays would be best for visibility.
Don't you think these are too small? They are only about an inch diagonal.

We have done the discussion about displays before. To sum up the arguments:
* OLED: either small or expensive. Need a solution for 13 chip selects. RGB colour ones expensive...
* TFT: will be too slow for 13 displays. Also needs a solution for thirteen chip selects
* Character display. Cheapest solution. Visibility may not be great with some.

Intergalactico has been experimenting with the TFT displays, but I have not heard anything from him lately... It would be great to have an update on that project.

So far I stick with the character displays. I know the visibility of the white on black ones is great. With the RGB ones hopefully choosing the colours carefully, will help the visibility.

sixeight

Found some more interesting things:
I2c multiplexer. This will allow up to eight extra i2c lines: https://www.adafruit.com/products/2717
Could be handy for i2c controlled displays.

And a very low level approach to controlling a display from an MCP23016:
http://www.bristolwatch.com/arduino/mcp23016_lcd_display.htm
Which I could adapt for the MCP23017. The eight bit bus forbthe displays will make the displays a lot faster. So I will have to reconsider the design...

sixeight

#20
Did a quick proof of concept today. Display connected via an mcp23017.



It will need more work to get it finished,  but so far it is looking good.

whippinpost91850


sixeight

Here is an updated schematic.
I had to sacrifice the switchable backlight power for 8 bit (=much faster) connection. Also changed the RGB LED to a common anode type.
Also new is the interrupt line from the MCP23017, which will make reading out the switches much easier.

sixeight

#23
Worked out the ideas in a schematic for a full production model. But changed a couple of things as I went along. The free version of Eagle has limitations on the number of pages. So I have put four pages on one sheet.

Some issues to consider:
* the VController really needs a power button. I would like it to save settings on power down. Maybe something like this: http://www.instructables.com/id/Soft-Latch-Power-Switch-Ardweeny/
* what type of main display do we need. Maybe one of these Nextion displays will be nice, but it will cost one serial port: http://wiki.iteadstudio.com/Nextion_HMI_Solution. It will also make the unit 20 dollar more expensive. We will need one with at least 16 Mb of Flash. EDIT: and I just discovered a library that uses Softwareserial for the Nextion, so all hardware serial ports can do midi...: https://github.com/bborncr/nextion

Please comment and give ideas as you see fit.

sixeight

Updated schematics. Implemented the power switch. Also changed the switch control, by adding another MCP23017.

Still work in progress...