{"id":551,"date":"2026-11-07T00:44:44","date_gmt":"2026-11-07T00:44:44","guid":{"rendered":"https:\/\/michael-stinger.com\/?p=551"},"modified":"2026-11-07T00:44:45","modified_gmt":"2026-11-07T00:44:45","slug":"replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield","status":"publish","type":"post","link":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/","title":{"rendered":"Replacing GARP&#8217;s UART Header Wiring with a C&#038;DH I\/O Shield"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This article describes the first version of a small I\/O shield for GARP&#8217;s Raspberry Pi 5 Command and Data Handler (C&amp;DH). The board replaces individual connections to the Pi&#8217;s 40-pin GPIO header with four connectors for the motor-controller UARTs and a connector for a future I\u00b2C IMU. The primary goal was practical: retain the UART connections I had already brought up while making them easier to connect, trace, and keep connected inside the C&amp;DH enclosure.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Initial wiring<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">During early prototyping, I connected the motor controllers to the GPIO header using hook-up wires and Dupont connectors. This was sufficient to get the UART links running, but the connectors came loose often enough to interfere with debugging. Reconnecting a wire meant tracing it back to the right header pin, and the pins associated with one UART were not necessarily adjacent. With four controllers connected, a fair number of wires were sticking out above the C&amp;DH.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I made wire-harness diagrams to trace TX, RX, and ground from each motor controller through its panel connector and cable to the C&amp;DH header. These diagrams gave me a way to identify the physical path when reconnecting or debugging a link. They did not, however, stop the Dupont connectors from coming loose or reduce the number of wires at the header.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/mc-uart-chain-scaled.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"319\" src=\"https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/mc-uart-chain-1024x319.png\" alt=\"Four motor-controller UART wiring paths, traced through panel connectors and cables to interleaved pins on the C&amp;DH\u2019s 40-pin GPIO header.\" class=\"wp-image-553\" style=\"width:800px;height:auto\" srcset=\"https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/mc-uart-chain-1024x319.png 1024w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/mc-uart-chain-300x94.png 300w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/mc-uart-chain-768x240.png 768w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/mc-uart-chain-1536x479.png 1536w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/mc-uart-chain-2048x639.png 2048w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/mc-uart-chain-600x187.png 600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>The pre-shield UART harness diagram traces each motor-controller connection through the panel and cable to the C&amp;DH header. Note how connections to the UART channels are interleaved across the 40-pin GPIO header on the right.<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">I also wanted to put the C&amp;DH in an enclosure without leaving the 40-pin header exposed. The problem had become physical rather than documentary: I could record where the wires went, but I still needed a better way to make the connections. That pointed to a custom PCB.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Requirements and first revision<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The immediate requirement was to preserve the four motor-controller UART connections already in use. I had an I\u00b2C IMU on hand, so I included an I\u00b2C connector as well, although that interface had not yet been brought up. The C&amp;DH will ultimately need additional connections to the power subsystem monitor and the EStop safety coordinator. A UART expansion IC was a candidate for those channels, but I had not selected one and did not want to make that part of this first revision.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The resulting shield breaks out the Pi&#8217;s existing UART and I\u00b2C signals. I selected JST connectors because I had them on hand and they latch. Each three-pin UART connector carries TX, RX, and ground; hardware flow control was not introduced. The four-pin I\u00b2C connector carries 3.3 V power, ground, SDA, and SCL. This groups the signals needed for a given interface at one connector instead of spreading a motor-controller connection across the GPIO header.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The shield plugs into the Pi&#8217;s 40-pin header through a connector on its underside; it does not create four new UART controllers. The board is labeled GARP C&amp;DH Peripherals Shield v0.1, and the C&amp;DH enclosure was designed around it. I did not spend much time optimizing the routing. The UART data rates were low enough for this layout, and there was enough board area to keep the routing straightforward.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4877-768x1024.jpg\" alt=\"GARP C&amp;DH I\/O shield mounted on the Raspberry Pi 5, with UART cables plugged into its latching connectors.\" class=\"wp-image-556\" srcset=\"https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4877-768x1024.jpg 768w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4877-225x300.jpg 225w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4877-1152x1536.jpg 1152w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4877-1536x2048.jpg 1536w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4877-600x800.jpg 600w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4877-scaled.jpg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4955-1024x768.jpg\" alt=\"Enclosed C&amp;DH mounted on the robot, with motor-controller cables connected to the shield\u2019s labeled UART ports.\" class=\"wp-image-555\" srcset=\"https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4955-1024x768.jpg 1024w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4955-300x225.jpg 300w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4955-768x576.jpg 768w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4955-1536x1152.jpg 1536w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4955-2048x1536.jpg 2048w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4955-600x450.jpg 600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Enclosed C&amp;DH with labeled I\u00b2C and UART connectors and motor-controller cables attached.<\/em><\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The TPD2E2U06DCK was selected for ESD protection on the UART lines because one device protects both the TX and RX lines and its 1.5 pF typical capacitance also makes it suitable for the shield\u2019s I\u00b2C signals, allowing me to use the same protection part at both types of connector. I placed the ESD ICs next to the UART and I\u00b2C connectors to provide a short path to ground. This decision was influenced by earlier CAN boards that stopped initializing after communication failures and by shocks I received while touching the robot when it was on blocks. Static discharge may have contributed to those failures, but the available troubleshooting did not establish the cause. Adding protection to the exposed signal lines was a precaution; I have not tested the shield&#8217;s ESD immunity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I also considered an EEPROM for shield identification and automatic overlay selection. I deferred it to keep the first board focused on the connections that were already causing trouble.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">UART configuration on the C&amp;DH<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The PCB organizes the physical connections, while the Raspberry Pi still needs software configuration to expose its UARTs. On the C&amp;DH&#8217;s Ubuntu installation, boot configuration enables UART0, UART2, UART3, and UART4 through Device Tree overlays. Separate micro-ROS agents use the corresponding serial devices for the four motor controllers. A wheel&#8217;s physical connection to the shield determines which UART reaches that controller.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The motor controllers also expose USB serial connections for logging. Unlike the physical UART links, those USB connections can appear under different <code>\/dev\/ttyACM*<\/code> numbers depending on enumeration order. Udev rules give each log connection a stable alias based on the motor controller&#8217;s device ID and serial number. These aliases make the logs easier to identify; they are separate from the UART connections through the shield.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Integration checks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The v0.1 board was fabricated and installed in the C&amp;DH. I checked the fit with the enclosure and used basic tug tests to confirm that the latching connectors held as needed. I then ran the standard GARP bring-up and used my <a href=\"https:\/\/gitlab.com\/mvstinger1\/ros2-function-generator\">ROS 2 Function Generator<\/a> to send sinusoidal, ramp, and step-function command waveforms to all four wheels. The motor controllers responded, confirming that the installed shield supported the four communication paths in this setup.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This was an integration check, not a lifetime or ESD test. I have not yet used the I\u00b2C connector with the IMU. It did answer the immediate question: the shield fit the enclosure, the connectors stayed in place during the basic handling checks, and I could send commands through all four motor-controller connections.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Next steps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The I\u00b2C connection still needs to be used with the IMU. Additional channels for the power subsystem monitor and EStop safety coordinator remain a later design problem. I have considered a more substantial connector, such as Molex, but the JST connectors have not shown a need for replacement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The deferred EEPROM also needs a more precise decision. Under Raspberry Pi&#8217;s <a href=\"https:\/\/datasheets.raspberrypi.com\/hat\/hat-plus-specification.pdf\">HAT+ specification<\/a>, an ID EEPROM carries the board&#8217;s identity and may name a Device Tree overlay. The overlay itself is not stored in the HAT+ EEPROM; the firmware loads the named file from the boot filesystem. Raspberry Pi OS keeps its overlays under <code>\/boot\/firmware\/overlays<\/code> and invites HAT+ designers to submit new overlays to the Raspberry Pi Linux repository. The C&amp;DH runs Ubuntu, whose <a href=\"https:\/\/documentation.ubuntu.com\/hardware-support\/boards\/explanations\/piboot-ab\/\">Raspberry Pi boot assets<\/a> include their own Device Trees and overlays. For automatic HAT+ configuration on this machine, the matching overlay would need to be available in Ubuntu&#8217;s boot assets, whether supplied by its distribution or installed and maintained separately. An EEPROM alone would not replace that work. For v0.1, I kept the existing explicit UART overlays and deferred HAT+ identification.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The first C&amp;DH I\/O shield replaced four sets of individual UART header wires with latching connectors on a board that fits inside the enclosure. Harness diagrams had helped me trace the original wiring, but did not solve its physical connection problems. The v0.1 board has passed fit and basic handling checks, and it has been used to send commands to all four motor controllers during GARP bring-up. The IMU connection, additional serial channels, and any automatic HAT+ identification remain later work.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">References<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/gitlab.com\/mvstinger1\/ground-autonomy-research-platform\/garp-electrical-engineering\">GARP Electrical Engineering<\/a> \u2014 electrical design repository, including the <a href=\"https:\/\/gitlab.com\/mvstinger1\/ground-autonomy-research-platform\/garp-electrical-engineering\/-\/tree\/main\/cdh-io-shield\/cdh-io-shield\">C&amp;DH I\/O shield KiCad project, schematic, and PCB<\/a>.<\/li>\n\n\n\n<li><a href=\"https:\/\/gitlab.com\/mvstinger1\/ground-autonomy-research-platform\/garp-c-and-dh\/-\/blob\/main\/mobility.md\">GARP C&amp;DH mobility notes<\/a> \u2014 UART overlays, micro-ROS agents, and udev rules for the motor-controller logging ports.<\/li>\n\n\n\n<li><a href=\"https:\/\/gitlab.com\/mvstinger1\/ground-autonomy-research-platform\/garp-bringup\">GARP Bringup<\/a> \u2014 the robot bring-up referenced in the integration check.<\/li>\n\n\n\n<li><a href=\"https:\/\/gitlab.com\/mvstinger1\/ros2-function-generator\">ROS 2 Function Generator<\/a> \u2014 the command-waveform tool used for the four-wheel check<\/li>\n\n\n\n<li><a href=\"https:\/\/datasheets.raspberrypi.com\/hat\/hat-plus-specification.pdf\">Raspberry Pi HAT+ specification<\/a> \u2014 ID EEPROM and Device Tree overlay requirements.<\/li>\n\n\n\n<li><a href=\"https:\/\/documentation.ubuntu.com\/hardware-support\/boards\/explanations\/piboot-ab\/\">Ubuntu Raspberry Pi boot assets<\/a> \u2014 Ubuntu&#8217;s handling of Device Trees and overlays on Raspberry Pi.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This article describes the first version of a small I\/O shield for GARP&#8217;s Raspberry Pi 5 Command and Data Handler (C&amp;DH). The board replaces individual connections to the Pi&#8217;s 40-pin GPIO header with four connectors for the motor-controller UARTs and a connector for a future I\u00b2C IMU. The primary goal was practical: retain the UART [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":556,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-551","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-garp"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"This article describes the first version of a small I\/O shield for GARP&#039;s Raspberry Pi 5 Command and Data Handler (C&amp;DH). The board replaces individual connections to the Pi&#039;s 40-pin GPIO header with four connectors for the motor-controller UARTs and a connector for a future I\u00b2C IMU. The primary goal was practical: retain the UART\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Michael Stinger\"\/>\n\t<meta name=\"google-site-verification\" content=\"M63IHRKnD5lr4Eds0CvLaBXLdgx7ulvtkQ984k1PFZY\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Michael Stinger \u2023 A collection of projects and technical notes\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Replacing GARP\u2019s UART Header Wiring with a C&amp;DH I\/O Shield \u2023 Michael Stinger\" \/>\n\t\t<meta property=\"og:description\" content=\"This article describes the first version of a small I\/O shield for GARP&#039;s Raspberry Pi 5 Command and Data Handler (C&amp;DH). The board replaces individual connections to the Pi&#039;s 40-pin GPIO header with four connectors for the motor-controller UARTs and a connector for a future I\u00b2C IMU. The primary goal was practical: retain the UART\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-11-07T00:44:44+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-11-07T00:44:45+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Replacing GARP\u2019s UART Header Wiring with a C&amp;DH I\/O Shield \u2023 Michael Stinger\" \/>\n\t\t<meta name=\"twitter:description\" content=\"This article describes the first version of a small I\/O shield for GARP&#039;s Raspberry Pi 5 Command and Data Handler (C&amp;DH). The board replaces individual connections to the Pi&#039;s 40-pin GPIO header with four connectors for the motor-controller UARTs and a connector for a future I\u00b2C IMU. The primary goal was practical: retain the UART\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/2026\\\/11\\\/07\\\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\\\/#blogposting\",\"name\":\"Replacing GARP\\u2019s UART Header Wiring with a C&DH I\\\/O Shield \\u2023 Michael Stinger\",\"headline\":\"Replacing GARP&#8217;s UART Header Wiring with a C&#038;DH I\\\/O Shield\",\"author\":{\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/author\\\/mvstinger\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/michael-stinger.com\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/IMG_4877-scaled.jpg\",\"width\":1920,\"height\":2560},\"datePublished\":\"2026-11-07T00:44:44+00:00\",\"dateModified\":\"2026-11-07T00:44:45+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/2026\\\/11\\\/07\\\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/2026\\\/11\\\/07\\\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\\\/#webpage\"},\"articleSection\":\"The GARP\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/2026\\\/11\\\/07\\\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/michael-stinger.com\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/category\\\/garp\\\/#listItem\",\"name\":\"The GARP\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/category\\\/garp\\\/#listItem\",\"position\":2,\"name\":\"The GARP\",\"item\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/category\\\/garp\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/2026\\\/11\\\/07\\\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\\\/#listItem\",\"name\":\"Replacing GARP&#8217;s UART Header Wiring with a C&#038;DH I\\\/O Shield\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/2026\\\/11\\\/07\\\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\\\/#listItem\",\"position\":3,\"name\":\"Replacing GARP&#8217;s UART Header Wiring with a C&#038;DH I\\\/O Shield\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/category\\\/garp\\\/#listItem\",\"name\":\"The GARP\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/#person\",\"name\":\"Michael Stinger\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/2026\\\/11\\\/07\\\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/74efd97906b5fdd6434d76ce8f985c5af9bdd97983733e64799b20910dcc978e?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Michael Stinger\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/author\\\/mvstinger\\\/#author\",\"url\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/author\\\/mvstinger\\\/\",\"name\":\"Michael Stinger\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/2026\\\/11\\\/07\\\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/74efd97906b5fdd6434d76ce8f985c5af9bdd97983733e64799b20910dcc978e?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Michael Stinger\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/2026\\\/11\\\/07\\\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\\\/#webpage\",\"url\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/2026\\\/11\\\/07\\\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\\\/\",\"name\":\"Replacing GARP\\u2019s UART Header Wiring with a C&DH I\\\/O Shield \\u2023 Michael Stinger\",\"description\":\"This article describes the first version of a small I\\\/O shield for GARP's Raspberry Pi 5 Command and Data Handler (C&DH). The board replaces individual connections to the Pi's 40-pin GPIO header with four connectors for the motor-controller UARTs and a connector for a future I\\u00b2C IMU. The primary goal was practical: retain the UART\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/2026\\\/11\\\/07\\\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/author\\\/mvstinger\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/author\\\/mvstinger\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/michael-stinger.com\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/IMG_4877-scaled.jpg\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/2026\\\/11\\\/07\\\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\\\/#mainImage\",\"width\":1920,\"height\":2560},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/index.php\\\/2026\\\/11\\\/07\\\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\\\/#mainImage\"},\"datePublished\":\"2026-11-07T00:44:44+00:00\",\"dateModified\":\"2026-11-07T00:44:45+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/#website\",\"url\":\"https:\\\/\\\/michael-stinger.com\\\/\",\"name\":\"Michael Stinger\",\"description\":\"A collection of projects and technical notes\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/michael-stinger.com\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Replacing GARP\u2019s UART Header Wiring with a C&DH I\/O Shield \u2023 Michael Stinger","description":"This article describes the first version of a small I\/O shield for GARP's Raspberry Pi 5 Command and Data Handler (C&DH). The board replaces individual connections to the Pi's 40-pin GPIO header with four connectors for the motor-controller UARTs and a connector for a future I\u00b2C IMU. The primary goal was practical: retain the UART","canonical_url":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"M63IHRKnD5lr4Eds0CvLaBXLdgx7ulvtkQ984k1PFZY","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/#blogposting","name":"Replacing GARP\u2019s UART Header Wiring with a C&DH I\/O Shield \u2023 Michael Stinger","headline":"Replacing GARP&#8217;s UART Header Wiring with a C&#038;DH I\/O Shield","author":{"@id":"https:\/\/michael-stinger.com\/index.php\/author\/mvstinger\/#author"},"publisher":{"@id":"https:\/\/michael-stinger.com\/#person"},"image":{"@type":"ImageObject","url":"https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4877-scaled.jpg","width":1920,"height":2560},"datePublished":"2026-11-07T00:44:44+00:00","dateModified":"2026-11-07T00:44:45+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/#webpage"},"isPartOf":{"@id":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/#webpage"},"articleSection":"The GARP"},{"@type":"BreadcrumbList","@id":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/michael-stinger.com\/#listItem","position":1,"name":"Home","item":"https:\/\/michael-stinger.com\/","nextItem":{"@type":"ListItem","@id":"https:\/\/michael-stinger.com\/index.php\/category\/garp\/#listItem","name":"The GARP"}},{"@type":"ListItem","@id":"https:\/\/michael-stinger.com\/index.php\/category\/garp\/#listItem","position":2,"name":"The GARP","item":"https:\/\/michael-stinger.com\/index.php\/category\/garp\/","nextItem":{"@type":"ListItem","@id":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/#listItem","name":"Replacing GARP&#8217;s UART Header Wiring with a C&#038;DH I\/O Shield"},"previousItem":{"@type":"ListItem","@id":"https:\/\/michael-stinger.com\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/#listItem","position":3,"name":"Replacing GARP&#8217;s UART Header Wiring with a C&#038;DH I\/O Shield","previousItem":{"@type":"ListItem","@id":"https:\/\/michael-stinger.com\/index.php\/category\/garp\/#listItem","name":"The GARP"}}]},{"@type":"Person","@id":"https:\/\/michael-stinger.com\/#person","name":"Michael Stinger","image":{"@type":"ImageObject","@id":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/74efd97906b5fdd6434d76ce8f985c5af9bdd97983733e64799b20910dcc978e?s=96&d=mm&r=g","width":96,"height":96,"caption":"Michael Stinger"}},{"@type":"Person","@id":"https:\/\/michael-stinger.com\/index.php\/author\/mvstinger\/#author","url":"https:\/\/michael-stinger.com\/index.php\/author\/mvstinger\/","name":"Michael Stinger","image":{"@type":"ImageObject","@id":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/74efd97906b5fdd6434d76ce8f985c5af9bdd97983733e64799b20910dcc978e?s=96&d=mm&r=g","width":96,"height":96,"caption":"Michael Stinger"}},{"@type":"WebPage","@id":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/#webpage","url":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/","name":"Replacing GARP\u2019s UART Header Wiring with a C&DH I\/O Shield \u2023 Michael Stinger","description":"This article describes the first version of a small I\/O shield for GARP's Raspberry Pi 5 Command and Data Handler (C&DH). The board replaces individual connections to the Pi's 40-pin GPIO header with four connectors for the motor-controller UARTs and a connector for a future I\u00b2C IMU. The primary goal was practical: retain the UART","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/michael-stinger.com\/#website"},"breadcrumb":{"@id":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/#breadcrumblist"},"author":{"@id":"https:\/\/michael-stinger.com\/index.php\/author\/mvstinger\/#author"},"creator":{"@id":"https:\/\/michael-stinger.com\/index.php\/author\/mvstinger\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/michael-stinger.com\/wp-content\/uploads\/2026\/11\/IMG_4877-scaled.jpg","@id":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/#mainImage","width":1920,"height":2560},"primaryImageOfPage":{"@id":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/#mainImage"},"datePublished":"2026-11-07T00:44:44+00:00","dateModified":"2026-11-07T00:44:45+00:00"},{"@type":"WebSite","@id":"https:\/\/michael-stinger.com\/#website","url":"https:\/\/michael-stinger.com\/","name":"Michael Stinger","description":"A collection of projects and technical notes","inLanguage":"en-US","publisher":{"@id":"https:\/\/michael-stinger.com\/#person"}}]},"og:locale":"en_US","og:site_name":"Michael Stinger \u2023 A collection of projects and technical notes","og:type":"article","og:title":"Replacing GARP\u2019s UART Header Wiring with a C&amp;DH I\/O Shield \u2023 Michael Stinger","og:description":"This article describes the first version of a small I\/O shield for GARP's Raspberry Pi 5 Command and Data Handler (C&amp;DH). The board replaces individual connections to the Pi's 40-pin GPIO header with four connectors for the motor-controller UARTs and a connector for a future I\u00b2C IMU. The primary goal was practical: retain the UART","og:url":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/","article:published_time":"2026-11-07T00:44:44+00:00","article:modified_time":"2026-11-07T00:44:45+00:00","twitter:card":"summary_large_image","twitter:title":"Replacing GARP\u2019s UART Header Wiring with a C&amp;DH I\/O Shield \u2023 Michael Stinger","twitter:description":"This article describes the first version of a small I\/O shield for GARP's Raspberry Pi 5 Command and Data Handler (C&amp;DH). The board replaces individual connections to the Pi's 40-pin GPIO header with four connectors for the motor-controller UARTs and a connector for a future I\u00b2C IMU. The primary goal was practical: retain the UART"},"aioseo_meta_data":{"post_id":"551","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-11-07 00:12:22","updated":"2026-11-07 00:44:45","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/michael-stinger.com\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/michael-stinger.com\/index.php\/category\/garp\/\" title=\"The GARP\">The GARP<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tReplacing GARP\u2019s UART Header Wiring with a C&amp;DH I\/O Shield\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/michael-stinger.com\/"},{"label":"The GARP","link":"https:\/\/michael-stinger.com\/index.php\/category\/garp\/"},{"label":"Replacing GARP&#8217;s UART Header Wiring with a C&#038;DH I\/O Shield","link":"https:\/\/michael-stinger.com\/index.php\/2026\/11\/07\/replacing-garps-uart-header-wiring-with-a-cdh-i-o-shield\/"}],"_links":{"self":[{"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/posts\/551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/comments?post=551"}],"version-history":[{"count":13,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/posts\/551\/revisions"}],"predecessor-version":[{"id":567,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/posts\/551\/revisions\/567"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/media\/556"}],"wp:attachment":[{"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/media?parent=551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/categories?post=551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/tags?post=551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}