{"id":16031748,"url":"https://github.com/refactor-group/esp32-wroom-rp","last_synced_at":"2026-04-05T01:31:54.754Z","repository":{"id":36997242,"uuid":"486808026","full_name":"refactor-group/esp32-wroom-rp","owner":"refactor-group","description":"A Rust-based RP2040 series driver providing WiFi functionality via Espressif ESP32-WROOM-32U/UE WiFi daughter controllers/boards","archived":false,"fork":false,"pushed_at":"2023-03-31T01:17:08.000Z","size":56085,"stargazers_count":7,"open_issues_count":12,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-02T15:18:14.000Z","etag":null,"topics":["embedded-hal","esp32","esp32-wifi","esp32-wroom","rust-crate","rust-lang","spi"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/refactor-group.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-29T02:08:51.000Z","updated_at":"2025-10-06T07:25:57.000Z","dependencies_parsed_at":"2026-03-11T13:04:00.198Z","dependency_job_id":null,"html_url":"https://github.com/refactor-group/esp32-wroom-rp","commit_stats":{"total_commits":312,"total_committers":3,"mean_commits":104.0,"dds":0.4935897435897436,"last_synced_commit":"34aa554a93d2aa55f7ed9eafdd844da2c16fb1af"},"previous_names":["refactor-group/esp32-wroom-rp","jim-hodapp-coaching/esp32-wroom-rp"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/refactor-group/esp32-wroom-rp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refactor-group%2Fesp32-wroom-rp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refactor-group%2Fesp32-wroom-rp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refactor-group%2Fesp32-wroom-rp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refactor-group%2Fesp32-wroom-rp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/refactor-group","download_url":"https://codeload.github.com/refactor-group/esp32-wroom-rp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refactor-group%2Fesp32-wroom-rp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31421869,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T00:25:07.052Z","status":"ssl_error","status_checked_at":"2026-04-05T00:25:05.923Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["embedded-hal","esp32","esp32-wifi","esp32-wroom","rust-crate","rust-lang","spi"],"created_at":"2024-10-08T21:05:18.516Z","updated_at":"2026-04-05T01:31:54.736Z","avatar_url":"https://github.com/refactor-group.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build \u0026 Test Crate + Examples](https://github.com/Jim-Hodapp-Coaching/esp32-wroom-rp/actions/workflows/build_and_test.yml/badge.svg)](https://github.com/Jim-Hodapp-Coaching/esp32-wroom-rp/actions/workflows/build_and_test.yml)\n\n# esp32-wroom-rp\nA Rust-based RP2040 series driver providing WiFi functionality via Espressif ESP32-WROOM-32U/UE WiFi daughter controllers/boards.\n\nSupports the [ESP32-WROOM-32E](https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf), [ESP32-WROOM-32UE](https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf) modules.\n\nFuture implementations will support the [ESP32-WROOM-DA](https://www.espressif.com/sites/default/files/documentation/esp32-wroom-da_datasheet_en.pdf) module.\n\n## Usage\n\n```rust\nuse rp2040_hal as hal;\n\nuse esp32_wroom_rp::{wifi::Wifi, gpio::EspControlPins};\nuse embedded_hal::blocking::delay::DelayMs;\n\nuse embedded_hal::spi::MODE_0;\nuse fugit::RateExtU32;\nuse hal::{clocks::Clock, pac};\n\nlet _spi_miso = pins.gpio16.into_mode::\u003chal::gpio::FunctionSpi\u003e();\nlet _spi_sclk = pins.gpio18.into_mode::\u003chal::gpio::FunctionSpi\u003e();\nlet _spi_mosi = pins.gpio19.into_mode::\u003chal::gpio::FunctionSpi\u003e();\n\nlet spi = hal::Spi::\u003c_, _, 8\u003e::new(pac.SPI0);\n\n// Exchange the uninitialized SPI driver for an initialized one\nlet spi = spi.init(\n    \u0026mut pac.RESETS,\n    clocks.peripheral_clock.freq(),\n    8_000_000u32.Hz(),\n    \u0026MODE_0,\n);\n\nlet esp_pins = EspControlPins {\n    // CS on pin x (GPIO7)\n    cs: pins.gpio7.into_mode::\u003chal::gpio::PushPullOutput\u003e(),\n    // GPIO0 on pin x (GPIO2)\n    gpio0: pins.gpio2.into_mode::\u003chal::gpio::PushPullOutput\u003e(),\n    // RESETn on pin x (GPIO11)\n    resetn: pins.gpio11.into_mode::\u003chal::gpio::PushPullOutput\u003e(),\n    // ACK on pin x (GPIO10)\n    ack: pins.gpio10.into_mode::\u003chal::gpio::FloatingInput\u003e(),\n};\n\nlet wifi = Wifi::init(spi, esp_pins, \u0026mut delay).unwrap();\nlet version = wifi.firmware_version();\n```\n\n## Hardware\n\nIn order to run this code you need to purchase some hardware. This section provides a list of required hardware\nneeded at minimum, and some suggested items to make your life even easier.\n\n### Required Hardware\n\n1. [Raspberry Pi Pico with pre-soldered headers](https://www.elektor.com/raspberry-pi-pico-rp2040-h) (2x)\n   * [Alternate distributors](https://www.raspberrypi.com/products/raspberry-pi-pico/)\n\n2. Adafruit Airlift (1x)\n   * [US distributor](https://www.adafruit.com/product/4201)\n\n3. [Breadboard](https://www.sparkfun.com/products/12614) (1x)\n   * __Note__: If you already have a medium/large breadboard, then don't worry about purchasing this specific one\n\n\n### Optional but Helpful Hardware\n\n1. [Break Away Headers](https://www.sparkfun.com/products/116) (1x)\n   * If you want to solder headers to the non-pre-soldered BME280 sensor board from #2 above\n\n2. [Multi-length Jumper Wire Kit 140pcs](https://www.sparkfun.com/products/124) (1x)\n\n3. [Straight 7\" Jumper Wires M/M](https://www.sparkfun.com/products/11026) (1x)\n   * Helpful to have some of these on hand\n\n4. [Straight 6\" Jumper Wires M/F](https://www.sparkfun.com/products/12794) (1x)\n   * Helpful to have some of these on hand\n\n5. [Adafruit BME280 sensor](https://www.adafruit.com/product/2651) (2x)\n   * Used for an example using the crate to read temperature/pressure/humidity values\n\n6. [Saleae Logic 8](https://www.saleae.com/) (1x)\n   * __Note__: Only needed if you'd like to participate in developing/debugging parts of this project that communicate\n   on the SPI/I2C buses\n\n### Wiring Details\n\nStart with the section [Pico to Pico Wiring in this article](https://reltech.substack.com/p/getting-started-with-rust-on-a-raspberry?s=w) to set up using two Picos together, one as a Picoprobe (flash/debug) and the other as your embedded target.\n\nOnce properly wired, it should look similar to the following:\n\n![IMG_3747](https://user-images.githubusercontent.com/3219120/159986814-37c99e4f-97cb-43c8-aa2f-1b325a1eb670.jpg)\n\n![IMG_3746](https://user-images.githubusercontent.com/3219120/159986853-d1f84e01-1caa-4f0f-bc84-53ef79fa25b1.jpg)\n\n__Pico to ESP32 WiFi__\n\nThe following table lists the pin name and pin number to properly wire between a Pico board and an ESP32 WiFi. This can be done on a breadboard such as the one listed above. Note that V+/- rail means the +/- columns on the breadboard for use as +5 VDC and GND respectively.\n\n| Pico              | ESP32 WiFi       | Adafuit Airlift | Breadboard |\n| ----------------- | ---------------- | ----------------| ---------- |\n|                   | GND (Pin 3)      | GND (Pin 3)     | V- rail    |\n| GP2 (Pin 4)       | GPIO0 (Pin 4)    | GP0 (Pin 10)    |            |\n| GP7 (Pin 10)      | ESP_CSn (Pin 10) | CS (Pin 7)      |            |\n| GP8 (Pin 11)      |                  |                 |            |\n| GP9 (Pin 12)      |                  |                 |            |\n| GP10 (Pin 14)     | ACK (Pin 14)     | Busy (Pin 8)    |            |\n| GP11 (Pin 15)     | RESETn (Pin 15)  | RSTn (Pin 9)    |            |\n| GP12 (Pin 16)     | SW_A (Pin 16)    | N/A             |            |\n|                   | GND (Pin 18)     |                 | V- rail    |\n| VBUS (Pin 40)     | VBUS (Pin 40)    |                 |            |\n| VSYS (Pin 39)     | VSYS (Pin 39)    | VIN (Pin 1)     | V+ rail    |\n| GND (Pin 38)      | GND (Pin 38)     |                 | V- rail    |\n| 3V3(OUT) (Pin 36) | 3V3 (Pin 36)     | 3Vo (Pin 2)     |            |\n| GP19 (Pin 25)     | MOSI (Pin 25)    | MOSI (Pin 5)    |            |\n| GP18 (Pin 24)     | SCLK (Pin 24)    | SCK (Pin 4)     |            |\n|                   | GND (Pin 23)     |                 | V- rail    |\n| GP16 (Pin 21)     | MISO (Pin 21)    | MISO (Pin 5)    |            |\n\n\n***\n\n## Software Requirements\n- The standard Rust tooling (cargo, rustup) which you can install from https://rustup.rs/\n\n- Toolchain support for the cortex-m0+ processors in the rp2040 (thumbv6m-none-eabi)\n\n- flip-link - this allows you to detect stack-overflows on the first core, which is the only supported target for now.\n\n## Installation of development dependencies\n```sh\nrustup target install thumbv6m-none-eabi\ncargo install flip-link\ncargo install probe-run\n```\n\n## Set Up Git Hooks\n\nThe esp32-wroom-rp repository makes use of several Git hooks to ensure that code quality standards are met and consistent. To automatically configure these hooks for your local workspace, you can run the following:\n\n./scripts/create-git-hooks\nThis will create symlinks to the Git hooks, preserving any hooks that you may have already configured.\n\n## Building the crate and running the examples\n\nTo build the esp32-wroom-rp crate:\n```sh\ncargo build\n```\n\nTo build all examples\n```sh\ncd cross\ncargo build\n```\n\nTo build a specific example (e.g. get_fw_version):\n```sh\ncd cross\ncargo build --bin get_fw_version\n```\n\nTo run a specific example (e.g. get_fw_version):\n```sh\ncd cross\ncargo run --bin get_fw_version\n```\n\n## Running the crate's unit tests\n```sh\ncargo test\n```\n\n## Getting Involved\n\nThis project launched in April, 2022). See the main page section [Getting Involved](https://github.com/Jim-Hodapp-Coaching#getting-involved) for more info on how to contribute to this project and the Rust Never Sleeps community.\n\nTo get involved, please [request to join the community here on GitHub](https://rustneversleeps.wufoo.com/forms/z1x3dy1j0ycafxq/) and then start contributing to the [research and design discussions](https://github.com/Jim-Hodapp-Coaching/esp32-wroom-rp/discussions) currently underway.\n\n## Project Team\n\n* Architect: [Caleb Bourg](https://github.com/calebbourg)\n* Rust Developer: [Dilyn Corner](https://github.com/dilyn-corner)\n* Rust Developer: [Glyn Matthews](https://github.com/glynos)\n* Project Oversight \u0026 Rust Developer: [Jim Hodapp](https://github.com/jhodapp)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frefactor-group%2Fesp32-wroom-rp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frefactor-group%2Fesp32-wroom-rp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frefactor-group%2Fesp32-wroom-rp/lists"}