Close
0%
0%

The fsociety Keyboard

(Mr.Robot's) fsociety inspired Mechanical keyboard. Wirelessly sense, assist and automate your good and bad computing activity.

Similar projects worth following
As a matter of fact, people nowadays can easily spend >10 hours a day in front of a computer; wiggling the mouse, click and clacking the keyboard, those things are just inseparable part of our modern life. HID such as keyboard has simply become an integral part of the society and also our primary window to the digital world. Only little we realize that the device that we rigorously use daily hasn't changed much, remains 'dumb' as it was first invented. With more and more freaking-tasks often need to be handled simultaneously, we still rely heavily on our lazy-brain telling our hand to type here & there. We often end up inputting the same damn-password so many times because most of those safe-secure password keeper are just too complicated to startup. No matter what we are doing, what's happening in the surrounding, how late you are staying up the night, our keyboard remains the way it always is, doesn't help a thing and I'M GETTING SICK OF IT!



This Project...

is not just about making another DIY-keyboard, but it's all about creating a smart-connected device. A device which 'talks' to your surrounding, able to make its own decision and aim primarily to assist you in interacting with digital world by introducing some sort-of an automation and flexibility. Of course, while retaining its functionality as your casual keyboard in most cases.

is not just about helping or assisting, but shaping the way you interact with the digital domain in a long term. Self-deactivation after hours in front of computer or automatically kill your browser in case you've been in social media for too long are just an example of how it can help shaping the better you. Not to mention about several other neat feature such as securely embedding your passwords within the keyboard itself.

is not just about another keyboard that does Macro, but instead, it's all about a keyboard that generates its own macro depending on your surrounding and just the way you want it.

is not just about a bunch of switches where it does the exact same thing every single time, but it's all about dynamic community driven features.

is not just about a device that waits for your command, but it's all about having a two-way typing companion.

And lastly, it is not just about a keyboard.



"What I'm about to tell you is top secret. A conspiracy bigger than all of us. There's a powerful group of people out there that are secretly running the world. I'm talking about the guys no one knows about, the ones that are invisible. The top 1% of the top 1%, the guys that play God without permission.
" -Elliot, Mr.Robot.

Specs:

  • True wireless keyboard
    • No wires allowed. Communication and charging everything is done wirelessly.
  • Fully Portable
    • Due to the wire-free policy, making it portable is as easy as it sounds.
  • 62 X Cherry MX mechanical switches
    • Yes, no discussion about this. Cherry MX or no keyboard at all. Did I say it has to be Cherry MX Blue as well?
  • 68 X RGB LED backlight
    • An array of WS2812b black version embedded on the board. Who could've thought maker's favorite RGB led is underneath a keyboard.
  • 2 X Thumb Analog Joystick
    • On the left side simulates the mouse movement while the right side trigger the arrow keys.
  • Security (RFID/NFC)
    • In complement with things like NFC Ring, or smartphones NFC, having a secure on-board password activator doesn't sound impossible.
  • Internet of thing thingy
    • To enable independent internet access, ESP8266 Wifi dongle was added on-board.
  • Local wireless communication (Bluetooth 4.0 & LORA)
    • Talks wireless-ly with local networks that you've setup is now possible with Bluetooth and growingly popular LORA network on-the-go.
  • Bluetooth HID
    • Bluefruit HID link from adafruit is used to enable pure wireless system. This significantly save development time.
  • OLED Display
    • 128x32 pixel OLED display embedded for some indications and notifications on board.
  • Local Storage
    • Micro SD card should be able to handle the demand in here.
  • Microcontroller
    • For the first iteration, old School ATMEGA2560 is used. Together with atmega328p a co-controller for the WS2812b LED.

Fits on all circumstances. Either chilling-out:

Or on a Heavy-Duty working environment:

Fsociety_Keyboard_AltiumFiles.zip

Altium Master Design files. Tested on AD16. Including the output job.

x-zip-compressed - 3.57 MB - 08/21/2016 at 20:14

Download

GERBER_fsociety(ready4prod).zip

Version0.10. Any PCB manufacturer should be able to handle it in a breeze. No difficult design requirement. I've done my homework, www.pcbway.com seems to be the cheapest and fastest. Give it a try. (Hold on. check my Log about this Gerber update before ordering)

x-zip-compressed - 1019.28 kB - 08/21/2016 at 20:00

Download

Fsociety_Keyboard_3D.pdf

Adobe 3D design files, pan & zoom with this. NOTE: you have to download it first then open with your local Adobe reader. Hackaday's pdf plugin doesn't support this. I've tried.

Adobe Portable Document Format - 28.66 MB - 08/21/2016 at 19:52

Preview

Fsociety_Keyboard_3DTop.PDF

The top view of non-compressed rendering of the Keyboard.

Adobe Portable Document Format - 1000.54 kB - 08/21/2016 at 20:02

Preview

Fsociety_Keyboard_SCH.PDF

This is the complete schematic in pdf. Check the Original altium design files for more detail.

Adobe Portable Document Format - 1.06 MB - 08/21/2016 at 19:55

Preview

View all 9 files

  • 62 × Cherry MX Switches The Primary Mechanical Switches. I use blue, but can be any color you want.
  • 61 × Cherry MX Keycaps Pick the ones you want from tons that are available
  • 1 × Atmega2560-AU 100-TQFP pins
  • 68 × WS2812b RGB LED Addressable RGB LED
  • 1 × Micro USB connector Standard Micro USB for programming

View all 23 components

  • Hello there, I am a Generative kAiboard

    Pamungkas Sumasta08/20/2023 at 22:49 0 comments

    Seven years might seem like an eternity in the world of technology, where trends change in the blink of an eye. Yet, after enduring millions of keystrokes, weathered the presence of food crumbs and defied the rigors of unforgiving electrostatic discharge, I am elated to announce that I have returned. What's more, the keyboard that embarked on this journey with us all those years ago is not only still standing but thriving remarkably well even after continuous daily abuse. 

    Today, as a new chapter unfolds, I am delighted to unveil an evolution of innovation.

    In an era defined by the extraordinary advancements in the field of generative AI, the fusion of technological innovation and the boundless realms of creative expression has blossomed to unparalleled dimensions. As we bear witness to the remarkable journey of generative AI, a transformational narrative unfolds before us, one where machines take on the role of creative collaborators. This remarkable evolution signifies the union of human ingenuity with the immense capabilities of AI, resulting in a paradigm shift that permeates various aspects of our lives.

    Amidst this dynamic landscape, I am thrilled to introduce to you the Generative kAiboard – an embodiment of the intersection between artificial intelligence and human interaction. This keyboard stands as a testament to the convergence of two realms, where the ingenuity of AI is harnessed to amplify and augment human creativity. The Generative kAiboard signifies more than just a technological marvel; it is a gateway to exploring the synergies between the digital realm and our innate imaginative potential. With every keystroke, it invites us to engage in a harmonious dance of human and machine, allowing us to explore new horizons in communication, creativity, and connection.

    Intrigued by this transformative journey? I invite you to witness the Generative kAiboard come to life in action through the captivating YouTube video below. Immerse yourself in the harmonious blend of technology and imagination that defines this remarkable creation. Your engagement is pivotal as we embark on this innovative venture.

    Furthermore, if the Generative kAiboard has sparked your curiosity and resonated with your vision of the future, I encourage you to explore and support the entry in the Wiznet TOE Design Contest that is currently ongoing. Your presence and endorsement in this exciting competition would not only reaffirm our shared enthusiasm but also pave the way for a new era of creative exploration. Let's collaborate in embracing the potential of generative AI and pushing the boundaries of what's possible. 

  • THP Judge: Anouk Wipprecht !

    Pamungkas Sumasta09/12/2016 at 22:30 0 comments

    Maker Faire Eindhoven.

    What a weekend it was. I've been to several Maker-Faire in three different continents, but yesterday was my first time attending Maker Faire in the Netherlands (Yeah, the country where I've been residing in the last 5 years). The atmosphere was amazing and the enthusiasm was all over the place. Didn't realize there are so many makers just around the corner. I strapped myself with the F/society Keyboard, RGB glasses and riding Electric unicycle all along the event, had to say even as a visitor I attracted quite some attention. :)

    But but but.... the highlights of the event was meeting the one and only; Anouk Wipprecht. Yes, one of The Hackaday Prize Judge for this year event. She gave a talk as well as leading a Make-athon during the event. I actually joined the Make-athon on the second day and it was such a pleasure to be guided, helped and mentored by her. Thanks Anouk!!

    Firmware

    On top of that, a small follow-up update. The pre-release firmware of this project is available on Dropbox. There are still quite some clean-up will be done. Hardware pre-configuration also will follow.

  • Updates & Maker Faire Eindhoven

    Pamungkas Sumasta09/08/2016 at 19:51 0 comments

    Well, been around 5 days since the last update. It has been pretty busy week for me as typically; leave home 7.30 in the morning and arrive home at 23.45 midnight. Between work-stuff I've been trying to make some progress for this project. For this week I think I can summarize in bullet points below:

    • Software Update:
      • Some restructuring was done in the software. Which pretty much almost ends up like rewriting the whole thing. Though at this point I am a bit more satisfy with the progress. Does the job pretty well as my casual keyboard with additional personal flavors on top of it. Of course I am open to improvements from the community. In short I've been trying to really simplify the syntax and way the code works etc. So I hope people with little programming background can understand and adjust the software as they want it.
      • Github's on the way. I just need to allocate some time to properly set it up. Hopefully this week.
    • Hardware Update:
      • As covered in my previous log. I am currently busy with making the second version of this keyboard. There are plenty of feedback from the community and I am trying to accommodate those feedback as much as I can. I hope having more features on the will attract more and more people to try recreating this project and eventually become the keyboard that they'll use daily for the rest of their life :) In general the proposed changes are:
        • Wired Variant. In my previous log I mentioned that i will implement teensy as the alternative component on the board for wired version. However, after some considerations, I am now changing the plan. Having 2 variants in which both uses different type of uC, it might in fact introduce some 'confusions' in the firmware part. Because of the difference, one will be more developed than the other etc etc. So the rplan is now for the wired version, I am now replacing the ATMEGA328p as the co controller on the board to ATMEGA32u4. As you might haver known, ATMEGA32u4 has built in USB peripherals embedded for HID stuffs. So I am sure this won't hurt much. So in conclusion, for both variants, ATMEGA2560 will remain as its primary controller.
        • Bluetooth HID. As it is now, I am currently using bluefruit HID with embedded HID firmware ready out of the box. However, I do understand that this part is actually getting more and more scarce; or in other words harder and harder to get. Also the price for some people might be a bit much. As I menationed earlier, the options are either going to WIRED version of use alternative bluetooth Module. So in the next version of the PCB design I will provide 2 footprints either Bluefruit EZ key or alternative. At this point in time, my eyes are on to the famous Bluetooth HC-05. There has been many firmware hack flying over community about this bluetooth module, so I think it is a wise option.
        • Additional RF Module. In the current design, I implemented LORA module for local wireless communication. But apparently there aren't much of application with it yet. So in the next PCB version I will include the footprint of nrf24l01 module. Yes you are right, the 1 dollar or so wireless module. By doing this I hope you can pick and choose either to populate the board with LORA module or the nrf24l01 module.
        • Additional External RAM. Though atmega2569 considerably has pretty big flash memory. The RAM in this is not that much, 8K. I will add possibility to add this IC on the board as well. Just in case you are making hardcore application that requires temporary/dynamic memory outside the uC.
        • Additional Atmel CryptoAuthentication Device. For those who are really concern about security, I have decided to add the possibility to implement Atmel CryptoAuthentication Device on board. This kind of chip has been widely used fin many security sensitive device as it uses some sophisticated magic inside to encrypt and decrypt keys. Will be very handy as a complementary feature with the NFC/RFID reader.
        • Better mounting profile. In the current design the mounting place was not...
    Read more »

  • The f/Software Part 1: Key-mapping.

    Pamungkas Sumasta09/04/2016 at 00:06 3 comments

    In case you are the ones who have enough guts to try replicate this keyboard, there is one basic thing you should get yourself covered; that is the key input matrix and how it is being mapped. In your previous projects, chances are you only used a couple of buttons or more and each is connected to single IO pin of your microcontroller. Now if you are talking about making a keyboard with more than 50 or even 100 input keys, a more efficient way needs to be implemented. (Except if you have FPGA scattered around with >100 GPIOs and you happen to have an alien friend from another planet that can type millions key stroke per second, then it is different story)

    Quite frankly, there are tons of techniques and method to tackle this situation. If you think there is only one type of input Matrix scanning, then you probably have had a miserable life. This one extremely useful site explains in great details about all those key matrix methods (un)commonly used. They even compiled this huge impressive list comparing the number of input and free pins required for all different techniques. It also color coded the classification of additional hardware required. MY GOD.

    After some quick consideration, I decided to opt for Single Multiplexed option. There are several reasons why I picked this:

    1. No additional hardware required.
      1. Though technically you need a diode to prevent a click being 'backfired' during the scanning. But setting inactive pins as input and high impedance in every single loops actually solve the problem. In my previous log, I mentioned I put diode in the schematic, but improvised with resistor instead during the build time.
    2. I have enough hardware pins.
      1. I decided to go with ATMEGA2560 with plenty of available input pins. So this shouldn't be a hurdle at all. Because technically you can add extra fancy hardware that does the scanning for you to save pin-count etc but meh, extra stuff in the BOM.
    3. Pretty fast.
      1. Even if you run on basic ATMEGA2560 running at 16mhz, you still can achieve pretty swift scanning loop. For human input device that is far more than enough. The only thing is that you might need to compensate loosing other clock count if you have other thing running the loop in your application. (Remember this is primitive 8-bit uC, no fancy features).
    4. Keypad Library.
      1. I came across with this impressively built keypad library. Works really well. Will save my time and does the job.

    So as you probably have seen in earlier log, the schematic for the key switches is provided below:

    There are 5 Rows and 14 Columns. So in total we require 19 GPIOs from the uC. I've mentioned earlier about the Keypad library. But I haven't mentioned to you why I picked this one instead of scratching to develop a new scanning techniques. Here's why:

    • This library supports multi press keys out of the box. Multiple keys can be press at the same time, of course in human time scale.
    • It implements state machine for every single key. From IDLE, to PRESSED, HOLD and RELEASED. it is all embedded in there.
    • No Additional hardware required. As I mentioned earlier, all the unused pins are internally set to input high impedance during each scanning iteration.
    • FREE. OPEN SOURCE. and more importantly it WORKS REALLY WELL. In this setup, without any loop routine interruption, just scanning. I can get more than 55.000 scanning loops per seconds. As a human trying to type 5 times per seconds is already near impossible I must say.

    I owe big time to the people that have developed this library.

    Alright, once you understand the hardware configuration and the hardware selection, we can go a bit deeper to the real source code itself. Well, first and foremost as you might expect, we need to define the ROW and COLUMN count in the software as shown below.

    const byte ROWS = 5; 
    const byte COLS = 14; 
    
    Easy right. And then assign the pins accordingly to the GPIOs of the uC.
    byte rowPins[ROWS] = {A0, A1, A2, A3, A4};
    byte colPins[COLS] = {A5, A6, A7, A8, A9, A10, A11, 22, 23, 24, 25, 26, 27, 28};...
    Read more »

  • Want to build one? HOLD ON!

    Pamungkas Sumasta08/31/2016 at 18:54 0 comments

    It's been pretty ecstatic looking at the comments and feedback from the community about this project. Just under 24h since it was being post in the Hackaday Blog I've discovered a lot of people trying to make one for themselves as well. Couldn't be happier. :)

    However, I've also heard some comments about having a wired version of it. Also somehow version that is easier to Solder. Well I guess, I will get you covered.

    I've been busy in the past couple of hours trying to reshape the current PCB design and make it "Flexible". So with the same PCB board you can either populate it as it is described so far and make it wireless, or populate it with some other parts and make it wired.

    So,, Here's the plan:

    Current Version (Wireless Variant)

    We use AVR (Atmega2560) with the help of Bluefruit HID. Battery on the back required. SMD Solering skills required.

    Proposed Wired Version (Wired Variant)

    You can use the one-and-only, Teensy 3.2/3.1 board as a controller for every thing. This will cost you less Bill of Materials, and lot less complexity in the Soldering; No SMD soldering technique and tools required. But, yes, then you need to live with cable flying over your desk. See below for preview.

    So, if you want to make the Wired version without worrying too much about the nitty-gritty of SMD soldering. Please hold on. I will try to post the updated Gerber by the end of this week. I will possibly order as well and giveaway some for the eager ones :)

  • Thanks Brian!

    Pamungkas Sumasta08/30/2016 at 11:01 0 comments

    Ain't no better morning than having to read your "thing" being featured on Hackaday Blog. Many thanks to Brian @Benchoff for the amazing post ! :)

  • fSociety Workstation

    Pamungkas Sumasta08/27/2016 at 11:58 4 comments

    I think I haven't mentioned it anywhere else before about this.

    One of the main reason behind the creation of the fsociety keyboard is that I was planning to build a workstation as well. Reason is simple, I spend around 15 hours a day in the office almost everyday. I guess then my desk deserves some funky adjustment and some sort of master terminal control.

    Below are some pictures after quite heavy works during my "vacation days" couple weeks back:

    As you probably have spotted, There are:

    • 3D printer on the left hand side
    • 6-DOF robotic arm on the right hand side
    • Bunch of LED matrix in the front side
    • And of course, >1000 Ws2812b attached in and on the desk.
    • Ohh also the Infinity mirror as well :)
    • More to come!!!!

    And guess what??

    Because of fsociety Keyboard, I have full direct control of things that are around me; beneath a palm of my hands, in a single click, effective immediately.

    I think I need to make another project page for the building process of the workstation as well (?) ^.^

  • Assembly

    Pamungkas Sumasta08/22/2016 at 22:50 0 comments

    As I probably have said on earlier log, I started this project 3-Weeks ago with no intention in mind at all to post the documentation online and let alone submitting to Hackaday Prize contest. I started posting this project from nothing just two days before the due dates of the Automation contest. 4-build logs in less than 24 hours ;) I consider myself to be a pretty good last-minuter.

    Having said that, during the build time, I was just too excited in getting it done instead of taking pictures in every single build step. Well, I kinda regret it now. Even then, luckily there were still some pictures I made along the way.

    Check the incoming PCB

    First thing as always, start with the bare PCB. Not all the PCB you receive have the same production quality. Check things like Sharpness of the silkscreen, scratch, the bending ratio etc. If you order 10-pcs, typically you'll notice that one or two boards just slightly better than the other.

    Start with a 'remote' components

    Assembling manually something like this need quite a bit of attention, even before grabbing your soldering iron. You have to understand whether in the finished board, this & that particular components are reachable and fixable. If you're onlu dealing with SMT part, normally that's not a big deal, but if you start using Though hole components like the one I use here (Cherry MX), you might need to step back a little bit and decide which one to go first.

    And In this case, it is pretty obvious that you need to solder the WS2812b RGB Leds first. Because once you soldered all the Cherry mx switches, it is simply impossible to solder the LED. Even repairing it is already hard enough without de-soldering the neighboring switches. Well, but wait, while you solder, you can simply just power it up to check if the Cherry mx is working. It needs uC to light up the LED. And as I mentioned on other log, there is a dedicated uC that handles the LED and it located on the bottom side of the PCB.

    So the plan was simply to solder the circuitry for the uC, test and flash it with WS2812B demo software, then you can just begin to solder the LED Array.

    (Excuse the flying wire on the picture above. I didn't add 6-icsp pin on board.) Well then once you manage to program the ATMEGA328p, next step was to solder the LED on the top side.

    Solder it one by one, until the whole PCB is surrounded by WS1812b RGB led and Voilaa!

    Make sure you are gaining some 'blessing' from the colorful LED before proceeding. But before proceeding, some more stress or bend test might need to be done. Because well, if you happen to solder the WS2812b not well enough, there is a chance that it stops working after you use and type with the keyboard many times. And remember, because of the placement, it is going to be a hard job to fix.

    Moving on from the LED, it is time to proceed to more challenging stuff. Yes, soldering the fine pitch components. Primarily in the beginning you only need to solder the ATMEGA2560, the crystal + caps, micro usb for power and wire for programming, that's it. Once you manage to program it through SPI and put bootloader in it, you can then proceed to solder the FTDI FT232RL for programming it through serial.

    Once that's done, it is then the time to handle the most exciting part. well yes, the soldering of the Cherry MX. Technically speaking, this is the easier part of all. Cherry MX is a through hole components and I happen to make well enough footprint library. Inserting and soldering the switches was very convenient. See photo below.

    Piece by piece, then an hour later it started to appear like a keyboard.

    And from this point one, you can already try placing the keycaps for the keyboard if you want. Or finish soldering all the modules on both ends. For me I did put all the keycaps first to see how the RGB color diffuses on the keycaps.

    Once you finish putting the keycaps and solder the Bluefruit module. you are pretty much ready to tweak around the software just as a basic keyboard.

    The rest of the...

    Read more »

  • The fboardLayout

    Pamungkas Sumasta08/21/2016 at 17:33 0 comments

    You've probably have enough with the schematic layout in the previous log. It is now the time for the more interesting stuff; The board layout. I've spent the whole weekend to finish this design from making the library, schematic and then lastly layout. Of course, didn't have time to do grocery or even shower during that weekend ;) Even with the rush, I've noticed that I made only one mistake. I swap the VCC and GND in the OLED library. oops. Apart from that is hunky-dory. Below just a preview of the final board design before I explain in more detail about the design choice etc.

    Board Dimension

    This was very important in the beginning. I started in the beginning by placing all the cherry mx switch in place with 2mm distance between its widest part. I figured that 300 mm in length should fit all the cherry mx keycaps, but that still excluding other components. all the modules can be placed on the bottom side, but the Joysticks are not possible. it just has to be on the top. like it or not, adding around 33 mm on each side should suffice the space requirements. Initially I was planning to round the length to 400 mm just to make it easy and have some room space for some improvisation later on, but the cost for the PCB compare to 368 mm is significantly quite high. Therefore I stick with 368 mm.

    Next thing is about the width, 100 mm sounds like a good round numbers right? Well not really it is only later you realize that you will need some extra width for the array of traces on the bottom side of the board. I decided to add 10 mm to the board width. And needless to say, aesthetically, with 100 mm width, and the tall keycaps, the board looks a bit clumsy. Having some spare width tremendously help the visual side of it. trust me.


    Placement & Routing Concept

    As I mentioned in earlier Log. I just don't like asymmetry. So since the beginning, I always stay conscious to spread the components evenly. It concludes to several points listed below:

    • The main Microcontroller unit is located in the center of the board. not on either side. It is very importat for the sake of the routing. And if you want to stick with 2-layer board as well. I just simply cannot think that it is possible to route the board with 2-layer if you locate the primary Atmega on either side. The routing of the matrix of the switches will easily become a nightmare.
    • The primary keyboard is centralized. It has to be the center and the main attention of the board. Unlike most keyboard, the keypad on the right ruins the potential symmetry of a keyboard as a whole.
    • One joystick on each side. Instead of having two on the right side for Arrow as well as the mouse. One has to be on the left side and another one on the right side.
    • NFC/RFID Reader has to be on the right side. Well yes, because I wear the right on my right hand ;)
    • The rest of the modules evenly scattered on the right and left side of the board. And only on the top side. And of course, watch out the cross-talk or some black magic voodoo happening between the antennas. (Need RF guy here to comment)
    • WS2812b placed between the Cherry MX switch and the co processor has to be placed on the bottom side. it was simply because there was no room on the top side anymore.

    Now that We have the concepts nicely described on a bullet points above. I give you a tour through the design in 3-Dimension concept. Needless to say, this is one of the perks in using Altium.

    Main Microcontroller ATMEGA2560

    The microcontroller as you see above is located in the bottom center of the PCB. hiding safely in underneath the space button. (FYI I didn't have a step file of any other keycaps except the standard one). It was quite a fortunate thing to have such a empty space just on the spot where I needed. If you lok at the picture below, all the Row and columns from the key matrix can be routed easily. Making it more like a star topology. Don't forget it is not just for the sake of routing the switch matrix, but also all other peripherals on either side of...

    Read more »

  • The fschematic

    Pamungkas Sumasta08/21/2016 at 15:20 1 comment

    It is going to be in Altium, yes Altium Designer. I repeat Altium, not Eagle sorry.

    I've had enough amazing time using Eagle for more than 6 years since 2009. only until the beginning of 2016 I started to use Altium Designer as my current job mandates. And you know what? I felt like my whole life in designing PCB prior to using Altium Designer seems more like a lie. The easy way to put this is just like when you always use Paint to adjust and modify some image and in all the sudden someone introduce you about Photoshop. But well, I do agree that the learning curve is a bit steep with Altium, but I had to say it was worth the time.

    I do also understand that Eagle is nowadays a common tools within Maker Community, so using tools other than Eagle might give some disadvantage for many. Either way, I was simply just cannot move away from using Altium at this stage, especially considering the limited time that I had etc. Also in the future I will try to see if I can properly export the Altium design files to CircuitMaker. which is a strip-down version of Altium Designer that is free and online/community based.

    Schematic Section

    During the design process I separated the design into three different schematic schematic sheet. Not just for readability, but also one of the sheet was a import from my previous project. So well, there is no reason not to do it.

    Cherry MX Matrix switches

    First and foremost is the Matrix of Cherry MX switches. It is fairly straight-forward, just an array of 14x5 switches connected directly to the pin of the Microcontroller. Though you see a diode on the schematic below, in the end I decided to replace it with just a resistor. Because the potential crosstalk between switches can be handled inside the software by setting the irrelevant pin to high impedance in every scanning iteration. So no diode is really necessary.

    Another thing to note also you might find the last row (R14) to be unnecessary. The two switches can be hooked up to Column five (C5) and that way you can save one pin from the Microcontroller. But well, I didn't do it. simply i was trying to avoid un-uniform-ity in the routing. If you take a closer look, the number of switches per column in the schematic is identical with the number of switches per column on the board layout that we'll discuss in the next Project logs. I thought it could ease the mapping process in the software in latter stage.

    Fsociet_Keyboard_Cherry


    WS2812b LED Array

    Next thing to discuss is the array of the WS2812b RGB Led, the one and only favorite. Exactly 68 pieces of those were used to nicely fill the gap between the switches. As you might have known, the beauty of this LED is that you only need one microcontroller pin to sequentially control hundreds or even thousands of this LED. So schematic wise, it was not that difficult. But as I briefly mentioned in previous project log, I might actually need a co-processor to control the LED smoothly without being interrupted to much with other primary routine. Hence, in the schematic below you see an Atmega328p microcontroller as well.

    Primary peripherals

    Well, following the above, it is now time to get into more serious stuff. The primary controller and the peripherals itself. The schematic provided below depicts in great detail the complete wiring diagram of the system. All the standard communication bus are occupied although there are still some free pins for additional features in the next design iteration.

    In summary, started on the left side is the standard FTDI IC both for debugging and programming. Taking the most space in the center, that is the main processor itself ATMEGA2560. The Bluefruit EZ key, ESP8266, FT232RL and HM-11 occupy all the Hardware serial port. While DRF1278, MRC522 and the MicroSD card shared the same SPI bus. On top of that, the OLED is the only one connected to the I2C bus. Joysticks on the other hand connect to 4 analog pins available on the microcontroller.

    And that was it. It was quite straight forward overall. The time was a...

    Read more »

View all 12 project logs

  • 1
    Step 1

    In case you want to reproduce this project. There are several points you have to think beforehand:

    • Making this keyboard doesn't come cheap. Doesn't mean to scare you, but spending the money on purchasing high-end mechanical keyboard might possibly be better for you. Depending on the PCB cost and the Switches, the cost can easily go above $150 or even $200.
    • If the point above didn't scare you, then the next thing is bit more of a technical requirements. You need or have somebody around you that knows and have experience in soldering SMD components. And of course, you need access to good tools as well.
    • The time. Building and assembling it actually didn't cost me much. only the waiting/lead time perhaps is going to annoy you. Most of the parts I suggested in this project come from China. Depending on your origin, it can take more than 2 weeks or even more than a month.
    • And lastly, you just have to be extremely curious.

    If you consider yourself that you'll manage to handle the 4 points above, then you can proceed reading this instruction.

    First thing first, you obviously need a PCB. By the time I wrote this, I have several spare of the PCBs that I can send you for free. Yes, free, though depending on where you live. Just hit me up on a comment or message, I can send you right away.

    In the other case, you obviously need to order the PCB. At this point, I don't have any sort of tindie shop or things like that. So you have to order it by yourself. Download the gerber from this project files section, and go to your favorites manufacturers website. I've done my research, and it appears that the cheapest one you can get from china for PCB with this dimension is from PCBWay. Their service is quite exceptional, responsive and fast. I received my PCB in 5 working days. Quality-wise, I cannot judge just yet. OSHPark might be more convenient for you and they should be able to handle it as well, though not sure the price range there.

    So, while I'm trying to find more motivation in finishing this instruction, you can go and order the PCB meanwhile ;)

    In the next instruction I will explain you where you can get the cheapest part possible for building this project. Stay tune!

    1. 2
      Step 2
      1. Next step, in case you've managed to get the PCB the next step is for you to get the all the parts you need to start building it. I've listed the complete list of components you need for this, but I guess it is going to be a lot easier if I also tell you where to get them.

      First of all, I used to be a huge fan of EBAY, but nowadays I tried as much as I can not to use them. not necessarily because they are bad, in fact they are still doing OK if you are dealing with seller from the same country. The main reason is simply I found a better alternative if i want to buy stuff directly from China. Guess what the name is? yes, Aliexpress. why?

      1. If you are in the Netherlands, it accept national's favorite payment system, called IDEAL which is very ideal. I put an order in less then 10 seconds through the app. Yes, literally, from adding a thing to cart to paying from my Bank account.
      2. Tracking system is embedded into your order, so no need to go to complicated Chinese mail tracking post. Also you can get notification from the App if there is any chance in shipment status and progress Last time I check EBAY doesn't have this kind of feature yet.
      3. Buyer protection. If you don't receive your product, and the shipment status is stuck somewhere after certain period of time, you should be able to get refund easily.
      4. Let me tell you, I often find the price is more competitive than ebay. no joke. I am not sure, but i think because the charge as a seller is not as high as EBAY. well as a matter of fact Aliexpress is a Chinese company by definition.

      So in the next step you will see most of my preferable source are from Aliexpress. But before proceeding please make sure you have an Aliexpress account :)

    2. 3
      Step 3

      At this point I assume you've already figured out how to get the PCB. So below are purely the component side:

      1. Cherry MX switch.
        1. Mouser. They have pretty decent stock available for Black, White and Blue color. apart from that you probably need to find somewhere else. I purchased mine from them simply because I need to make sure it is a genuine Cherry MX. Won't gamble on this.
        2. Aliexpress. Aliexpress has plenty of seller that sells this. but don't ask me about the authenticity etc.
        3. Sparkfun. They also sells one if you need specifically the blue one. Their price is a bit more expensive than average but not too much. especially if you are their fanboy.
      2. Keycaps.
        1. Aliexpress search list. There are just tons of this type of things. you can pick anyone you want. but be careful about the pin spacing etc. for single key that is a standard size it might not be a big issue, but for bigger keycaps for enter key, or tab or space, you might need to reconfirm before purchasing it.
        2. My selection. if you purchase the keycaps from this link. I can assure you that the pitch will be OK with the PCB I've designed.
        3. Be creative. Make your own 3D printed one or took from some random mechanical keyboard out there.
      3. WS2812b RGB LED
        1. Aliexpress. You've probably have your own place to purchase this. But the link on the left it seems to have the best price. or at least cheap enough. and they have the black version of WS2812b as well. which is nice.
      4. Atmega2560
        1. Aliexpress. If you purchase this from place like Farnel or similar, don't get surprise with the price. It can go up to 5 times more expensive if you outsource it from ebay/aliexpress or so. Unless you are buying in a reel then it might be a different story.
      5. Bluefruit HID
        1. Adafruit. This is one of the most selling product adafruit. They go out of stock pretty fast. So you might need to buy from their distributor instead. And my favorite is:
        2. Kiwi Electronics. They ship worldwide and guess what. they are just around the corner. Yes, I know, because Netherlands is a small city. Country i meant.
      6. Atmega328p
        1. Aliexpress. this is one of the cheapest you can get from China. It appears to work fine so far with me. If you are worried about the genuity then i suggest you start digging on the Digikey, Mouser, Farnell or whatever.
      7. Bluetooth HM11
        1. Aliexpress. There are so many placer you can buy ths Chinese popular Bluetooth 4.0. I discovered one in Aliexpress and the price is quite ok. but also they have some sort of distributor so you can select from where do you want it to ship from. So it arrived in less than a week shipped within Europe in my case. BUT BEWARE!! If used this type of bluetooth many times, and this is actually not the original firmware. some random people start putting their firmware and call it HM11 as well. though it is still functioning fine. I tested it with the other pair that I ordered.
      8. ESP8266-03
        1. Aliexpress. This is also everywhere technically. you must be able to get it from anywhere.
      9. OLED 128x64
        1. Aliexpress. This is quite common as well especially since Adafruit spend some energy making a nice library for it. More and more chinese stuff that is similar to this has came along. but for me this supplier was quite ok and Fast.
      10. LORA DRF1278F
        1. Aliexpress. I purchased mine from there. but unfortunately they are running out of stock already. I don't see any seller still selling this in Aliexpress to be honest. Alternatively see below.
        2. Ebay. From this seller this module appears to be selling pretty well for some reason. I don't see a reason why it is not a good option.
      11. Thumb Joystick
        1. Sparkfun. You need a couple of this. Sparkfun sells without the breakout and unsoldered. So good to go.
        2. Adafruit. On the other hand. Adafruit sells it more as a kit. With breakout. Luckily it comes unsoldered. So good to go as well.

    View all 3 instructions

    Enjoy this project?

    Share

    Discussions

    Alexis wrote 11/08/2016 at 09:45 point

    I'm a big fan. Yes that's a lot of money, and lot of trouble for a keyboard, but as you say we spend so much time in front of it... it has to be awesome!


    Unfortunately I'm not able to solder 2560 or so, and full-size (with numeric keypad) is my preferred configuration... So I won't give it a try.

    But hey, if you put it on Tindie I may change my mind.

    Keep up the good work!

      Are you sure? yes | no

    845812907 wrote 11/06/2016 at 05:57 point

    does the keyboard works without the Bluefruit EZ Key HID ?

      Are you sure? yes | no

    Beast020 wrote 11/03/2016 at 12:06 point

    Love this project any updates on version 2?

      Are you sure? yes | no

    Chris Morales wrote 10/20/2016 at 00:50 point

    Do you still have any PCBs left ? Do you intend to make more or revise the current design? Please PM if you have a board available and can ship one. Thank you!

      Are you sure? yes | no

    vikbez wrote 10/12/2016 at 14:16 point

    Amazing project !

    Any PCB-V2 news ?

      Are you sure? yes | no

    superdrac wrote 09/07/2016 at 22:34 point

    Wonderfull project ! As @skami, I will check the page for the updates everydays.

    I need to buy some smd soldering stuffs and I will be ready. Is this PCB version the final one ? Or does we need to wait before making it ?

      Are you sure? yes | no

    Pamungkas Sumasta wrote 09/07/2016 at 23:24 point

    Thanks! glad to hear that :) The PCB version attached right now is the first version. Ready as it is. tested and works. You can make it if you can't wait. However, in the past week the respond from people has been quite amazing. As many people requested, right now I am still busy making the 2nd version of this with more features; trying to accommodate and make everyone happy. I hope to get the new design done by the end of this week. 

      Are you sure? yes | no

    hexmonkey wrote 09/23/2016 at 14:03 point

    Will your next PCB version have proper cherry mx stabilizers for keys like spacebar, enter, backspace? It looks like there are just two switches for the spacebar and the others have no stabilizers at all.

      Are you sure? yes | no

    skami wrote 09/04/2016 at 18:25 point

    so amazing keyboard! For few days I  was searching about make my own, its exactly this kind of product I want to build :)

    I'll check this page every day to see all update, and take you part for my project!

    If you want/need some help, don't forget your fan community ;)

      Are you sure? yes | no

    Pamungkas Sumasta wrote 09/06/2016 at 11:04 point

    Thanks for the support! I hope you'll have resources to build it yourself and help enhancing this project. :)

      Are you sure? yes | no

    Sandy Macdonald wrote 09/02/2016 at 10:51 point

    Great project. Very shiny. I'd also love to get hold of a PCB, if possible.

      Are you sure? yes | no

    Pamungkas Sumasta wrote 09/02/2016 at 13:47 point

    Thanks! I've shipped all the spare PCB that i had unfortunately. Right, now still busy working on a slight better version of it. I'll give an update when I have spares for the new version ;)

      Are you sure? yes | no

    vcazan wrote 09/07/2016 at 17:53 point

    I am just about to place an order with the current PCB but want to wait if you will have a new version. When do you expect the new version to be finished?

      Are you sure? yes | no

    Pamungkas Sumasta wrote 09/07/2016 at 23:18 point

    Hi @vcazan, thanks for your enthusiasm in this. If you are planning to make just a keyboard and you are happy with the features as described in this page right now. you can order with the gerber provided right away. But if you can wait a bit, there'll be more features accommodated in the new design. I've been busy lately restructuring the software from scratch. I am trying to get the 2nd and final version of this by the end of this week :)

      Are you sure? yes | no

    Cort wrote 09/01/2016 at 16:45 point

    This is just about the perfect keyboard. Very good job! I unfortunately have horrible RSI from the layout of the standard 60% pok3r's. I am guessing it would be damn near impossible to support a split or hinged version of this keyboard? The IC layout near the spacebar looks like a bit of a deal breaker. Still I have to ask!

      Are you sure? yes | no

    Pamungkas Sumasta wrote 09/01/2016 at 21:29 point

    Good point. This was design with functionality being prioritized. For those who typically type on standard keyboard, I believe they will find it sufficiently ergonomic. Although for people with RSI, it might be indeed a different story. Split version might be a bit difficult, but hinged? Not sure exactly you referring to. :) If you read my log, i was trying to find a better location for the IC, I figured with 2 layer PCB the IC layout under the space bar is the most routing-friendly spot ;)

      Are you sure? yes | no

    Tillo wrote 09/01/2016 at 08:18 point

    Looks amazing, unfortunately i'm a fan of laptop styled keyboard :). 
    But there is one question, what is the Lora module for?

      Are you sure? yes | no

    Pamungkas Sumasta wrote 09/01/2016 at 15:41 point

    I used to be a fan of laptop styled keyboard for more than a decade only until I laid my fingers on Mechanical Switches for few seconds. :) That's for additional wireless stuff. in case you happen/want to have any setup that is LORA compatible around, you can use the monitor and control stuff from the keyboard directly.   

      Are you sure? yes | no

    redbanshee wrote 08/31/2016 at 16:02 point

    This is freaking rad, the guys on Geekhack.org would be all over this. I am one of those guys and we have been talking about it in our slack chat (keyboardcommunity.slack.com) there also seems to be a couple guys on reddit wanting to get some PCBs made (https://www.reddit.com/r/MechanicalKeyboards/comments/509iba/keyboard_spotting_fsociety_keyboard_by/)

    I joined hackaday to reply to this! Please join Geekhack and share this in the "Making stuff together" forum!!

      Are you sure? yes | no

    Pamungkas Sumasta wrote 08/31/2016 at 18:59 point

    IMPRESSIVE FEEDBACK! Thanks for the enthusiasm. I'm not familar with Slack keyboard community and the Geekhack as well. But, I will surely check it out and see what people think. I've just posted log update in case you/others want to order the PCB as well. People like you that keeps me motivated! ;)

      Are you sure? yes | no

    AF7V wrote 08/30/2016 at 19:26 point

    Were you planning on releasing the firmware? Maybe I missed it, but I don't see that anyplace in the files here.

    Also, have you considered putting together a package on Massdrop?

      Are you sure? yes | no

    Pamungkas Sumasta wrote 08/30/2016 at 20:01 point

    Yes, you are right. I'm still a bit "embarrassed" by the source code. Well it works, though need bit of a touch up for readability. I integrated commonly used library as well, so.. A lot of optimization can be done. Expect by the end of this week I presume. Not yet, for putting it on Massdrop etc. It is quite labor intensive to replicate this :) 

      Are you sure? yes | no

    AF7V wrote 08/31/2016 at 13:34 point

    My IT team loves the keyboard, so we're going to put together a handful of these. We'll let you know how it goes. 

    Thanks for such a cool project.

      Are you sure? yes | no

    Land0n wrote 08/30/2016 at 19:07 point

    The docs are awesome! I have parts ordered but haven't pulled the trigger on the PCBs yet as I would order 10 to make it cost effective. If you still have a PCB laying around, I am happy to pay shipping! Either way, I will be building this as soon as AliExpress can get parts here. Awesome project! :)

      Are you sure? yes | no

    Pamungkas Sumasta wrote 08/30/2016 at 19:55 point

    Wonderful! Good to hear that. :) All my spare PCBs have been given away and booked, except one. The guy hasn't responded in several days. I guess it is your lucky day then. You can let me know your address through the PM I guess. 

      Are you sure? yes | no

    Land0n wrote 09/20/2016 at 13:24 point

    PCB has arrived and parts are slowly trickling in from Hong kong! I will write up a short build log as well to document the process a bit. Very much appreciate the PCB that was sent! 

      Are you sure? yes | no

    Rich "Forge" Mingin wrote 08/28/2016 at 23:38 point

    That's epic. I will have to build one of these. Is it only cost-effective to get 10+ PCBs printed at once, or did you do that to guarantee minimum number of functioning samples?

      Are you sure? yes | no

    Pamungkas Sumasta wrote 08/28/2016 at 23:56 point

    I'm not sure what do you mean by guarantee minimum number of functioning samples? :) I hand assembled one unit and it works perfectly right away. But yes, it cost me close to $70 to get just the PCBs. Check the instruction tab, I still have one spare PCB to be given away btw :)

      Are you sure? yes | no

    Rich "Forge" Mingin wrote 08/29/2016 at 00:04 point

    Sorry, I didn't phrase things well. It sounds like it was just an economy of scale thing. I hate those! Thanks for giving away the others, it's very generous of you!

      Are you sure? yes | no

    Gertlex wrote 08/28/2016 at 17:57 point

    Do you include mouse click functionality as well?

    To me, having the joysticks at the bottom is weird, but that's because I'm used to holding one of these [0], where the sides of the keyboard are meant to be held when doing mouse actions. Figured I'd share :)

    [0]: https://www.amazon.com/Multimedia-Keyboard-Trackball-Wireless-GKM561R/dp/B002H0BOBA/

      Are you sure? yes | no

    Pamungkas Sumasta wrote 08/28/2016 at 22:59 point

    There are yes. Though not dedicated ones. The bottom-left three switches act as a mouse click only up to around 3-seconds from any mouse movement activity. After that it timeouts and those keys become part of the keyboard again. 

    But in general, the mouse joystick I only use when I'm heavily in typing mode. No intention of using it as a full time mouse. Thanks for the share! Will note it down, this project software-wise is still under development :)

      Are you sure? yes | no

    Gertlex wrote 08/29/2016 at 20:54 point

    Also totally awesome to have, but less necessary (and much less open, I suspect:): https://hackaday.io/project/203-keyboard-with-apple-mouse-scroll-ball

      Are you sure? yes | no

    Jarrett wrote 08/22/2016 at 21:00 point

    Excellent docs, I like hearing this much depth with other peoples' workflows :)

      Are you sure? yes | no

    Pamungkas Sumasta wrote 08/22/2016 at 22:04 point

    Thanks, Mate! More docs and Instructions to come ;)

      Are you sure? yes | no

    Similar Projects

    Does this project spark your interest?

    Become a member to follow this project and never miss any updates