Coder Social home page Coder Social logo

mmccoyd / hillside Goto Github PK

View Code? Open in Web Editor NEW
302.0 302.0 39.0 33.78 MB

Family of split ergonomic keyboards with three rows of five or six keys, aggressive column stagger, generous thumb arc and optional bottom utility keys

License: MIT License

Python 100.00%
keyboard kicad pcb

hillside's People

Contributors

mankoff avatar mmccoyd 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

hillside's Issues

jlcpcb has issues reading gerber files for 52 & 56

I just wanted jlcpcb to make me some hillside52 PCBs, when I realized that they don't produce sensible prices. I checked the gerber view, and while it does present you with the board in the preview, the logging on the side tells you:

Analysis Results
layers : -1
minimum trace width : >=10 mil
minimum trace spacing : >=10 mil
minimum drill size : null
width : null
height : null
Unable to identify the layers due to the non-standard filename
Can not identify the board outline
...

I've tried with 56 for the same result and compared those to 46 and 48, which both seem to work (gets correct pricing, and Gerber Viewer doesn't complain about anything).

Disclaimer: This is my first time ordering PCBs and I have no idea what I'm doing, so while it's completely possible I messed up somewhere, I always thought downloading and uploading a .zip was fool-proof :D

QMK: compiling directly with 'qmk compile' gives errors

qmk_compile_hillside_errors.log

These errors can be fixed by adding the following into config.h, however this does have qmk spew out warnings.
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x67C0
#define DEVICE_VER 0x0001
#define DIODE_DIRECTION COL2ROW
#define RGBLED_NUM 5
#define RGB_DI_PIN D3
#define SOFT_SERIAL_PIN D2

Furthermore if the following is not defined in config.h then no key is registered:
#define MATRIX_ROW_PINS
{ D7, E6, B4, B5 }
#define MATRIX_COL_PINS
{ F6, F7, B1, B3, B2, B6 }

By adding all of the above in 'config.h' my own firmware/keymap works, can be compiled and flashed and registers all keys.

Hillside 48 upgrade

The Hillside 48 seems to get less attention than the Hillside 46.
Would it be possible to update the Hillside 48 so that it has more encoder spots, the hotswap option, and a PCBA?

JLCPCB's PCA preview shows Hillside 46 components misplaced

Hello!

Thanks a lot for this wonderful looking keyboard, and the very helpful detailed instructions!

I'm following the instructions on the Ordering Hillside 52 or 46 page, in order to order a Hillside 46 from JLCPCB.

I'm following the steps detailed in the doc step by step, but after uploading the BOM and top_boards.csv, JLCPCB's preview shows the components positioned completely off the PCB:

capture-2023-04-12T12_56_43 580Z

This seems to be the only preview JLCPCB shows before placing the order. I've redone the steps three times and I don't think I've missed anything. Is it the case that I've missed anything, or is there an issue with JLCPCB or with the instructions?

Steps to reproduce

  1. Download hillside46-gerber-and-pcba_0.1.0 from Releases hill46_v0.1.0.

  2. On JLCPCB, follow the instructions from How to Order Five PCBA Keyboards

    Side note: The instructions say "Dimensions: 100 x 143 mm". But after uploading the Gerber file, dimensions are pre-populated and are slightly different: 142.49 width, 99.87 height.

  3. At the 'Save to Cart' step, which reads ...

    The preview should show components placed and rotated over spots on the board that look meant for them, in terms of silkscreen lines around them and traces leading to them. The engineers will ensure the final placement, and you will confirm at DFM Analysis later.

    ... the components on the preview are placed away from the PCB board.

Settings for RP2040

The first step is to ensure the pinouts of your MCU are the same as for ProMicro. They should be, but check!

For QMK, I used the converter.

For ZMK it is not possible as split are not supported yet.

Add note about LEDs running on 3.3v outputs.

Support for nice view displays

The one thing that seems to be lacking is the ability to add nice view OLED displays. There is a header apparently for haptic feedback based on the schematic but even if that were compatible there is no good way to add a display cover.

Right half SRV05-4ATCT?

Greetings,

This is probably an embarrassingly n00b-ish question, but should I also install a SRV05-4ATCT on the right half of the keyboard or should I leave the footprint unpopulated?

Looking at the Gerber, it appears the pads are wired up in a mirror-Y configuration from how the pads are connected on the left half of the keyboard. Looking at the spec sheet for the SRV05, so it wouldn't work with pin 1 in the upper-left like on the left half of the board and I don't think it would work if I rotated the package 180 degrees (though I may be wrong, I am very much a novice).

On a side note: what is the purpose of that chip? I know it's an ESD chip, but none of the other boards even have a footprint for it; just the 46. If I were to speculate, I'd guess it has to do with unplugging the headphone cable with the board powered but I'm not sure and didn't see an explanation in the doc.

Broken Links

Links to Colemak and Dvorak layouts broken on 42 keymap page

Add more parts to PCBA

Hi,
first of all, thank you for this sophisticated piece of awesomeness! Even the LEDs are hidden behind a key. You're a genius!

I've read the Wiki and if I'm right I need to solder some parts myself after PCBA service:

Is it possible to add those to the PCBA too?
Regards

Only USB-connected half is working after trying to enable VIA

Last week I finished building my Hillside 46. I'm using two Type-C ProMicros from Aliexpress.

It worked for a couple of days with the default keymap, I had some issues with the left side working as the right side but I fixed it by adding these two lines to the keymaps/default/config.h file:

#undef SPLIT_HAND_MATRIX_GRID
#define EE_HANDS

I'm compiling with this command:

qmk compile -kb hillside/46/0_1 -km default

And flashing (each side separately):

qmk flash -bl avrdude-split-left hillside_46_0_1_default.hex
qmk flash -bl avrdude-split-right hillside_46_0_1_default.hex

Today I wanted to switch the C keymap and I also set VIA_ENABLE = yes in keymaps/default/rules.mk (not sure why I did both of these changes together, it might have been a dumb idea).

After flashing both sides I noticed only the side connected via USB is working:

  • The keys on the other side don't do anything
  • The underglow LEDs on the other side don't start
  • The ProMicro LED does turn on

When connecting the left side standalone it worked fine, but when connecting the right side standalone it behaved like the right side.

After flashing the original firmware I used and clearing the EEPROM using QMK Toolbox didn't work I found a tip about setting the handedness via QMK Toolbox and that fixed the right side problem.

But still only the USB-connected half is working...

  • I checked the VCC->GND voltage on the other half and it's 5V
  • I tried resetting the EEPROM (from QMK Toolbox and by mapping a key to QK_CLEAR_EEPROM)

Any suggestions?

EDIT: This is the output when flashing:

❯ qmk flash -bl avrdude-split-right hillside_46_0_1_default.hex

Flashing binary firmware...
Please reset your keyboard into bootloader mode now!
Press Ctrl-C to exit.

avrdude: AVR device initialized and ready to accept instructions
avrdude: device signature = 0x1e9587 (probably m32u4)
avrdude: Note: flash memory has been specified, an erase cycle will be performed.
         To disable this feature, specify the -D option.
avrdude: erasing chip

avrdude: processing -U flash:w:/Users/david/qmk_firmware/hillside_46_0_1_default.hex:i
avrdude: reading input file /Users/david/qmk_firmware/hillside_46_0_1_default.hex for flash
         with 18256 bytes in 1 section within [0, 0x474f]
         using 143 pages and 48 pad bytes
avrdude: writing 18256 bytes flash ...
Writing | ################################################## | 100% 1.38 s
avrdude: 18256 bytes of flash written
avrdude: verifying flash memory against /Users/david/qmk_firmware/hillside_46_0_1_default.hex
Reading | ################################################## | 100% 0.14 s
avrdude: 18256 bytes of flash verified

avrdude done.  Thank you.

Is the C1 decoupling capacitor necessary for a Nice!Nano build?

I'm building a wireless Hillside 52 using a kit from Beekeeb. The kit didn't come with a capacitor, and the Parts list says that capacitors are needed only for the Hillside 46 (presumably, this is for the C2 and C3 capacitors on that board though).

Is this capacitor necessary? Is it just a safety measure?

How to chat with developers?

I can't find a way to contact the developers on the Github page for this project. Is there a place where we can discuss Hillside keyboards with them?

Problem with JLCPCB production of hillside46 keyboard

Hi,
I got an email from JLCPCB that said the hole in the PCB didn't align with the copper pad in the keyboard (shown in the white circle in the pictures). Is this fine to proceed with the production or I need to fix this by myself 😢
Thanks in advance!

image
image

How to mount encoder

I have ordered all required parts to build my Hillside. The only thing I don’t really know with is how to solder the encoders. One of the holes in the PCB doesn’t seem to be wide enough.

Here’s a photo of what I mean:

2A7735EA-D651-40A0-AF93-C61FA4F6DDB1

How am I supposed to deal with this? Do I just cut off the second wide leg?

[Somebody interested?] Bigger battery on board

It's just an idea, not yet as sophisticated as your work ;)
But fixing an empty battery within 5 seconds replacing it, putting the empty one into the charger and use it for weeks/months before you need to repeat? Sounds good to me.

https://www.amazon.de/-18650-battery-holder/dp/B081HW4TGR

Pinta crashed while painting mockup :'( So here's the text-only-edition:
I'd place the battery right above the first thumb key with enough space for an OLED, extend the board and screw the holder to it.
What do you think?

Better solutions are appreciated.

Problem flashing Sea Micro (atmega32u4) using DFU

I just received a hillside48 with a Sea Micro atmega32u4 USB-C microcontroller (ordered on beekeeb), and I experienced some challenges uploading the QMK firmware using DFU. I think I have solved the problem (or at least found a workaround), but I still have not gotten around to solder the keys to my keyboard and tested it, so I will have to write a update once that is completed.

Tldr: use avrdude to flash the MCU

I think this issue is with QMK or the microcontroller, but for now I wanted to add it here. Perhaps something could be written about it in the documentation.

My problem was when running the qmk flash command.

~ qmk flash
Ψ Compiling keymap with make -r -R -f builddefs/build_keyboard.mk -s flash KEYBOARD=hillside/48/0_1 KEYMAP=gbthreepwood KEYBOARD_FILESAFE=hillside_48_0_1 TARGET=hillside_48_0_1_gbthreepwood INTERMEDIATE_OUTPUT=.build/obj_hillside_48_0_1_gbthreepwood VERBOSE=false COLOR=true SILENT=false QMK_BIN="qmk"


avr-gcc (GCC) 13.2.0
Copyright (C) 2023 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	  18082	      0	  18082	   46a2	hillside_48_0_1_gbthreepwood.hex

Copying hillside_48_0_1_gbthreepwood.hex to qmk_firmware folder                                     [OK]
Checking file size of hillside_48_0_1_gbthreepwood.hex                                              [OK]
 * The firmware size is fine - 18082/28672 (63%, 10590 bytes free)
Flashing for bootloader: atmel-dfu
Bootloader Version: 0x00 (0)
Checking memory from 0x0 to 0x6FFF...  Empty.
Chip already blank, to force erase use --force.
Checking memory from 0x0 to 0x46FF...  Empty.
0%                            100%  Programming 0x4700 bytes...
[ X  ERROR
Memory write error, use debug for more info.
make: *** [platforms/avr/flash.mk:173: flash] Error 254

Directly calling the dfu-programmer software gives the same error:

dfu-programmer atmega32u4 flash hillside_48_0_1_gbthreepwood.hex --debug 2
     target: atmega32u4
    chip_id: 0x2ff4
  vendor_id: 0x03eb
    command: flash
      quiet: false
      debug: 2
device_type: AVR
------ command specific below ------
   validate: true
   hex file: hillside_48_0_1_gbthreepwood.hex

Checking memory from 0x0 to 0x46FF...  Empty.
0%                            100%  Programming 0x4700 bytes...
[ X  ERROR
Memory write error, use debug for more info.

The following works, and afterwards it seems that the qmk flash also started working:

avrdude -p atmega32u4 -c flip1 -U flash:w:hillside_48_0_1_gbthreepwood.hex

Output is:

avrdude warning: USB bDeviceClass = 255 (expected 254)
avrdude: AVR device initialized and ready to accept instructions
avrdude: device signature = 0x1e9587 (probably m32u4)
avrdude: Note: flash memory has been specified, an erase cycle will be performed.
         To disable this feature, specify the -D option.
avrdude: erasing chip

avrdude: processing -U flash:w:hillside_48_0_1_gbthreepwood.hex:i
avrdude: reading input file hillside_48_0_1_gbthreepwood.hex for flash
         with 18082 bytes in 1 section within [0, 0x46a1]
         using 142 pages and 94 pad bytes
avrdude: writing 18082 bytes flash ...
Writing | ################################################## | 100% 1.12 s 
avrdude: 18082 bytes of flash written
avrdude: verifying flash memory against hillside_48_0_1_gbthreepwood.hex
Reading | ################################################## | 100% 0.44 s 
avrdude: 18082 bytes of flash verified

avrdude done.  Thank you.

I now get the following upon issuing qmk flash:

Ψ Compiling keymap with make -r -R -f builddefs/build_keyboard.mk -s flash KEYBOARD=hillside/48/0_1 KEYMAP=gbthreepwood KEYBOARD_FILESAFE=hillside_48_0_1 TARGET=hillside_48_0_1_gbthreepwood INTERMEDIATE_OUTPUT=.build/obj_hillside_48_0_1_gbthreepwood VERBOSE=false COLOR=true SILENT=false QMK_BIN="qmk"


avr-gcc (GCC) 13.2.0
Copyright (C) 2023 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	  18082	      0	  18082	   46a2	hillside_48_0_1_gbthreepwood.hex

Copying hillside_48_0_1_gbthreepwood.hex to qmk_firmware folder                                     [OK]
Checking file size of hillside_48_0_1_gbthreepwood.hex                                              [OK]
 * The firmware size is fine - 18082/28672 (63%, 10590 bytes free)
Flashing for bootloader: atmel-dfu
Bootloader Version: 0x00 (0)
Checking memory from 0x0 to 0x6FFF...  Not blank at 0x1.
Erasing flash...  Success
Checking memory from 0x0 to 0x6FFF...  Empty.
Checking memory from 0x0 to 0x46FF...  Empty.
0%                            100%  Programming 0x4700 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]  Success
0%                            100%  Reading 0x7000 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]  Success
Validating...  Success
0x4700 bytes written into 0x7000 bytes memory (63.39%).
make: *** [platforms/avr/flash.mk:173: flash] Error 254

There is still a error 254 message, but at least it seems like some uploading did happen.

Files for PCBA not compatible with JLCPCB

Apparently JLCPCB has changed their process for specifying parts placement. They now require separate BOM and CPL files and the file in the release do not work.

Looks like I was able to make it work by splitting the file into 2 files

I made a the BOM file by deleting the placement information and changing the Package header to Footprint and Val column to Comment.

I made a CPL file by deleting the Package and Val column.

USB split detect, master/slave is not detected correctly

For my master/slave boards with Pro Micro I had to add the following define into config.h:
#define SPLIT_USB_DETECT

This solved the issue of the master not receiving slave key presses since the slave side did not recognize itself correctly as slave.

Build guide doesn't include information about wireless builds

The build guide for the Hillside is fantastic, but it's missing a page describing how to hook up the battery, off switch, and capacitor. Which set of batt pos / gnd do you solder the battery leads to?

It's also missing info about closing the jumper for i2c things on the page on adding the resistors.

Only USB-C ports

Would it be possible to create variations of the Hillsides whose TRRS ports are replaced by USB-C ports?

PCBA files for 52?

Hi there, could you publish the PCBA files for the 52 key version of the keyboard please?

Slave-side key presses are not registered by master side

Current situation:
Left and right board soldered diodes + reset + TRRS + socketed Pro Micro.
Both sides have a Pro Micro flashed with default firmware (cooked by 'https://config.qmk.fm')
Both the left and right side work by themselves, all keys are working.

When testing for continuity (USB disconnected) and TRRS connected, the 'data' pin of the left Pro Micro is connected to the right Pro Micro 'data' pin. VSS and GND are also showing continuity.

So currently I suspect the firmware to not recognize that it should act as 'slave'.

Any suggestions/pointers are very much appreciated at this point.

right half does not work with stock (52) zmk firmware

Hi there I just finished assembling my hillside 52. The right half does not work when I flash it with the right nice nano firmware. However, if I flash it with the left's firmware, it works. What is amiss? As I understand I can leave the handedness jumpers open as ZMK handles it in software. So, what's the issue?

I use the QMK configurator's keyboard tester to test for keystrokes
Cheers,
Karthik

PCB Giveaway [EU/DE]

Hi community,

The hillside52 keeb is by far the best keyboard I have ever used. In my opinion it really deserves more attention.

That's why I decided to gift 8 of my left over PCBs to 4 kind people who want to build their own but dread the ordering process.
All you need to pay for is shipping. Therefore it is the cheapest if you live in Germany. (~5 €)

You can contact me via Telegram. My usernames at GitHub and Telegram are the same.

Regards
Manuel

Received PCBs:

  1. @johannes-jp
  2. @tokazio

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.