- Difficulty
- Beginner
- Time
- 15 min
- Review baseline
- App 0.2.0 beta · firmware 0.6.0 · PBLE/1
Prerequisites
- Familiarity with GitHub import and explicit Run
Outcomes
- Find an example by category and planned release
- Distinguish designed profiles from physical validation
- Open every source link at one immutable repository commit
Release-aware guidance
Compatibility
The review baseline above is not a promise about the installer currently being served. Confirm the active version, exact profile, and enabled action on the current firmware and flash page before provisioning or changing hardware.
Qualified firmwaredescribes firmware evidence. The table below describes this lesson's scope; it does not turn designed compatibility into hardware validation.
| Firmware profile | Lesson scope |
|---|---|
Classic ESP32 (4 MiB)esp32-4mb | Development example — physical validation not recorded |
ESP32-S3 N16R8 · lean genericesp32-s3-n16r8 | Development example — physical validation not recorded |
Waveshare ESP32-S3-LCD-1.47Bwaveshare-esp32-s3-lcd-147b | Development example — physical validation not recorded |
ESP32-C3 (4 MiB)esp32-c3-4mb | Development example — physical validation not recorded |
Raspberry Pi Pico 2 Wrpi-pico2-w | Development example — physical validation not recorded |
Designed profiles record author intent. Validated profiles are empty for every entry in this snapshot, so no example below is presented as physically validated or supported.
Before you begin
Full runnable .py source, catalog metadata, future release tags, and HIL records belong to the separate PyBLE examples repository. This site shows metadata and immutable links rather than duplicating complete programs.
Reviewed snapshot
- Repository state
- Development · unreleased
- Examples
- 32
- Firmware baseline
- 0.6.0
- Protocol
- PBLE/1
- Commit
8f4529b3cd0d62e8d53d7deb4f37e5cd2a171fd1
Complete static index
All 32 authored examples
Planned 0.1.0
8 entries · planning label only
Hello Console
Confirm import, Run, and bounded console output.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Paced Counter
Use variables, a finite loop, and paced console output.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Runtime Information
Report non-identifying runtime and free-heap information.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
File Round Trip
Create, verify, and remove one tiny text file safely.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Blink an External LED
Drive an explicitly configured external LED for finite toggles.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Single NeoPixel
Show a dim finite color sequence on an explicitly configured pixel.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Pico 2 W Onboard LED
Blink the exact Pico 2 W onboard LED by its named pin.
- Designed profiles
- Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Waveshare LCD Hello
Render one bounded hello frame on the exact B-version display.
- Designed profiles
- Waveshare LCD 1.47B
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Planned 0.2.0
17 entries · planning label only
Data and Decisions
Combine values, collections, and branching in one bounded example.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Reusable Functions
Use parameters, return values, and function composition.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Error Handling
Validate data and catch one deliberate expected error.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Console Input
Read one non-secret console response without an input loop.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
JSON Data
Encode and decode a small object entirely in memory.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Async Cooperation
Run two finite cooperative tasks with paced waits.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Binary Data
Pack, inspect, and unpack one fixed-size binary record.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Stop a Program
Practice Stop on visible paced work with a hard upper bound.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Expected Runner Error
Raise one announced ValueError to teach runner error state.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
List a Directory
List a capped set of sanitized names from one absolute directory.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Read an External Button
Report transitions from an explicitly configured button input.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Button Controls LED
Combine an explicitly configured button and external LED.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
PWM Fade
Apply a bounded low-duty PWM fade on a reviewed pin.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
ADC Sampling
Take a small set of raw and 0-to-1 scaled ADC readings.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
I2C Scan
Scan one explicitly configured software I2C bus.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
SPI Loopback
Verify one finite payload on an explicitly configured SoftSPI bus.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
NeoPixel Strip Chase
Move one dim pixel through a capped strip for finite cycles.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Planned 0.3.0
7 entries · planning label only
Pico 2 W LED Patterns
Compose reusable finite patterns on the exact onboard LED.
- Designed profiles
- Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Waveshare LCD Shapes
Draw the qualified framebuffer primitives in one bounded frame.
- Designed profiles
- Waveshare LCD 1.47B
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Waveshare Onboard Pixel
Show a dim finite sequence on the exact board's GPIO38 pixel.
- Designed profiles
- Waveshare LCD 1.47B
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Button Press Counter
Debounce and count external button presses for a finite interval.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
ADC Data Logger
Write finite ADC samples to one capped CSV-style board file.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB · Pico 2 W
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Button and NeoPixel
Map a configured button state to dim strip feedback.
- Designed profiles
- ESP32 4 MiB · ESP32-S3 N16R8 · Waveshare LCD 1.47B · ESP32-C3 4 MiB
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Waveshare LCD Dashboard
Refresh elapsed-time and free-memory data in five display frames.
- Designed profiles
- Waveshare LCD 1.47B
- Validated profiles
- None recorded
- Status
- Development example — physical validation not recorded
Follow in order
Tutorial steps
Start with evidence, not the title
Read the snapshot banner, planned release, classification, designed profiles, and validation line before choosing an entry. A familiar board name or an official repository does not promote planned source.
Expected: every card says that physical validation is not recorded and no card claims a validated profile.
Choose the smallest relevant slice
Begin with a portable Basics or Workflow entry. Use the 0.1.0, 0.2.0, and 0.3.0 headings as planned content slices, not as published examples releases. Capability and project entries add explicit hardware review.
Expected: you can identify one bounded example whose summary matches the concept you want to practice.
Check designed scope profile by profile
Portable entries list all five profiles. Generic capabilities still require explicit pins. ESP NeoPixel entries list the four ESP profiles, never Pico 2 W. Exact-board entries list only Pico 2 W or the Waveshare B-version profile.
Stop if: your exact profile is absent from Designed profiles or the required hardware and wiring have not been reviewed.
Open the immutable source
Use the Source at reviewed commit link on the chosen card. Confirm the browser URL contains the full snapshot commit, then read the README and complete Python source in the examples repository.
Expected: the source URL contains the exact 40-character commit rather than a moving main branch.
Import into a disposable child folder
Return to the GitHub import workflow, create the exact destination first, pin this snapshot commit, browse one folder, and review every selected source and target. Import does not make the example validated.

Actual Android tablet · Lenovo TB-J616XExamples · one completed import with execution still explicit Expected: the terminal import result and refreshed Files list agree without any automatic open or Run.
Run only within the documented boundary
Open and read the imported source. For hardware examples, repeat the electrical checklist and define every documented configuration value. Choose Run explicitly, observe only the bounded effect, then Stop and perform the example's cleanup.
Expected: the observed result stays within the reviewed summary; your personal test is not represented as project HIL evidence.
Need recovery help?
Stop at the current step, record the exact profile, board identity, app and firmware versions, and the first useful error. Then use the PyBLE support and recovery guide.