Add I2C bus scan and pull-up presence test; fix S3 board orientation in README

Detection previously reported only "no ACK at 0x2a/0x2b", which cannot tell a
sensor at an unexpected address from one that is not wired at all.

- Sweep the full 1..126 address range and log any responders.
- Before enabling the internal pull-ups, sample SDA/SCL as plain inputs. A
  powered C4001 breakout holds them high through its own pull-ups, so an
  all-low reading means nothing powered is on those pins -- a wiring answer
  rather than a protocol one. This immediately identified a miswire that the
  ACK-only log had left ambiguous.
- Drop the \r\n from the raw UART probe. DFRobot_C4001_UART::writeReg sends the
  bare command string with no terminator, so the probe should match it.

README had the YD-ESP32-S3 header order right but the orientation wrong: it
said USB-C at the top when the module is at the top and both USB-C sockets are
at the bottom. Read upside down that walks the sensor into the PSRAM pins.
Also note the separate plain LED on GPIO38 vs the RGB on GPIO48.

Verified on hardware: C4001 detected at I2C 0x2a, init ok, streaming range,
velocity and energy in speed mode.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
mattandClaude committed 2026-08-14 12:07:26 -07:00
1 parent 9c1c3fe1e8
commit 9b5f98ae7b
2 files changed
+43 -2

No files matched your search

+11 -1
View File
@@ -63,9 +63,14 @@ itself — the header order below is only for orientation.
| RX (UART) | **GPIO17** | P1 |
| OUT | GPIO16 | P1, optional |
Header order, USB-C end at the top:
Header order. **Orientation matters: hold the board with the ESP32-S3-WROOM-1
module and its antenna at the TOP, and both USB-C sockets at the BOTTOM.**
Pin 1 of each column is the end nearest the module, furthest from the USB
sockets. (Getting this upside down is an easy way to wire the sensor into the
PSRAM pins.)
```
[ ESP32-S3-WROOM-1 module + antenna ] <- TOP
P1 (left) P2 (right)
1 3V3 1 GND
2 3V3 2 GPIO43 U0TXD -> CH343
@@ -89,8 +94,13 @@ Header order, USB-C end at the top:
20 GPIO14 20 GPIO19 USB D-
21 5V 21 GND
22 GND 22 GND
[ USB-C: COM (CH343) | USB ] <- BOTTOM
```
Reference pinout: https://mischianti.org/vcc-gnd-studio-yd-esp32-s3-devkitc-1-clone-high-resolution-pinout-and-specs/
Note that board also has a plain built-in LED on **GPIO38**, separate from the
RGB WS2812 on GPIO48 that this firmware drives.
Do not use for I/O: **GPIO35/36/37** (octal PSRAM — the R8 in N16R8),
**GPIO43/44** (UART0 to the CH343), **GPIO19/20** (native USB), GPIO0/45/46
(strapping), GPIO48 (RGB LED), GPIO26–32 (flash, not broken out).