{"id":26577890,"url":"https://github.com/yvanseth/scd40-rusty-pi","last_synced_at":"2026-04-29T20:02:26.426Z","repository":{"id":282892088,"uuid":"949990919","full_name":"YvanSeth/scd40-rusty-pi","owner":"YvanSeth","description":"A SCD40 (or 41) CO2 PPM Monitor with Web Interface for Raspberry Pi Pico W","archived":false,"fork":false,"pushed_at":"2025-03-17T13:51:39.000Z","size":190,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T14:38:44.745Z","etag":null,"topics":["co2","co2-monitor","co2-sensor","embassy-rp","embassy-rs","libscd","pico-w","raspberry-pi","scd40"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YvanSeth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"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":"2025-03-17T13:10:22.000Z","updated_at":"2025-03-17T13:51:43.000Z","dependencies_parsed_at":"2025-03-18T21:46:17.733Z","dependency_job_id":null,"html_url":"https://github.com/YvanSeth/scd40-rusty-pi","commit_stats":null,"previous_names":["yvanseth/scd40-rusty-pi"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YvanSeth%2Fscd40-rusty-pi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YvanSeth%2Fscd40-rusty-pi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YvanSeth%2Fscd40-rusty-pi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YvanSeth%2Fscd40-rusty-pi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YvanSeth","download_url":"https://codeload.github.com/YvanSeth/scd40-rusty-pi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245052718,"owners_count":20553184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["co2","co2-monitor","co2-sensor","embassy-rp","embassy-rs","libscd","pico-w","raspberry-pi","scd40"],"created_at":"2025-03-23T04:17:53.503Z","updated_at":"2026-04-29T20:02:21.352Z","avatar_url":"https://github.com/YvanSeth.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# scd40-rusty-pi\n\n![Animation of a web page with CO2PPM, temperature, and humidity values and the CO2PPM value updates every few seconds](images/scd40-web-results-450-gifsicle.gif)\n\nA Raspberry Pi Pico W implementation of a SCD40 based CO2 PPM monitor, it has a\nweb interface where the current values can be viewed. This is designed to work\nwith an I2C SCD40 module.\n\nPlease note that I am on about day 5 of learning Rust, so this code is not\nprovided with the intention of it being a correct example to follow. Comments\nand feedback are welcomed! This is part of my own learning process.\n\n***This is a work in progress.***\n\n![A Pico W next to a SCD40 module on a breadboard connected with some wires](images/pico_w_with_scd40_on_breadboard_20250317_133557.jpg)\n\n## Compiling - picoserve mod\n\nI struggled to get `embassy` + `picoserve` to compile together using crates.io\nsources. Despite the version number of `embassy` being the same it seems that\nusing the git sources fixes the problem (the issue is with\n`embassy-time-driver`). But to achieve this I had to also edit the\n`picoserve/Cargo.toml` in the `picoserve` project, which I have checked out and\nsat alongside this project tree and referenced directly in this project's\n`Cargo.toml`. Hopefully in time the issue with the crates.io compatibility will\nbe resolved.\n\n```diff\ndiff --git a/picoserve/Cargo.toml b/picoserve/Cargo.toml\nindex 5bb0084..c9ad350 100644\n--- a/picoserve/Cargo.toml\n+++ b/picoserve/Cargo.toml\n@@ -20,2 +20,2 @@ defmt = { version = \"0.3.6\", optional = true }\n-embassy-net = { version = \"\u003e=0.6.0\", optional = true, features = [\"tcp\", \"proto-ipv4\", \"medium-ethernet\"] }\n-embassy-time = { version = \"\u003e=0.4.0\", optional = true }\n+embassy-net = { version = \"0.7.0\", git = \"https://github.com/embassy-rs/embassy.git\", optional = true, features = [\"tcp\", \"proto-ipv4\", \"medium-ethernet\"] }\n+embassy-time = { version = \"0.4.0\", git = \"https://github.com/embassy-rs/embassy.git\", optional = true }\n```\n\n## License\n\n`scd40-rusty-pi` is licensed under either of\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or\n  \u003chttp://www.apache.org/licenses/LICENSE-2.0\u003e)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or \u003chttp://opensource.org/licenses/MIT\u003e)\n\nat your option.\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall\nbe dual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyvanseth%2Fscd40-rusty-pi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyvanseth%2Fscd40-rusty-pi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyvanseth%2Fscd40-rusty-pi/lists"}