Skip to content

Latest commit

 

History

History
124 lines (103 loc) · 4.77 KB

README.md

File metadata and controls

124 lines (103 loc) · 4.77 KB
layout title parent
default
Unnamed keyboard
Wireless keyboard project

Unnamed keyboard

A PCB to fit into the 60% keyboard case I have.

  • 35%
  • Wireless
  • Low power LCD
  • Buzzer
  • Rotary encoder
  • Electronics based on the nrfmicro.

LCD Notes

https://makerdyne.com/2015/02/08/large-memory-lcd-breakout-board-details/

The power supply input is 5V. But the logic levels are all 3.3V.

Footprints

https://github.com/daprice/keyswitches.pretty

Dimensions

These are some dimensions of the specific case I used.

  • Case to standoff: 4.6mm
  • Indented case to standoff: 7.0mm
  • LCD connector height: 1.8mm
  • Distance from edge of case to LCD connector: 50.0mm
  • Useable indentation width: 42.1mm
  • Useable indentation length: 145.0mm
  • Useable indentation length with drop through rotary encoder: 109.0mm
  • Useable case width: 90.0mm

Flashing

These are based on the instructions found in joric's nrfmicro.

ST-Link V2 converted to Black Magic Probe

I used two ST-Link/V2 clone's and converted one into a Black Magic Probe using the instructions found here. My notes on the conversion process are here. I would recommend this route as the two ST-Link V2 clone's will cost less than $5.

Flashing notes

GDB (GNU Project Debugger) is used to control the Black Magic Probe. When I ran target extended-remote COM3, it'd hang or give an error. This was on Windows 10. I found I could get working on Ubuntu 18.04 using gdb-multiarch. I had to hold down the wires on the keyboard for the scanning to pick up the nrf52.

I ran the code command by command instead of the two lines joric gives. For reference, the output of the gdb process is as follows:

(gdb) target extended-remote /dev/ttyACM0
Remote debugging using /dev/ttyACM0
(gdb) monitor swdp_scan
Target voltage: 3.28V
SW-DP scan failed!
(gdb) monitor swdp_scan
Target voltage: 3.28V
Available Targets:
No. Att Driver
 1      Nordic nRF52 M3/M4
 2      Nordic nRF52 Access Port
(gdb) att 1
Attaching to Remote target
warning: while parsing target description (at line 1): Target description specified unknown architecture "arm"
warning: Could not load XML target description; ignoring
Truncated register 34 in remote 'g' packet
(gdb) Truncated register 34 in remote 'g' packet
(gdb) mon erase_mass
erase..
Truncated register 34 in remote 'g' packet
(gdb) file ~/Downloads/bootloader.hex
A program is being debugged already.
Are you sure you want to change the file? (y or n) y
Reading symbols from ~/Downloads/bootloader.hex...(no debugging symbols found)...done.
Truncated register 34 in remote 'g' packet
(gdb) att 1
A program is being debugged already.  Kill it? (y or n) y
Attaching to program: /home/hfrgrd/Downloads/bootloader.hex, Remote target
warning: while parsing target description (at line 1): Target description specified unknown architecture "arm"
warning: Could not load XML target description; ignoring
Truncated register 34 in remote 'g' packet
(gdb) Truncated register 34 in remote 'g' packet
(gdb) mon erase
erase..
Truncated register 34 in remote 'g' packet
(gdb) load
Loading section .sec1, size 0xb00 lma 0x0
Loading section .sec2, size 0xf000 lma 0x1000
Loading section .sec3, size 0x10000 lma 0x10000
Loading section .sec4, size 0x5de8 lma 0x20000
Loading section .sec5, size 0x70c8 lma 0xf4000
Loading section .sec6, size 0x8 lma 0x10001014
Start address 0x0, load size 182712
Truncated register 34 in remote 'g' packet

arm-none-eabi-gdb.exe --batch -ex "target extended-remote \.\COM5" -ex "mon swdp_scan" -ex "att 1" -ex "mon erase_mass"

arm-none-eabi-gdb.exe --batch -ex "target extended-remote \.\COM5" -ex "mon swdp_scan" -ex "file C:/Users/hal/Documents/Github/wirelesskeyboard/60_case_keyboard/bootloader.hex" -ex "att 1" -ex "mon erase" -ex load

Github:

CIRCUITPY still shows up. I can change code.py

rows x cols grid 2x2: stable 2x5: stable 2x10: hangs

2x6 with 0.01 secs sleep: stable 2x6 with 0.001 secs sleep: hangs 2x2 with 0.001 secs sleep: hangs

Solution: when I commented out the sleep line, it works fine! It seems to get caught in sleep which would make sense.

This is similar: adafruit/circuitpython#3829