From https://ao2.it/137
I had to wire up a simple navigation keypad to a BeagleBone Black for a prototype, and I used the gpio-keys driver configured via a device tree overlay.
I looked for some free GPIO pins so that the keypad could be hooked up with minimal changes to the BeagleBone Black default configuration.
I am posting some details in case anyone (future-self included) needed to do the same.
Here is a table of the pins and the related keys.
Header Pin | Function |
---|---|
P8_07 | Up |
P8_08 | Left |
P8_09 | Right |
P8_10 | Down |
P8_26 | Enter |
P9_15 | Esc |
I did not use P8_11 and P8_12 because they can be configured in eQEP mode and I intended to use them for a rotary encoder.
Here is a picture of how the keypad can be hooked up using a breadboard.
And a quick video to show the functionality:
The devicetree overlay can be found at git.ao2.it/experiments/bbb-gpio-keypad.git/ and can be built and installed by running make && sudo make install, after getting the needed include files as explained in the Makefile.
Nowadays, devicetree overlays on the BeagleBone Black have to be set via the bootloader by changing the file /boot/uEnv.txt, in this case the following change was enough:
--- /boot/uEnv.txt.orig 2018-07-13 13:28:12.837315343 +0000
+++ /boot/uEnv.txt 2018-07-13 13:27:59.525770867 +0000
@@ -11,7 +11,7 @@ uname_r=4.9.105-ti-r112
enable_uboot_overlays=1
###
###Overide capes with eeprom
-#uboot_overlay_addr0=/lib/firmware/<file0>.dtbo
+uboot_overlay_addr0=/lib/firmware/bbb-gpio-keypad-00A0.dtbo
#uboot_overlay_addr1=/lib/firmware/<file1>.dtbo
#uboot_overlay_addr2=/lib/firmware/<file2>.dtbo
#uboot_overlay_addr3=/lib/firmware/<file3>.dtbo
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.