Giter Club home page Giter Club logo

yampad's Introduction

Yampad logo QMK

The Yampad project repository

Status GitHub Issues GitHub Pull Requests License


The Yampad project is an open-source, QMK (Quantum Mechanical Keyboard Firmware) powered, hot-swappable, RGB-backlighted, OLED featured, mechanical numpad. This repository will be used to share information about the project and instruction on how to use and assemble the Yampad.

Yampad PCB

Designer's bio: Mattia Dal Ben (aka u/TiaMaT102) obtained a master's degree in Electrical Engineering with a specialization in Computer Science at the University of Udine. Currently works as a Software Engineer in R&D department for a big IoT and Embedded Computers company.

Table of contents

Rationale

Yampad v2

The Yampad is a Macropad/Numpad which uses Cherry MX style mechanical switches laid out in the usual numeric pad layout. The only difference comes from the bottom row, which uses a 4 keys configuration, thus enabling the use of the macropad as a nav cluster.

The name comes from the acronym: Yet Another Mechanical numPAD, referring to the disruptive and innovative nature of the project.

The main goal of this project is to have a cheap, easy-to-build, feature-rich numpad which is completely open source.

Features:

  • Cheap to build: the PCB can be manufactured for less than 1$ per piece.
  • Easy to source components.
  • Easy to build.
  • Hot swappable keys using Kailh PCB sockets.
  • Arduino Pro Micro powered.
  • QMK compatible.
  • RGB backlighting support (optional).
  • OLED 0.91" screen (optional).
  • Completely open-source.

Useful links

Default Layout

Layer 1 Yampad Layer 2 Yampad Layer 3 Yampad

Bill of materials

Qty Item Notes
1 Arduino Pro Micro (ATmega32u4) a.k.a. SparkFun Pro Micro
18 Cherry MX compatible swtiches
18 SOD-123 1N4148/1N4148W diodes
18 Kailh PCB sockets CPG151101S11
9 WS2812B RGB LEDs
9 SMD 0805 100nF capacitors
1 I2C 0.91" 128*32 OLED Display Module The ones using SSD1306 driver IC over I2C
1 6mm*6mm button switch
1 YamPAD PCB Order from PCBWay
5 M3 screws

Assembly guide

There's no wrong order for the YamPAD assembly with the exception of the Arduino/OLED/ResetButton. Here I will suggest an order because I found more comfortable to solder the components this way.

  1. Start with soldering the WS2812 LEDs. Start by applying solder to a pad, then heat it up while adding the component, finally solder the remaining pads.
  2. Now add the 0805 100nF caps. Use the same technique as before.
  3. Add the 1N4148 diodes.
  4. Add the CPG151101S11 Kailh PCB sockets.
  5. Add the reset 6mm button switch.
  6. Add some electrical tape just to be sure.
  7. Add the Arduino Pro Micro bottom side up.
  8. Add the OLED screen
  9. Move to the firmware section and you should be set!

Assembly details

Step 1: WS2812 assembly

The LEDs have a direction, this is indicated by a small cut out corner showing a triangle on the LED itself that must align with a corner indicated on the PCB as a visible corner angle. Top left on images below.

Step 1-a Step 1-b Step 1-c

Step 2: Capacitors assembly

Step 2-a Step 2-b

Step 3: Diodes assembly

The diodes have a direction, the side indicated by the line on the diode must align to the closed side of the shape on the PCB. Left on the three images below.

Step 3-a Step 3-b Step 3-c

Step 4: Kailh PCB sockets assembly

Step 4-a Step 4-b

Step 5: Reset switch

Step 5

Step 6: Electrical tape

Step 6

Step 7: Arduino assembly

Step 7-a Step 7-b

Firmware

The firmware is available through QMK firmware repository. Make example for this keyboard (after setting up your build environment):

make yampad:default

Example of flashing this keyboard:

make yampad:default:flash

See the build environment setup and the make instructions for more information. Brand new to QMK? Start with our Complete Newbs Guide.

Pre-built

I also added a pre-built .HEX file in the 'firmware/' folder here to test the electronics.

Via Support

I also added a porting to via .HEX file in the 'firmware/via_support' folder here to load use .json file in via apps.

Stacked Acrylic Case

Yampad Acrylic Case Yampad Acrylic Case

Yampad Acrylic Case

Acrylic case image gallery here.

Donations

If you've read this far and found something useful, please consider donating to help me maintain and further develop this project.

Donate button

yampad's People

Contributors

bearic avatar mattdibi avatar tahutech avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yampad's Issues

Spark fun Pro Micro

Sparkfun's ProMicro comes in 2 variations. A 3.3v and a 5v. Which should I be using?

Rotary encoder support?

Just finished assembling my Yampad v2 i got from custom kbd, it comes with the EC-11 rotary encoder but there's no support in the keymapping, it would be nice if i could get an updated keymap or an explanation on how to do it myself?

Encoder support

I saw someone selling this with a rotary encoder support, when are you planning to release the PCB design with EC11 rotary?

Multiple key presses not registering - debouncing issue?

I have successfully built a yampad and all keys are working, including keys across multiple layers. However, when I rapidly press any of the keys the second and subsequent key presses are not being registered.

Is this a firmware issue or a hardware one? My instinct is that this is a debouncing setting to avoid multiple key presses when you intend only one. However, the current setting means that the numpad is not very usable.

Are the hotswap sockets necessary?

I'm looking at soldering the switches to the pcb directly. Is this possible or are the hotswap sockets necessary to affix the sockets?

Diode

Hi, I'm nowhere near ordering the PCB together with the components, but there are different 1N4148W with different amperage and voltage, do you know which one is correct? (I'm looking at lcsc)

Thank you!

Process to print the case

Please, could you explain the process to print the case? I uploaded the files to sculpteo

yampad_v2-Eco2.User-screws.dxf
yampad_v2-Edge.Cuts.dxf

But I'm not sure how to proceed. I must print both files?
(I'm on linux so I don't have autocad to open the other 2 files)
Thank you.

issue flashing firmware

Hey,

not sure how to ask in a form or anything - missed it or just not a place to ask?

Whenever I try to flash the firmware I get the following error:

❯ make yampad:default:avrdude
QMK Firmware 0.6.396
Making yampad with keymap default and target avrdude

avr-gcc (Homebrew AVR GCC 9.3.0_2) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Size before:
   text	   data	    bss	    dec	    hex	filename
      0	  24856	      0	  24856	   6118	.build/yampad_default.hex

Copying yampad_default.hex to qmk_firmware folder                                                   [OK]
Checking file size of yampad_default.hex                                                            [OK]
 * The firmware size is fine - 24856/28672 (3816 bytes free)
Detecting USB port, reset your controller now..........
Device /dev/tty.usbmodem14101 has appeared; assuming it is the controller.
Waiting for /dev/tty.usbmodem14101 to become writable.

Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding

avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
Found programmer: Id = ""; type =
    Software Version = .; Hardware Version = .
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: error: buffered memory access not supported. Maybe it isn't
a butterfly/AVR109 but a AVR910 device?
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: butterfly_recv(): programmer is not responding
avrdude: error: programmer did not respond to command: leave prog mode
avrdude: butterfly_recv(): programmer is not responding
avrdude: error: programmer did not respond to command: exit bootloader

avrdude done.  Thank you.

make[1]: *** [avrdude] Error 1
make: Make finished with errors
*** [yampad:default:avrdude] Error 1

I tried copying the file from the repo and see the same result. I'm trying with these boards:

https://www.sparkfun.com/products/15795
https://www.sparkfun.com/products/12640

Any ideas? I have the same issue from linux, mac and windows. If I use arduino to upload blink works no problem

Firmware won't compile

Hi there,
I'm just trying to flash the microcontroller prior to populating the pcb and have come across a problem. I have set up my qmk environment in Ubuntu, cloned your fork of the qmk firmware and entered the command,

make yampad:default

However, I receive the following error:
make: *** No rule to make target 'yampad:default'. Stop.

Please can you help? Looking at the keyboards subfolder there is no yampad folder within, in the latest commit.

Changing the Layer Status name

Hello and good day to you, :)

I wanted to purchase a yampad, and just wondering, is it possible to customize the layer name on the LED display to other than BAS, NAV, and RGB?

LEDs not working

Hey Mattia,

Thanks for creating this project! I had a ton of fun with my build, as it's one of my first such projects. I managed to get everything working as expected, with the exception of the RGB lights.

I know you're busy and can't dive into fixing everyone's build, but do you have any high level suggestions on how to go about debugging the RGBs? Right now I can toggle the RGB on/off and see the status change on the OLED, but I'm getting no lights.

I had a few diodes which weren't properly secured, and those were easy to detect and repair because everything worked except for that switch, but the RGB is tougher because I'm getting nothing at all. I assume it's some sort of circuit where I have a broken connection somewhere?

These are the LEDs I used: https://www.digikey.ca/en/products/detail/sparkfun-electronics/COM-16346/11630211 and I was careful (I think) to properly align them.

I'll include a picture of my board case you can see something obviously wrong. Feel free to mock my terrible soldering. :)

Thanks again and I appreciate any suggestions!

20201103_102820

unclear on which microcontroller should be used

"Arduino Pro Micro" isn't a real product
comparing the board here to the images in this Stack Exchange answer, it seems you actually meant the Sparkfun Pro Micro, but people may be confused and buy the actual Arduino Micro, which is obviously a different board and wouldn't work for this project without modifications
just thought it would be helpful to clarify

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.