To get the true Pi zero experience in your pocket, we are gonna need some buttons!!
Its been a while!! My idea to move to using an atmega328 was a good one, however my idea to try and use the chips internal clock was not!! In order to flash the atmega with the bootloader that determines internal clock usage, we will need to attach the chip to an exteran clock source!! I also found all in one resonators that have the xtal and caps in the one tiny package. This results in a pretty standard arduino pro mini format, which makes bootloader and code flashing super easy and super standard.
After many months of not having time to touch the new boards, I finally got to soldering it up, and BEHOLD!!!!!!!!
A while back, i contacted a company in china to manufacture a custom snapdome sheet to make things much easier for the project. After a few weeks and a small fee, i got some sample sheets
they worked out great, however the minimum order qty is going to be a killer!! The clear layer means that the silkscreen text can be shown through it, making life easier when typing. I just need to work on the key layout, and add in some 'layers' to allow more character input than the current number of keys allows
So after many attempts to get the attiny88 to play ball, I think it's time to move on and use the chip I should have used all along!
Behold the power of the atmega328 and it's well trodden paths!
Apologies for the very shoddy camera work but it's running the neopixel's on its internal clock
Now I had decided that I wanted to keep to my path of keeping things super simple, so I have gone for the internal clock, thus saving myself an additional 3 components. I have also borrowed some elements from the Arduino Pro mini schematic so I can be sure that I'm doing it right!
Currently going through the old board carefully ripping up traces and adding new ones, trying to squeeze in the extra ftdi header needed for code upload duties.
Revision 3.0 is imminent...
So my upgrade from attiny85 to attiny88 wasnt as smooth as first planned. My first issue was having non tented vias under a gnd pad on the chip. I tried some kapton tape, which was too thick, then various paints, but realised that the soldermask should be thick enough to stop the pad touching anything, and it turns out i was right!!
So once its all soldered on, and i bodge myself an ISP programmer together, i started testing my code. The first issue i had, my neopixel wouldnt work. So my first thought was that i had melted it during my various reflow attempts, but some external testing proved it still lived. Some more testing to prove that im using the correct pin (PA3/PCINT27/arduino 26) so i cracked open the trusty blink code, and sure enough that pin is correct, and i also know my solder joints are ok too!! So it seems that the attiny88 doesnt have the minerals to run my neopixel :(
The joys of microprocessors eh!!
So once i got the keyboard working, i had a little play with the attiny85. My basic code would use some internal reference trickery to get the internal voltage, then reporting back over i2c. The problem being, an attiny85 doesnt actually have proper i2c support, and so it was flakey to say the least!!
So after some searching, I found that the attiny88 has better i2c support, and more pins too, meaning that i can use a proper interrupt for the on/off button too. as a third and final bonus, it is also a few pence cheaper!!! it pays to look around eh!!
Some other changes see the power button being swapped for a 90 degree one to sit top centre on the board, and the neopixel has been moved to the back to save the eyes. It will work better too, filling the area between the pcb and the pi, with a glow of light. or maybe it could be used to illuminate a power switch later
there was of course a few fixes to the original design to correct my wildly inaccurate guesses on the keyboard chip, simply adding some more pullups, and i think we are good to go....
how many times can i check before i press the go button?
So after fixing some bad solder job (hand soldered qfn24 only half worked), and then fixing some bad circuit design with the help of @mozzwald , and getting the kernel rebuilt with the driver and overlay (credit again to @mozzwald ) we now have a working keyboard. I seem to have got my map reversed, but that's a simple fix 😀
Apologies for the vertical video 🙈 I was too excited to notice.
Time to design a case me thinks....
I was a little apprehensive about hand soldering the QFN24 chip for the keyboard, looking at it, the thing was crazy small! I forget how small things are after spending many hours with stuff zoomed a few hundred percent on the computer screen
(dont look too hard, my keyboard needs cleaning)
so i took the plunge
tinned the pads with a small amount of solder, applied a later of flux, clamped the chip with some tweezers and a clothes peg (nothing like having the right tools) and gave it some love with the iron
finding the limits of my phone camera, and it looks better in person.
much soldering later and we have filled the pads
I burnt some code onto the attiny85, grabbed the nearest sd card with ili9341 running, added a battery and pressed the button
There are of course issues, my idea of using a clip on programmer is fine for the attiny85, but when the pi covers the chip, you can no longer program it!! need to add a ICSP header. Im also struggling slightly to get my attiny to behave as i want. Getting it to respond over i2c kills my sleep code, think i have some conflicting interrupts...
to be continued......
Some sexy board goodness arrived today
I need to get moving on sourcing some components! 😀
so building on my last idea, little bit of shuffling and everything is now connected (hopefully) and in the right place (also hopefully)
its looking pretty good, the front has the buttons, screen, and a neopixel
and the back has a nice juicy space to place a big li-po (3000mah should yield 10 hours) and all the other components are hidden beneath the pi on its smd header.
a little bit more checking and we might be there!
So i got everything as i wanted it, then i thought 'oh wouldnt it be great if we had access to gpio'. so after much shuffling i found that i didnt really have the space (was thinking of using the space each side of the screen) and was tempted to just leave it. While doing other things i had a brainwave that i could use a hotplate to sink gpio headers into the pi (crazy thinking). then the lightbulb came on, and i thought 'why not use smd headers!!' this would then mean that its nice and easy to solder the pi on, and it also adds the advantage of being able to use hats (could even pop a pi3 on there with minimal effort!!)
So then things move on from there, and i had the idea of moving all the components under the pi, so the bare bit of board behind the keyboard can have a nice hunk of battery attached to it with no components getting in the way. Some messing about and it might work!!
back to the routing!!
so yeah i think i can see the light at the end of the tunnel!! I have learned a lot, developed a hatred for key matrices and tiny chips, but im sure i will get over it. I now need to spend a few hours following all the lines to see if i have any crossovers or such