xref: /aosp_15_r20/external/pigweed/docs/blog/01-kudzu.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker.. _docs-blog-01-kudzu:
2*61c4878aSAndroid Build Coastguard Worker
3*61c4878aSAndroid Build Coastguard Worker==========================
4*61c4878aSAndroid Build Coastguard WorkerPigweed Eng Blog #1: Kudzu
5*61c4878aSAndroid Build Coastguard Worker==========================
6*61c4878aSAndroid Build Coastguard Worker.. raw:: html
7*61c4878aSAndroid Build Coastguard Worker
8*61c4878aSAndroid Build Coastguard Worker   <script type="application/ld+json">
9*61c4878aSAndroid Build Coastguard Worker     {
10*61c4878aSAndroid Build Coastguard Worker       "@context": "https://schema.org",
11*61c4878aSAndroid Build Coastguard Worker       "@type": "NewsArticle",
12*61c4878aSAndroid Build Coastguard Worker       "headline": "Kudzu: Pigweed's whimsical take on a development board",
13*61c4878aSAndroid Build Coastguard Worker       "image": [
14*61c4878aSAndroid Build Coastguard Worker         "https://storage.googleapis.com/pigweed-media/kudzu-finished-photo-diagonal.jpg"
15*61c4878aSAndroid Build Coastguard Worker       ],
16*61c4878aSAndroid Build Coastguard Worker       "datePublished": "2023-10-12T19:27:00+08:00",
17*61c4878aSAndroid Build Coastguard Worker       "dateModified": "2023-10-12T19:27:00+08:00",
18*61c4878aSAndroid Build Coastguard Worker       "author": [{
19*61c4878aSAndroid Build Coastguard Worker         "@type": "Person",
20*61c4878aSAndroid Build Coastguard Worker         "name": "Erik Gilling",
21*61c4878aSAndroid Build Coastguard Worker         "url": "https://github.com/konkers"
22*61c4878aSAndroid Build Coastguard Worker       }]
23*61c4878aSAndroid Build Coastguard Worker     }
24*61c4878aSAndroid Build Coastguard Worker   </script>
25*61c4878aSAndroid Build Coastguard Worker
26*61c4878aSAndroid Build Coastguard Worker.. admonition:: A note from the Pigweed Eng Blog editors
27*61c4878aSAndroid Build Coastguard Worker
28*61c4878aSAndroid Build Coastguard Worker   Welcome to the Pigweed Eng Blog! This is an informal blog where Pigweed
29*61c4878aSAndroid Build Coastguard Worker   teammates, contributors, and users can share ideas and projects related to
30*61c4878aSAndroid Build Coastguard Worker   Pigweed.
31*61c4878aSAndroid Build Coastguard Worker
32*61c4878aSAndroid Build Coastguard Worker   Our first post comes from Erik Gilling, a software engineer on the
33*61c4878aSAndroid Build Coastguard Worker   Pigweed team. Today, Erik is going to tell you about Kudzu,
34*61c4878aSAndroid Build Coastguard Worker   "Pigweed's whimsical take on a development board"…
35*61c4878aSAndroid Build Coastguard Worker
36*61c4878aSAndroid Build Coastguard Worker   Please note that **while Kudzu is open source, its hardware isn't publicly
37*61c4878aSAndroid Build Coastguard Worker   available**. Pigweed users may find the `Kudzu source
38*61c4878aSAndroid Build Coastguard Worker   code <https://pigweed.googlesource.com/pigweed/kudzu/+/refs/heads/main>`_
39*61c4878aSAndroid Build Coastguard Worker   to be a helpful example of a complex Pigweed integration.
40*61c4878aSAndroid Build Coastguard Worker
41*61c4878aSAndroid Build Coastguard Worker.. card::
42*61c4878aSAndroid Build Coastguard Worker    :img-background: https://storage.googleapis.com/pigweed-media/kudzu-finished-photo-diagonal.jpg
43*61c4878aSAndroid Build Coastguard Worker    :link: https://storage.googleapis.com/pigweed-media/kudzu-finished-photo-diagonal.jpg
44*61c4878aSAndroid Build Coastguard Worker    :img-alt: A single Kudzu badge face-up on a table viewed at a diagonal.
45*61c4878aSAndroid Build Coastguard Worker
46*61c4878aSAndroid Build Coastguard Worker----------------------------
47*61c4878aSAndroid Build Coastguard WorkerIt all started so innocently
48*61c4878aSAndroid Build Coastguard Worker----------------------------
49*61c4878aSAndroid Build Coastguard WorkerThe Pigweed team is taking a field trip to the
50*61c4878aSAndroid Build Coastguard Worker`Bay Area Maker Faire <https://makerfaire.com/bay-area/>`_ because
51*61c4878aSAndroid Build Coastguard Workerunsurprisingly, that's the kind of good time we're up for! While discussing
52*61c4878aSAndroid Build Coastguard Workerthe plans at a team meeting I suggested: "We should make PCB badges that run
53*61c4878aSAndroid Build Coastguard WorkerPigweed and wear that to the Faire!" I've always wanted to make a PCB badge
54*61c4878aSAndroid Build Coastguard Workerand this seemed like the perfect opportunity to make a simple PCB that we could
55*61c4878aSAndroid Build Coastguard Workerdo a little bit of hacking on.
56*61c4878aSAndroid Build Coastguard Worker
57*61c4878aSAndroid Build Coastguard Worker--------
58*61c4878aSAndroid Build Coastguard Worker"Simple"
59*61c4878aSAndroid Build Coastguard Worker--------
60*61c4878aSAndroid Build Coastguard WorkerThe idea resonated with the team… perhaps too well. What started as
61*61c4878aSAndroid Build Coastguard Workersomething simple in my head quickly started creeping features. Hence
62*61c4878aSAndroid Build Coastguard Workerthe name `Kudzu <https://en.wikipedia.org/wiki/Kudzu>`_: a vine
63*61c4878aSAndroid Build Coastguard Workerconsidered invasive in many parts of the world. Pigweed's a weed.
64*61c4878aSAndroid Build Coastguard WorkerOur RFCs are called "seeds". We're all about the plant puns…
65*61c4878aSAndroid Build Coastguard Worker
66*61c4878aSAndroid Build Coastguard WorkerAnyways, the conversation went something like this:
67*61c4878aSAndroid Build Coastguard Worker
68*61c4878aSAndroid Build Coastguard Worker  "We should have some sort of sensor so it does something…"
69*61c4878aSAndroid Build Coastguard Worker
70*61c4878aSAndroid Build Coastguard Worker  "How should we power it? Let's do LiPo charging…"
71*61c4878aSAndroid Build Coastguard Worker
72*61c4878aSAndroid Build Coastguard Worker  "Let's add a display to highlight our recent
73*61c4878aSAndroid Build Coastguard Worker  :ref:`Display Support SEED <seed-0104>`!"
74*61c4878aSAndroid Build Coastguard Worker
75*61c4878aSAndroid Build Coastguard Worker  "Touch screen?"
76*61c4878aSAndroid Build Coastguard Worker
77*61c4878aSAndroid Build Coastguard Worker  "D-Pad and buttons?"
78*61c4878aSAndroid Build Coastguard Worker
79*61c4878aSAndroid Build Coastguard Worker  "Speaker?"
80*61c4878aSAndroid Build Coastguard Worker
81*61c4878aSAndroid Build Coastguard Worker  "Wireless?"
82*61c4878aSAndroid Build Coastguard Worker
83*61c4878aSAndroid Build Coastguard Worker  "No!… but also yes…"
84*61c4878aSAndroid Build Coastguard Worker
85*61c4878aSAndroid Build Coastguard WorkerWe quickly realized that what we wanted was more than a badge. We wanted a
86*61c4878aSAndroid Build Coastguard Workershowcase for Pigweed. We wanted a project we can point people at to show them
87*61c4878aSAndroid Build Coastguard WorkerPigweed running at it's best. And thus Kudzu was born. Part badge, part
88*61c4878aSAndroid Build Coastguard Workerdevelopment board, part handheld gaming system, and all Pigweed.
89*61c4878aSAndroid Build Coastguard Worker
90*61c4878aSAndroid Build Coastguard Worker----------------
91*61c4878aSAndroid Build Coastguard WorkerThe laundry list
92*61c4878aSAndroid Build Coastguard Worker----------------
93*61c4878aSAndroid Build Coastguard WorkerWe settled on the following laundry list of features and components:
94*61c4878aSAndroid Build Coastguard Worker
95*61c4878aSAndroid Build Coastguard Worker`RP2040 Microcontroller <https://www.raspberrypi.com/documentation/microcontrollers/rp2040.html>`_
96*61c4878aSAndroid Build Coastguard Worker  There's a lot to love about the RP2040: a reasonable amount of SRAM,
97*61c4878aSAndroid Build Coastguard Worker  support for large/cheap/execute-in-place external flash, a wicked cool
98*61c4878aSAndroid Build Coastguard Worker  programmable I/O block, and most importantly: easy and cheap to source!
99*61c4878aSAndroid Build Coastguard Worker
100*61c4878aSAndroid Build Coastguard Worker`16 MB of Flash <https://www.winbond.com/resource-files/w25q128jv%20revf%2003272018%20plus.pdf>`_
101*61c4878aSAndroid Build Coastguard Worker  We're adding the maximum amount of flash that the RP2040 can support. This
102*61c4878aSAndroid Build Coastguard Worker  way we can pack as much awesome into the firmware as possible. Realistically
103*61c4878aSAndroid Build Coastguard Worker  16 MB is an embarrassingly large amount of space for an embedded project and I
104*61c4878aSAndroid Build Coastguard Worker  can't wait to see what cool stuff we fill it with!
105*61c4878aSAndroid Build Coastguard Worker
106*61c4878aSAndroid Build Coastguard WorkerUSB-C Connector
107*61c4878aSAndroid Build Coastguard Worker  While we're not adding USB Power Delivery to the board, the USB C connector
108*61c4878aSAndroid Build Coastguard Worker  is robust and common. Many of us on the team are tired of digging micro
109*61c4878aSAndroid Build Coastguard Worker  (or even mini) USB cables out of our desk drawers to hook up brand new dev
110*61c4878aSAndroid Build Coastguard Worker  boards or JTAG programmers!
111*61c4878aSAndroid Build Coastguard Worker
112*61c4878aSAndroid Build Coastguard WorkerLiPo Battery with `charger <https://www.microchip.com/en-us/product/mcp73831>`_ and `fuel gauge <https://www.analog.com/en/products/max17048.html>`_
113*61c4878aSAndroid Build Coastguard Worker  Once we decided on a portable gaming form factor, we wanted to have a
114*61c4878aSAndroid Build Coastguard Worker  built-in, rechargeable battery. The battery is 900mA and is set to charge at 500mA
115*61c4878aSAndroid Build Coastguard Worker  from USB when the system is off and 250mA when the system is running. As an
116*61c4878aSAndroid Build Coastguard Worker  added bonus we threw in a fuel gauge chip. Partly because it's really nice to
117*61c4878aSAndroid Build Coastguard Worker  have an accurate view of the battery charge state and partly because it's
118*61c4878aSAndroid Build Coastguard Worker  a neat chip to write software for.
119*61c4878aSAndroid Build Coastguard Worker
120*61c4878aSAndroid Build Coastguard Worker`3.2" IPS display with capacitive touch <https://www.buydisplay.com/3-2-inch-240x320-ips-tft-lcd-display-optl-capacitive-touchscreen-st7789>`_
121*61c4878aSAndroid Build Coastguard Worker  This display is 240x320 which presents two challenges. First, it's naturally
122*61c4878aSAndroid Build Coastguard Worker  portrait instead of landscape. We solve this by rotating the buffers once
123*61c4878aSAndroid Build Coastguard Worker  they're rendered. The second is that a single 16-bit x 320 x 240 frame buffer
124*61c4878aSAndroid Build Coastguard Worker  is ~150K which is over half of the 264K of SRAM in the RP2040. Instead, we're
125*61c4878aSAndroid Build Coastguard Worker  rendering at 160x120 and using the PIO module to `pixel double
126*61c4878aSAndroid Build Coastguard Worker  <https://github.com/32blit/32blit-sdk>`_ the buffer as we're sending it to the
127*61c4878aSAndroid Build Coastguard Worker  display. As an added bonus, the chunkier pixels gives Kudzu a nice retro feel.
128*61c4878aSAndroid Build Coastguard Worker
129*61c4878aSAndroid Build Coastguard WorkerDirectional Pad and Buttons
130*61c4878aSAndroid Build Coastguard Worker  Here we're leaning on off-the-shelf buttons and silicone pads. Game
131*61c4878aSAndroid Build Coastguard Worker  controller design is a whole rabbit hole and we're going to rely on the
132*61c4878aSAndroid Build Coastguard Worker  collective wisdom of the retro modding community to give us nice-feeling
133*61c4878aSAndroid Build Coastguard Worker  controls.
134*61c4878aSAndroid Build Coastguard Worker
135*61c4878aSAndroid Build Coastguard Worker`Six Axis IMU <https://invensense.tdk.com/products/motion-tracking/6-axis/icm-42670-p/>`_
136*61c4878aSAndroid Build Coastguard Worker  An IMU is a great general purpose peripheral to demonstrate Pigweed's HAL
137*61c4878aSAndroid Build Coastguard Worker  layer. Plus, there's all sorts of cool demos you can write with an IMU and
138*61c4878aSAndroid Build Coastguard Worker  a display.
139*61c4878aSAndroid Build Coastguard Worker
140*61c4878aSAndroid Build Coastguard Worker`I2S Audio DAC/Amplifier <https://www.analog.com/media/en/technical-documentation/data-sheets/max98357a-max98357b.pdf>`_ and Speaker
141*61c4878aSAndroid Build Coastguard Worker  Chip tunes are best tunes. A couple of us on the team would love to
142*61c4878aSAndroid Build Coastguard Worker  port/write a tracker or FM synthesis engine.
143*61c4878aSAndroid Build Coastguard Worker
144*61c4878aSAndroid Build Coastguard WorkerGameboy Advance Link Port
145*61c4878aSAndroid Build Coastguard Worker  As a simple way of hooking two devices together, we added link port. Again
146*61c4878aSAndroid Build Coastguard Worker  we're using an existing link port and cable to avoid reinventing to wheel.
147*61c4878aSAndroid Build Coastguard Worker  Plus, there's something awful nostalgic about that port!
148*61c4878aSAndroid Build Coastguard Worker
149*61c4878aSAndroid Build Coastguard Worker... and `One More Thing <https://www.espressif.com/en/products/socs/esp32-c3>`_
150*61c4878aSAndroid Build Coastguard Worker  I kinda snuck an ESP32-C3 module onto the board at the last minute. Having
151*61c4878aSAndroid Build Coastguard Worker  wireless is something we wanted but didn't want to burden the initial design
152*61c4878aSAndroid Build Coastguard Worker  and bring up with it. My thinking is that we'll leave the module un-populated
153*61c4878aSAndroid Build Coastguard Worker  for now. My hope is that adding it to the board now may keep these boards from
154*61c4878aSAndroid Build Coastguard Worker  becoming landfill when we decide to tackle wireless.
155*61c4878aSAndroid Build Coastguard Worker
156*61c4878aSAndroid Build Coastguard Worker--------------------------
157*61c4878aSAndroid Build Coastguard WorkerDesign, build, and rollout
158*61c4878aSAndroid Build Coastguard Worker--------------------------
159*61c4878aSAndroid Build Coastguard WorkerI used `KiCad <https://www.kicad.org/>`_ to design the board. It's an open
160*61c4878aSAndroid Build Coastguard Workersource PCB design package that has been making incredible strides in
161*61c4878aSAndroid Build Coastguard Workerfunctionality and usability in the past few years. It comes with a high-quality
162*61c4878aSAndroid Build Coastguard Workerlibrary of symbols and footprint which is supplemented by community-maintained
163*61c4878aSAndroid Build Coastguard Workeropen source libraries.
164*61c4878aSAndroid Build Coastguard Worker
165*61c4878aSAndroid Build Coastguard Worker.. card::
166*61c4878aSAndroid Build Coastguard Worker   :img-top: https://storage.googleapis.com/pigweed-media/kudzu-schematic.png
167*61c4878aSAndroid Build Coastguard Worker   :link: https://storage.googleapis.com/pigweed-media/kudzu-schematic.png
168*61c4878aSAndroid Build Coastguard Worker   :img-alt: A screenshot of Kudzu's schematic.
169*61c4878aSAndroid Build Coastguard Worker   :text-align: center
170*61c4878aSAndroid Build Coastguard Worker
171*61c4878aSAndroid Build Coastguard Worker   Kudzu schematic
172*61c4878aSAndroid Build Coastguard Worker
173*61c4878aSAndroid Build Coastguard WorkerAfter some careful design review from the team and a few friends of Pigweed we
174*61c4878aSAndroid Build Coastguard Workersent off the board to get fabbed and "patiently" waited for it to be delivered.
175*61c4878aSAndroid Build Coastguard Worker
176*61c4878aSAndroid Build Coastguard WorkerAn EE at a previous company I worked at had a saying: "If you haven't found
177*61c4878aSAndroid Build Coastguard Workerthree problems with your board, you're not done looking". The three problems
178*61c4878aSAndroid Build Coastguard Workerwe found in order from least to most crushing are:
179*61c4878aSAndroid Build Coastguard Worker
180*61c4878aSAndroid Build Coastguard Worker.. card::
181*61c4878aSAndroid Build Coastguard Worker   :img-top: https://storage.googleapis.com/pigweed-media/kudzu-display-connector.jpeg
182*61c4878aSAndroid Build Coastguard Worker   :link: https://storage.googleapis.com/pigweed-media/kudzu-display-connector.jpeg
183*61c4878aSAndroid Build Coastguard Worker   :img-alt: The reworked display connector with many bodge wires.
184*61c4878aSAndroid Build Coastguard Worker   :text-align: center
185*61c4878aSAndroid Build Coastguard Worker
186*61c4878aSAndroid Build Coastguard Worker   The reworked display connector and the unpopulated footprint for the "one more thing"
187*61c4878aSAndroid Build Coastguard Worker   that "we'll get to eventually"
188*61c4878aSAndroid Build Coastguard Worker
189*61c4878aSAndroid Build Coastguard Worker#. **The BOOT and RESET labels were reversed.** This led to some initial
190*61c4878aSAndroid Build Coastguard Worker   confusion on why the boards would not come up in bootloader mode.
191*61c4878aSAndroid Build Coastguard Worker
192*61c4878aSAndroid Build Coastguard Worker#. **One of the FETs (Q3) had the wrong pinout.** This caused the power
193*61c4878aSAndroid Build Coastguard Worker   switch to be stuck on and the charge rate switching to not work.
194*61c4878aSAndroid Build Coastguard Worker
195*61c4878aSAndroid Build Coastguard Worker#. **The pins on the display FPC connector were swapped.** This one was really
196*61c4878aSAndroid Build Coastguard Worker   crushing. The connector was fairly fine-pitched and 40 pins!
197*61c4878aSAndroid Build Coastguard Worker
198*61c4878aSAndroid Build Coastguard WorkerWe were able to bring up the whole board including the display by rotating the
199*61c4878aSAndroid Build Coastguard Workerconnector. Sadly the display would not fit in the 3D printed parts
200*61c4878aSAndroid Build Coastguard Workerwe'd designed when plugged into the rotated connection. To validate our 3D
201*61c4878aSAndroid Build Coastguard Workerprinted parts, I painstakingly reworked on-board to get the connector oriented
202*61c4878aSAndroid Build Coastguard Workercorrectly. However, that was too much work and too fragile for all the boards.
203*61c4878aSAndroid Build Coastguard WorkerWe had to do a re-spin and Maker Faire was approaching quickly! Time to lather,
204*61c4878aSAndroid Build Coastguard Workerrinse, and repeat.
205*61c4878aSAndroid Build Coastguard Worker
206*61c4878aSAndroid Build Coastguard WorkerFast forward to Monday night before Maker Faire. The boards come in and I spent
207*61c4878aSAndroid Build Coastguard Workerthe evening preparing for a build party. On Tuesday, with some
208*61c4878aSAndroid Build Coastguard Worker`robotic help <https://www.opulo.io/>`_, we managed to build and test 8 boards
209*61c4878aSAndroid Build Coastguard Workerand get them in team members' hands on Wednesday.
210*61c4878aSAndroid Build Coastguard Worker
211*61c4878aSAndroid Build Coastguard Worker.. card::
212*61c4878aSAndroid Build Coastguard Worker   :img-top: https://storage.googleapis.com/pigweed-media/kudzu-pnp.jpg
213*61c4878aSAndroid Build Coastguard Worker   :link: https://storage.googleapis.com/pigweed-media/kudzu-pnp.jpg
214*61c4878aSAndroid Build Coastguard Worker   :img-alt: A photo of the Opulo LumenPnP
215*61c4878aSAndroid Build Coastguard Worker   :text-align: center
216*61c4878aSAndroid Build Coastguard Worker
217*61c4878aSAndroid Build Coastguard Worker   Our robotic help (Opulo LumenPnP)
218*61c4878aSAndroid Build Coastguard Worker
219*61c4878aSAndroid Build Coastguard WorkerThankfully, because Pigweed is modular and portable, we were able to get our
220*61c4878aSAndroid Build Coastguard Workersoftware working on it quickly, freeing us to spend the next couple days hacking
221*61c4878aSAndroid Build Coastguard Workertogether some simple fun demos for Maker Faire!
222*61c4878aSAndroid Build Coastguard Worker
223*61c4878aSAndroid Build Coastguard Worker------
224*61c4878aSAndroid Build Coastguard WorkerPhotos
225*61c4878aSAndroid Build Coastguard Worker------
226*61c4878aSAndroid Build Coastguard Worker.. grid:: 1 1 2 2
227*61c4878aSAndroid Build Coastguard Worker
228*61c4878aSAndroid Build Coastguard Worker   .. grid-item-card::
229*61c4878aSAndroid Build Coastguard Worker      :img-background: https://storage.googleapis.com/pigweed-media/kudzu-finished-photo-diagonal.jpg
230*61c4878aSAndroid Build Coastguard Worker      :link: https://storage.googleapis.com/pigweed-media/kudzu-finished-photo-diagonal.jpg
231*61c4878aSAndroid Build Coastguard Worker      :img-alt: A single Kudzu badge face-up on a table viewed at a diagonal.
232*61c4878aSAndroid Build Coastguard Worker
233*61c4878aSAndroid Build Coastguard Worker   .. grid-item-card::
234*61c4878aSAndroid Build Coastguard Worker      :img-background: https://storage.googleapis.com/pigweed-media/kudzu-finished-photo-back.jpg
235*61c4878aSAndroid Build Coastguard Worker      :link: https://storage.googleapis.com/pigweed-media/kudzu-finished-photo-back.jpg
236*61c4878aSAndroid Build Coastguard Worker      :img-alt: A single Kudzu badge face-down on a table viewed at a diagonal.
237*61c4878aSAndroid Build Coastguard Worker
238*61c4878aSAndroid Build Coastguard Worker.. grid:: 1 1 2 2
239*61c4878aSAndroid Build Coastguard Worker
240*61c4878aSAndroid Build Coastguard Worker   .. grid-item-card::
241*61c4878aSAndroid Build Coastguard Worker      :img-background: https://storage.googleapis.com/pigweed-media/kudzu-finished-photo-top-down.jpg
242*61c4878aSAndroid Build Coastguard Worker      :link: https://storage.googleapis.com/pigweed-media/kudzu-finished-photo-top-down.jpg
243*61c4878aSAndroid Build Coastguard Worker      :img-alt: A single Kudzu badge face-up on a table viewed from above.
244*61c4878aSAndroid Build Coastguard Worker
245*61c4878aSAndroid Build Coastguard Worker   .. grid-item-card::
246*61c4878aSAndroid Build Coastguard Worker      :img-background: https://storage.googleapis.com/pigweed-media/kudzu-finished-photo-front-standing.jpg
247*61c4878aSAndroid Build Coastguard Worker      :link: https://storage.googleapis.com/pigweed-media/kudzu-finished-photo-front-standing.jpg
248*61c4878aSAndroid Build Coastguard Worker      :img-alt: A single Kudzu badge standing up on a table viewed from the front.
249*61c4878aSAndroid Build Coastguard Worker
250*61c4878aSAndroid Build Coastguard Worker.. card::
251*61c4878aSAndroid Build Coastguard Worker   :img-top: https://storage.googleapis.com/pigweed-media/kudzu-badges.jpg
252*61c4878aSAndroid Build Coastguard Worker   :link: https://storage.googleapis.com/pigweed-media/kudzu-badges.jpg
253*61c4878aSAndroid Build Coastguard Worker   :img-alt: A photo of 6 of the Kudzu badges
254*61c4878aSAndroid Build Coastguard Worker   :text-align: center
255*61c4878aSAndroid Build Coastguard Worker
256*61c4878aSAndroid Build Coastguard Worker   Six Kudzu badges for Maker Faire 2023
257*61c4878aSAndroid Build Coastguard Worker
258*61c4878aSAndroid Build Coastguard Worker----------
259*61c4878aSAndroid Build Coastguard WorkerLearn more
260*61c4878aSAndroid Build Coastguard Worker----------
261*61c4878aSAndroid Build Coastguard WorkerWe don't have any plans to distribute hardware outside of our team but are
262*61c4878aSAndroid Build Coastguard Workerexcited to publish the living project to serve as an example of how to build
263*61c4878aSAndroid Build Coastguard Workerfirmware integrated with Pigweed. Over the coming months we'll be publishing
264*61c4878aSAndroid Build Coastguard Workermore functionality to the repository.
265*61c4878aSAndroid Build Coastguard Worker
266*61c4878aSAndroid Build Coastguard WorkerHead over to the `Kudzu repo <https://pigweed.googlesource.com/pigweed/kudzu>`_
267*61c4878aSAndroid Build Coastguard Workerwhere you'll find:
268*61c4878aSAndroid Build Coastguard Worker
269*61c4878aSAndroid Build Coastguard Worker* KiCad PCB Design
270*61c4878aSAndroid Build Coastguard Worker* Example firmware demonstrating:
271*61c4878aSAndroid Build Coastguard Worker   * :ref:`module-pw_system` integration
272*61c4878aSAndroid Build Coastguard Worker   * :ref:`module-pw_rpc` and :ref:`module-pw_log` support
273*61c4878aSAndroid Build Coastguard Worker   * Use of Pigweed's :ref:`module-pw_digital_io`, :ref:`module-pw_i2c`,
274*61c4878aSAndroid Build Coastguard Worker     and :ref:`module-pw_spi` hardware abstraction layers
275*61c4878aSAndroid Build Coastguard Worker
276*61c4878aSAndroid Build Coastguard Worker.. pigweed-live::
277