A Feather Wing with a LCD, BB Q10 keyboard and a 5-way button. aka. Fauxberry
I have received the boards and assembled the first device!
If you haven't seen the assembly thread on Twitter, I highly recommend it:
Long story short, the board is now fully verified and except a few cosmetic changes, everything seems to work fine, the LCD, the touch, the keyboard, the buttons, the neopixel, the sd card, and the accelerometer.
Here's a video to show some of the progress:
We're done with the routing!
On yesterday's stream (that went on for 5h, but the Feather was done around hour 4), I finished routing the board and putting all the finishing touches like the silkscreen. The board is now ready to order!
We're in the endgame now.
I'll live stream on Wednesday, May 29th at 8PM CEST, this might be the final @kicad_pcb stream for this project!
Sub here to get a notification, don't forget to 🔔
Progress so far available here:
— arturo182 (@arturo182) May 26, 2019
I just finished streaming the next part of the FeatherWing saga.
You can watch it here:
During this stream, I finished placing all the components on the PCB (there might be some small changes before the final version, but nothing major.)
I also adjusted the screen and Feather as per the Twitter poll results, I have asked on Twitter if the screen should be centered absolutely on the PCB or aligned to the Active Area, the people have spoken and AA it is. As for the Feather, the location was also important and based on the feedback the feather is mounted near the top of the board with the USB connector pointing up.
The switch and the microsd connector are also pointing up, meaning all user-interactive elements are on the top of the board, should make designing cases easier.
After placing everything, I started routing components; I'm planning to keep this a two-layer board, even though it might be tricky at some points.
I also connected the rows and cols for the keyboard to the SAMD21 MCU. Previously I had them not connected because I had some flexibility there and wanted to choose pins that will allow for easiest routing. Next step is connected the 4 buttons and the 5-way button.
Otherwise, we had some nice conversations with the chat during the stream, some talk about how to learn KiCad and how to chose components for your designs.
The next stream should be the one where we finish all the routing, add some silkscreen and will be ready for production!
Let's keep it going!
I'll live stream on Wednesday, may 22nd at 8PM CEST, I think I will be able to finish up the board so I can get it made!
Sub here to get a notification:
Progress so far available here:
— arturo182 (@arturo182) May 19, 2019
To start with, here's the second stream for this project:
On the stream, I finished up the schematics and assigned all the footprints and 3d models.
I also added the LSM303C accel/magnetometer sensor, just cause I think it might be fun to use with this board, if not needed, can always skip it during assembly.
Next addition is a single Neopixel with a 5V supply:
The last thing I did in the schematic was to change the ATSAMD20E used for the keyboard -> I2C stuff to an ATSAMD20G, which offers 12 more GPIOs, even though we only needed 2 more for the extra 2 buttons. The larger version is only 1 (one!) cent more, so it was a no brainer :)
Now onto the PCB.
A lot of the work here was to simply copy and import the outline, footprints, and models from my previous project, so that part went quite fast. I laid out the 2 additional buttons, for a total of 4, I think the 2 extra ones will be quite useful!
The placement of many components is kind of limited, things like LCD, keyboard, joystick, and the buttons can only really go in one place, so I started with those. I also put the Neopixel in the top right corner up front, to get that older phone feeling.
Now the tricky part is where the Feather should go, there are a few factors to consider here:
I couldn't quite decide where it should be placed, so I took screenshots of all the options and started a poll on Twitter, check it out here, make your voice heard: https://twitter.com/arturo182/status/1128054190352273408
You can see all the 4 options in the tweet above as well.
Let me know what you think!
Quick update to announce the next stream:
I'll be streaming on Monday, May 13th at 8PM CEST. I will continue work on the Handheld FeatherWing in @kicad_pcb. We'll probably finish the schematic and move on to the PCB.
Local time check: https://t.co/A0B5UCFLrn
— arturo182 (@arturo182) May 10, 2019
Yesterday I streamed the creation of the schematic for this project. I was also thinking aloud about what could work and what might not. You can watch the stream here:
There were some initial problems because I was using KiCad nightly, I had to stop the stream and go back to stable, the stream above is after that.
But let's talk about the actual project, so far I only have a basic schematic, let's have a look at it:
We have the Feather in the middle, I created a symbol for a special double-rowed footprint that I'll create later too, I want to copy the way the Adafruit TFT FeatherWing does it, which is having an extra row of headers next to the Feather, allowing for easy pin access.
On the right we have some boring stuff like connecting all SPI and I2C lines together, what's worth noting is that all the GPIOs used can be disconnected so they could be reused by the Feather, just need to cut the jumper.
At the top, we have an ENable switch so we can easily turn off the device.
Then on the left, from the top, a microSD card, I think it can be useful for holding images for the display, log data, etc.
I have been also considering adding an SPI Flash, but unsure if there is value in that, some of the Feathers already have those that they use for storage of Python scripts.
Next, we have the STMPE811 GPIO Expander with Resistive Touch Controller, the LCD used has an option to include a Resistive Touch Panel, so this will be useful. We also use the 3 GPIOs for some extra pins, I didn't want to use too many extra pins on the Feather, it already has so few available.
Next, we have the keyboard, it's in a sub-sheet, available here:
The keyboard used is a Blackberry Q10 keyboard, it's configured as a key matrix, has 4 LED backlight and a microphone. For now, I decided to put the microphone on a test pad but on second thought I might connect it to one of the analog inputs and just have it as a solder bridge open by default. For the backlight I use a simple MOSFET config, we can easily PWM it. The backlight is off by default.
For the actual keyboard functionality, I use a separate chip, this is because it would take too many Feather GPIOs to interface the keyboard. The chip used is a SAMD20, it takes in the keyboard matrix, polls it at specified intervals and allows reading out the key FIFO over I2C. This way we only use 2 Feather pins and they can be reused anyway since it's I2C. The benefit here is that the 2 extra buttons and the 5-way button are also processed by the SAMD20 in a way that is transparent to the Feather.
There are also 2 regular buttons and a 5-way button that will be placed between the keyboard and the LCD, this will make it easy to navigate menus and GUIs.
Now we can go back and into the LCD sub-sheet:
Here the schematic is really simple, we configure the LCD to use an SPI + DC pin interface, we have the touch panel pins, and we have backlight control, also using a MOSFET and can be PWMd. The only difference here is that the backlight is ON by default, this is the same as in the Adafruit TFT FeatherWing.
And that's it, at least for the time being. As you can see, I put a note for myself to add a NeoPixel, I want to put it above the LCD so it can be used as a status LED as some phones have.
As for additional functionality, it depends on space left on the board after I add these components, but I think there should be quite some space left. So the question is, what should we do with it? Can't just let it go to waste ;)
I was thinking of possibly adding a speaker, it would complement the microphone nicely. Additionally, an accel/gyro might be nice to have, for detecting the board's orientation. Another thing that might be useful is an Ambient Light Sensor, the backlight could be controlled based on it, to save some battery.
I'm also considering...Read more »