Having worked with the Sensors Mezzanine board (By itself, and in a kit) extensively over the last year I can say there are changes I would love to see. After speaking with others who have used the board, many agree changes should be made. The sensors board was developed by the Fellow who worked at Linaro, Grant Likely. He also developed the 96boards-uart board. There was an amazing amount of discussion between Grant and a lot of us about the sensors board, It went through several revisions, each time getting better for a purpose.
The more I think about it, the more a particular change comes to mind. I would like to fix the sensor board so the level shifting voltage is selectable on all grove connectors(3.3V or 5V), and dump the idea that some Grove connectors are 3.3V and others are 5V, it just does not work all that well. On top of that I’d dump all the Grove connectors for the “Arduino like” Atmel chip, the “Arduino like” headers are there. If you want to use Grove connectors with the Atmel chip, simply add an Arduino Grove connector shield it’s less than $9.00 USD and gives you a bunch of Grove connections. In the place of the Grove connectors you dump, I’d add back the C and D GPIO pins which were left off due to lack of space.
I really think the purpose of the sensors board was to allow people to easily experiment with 96Boards. While this is accomplished by the Sensor’s board, it’s not what I need or want for serious project development. What I really want is a new board. We will call it the “Community Mezzanine” and it will be very similar to the sensors board. The goal is to targets project development with the least amount of extra hardware as possible. Below you will find a list of what my colleagues, community and I have considered to be the good, the bad, and the things I want in the new “Community Mezzanine”. I’m sure some of you will agree with me, and I’m equally sure more of you will disagree with my ideas.
Don’t hold back, jump in let’s all thrash this out. There is a chance someone might actually build the design, but first we need to get on the same page.
In my view:
- The Atmel ATMEGA328P chip which offers Arduino compatibility and optional shield connectors.
- There are some really good uses for a small bare metal hardware chip. Linux is a great OS, but unless you are running “Real Time Linux” it has a hard time dealing with some sensors, they require very predictable timing, and this is hard to come by with a full blown OS. Being able to mount Arduino shields is super handy. There are lots of shields which address sensors, motor drivers, and other cool things. We can use them for our own projects with little to no changes.
- The micro USB serial port. This could be improved by adding jumpers to select which serial port is coming out (like the original serial to usb tiny mezzanine board).
- Level shifting from 1.8V.
- While the shifting is definitely necessary, I’d like to see the entire low speed connector I/O level shifted. First off the level shifting should be to 3.3V or 5V selectable by a jumper. Everything shifts to one voltage or another. Drop the bit that some I/O is 3.3 and some is 5V, this is just confusing. I would like to make it selectable, everything goes to the selection.
- The 12 x GPIO pins. They should be high current(in or out) and selectable by pin. Let’s avoid using the lower power bidirectional level shifters. Some might argue this point but I know what pins I’m going to use and in what direction. I need current handling more than auto direction. On the I2C and the SPI, we can use high quality bidirectional level shifters designed for I2C and SPI communications. I think TI has some which actually make sure the signal, as it passes through is sane.
- Both serial ports should be level shifted like the GPIO, 3.3V or 5V (in or out) as appropriate. This way you can use the UART at 3.3V or 5V directly. This can be very very handy.
- Power Reset buttons, handy and worth having if there is no space issue.
- The grove connectors, they are nice for an experimenting board but they take up too much space for a project board, drop all of them.
- The pass through 40 pin low speed connector. It’s sort of nice to have but I don’t really care, if everything is brought out, then I don’t really need this, but I do need the space it takes up.
Things I want which are not there now:
- Bring out the high speed connector, all of it, and level shift it.
- Bring out the USB line to a standard USB A connector, there are too many times I could really use a 3rd USB connector.
- Bring out the camera connectors.
- Bring out the display connector.
- Add a more standard low speed header .1”/2.54 mm pitch 40 pin socket connector that is equivalent to the low speed connector that is totally level shifted.
- Add a second connector that is RPi compatible .1”/2.54 mm pitch 40 pin connector that you could plug in RPi shields into. There are a lot of RPi compatible parts out there, would be handy if I could easily use them. Make this a close to the real RPi header as possible, I have not explored this as far as I would like but I “think” it’s possible to accomplish.
- Pin headers for SPI, I2C, I2S and Clocks are a good idea if there is room for them. You could just add another connector that had all of them on it. I don’t really care how the SPI, I2C, I2S and the Clocks come off the board I just care that they are level shifted and available for me to use them easily.
- I’d love an Ethernet jack but you would just have to add the hardware on the board to go from the 3rd onboard USB to a USB Ethernet since most of the CE 96Boards don’t have onboard Ethernet Hardware. Also I suspect this adds a really hard space issue, you’d have to use some kind of a cut away connecter that fit 3mm below the board and the rest above. Seems hard to me for little return.
- 3.5mm Audio jack. For boards which support audio, this jack would not take up too much space on the mezzanine and offer users the ability to use headsets and possibly microphones.
Hand Drawn Sketch of my proposal
Don’t forget, if you get stuck, there are resources to help you through the installation. Feel free to check out the 96Boards forums, 96Boards wiki, or Freenode IRC channel #96Boards (there are many ways to access IRC, this website is one of them). Dig around the wiki, create a new forum thread, and/or post a question in the chat, myself or one of the 96Boards developers would love to help get your 96Boards up and running!
Don’t forget about the Open Hours every Thursday, where we will discuss this blog along with other pressing questions amongst a fun crowd of 96Boards users and developers over coffee. We hope to you see you there!
Other Blogs from David Mandala:
- How do you access the GPIO pins programmatically?
- How do you install 96Board GPIO, libsoc and libmraa on a new image?
- How to Cross Compile files on X86 Linux System for 96Boards, libsoc & mraa libraries
- Using Eclipse on X86 Linux to cross compile C & C++ for ARM Linux
- Using Eclipse on X86 Linux to cross compile C & C++ for ARM Linux with external libraries
- Eclipse remote development and debugging
- 96Boards Survery: What do 96Boards users care about?