A mobile dev terminal/hacker device/anything you like!!
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
If you have ever used a tiny keyboard like this, you will know how important the design of the keyboard is. While I would love to have some really good mechanical keyboard action, that would make the device too big to fit into a pocket.
The snap dome buttons used are pretty damn tiny, they are 5mm diameter and a miniscule 0.25mm tall. this means we are only going to get 1/4 of a millimetre of key travel, so the tactile feedback is going to be important.
In the past I have not really paid much attention to the activation force of the domes, and so they have been harder to press and pretty noisy. This is where clicker got its name
I initially got the lightest force domes they make (55g) which with no button on top you can barely feel them move, and they are totally silent. They are probably a bit too soft, and I will have to buy a range forces and do some testing.
Anyone who has used a pocket c.h.i.p. will know that typing on the bare button domes is not a fun task. The domes are actually designed to be 'activated' with a small contact point (like a peg) pressing into the center of the dome to properly snap it
This means we will need actual buttons sat above the domes, with the appropriate peg to activate the dome. If you take apart old device with buttons, you will see this with the button being on the rubber membrane at the back, and a nice printed topper on the button with the fancy legend and such. This is what I would like to have in the future. but that would need mass production numbers, and we are not there yet!!
My first attempt at buttons was a simple one. basically the buttons had a taper, and the holes did too. This meant that the button could be pressed inwards, but not fall outwards. Each key had its own little peg to press the dome, and they all had to be installed one by one
This worked, however it was not fun if you were to drop the device and all of the buttons ping out all over the floor!! It also made it difficult to add legends to the keys, they would all have to be uploaded to the printer as individual items, and it was generally just a nightmare.
I made the buttons bigger, which meant I needed to remove the taper to maximise the material between them. Getting round this means tying all the buttons together internally, meaning that adding legends was then possible
The keys could then be a single entity that can be dropped into the case. This would also open up opportunities of having alternative key maps available that could be swapped out reasonably easily. Printing on MJF printers means that even these small buttons come out well
I didnt go deep enough with the legends, so you can still see them from some angles, but generally they are a bit useless. The bigger problem of course is that the very rigid print with some snug fitting meant that it was super hard for a single button to move independently.
MJF printing has a bit of flexibility with the limits of what you can do. I had a bit of a play with making the buttons springy, while still being tied together. After some messing with CAD I came up with this
You would have no chance of printing this on FDM, and a resin print would be able to do the detail, but support material needed would make it too hard to process afterwards. This limits it to MJF or SLS printing, so that the un-fused powder can support the part.
Thanks to the guys at Midlands3d for trying to print this monster!! I originally chose the dyed black option, which gets shot blasted before it is dyed. it seems the shot blasting was a little too much for this design, and some of the keys vanished without a trace. They re-printed it in bare grey material and it came out pretty well
Its quite hard to photograph as its all pretty tiny, but the clearance round the springy bits wasnt enough, so its all fused together and become a solid lump again. The legends are there though this time, and the blasted and dyed version looks way crisper (ignoring...
Read more »So a mobile device needs power, and to make a mobile device more useful, more power is always better right?
Initially I had considered just popping a JST socket on the board and calling it a day. That would make the case design much simpler, and could even save 2mm on the thickness of the device, making it even easier to slip in a pocket. Job done right??
Well if I ever want to sell these (and I would like to!! ) then an enclosed battery becomes a major issue! Anyone following along for a while might have seen my past fun with Royal Mail and batteries . Being able to ship the device without a battery makes life much easier, but it needs to be a battery that the end user can easily get locally, for a reasonable price.
Any local high street these days will have a choice of vape shops, and those shops will generally be a source of the ever useful 18650 lithium battery. They have become the AA battery of the modern world. The biggest issue with these batteries is there cylindrical nature. The battery being 18mm in diameter makes any device you use them in harder to make thin. Take that 18mm, add 2mm each side for the case, and 1.6mm for a pcb, and your up to a chunky inch without trying. Pockets are not too happy about that....
If you buy an electronic device that has a removable battery, the chances are it will be rocking a "BL-5C". This means it will super easy for people all over the world to get their hands on the battery. The use of these types of cells also has added advantages. They have hardware based reverse polarity protection (as long as you design the battery bay right, you cant connect the battery the wrong way) and they are supposed to have protection circuitry built in too (although i wouldnt want to trust that on the cheaper cells). The battery is only 5mm thick too, so even with some case and pcb, its still going to be thinner than a 18650 cell on its own!! All is not perfect though, when you look at the battery, its contacts are little gold squares on the battery, you need to find the right kind of connector to mate with this efficiently. a quick search and you can find hundreds of people selling you a 'nokia battery connector' which will do the job
The problem comes back to 'if I want to sell these'. its easy to find random connectors in small quantities, but if your thinking of getting a fab house to make your boards, you need part numbers and someone who can reliable offer larger quantities of the part. This is where I fell short
While i was hunting for battery connectors, a friend mentioned a Light he had acquired from AliExpress, and it too had a removable battery, but not the magical standard cell. This one was a BP-4L from the more modern range of Nokia phones (E61, E63, etc) and the first advantage I came across was a reduction of thickness!! 4mm rather then 5mm (a win for pocketability!!) the next bonus was a 50% increase in capacity! 1500mah rather than 1000mah. Then the final decider was that i could find a battery connector!! This cell has a spring based socket connector on the battery, and 3 simple blades attached to the pcb
So here we are, BP-4L is the way to go!! Still got hardware based reverse protection, slim to make it easy on the pockets, and a session busting 1500mah battery!! That means that even if you have an average 100mah running load, and you average an hour a day usage, that battery could be lasting over 2 weeks!! I call that a win :)
So if your looking for a screen, you will find many different stores selling many different options. When I was looking for screens for my TinyPi project, it didnt seem to matter where the screen came from, they all worked the same.
E-ink seems to be a very different animal all together! each screen seems to have different properties, and even when the datasheet says it is the same driver IC, they are configured in different ways.
Before we go any further, let me just take a moment to shout out to the 'screen whisperer' Larry Bank. He has worked with me, tweaking his screen library to get the most out of these screens, without his work, I would still be struggling with bits of demo code
The first screen I ordered looked lush!! the background was frosty white and the contrast was brilliant. With a bit of tweaking the refresh rate was ok, but needed to be faster.
Enter screen 2, used a supplier that I had used in the past, the screen was much greyer, and it didnt look anywhere near as nice. The fast refresh was not working out of the box, but I didnt see the point of trying to fix it, as the screen didnt look as nice.
Talking to a friend and they told me about another supplier. They have their screens listed as 'fast update' which was music to my ears. After an impromptu 9 day holiday at the airport, the screens landed. The difference was quite remarkable!!
running the same code on both screens, the new one has a much more savage flash, but its over so much faster than it makes a massive difference. With some demo code that lets just just type random stuff onto the screen, you can see its pretty usable, and you can do many fast updates with no obvious grain appearing on the screen.
the hacking continues....
If your making a keyboard, your gonna need plenty of keys right? This is an easy enough task, you just need to plop a load of buttons onto the pcb and your done. I didnt want to waste i/o pins reading the status of all those buttons so I have made use of a chip that was made for the job.
The TCA8418 chip can monitor up to 80 buttons, using minimal power and storing the key events in a nice little buffer so that you can process them whenever you are ready.
Using proper keyboard switches would be the ideal for the most usability, but they are not really pocket device friendly. there are smaller tactile switches, but once you start adding many multiples of buttons, the cost starts to shoot up.
If you have ever taken any small mobile device apart, you might have come across buttons that are stuck to the pcb under a plastic sheet. These are 'snap dome' switches, essentially taking a standard tactile switch and stripping it down to almost nothing. The pcb has 2 contacts on it, and there is a metal dome sat on top. pressing the dome deforms it, making it bridge the 2 contacts. The domes are arranged on an adhesive sheet, so they can be installed easily during manufacture. These custom sheets are actually really cheap, but the minimum order quantity on them is normally in the thousands, so prototypes and changes can get expensive.
It is of course possible to buy a bag of the domes, and make your own sheets with some tape and some steady hands... and the help of a 3d printed guide
lay some tape over the top, and then peel it off and transfer it to the pcb
Its not perfect sure, but its close enough to test :)
The other part to the puzzle is the strength of the domes. The ones I have used in the past were pretty 'strong' so when they were pressed and deformed, they had a loud and tactile click (hence the name clicker)
I wanted to get away from the noisy clicking (can you imagine a classroom full of clicky buttons being pressed) so I went for the lowest strength domes I could find. at a mere 55g activation force, you can almost trigger them by blowing on them!! I think there is some more experimentation needed to find the sweet spot of tactile feeling and minimal noise.
The quest continues....
I wanted to stick to the retro asthetic, so the screen being up the top left corner feels right. I considered a few options, but kept circling back round to e-ink.
There are lots of really great little IPS screens with really impressive pixel densities, but they are generally designed for smart watches and the like, so they are super tiny (see TinyPi Pro ;) )
I did try and hunt for some dot matrix lcd screens to really nail the retro aesthetic, but they seemed to be low resolution and pretty expensive. Also they can be a bit tricky with viewing angles and hard to see in low light
So e-ink was the next on the hit list. I really love the way it looks, literally like printed paper, but the refresh rates are shocking. For displays with any colour on them, it can be up to 15 seconds to refresh the screen with lots of flashing, not really something that works well with a keyboard in a code editing situation. After some research, I found that the plain black and white screens could fully refresh much faster, and there was the option of fast or partial update which might make it usable...
I had in my box of bits a Sharp Memory display, its a low power lcd that has a bit more of a reflective nature to it, and so has a bit more readability when the light isnt great. I hacked one onto my test boards so that i could compare and contrast
At first, things look nice!! (disregard that blob of damage on the screen) there are more pixels, and the refresh is instant, but it soon started to loose its shine. Firstly the extra pixels means that you have to use larger font to keep the same level of readability. While this is not the end of the world, it does kill off the advantage gained by the higher resolution. Also as i was moving the boards about, i noticed shocking contrast when your not looking directly at the device
Compared to the crisp e-ink, this was pretty bad. Coupled with the fact that i need 5v to get the screen to work, and the poor old Sharp Memory display went back into the parts bin
To make a project like this useful, you either need to spend a fortune adding all the sensors and 'radios' that someone might want/need, or give the mechanism to add them as needed.
Most systems use Qwiic or STEMMA connections to add additional sensors, but that really limits you to 2 pins, so it is relatively limited unless you use multiple plugs together (if you wanted something like SPI for example). This then opens up issues with getting plugs the wrong way round and things not working as planned.
I was hoping to push this towards the education sector, so using the Raspberry Pi style exposed header is open to damage by a bored student.
I therefore decided to switch it round, so that the more fragile header pins are on the cheap add on board, and the more robust socket is on the more expensive device. To make assembly simpler (cheaper) the header boards are mounted on the back of the board, using specially designed 'Bottom Entry' headers
The pattern of the sockets helps to make sure the add on board cant be inserted the wrong way, and limits any possible confusion. The case has a recessed corner with just a few holes as the only clue that there is something there
The add on boards only need simple headers to enable connection, giving access to power and ground, and 16 i/o pins
using thru hole headers means its more robust, but also could result in the weak point still being the more expensive device rather than the cheaper add on board
Create an account to leave a comment. Already have an account? Log In.
its from "good display" over in china, seems their name is accurate!!
can only reply twice :P
https://www.good-display.com/product/389.html
Interesting that this one ('540) is 0.2sec partial refresh https://www.good-display.com/product/540.html vs 0.3 for the lower res one ('389).
A small difference for 1 partial, but a big difference if you were doing a sequence of 10 partials to change the image.
However the the 2.66" hi res one ('501) with the same SSD1685 controller (https://www.good-display.com/product/501.html) is 0.3s.
But if we look at power consumption the '540 is 0.2s , 12mW refresh
0.3s = 9mW refresh - both the '501 and '389
So I wonder if (a) the 0.2s is a typo, or (b) it is real, and is reflected in the greater power consumption of refreshes in that module.
Yeah, I have some of the higher resolution ones to test, but the contacts are on the other side of the ribbon, so the zif socket I have wont work with it. Maybe the 'pixels' are smaller on the 540 so it can refresh faster? I am working on another board spin, and will use double sided zif sockets this time so I can compare and contrast!
The '501 (0.166mm) and '540 (0.176mm) are the same controller and look like almost the the same pixel pitch.
From this it looks like the faster one uses higher power 12mW vs 9mW e.g. perhaps it has higher voltages to the eink to switch faster
I'm also quite interested in the flexible ones, to go on the outside of things, where mechanical impact damage might leave a bit of the screen damaged, but not a whole region snapped off as would happen to glass.
Interesting that they have a reflective lcd also:
https://buyepaper.com/products/gdtl029t51
those reflective LCD look a bit hard to see, they dont have the usual videos showcasing them either. Cheaper than the sharp memory displays though
And cheaper than eink.
A bit suspect that they don't show them displaying anything!
The other thing about eink is that they always say "not in the sun" - there has been a real lack of proper reflective options. My newer bike computers all have transflective LCD, and are quite noticeably less bright than the older pure reflective ones.
My screen guy had one of the smaller ones, he also found this from one of the larger ones https://x.com/iluvsuaoni/status/1640697277005336577
They are apparently designed for e-ink replacement but have similarly low refresh rates.
very cool project! do you mind sharing what that battery connector part is?
sure thing, its this one, but now im looking, it seems LCSC have discontinued it :(
https://www.lcsc.com/product-detail/Button-And-Strip-Battery-Connector_D-CHAIN-BA0306370420-59_C5827004.html
this could fill a void for me. I like writing novels, but I get distracted easily. I have been searching for a long time for a pocket digital word processor. Something in this approximate configuration would fit the bill.
It had popped up in my news feed. The second I laid eyes on it my brain just went, THAT!
it could, but im not sure you would enjoy writing a novel on the tiny keyboard. :)
What are the advantages and potential challenges of using ESP32Forth compared to MicroPython for developing a full coding environment on a device, and how does https://fominsoap.com/ suggest integrating such a solution effectively?
im sure esp32forth would be just as useful as micropython. its on the list of things to look since i was made aware of it, im not sure how forminsoap can help, unless it for keeping it clean :P
Looks amazing!
Reminds me a bit of the Cardputer, but the eink screen gives this a very unique aesthetic.
Regarding add on boards: did you consider using magnetic pogo connectors? They’re more expensive than pin headers, but if you worry about kids breaking them, magnetic feels like a more durable solution. And as a bonus, you get a satisfying “magic” snap into place when placing a board on the device!
Great job!
Thanks for the kind words :) i was aiming for unique with the e-ink screen
I hadnt considered the magnetic connectors, mostly went the way i did because of trying to keep all the components on one side. plenty to think about...
this is actually pretty sick. curious what the screen resolution is, and wish it was one of the risc-v ESP32s. it looks a little bit like a crossbreed between my Sharp EL-5500II and TI-92Plus, which is great. since this thing has an ESP you could make a mesh network chatter out of it. very cool project looking forward to seeing where it goes. regards
Thanks :) The screen has a resolution of 296x128, but the same maker has a high resolution one that is 384x168 which i am keen to try.
I have played with the idea of adding a lora card to the add on board library so it really could be a mesh comunicator!!
LoRa isn't strictly necessary for mesh, the esp32 "transmit raw 802.11 frame" function can do it acceptably. Range is shorter but not much shorter than 2.4g lora, and it's free aside from firmware implementation, much faster, and (iirc) can receive while transmitting which are upsides for sure
Otherwise a lora radio would definitely be a really good use for that expansion card slot, I agree. Especially since the non-2.4g lora chips are region specific and they're not very cheap chips. it wouldn't be great to integrate something of niche use like that on the main PCB.
296x128 is almost as good as my beloved 92. :)
384x192 would be marvelous if it doesn't run into the same pixel density problem you had with the memory display.
i cant reply to your new message, silly hackaday.io
i didnt know about the raw frame thing, thats an interesting way to get mesh communication
The higher resolution screen might have to wait for the next board revision. The ribbon has the connectors on the other side of the ribbon, but the pins are in the same order, so I will need a zif socket that can connect on both sides, rather than my top contact one
I completely agree about the displays. This reminds me of the Casio/Sharp computers of yore.
I would like to have Forth running on the eink display, to have a self contained device (ESP32Forth is arduino build.)
If you had Forth, then your device would also have a remote command line with no additional programming i.e. a computer or phone can also make it do anything through the "serial" (telnet,BT) interface.
My initial idea was to have a full coding environment onboard, so you could hash out some code on the go. Originally thought of micropython but I will look into ESP32Forth for sure!!
Become a member to follow this project and never miss any updates
So what was the display #3?