The Bathroom Epiphanies AVR-Keyboard firmware. The files are available at this github page.
|firmwares/||Folder with pre-compiled firmwares.|
|hid_liber/||Each physical board has its own folder with files defining the matrix layout and other parameters.|
|hid_liber/board.h||Includes board parameters for number of rows/columns, microcontroller specifics, and declarations of the functions to interface the board.|
|hid_liber/board.c||This is where the microcontroller pin-out is defined, and the function definitions for the interface can be found.|
|hid_liber/ansi_iso_jis.h||Pretty much just a dummy file.|
|hid_liber/ansi_iso_jis.h||Here is where the actual layout is defined.|
|[other board specific folders]|
|Makefile||Magic make stuff to compile everything correctly. This is where the board and layout to be compiled is selected.|
|avr.h||Extra definitions to make life easier..|
|avr_keyboard.c||The main program code.|
|hid_listen||A monitor that listens to debug data sent back from the keyboard. Compiled on Ubuntu 12.04 64-bit.|
|print.h||Includes functions for debug printing.|
|print.c||Includes functions for debug printing.|
|usb_keyboard_debug.h||The HID keyboard framework supplied by pjrc.com.|
|usb_keyboard_debug.c||The HID keyboard framework supplied by pjrc.com.|
Building the firmware
The make system keeps track of what needs to be compiled and how that is supposed to be done. It does not work perfectly for this project. Changing the microcontroller used requires a 'make clean' to be done.
Each board has a section in the beginning of the file. The correct one needs to be un-commented before compiling.
Parameters that need to be defined.
BOARD = hid_liber // Folder for board specifics LAYOUT = ansi_iso_jis // Required layout for that board. Located in the BOARD folder. MCU = atmega32u4 // Microcontroller the board uses F_CPU = 16000000 // CPU speed B_LOADER = \"jmp\ 0x7000\" // Memory location of the bootloader section
To compile the firmware run the commands
make clean; make
Flashing the firmware
- Plug in your keyboard
- Start Flip
- Click the Chip icon (first one)
- Select the ATmega32U4 from the list
- Click the USB icon
- Get your KB to jump to the bootloader (both shifts, or a magnet over the controller)
- Click Open (keep trying, takes a moment for the chip to be ready after jumping to the bootloader)
- Click the File menu and select your HEX file
- Click Run on the bottom left
- Click Start Application on the bottom right
- Wait a moment and your KB should be live with your new firmware
Hints to having a comfortable programming experience
- Install Linux (Ubuntu recommended for beginners).
- Install a worthy text editor - emacs if you are a bit crazy, vim if you are flat out insane, but gedit will do nicely.
sudo apt-get install emacs
- Make sure you have the needed software installed
sudo apt-get install gcc-avr binutils-avr avr-libc