{"id":5651,"date":"2026-01-04T08:11:21","date_gmt":"2026-01-04T08:11:21","guid":{"rendered":"https:\/\/open-boat-projects.org\/?page_id=5651"},"modified":"2026-03-04T16:43:28","modified_gmt":"2026-03-04T16:43:28","slug":"obpkeypad-6-1","status":"publish","type":"page","link":"https:\/\/open-boat-projects.org\/en\/obpkeypad-6-1\/","title":{"rendered":"OBP Keypad 6\/1"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5676 size-medium\" src=\"https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/Frontview-300x225.png\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/Frontview-300x225.png 300w, https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/Frontview-768x576.png 768w, https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/Frontview-16x12.png 16w, https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/Frontview.png 800w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Keypad extension for OBP multifunction devices via NMEA2000.<\/p>\n<p><!--more--><\/p>\n<h1>motivation<\/h1>\n<p>Example: Two OBP40s are installed as display instruments. To achieve waterproofing, they are mounted behind a glass panel. An external keypad is required to operate both devices.<\/p>\n<div class=\"level2\">\n<ul>\n<li class=\"level1\">\n<div class=\"li\">NMEA2000 wired keyboard, designed for permanent installation<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">The device should be waterproof.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">Six buttons, like those on the OBP60, should be used.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">The keys should be &quot;real&quot; keys that provide good haptic feedback and can be located by touch.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">A key press optionally provides acoustic feedback.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">The keyboard should be able to be dynamically paired with different target devices.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">Configuration via a web interface<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">DIY-friendly<\/div>\n<\/li>\n<\/ul>\n<figure id=\"attachment_5671\" aria-describedby=\"caption-attachment-5671\" style=\"width: 600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5671\" src=\"https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/obpkp61_front-1-300x211.png\" alt=\"OBPkeypad Vorderseite\" width=\"600\" height=\"422\" srcset=\"https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/obpkp61_front-1-300x211.png 300w, https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/obpkp61_front-1-1024x719.png 1024w, https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/obpkp61_front-1-768x540.png 768w, https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/obpkp61_front-1-18x12.png 18w, https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/obpkp61_front-1.png 1032w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-5671\" class=\"wp-caption-text\">Component description<\/figcaption><\/figure>\n<\/div>\n<h1>Quick Guide<\/h1>\n<p>The device consists of the following components<\/p>\n<ol>\n<li class=\"level1\">\n<div class=\"li\">Status LED: this can assume different colors<\/div>\n<\/li>\n<li>Brightness sensor (from version 2 onwards)<\/li>\n<li class=\"level1\">\n<div class=\"li\">Destination Display (DST): Shows which device the key presses should be sent to.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">Destination selection button: To switch between the individual destinations (A, B or C)<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">Keys 1 to 6: Send a configurable key code to the destination.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">M12 Micro-C connector: This is where the NMEA2000 cable is connected.<\/div>\n<\/li>\n<\/ol>\n<h2 id=\"inbetriebnahme\" class=\"sectionedit2\">Installation<\/h2>\n<div class=\"level2\">\n<ul>\n<li class=\"level1\">\n<div class=\"li\">Connection to the NMEA2000 network<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">The device starts automatically; the status LED lights up red for informational purposes.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">An internal test follows, in which all LEDs light up once.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">Target A is selected, the corresponding LED is lit green.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">The status LED flashes briefly once every 5 seconds.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">If a temperature\/humidity sensor is installed, it sends the measured values to the NMEA2000 network at regular intervals.<\/div>\n<\/li>\n<\/ul>\n<h2 id=\"konfiguration_ueber_web-gui\" class=\"sectionedit3\">Configuration via web GUI<\/h2>\n<ul>\n<li class=\"level1\">\n<div class=\"li\">Connect to the Wi-Fi <code>OBPKP61<\/code>, password <code>keypad61<\/code><\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">Accessing the address <code>192.168.15.1<\/code><\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">Accessing the page <code>Config<\/code><\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">Make the desired settings<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">Save, the device will restart automatically.<\/div>\n<\/li>\n<\/ul>\n<p>Three destinations can be configured for the key codes. The OBPkeypad 6\/1 retrieves a list of devices present on the NMEA2000 network. These can be assigned to destinations A, B, and C. It is possible that not all or no devices will be displayed immediately after power-on. In this case, simply wait a while.<\/p>\n<h2 id=\"konfigurationsmodus\" class=\"sectionedit4\">Configuration mode<\/h2>\n<p>To switch from normal operation to configuration mode, press and hold the destination button for more than 3 seconds. The status LED will light up blue after you release it. In this mode, buttons 1 through 6 each have a special function:<\/p>\n<\/div>\n<table class=\"inline\">\n<thead>\n<tr class=\"row0\" style=\"background-color: #cccccc;\">\n<th class=\"col0 leftalign\">button<\/th>\n<th class=\"col1 leftalign\">function<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr class=\"row1\">\n<td class=\"col0 leftalign\" style=\"text-align: center;\">1<\/td>\n<td class=\"col1 leftalign\">Day\/night mode switching<\/td>\n<\/tr>\n<tr class=\"row2\">\n<td class=\"col0 leftalign\" style=\"text-align: center;\">2<\/td>\n<td class=\"col1 leftalign\">Switch acoustic signals on\/off<\/td>\n<\/tr>\n<tr class=\"row3\">\n<td class=\"col0 leftalign\" style=\"text-align: center;\">3<\/td>\n<td class=\"col1 leftalign\">Access Point On\/Off<\/td>\n<\/tr>\n<tr class=\"row4\">\n<td class=\"col0 leftalign\" style=\"text-align: center;\">4<\/td>\n<td class=\"col1 leftalign\">-<\/td>\n<\/tr>\n<tr class=\"row5\">\n<td class=\"col0 leftalign\" style=\"text-align: center;\">5<\/td>\n<td class=\"col1 leftalign\">Restart (reset) device<\/td>\n<\/tr>\n<tr class=\"row6\">\n<td class=\"col0 leftalign\" style=\"text-align: center;\">6<\/td>\n<td class=\"col1 leftalign\">Put the device into deep sleep mode.<br \/>\nWake up by pressing the destination button<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>To exit configuration mode, press and hold the target selection key again for more than 3 seconds. When the status LED is no longer blue, the keypad is in normal mode.<\/p>\n<h2 id=\"ausschalten\" class=\"sectionedit6\">Turn off<\/h2>\n<p>The OBPkeypad 6\/1 is designed to be switched on and off using the NMEA2000 bus.<\/p>\n<p>If it is not needed during operation, it can be put into deep sleep mode. To do this, switch to configuration mode and then press the button. <strong>6<\/strong> Press. The blue LED will flash to confirm, and then all indicators will turn off.<\/p>\n<p>To restart, press the destination selection button once.<\/p>\n<h1>Development<\/h1>\n<h2>hardware<\/h2>\n<p>&nbsp;<\/p>\n<h3>electronics<\/h3>\n<ul>\n<li class=\"level1 node\">\n<div class=\"li\">\n<figure id=\"attachment_5674\" aria-describedby=\"caption-attachment-5674\" style=\"width: 300px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5674 size-medium\" src=\"https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/OBPkeypad61_PCB_v1-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/OBPkeypad61_PCB_v1-300x225.jpg 300w, https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/OBPkeypad61_PCB_v1-16x12.jpg 16w, https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/OBPkeypad61_PCB_v1.jpg 512w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-5674\" class=\"wp-caption-text\">Main and LED board, version 1.0<\/figcaption><\/figure>\n<p>Based on a Waveshare ESP32-S3 Nano<\/p>\n<\/div>\n<ul>\n<li class=\"level2\">\n<div class=\"li\">can be operated directly on 12V (6-21V input)<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">6 buttons (1 to 6)<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">+1 button for destination selection (DST)<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">3 LEDs for destination display (A, B, C)<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">1 RGB LED for status indication<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">1 buzzer for acoustic key feedback<\/div>\n<\/li>\n<li>1 brightness sensor<\/li>\n<li class=\"level1\">\n<div class=\"li\">NMEA2000 \/ CAN<\/div>\n<ul>\n<li>SN65HVD230 CAN transceiver module<\/li>\n<li>M12 Micro-C panel mount connector, pre-wired (su)<\/li>\n<\/ul>\n<\/li>\n<li class=\"level1 node\">\n<div class=\"li\">I\u00b2C slots<\/div>\n<ul>\n<li class=\"level2 node\">\n<div class=\"li\">2x 4-pin socket strip<\/div>\n<ul>\n<li class=\"level3\">\n<div class=\"li\">1x Temperature \/ Humidity Sensor SHT31<\/div>\n<\/li>\n<li>1x free<\/li>\n<\/ul>\n<\/li>\n<li>1x qwiic connector (3.3V; SMD)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/n2k-buchse-verkabelt.png\" alt=\"\" width=\"400\" height=\"271\" \/><\/p>\n<h3>casing<\/h3>\n<p>The current housing design is intended to be recessed into a surface. The raised edge all around facilitates this. A watertight seal can be achieved using a surrounding sealant\/adhesive. In this case, the screw connection is likely unnecessary. Alternatively, a foam rubber ring or similar material could also be used.<\/p>\n<p>The existing prototype is a 3D-printed (PLA) front and back panel. The front panel is three-colored: the base color of the casing, transparent for the LED cover, and black for the lettering. A fourth filament is required as support filament to cleanly print the 1mm round recess for the key seal.<\/p>\n<p>All internal connections are made with M2.5 screws. In the final housing, the housing connection should be fitted with threaded inserts. M4 countersunk screws are provided for mounting the housing.<\/p>\n<p>Sealing between the front and back is not actually necessary, however a silicone foam cord is provided between the housing halves.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/keypad_draw.png\" \/><\/p>\n<h2>software<\/h2>\n<div class=\"level2\">\n<ul>\n<li class=\"level1\">\n<div class=\"li\">PlatformIO is used, just like in the other OBP projects.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">It is programmed in C++<\/div>\n<\/li>\n<li>License GPLv3<\/li>\n<li class=\"level1\">\n<div class=\"li\">The device is a <em>simple<\/em> The device receives a newly developed firmware.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">The web configuration interface is based on the operation of the OBP60\/40.<\/div>\n<\/li>\n<li class=\"level1 node\">\n<div class=\"li\">Various types of keystrokes can be evaluated.<\/div>\n<ul>\n<li class=\"level2\">\n<div class=\"li\">Pressed briefly, for less than 1 second<\/div>\n<\/li>\n<li class=\"level2\">\n<div class=\"li\">medium, pressed for between 1 and 3 seconds<\/div>\n<\/li>\n<li class=\"level2\">\n<div class=\"li\">long, pressed for more than 3 seconds<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">There should be a day and night mode.<\/div>\n<\/li>\n<\/ul>\n<h1>Project status<\/h1>\n<ul>\n<li>PCB version v2.0 is available\n<ul>\n<li>Fixed a bug in the buzzer connection.<\/li>\n<li>Built-in brightness sensor<\/li>\n<li>Improved cable connection for the keys<\/li>\n<\/ul>\n<\/li>\n<li>A printable case variant exists, printed on a Bambu Lab A1 mini.<\/li>\n<li>Latest firmware for the OBPkeypad 6\/1\n<ul>\n<li>Keystrokes can be sent<\/li>\n<li>The temperature\/humidity sensor sends data to the NMEA2000 bus.<\/li>\n<li>Configuration mode available<\/li>\n<li>Web GUI is generally functional<\/li>\n<li>Web update function works (error messages may still need to be corrected)<\/li>\n<\/ul>\n<\/li>\n<li>Firmware is actively under development<\/li>\n<li>On the receiving side, the remote keypad capability must be integrated into the OBP60 firmware.\n<ul>\n<li>A manual patch is currently required.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>outlook<\/h2>\n<ul>\n<li>\u00a0Additional software features\n<ul>\n<li>The buzzer could be used to output NMEA2000 alarms.<\/li>\n<\/ul>\n<\/li>\n<li>Additional Hardware Features\n<ul>\n<li>Voltage measurement at the 12V input<\/li>\n<li>EEPROM on the board for static &quot;unchangeable&quot; values that should not be stored in the flash memory of the replaceable MCU module.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h1>Files\/Links<\/h1>\n<p>Warning: This project is still in its early stages; changes may occur at short notice. Therefore, please always check the version number.<\/p>\n<p><strong>Firmware:<\/strong> Source code<br \/>\n\u2192 <a href=\"https:\/\/git.hoogi.de\/thooge\/OBPkp61\">https:\/\/git.hoogi.de\/thooge\/OBPkp61<\/a><\/p>\n<p><strong>3D printing files:<\/strong> FreeCAD<br \/>\n\u2192 <a href=\"https:\/\/www.hoogi.de\/obp\/OBPkeypad61.FCStd\">https:\/\/www.hoogi.de\/obp\/OBPkeypad61.FCStd<\/a><\/p>\n<p><strong>Assembly tools:<\/strong> FreeCAD<br \/>\n\u2192 <a href=\"https:\/\/www.hoogi.de\/obp\/OBPtool16.FCStd\">https:\/\/www.hoogi.de\/obp\/OBPtool16.FCStd <\/a>\u00a0\u2013 Tool for 12mm keys<br \/>\n\u2192 <a href=\"https:\/\/www.hoogi.de\/obp\/OBPtool18.FCStd\">https:\/\/www.hoogi.de\/obp\/OBPtool18.FCStd <\/a>\u00a0\u2013 Tool for M12 Micro-C<\/p>\n<p><strong>Circuit board data:<\/strong> KiCAD<br \/>\n\u2192 <a href=\"https:\/\/www.hoogi.de\/obp\/OBPkeypad61_PCB.zip\">https:\/\/www.hoogi.de\/obp\/OBPkeypad61_PCB.zip<\/a><\/p>\n<p><strong>Flyer<\/strong>, German: <a href=\"https:\/\/open-boat-projects.org\/wp-content\/uploads\/2026\/01\/OBPkp61_Flyer_de.pdf\">OBPkeypad 6\/1 Flyer<\/a><\/p>\n<p>Have fun with the device!<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Keypad extension for OBP multifunction devices via NMEA2000.<\/p>","protected":false},"author":68,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[40,39,37],"tags":[],"class_list":["post-5651","page","type-page","status-publish","hentry","category-openhardware","category-opensource","category-projects"],"_links":{"self":[{"href":"https:\/\/open-boat-projects.org\/en\/wp-json\/wp\/v2\/pages\/5651","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/open-boat-projects.org\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/open-boat-projects.org\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/open-boat-projects.org\/en\/wp-json\/wp\/v2\/users\/68"}],"replies":[{"embeddable":true,"href":"https:\/\/open-boat-projects.org\/en\/wp-json\/wp\/v2\/comments?post=5651"}],"version-history":[{"count":27,"href":"https:\/\/open-boat-projects.org\/en\/wp-json\/wp\/v2\/pages\/5651\/revisions"}],"predecessor-version":[{"id":5753,"href":"https:\/\/open-boat-projects.org\/en\/wp-json\/wp\/v2\/pages\/5651\/revisions\/5753"}],"wp:attachment":[{"href":"https:\/\/open-boat-projects.org\/en\/wp-json\/wp\/v2\/media?parent=5651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/open-boat-projects.org\/en\/wp-json\/wp\/v2\/categories?post=5651"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/open-boat-projects.org\/en\/wp-json\/wp\/v2\/tags?post=5651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}