{"id":16358210,"url":"https://github.com/newam/ambientsensor-rs","last_synced_at":"2025-10-19T21:58:12.484Z","repository":{"id":37800913,"uuid":"326567265","full_name":"newAM/ambientsensor-rs","owner":"newAM","description":"A rust re-implementation of an old embedded C project.","archived":false,"fork":false,"pushed_at":"2024-06-10T00:27:06.000Z","size":191,"stargazers_count":20,"open_issues_count":2,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-11T04:42:28.013Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/newAM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2021-01-04T04:17:42.000Z","updated_at":"2025-01-04T07:32:04.000Z","dependencies_parsed_at":"2024-06-10T01:33:07.273Z","dependency_job_id":"5ad6b572-4d22-4e3e-9ee9-2ca71166ee79","html_url":"https://github.com/newAM/ambientsensor-rs","commit_stats":{"total_commits":87,"total_committers":4,"mean_commits":21.75,"dds":0.5977011494252873,"last_synced_commit":"813ffbd62712058bd22b87ec5fd76c965572da2b"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newAM%2Fambientsensor-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newAM%2Fambientsensor-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newAM%2Fambientsensor-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newAM%2Fambientsensor-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/newAM","download_url":"https://codeload.github.com/newAM/ambientsensor-rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234045301,"owners_count":18770941,"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":[],"created_at":"2024-10-11T02:05:04.905Z","updated_at":"2025-09-24T05:32:07.839Z","avatar_url":"https://github.com/newAM.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ambientsensor-rs\n\nThis is a rust re-implementation of an embedded C project I did a while ago: [AmbientSensor].\n\nSchematics, photos, ect. will be in that repository, this repository is just for the rust firmware.\n\n## Status\n\nThis is still a work in progress.\n\n1. The OPT3002 luminosity sensor is not implemented.\n2. The panic handler needs to get hooked up to the EEPROM to store error logs then reset.\n\n## Purpose\n\nCo-workers kept hyping up this new rust language, and I wanted to see if the hype was warranted.\n\nOn paper rust seems amazing, but the only way to really evaluate a language is to use it.  I specifically wanted to compare embedded rust to embedded C, and [AmbientSensor] was simply the last embedded project I completed in C.\n\nTurns out, the hype was warranted.\n\nThere is not a lot of commentary I can offer about embedded rust that has not already been said.  The concepts rust introduces (safety, ownership, lifetimes) make developing robust code simple.  The language is new and still has a small (but rapidly growing) ecosystem for embedded development.  From my experience a lot of embedded development is still C simply because nothing else offers a compelling reason to switch (except C++ depending on who you ask).  The features rust brings to the table are incredibly compelling for embedded development, and I think rust has a bright future in this industry.\n\n## Notable crates used\n\n* [rtic](https://rtic.rs/) - RTOS\n* [rtt_target](https://docs.rs/rtt-target/0.3.0/rtt_target/) - Probe based logging \n* [cargo-embed](https://crates.io/crates/cargo-embed) - build and run your code with one command\n* [embedded-hal](https://github.com/rust-embedded/embedded-hal) - abstractions for embedded hardware\n\n## Crates Developed\n\n* [bme280-multibus](https://github.com/newAM/bme280-multibus) - Bosch BME280 driver\n* [eeprom25aa02e48](https://github.com/newAM/eeprom25aa02e48-rs) - EEPROM driver, my first rust crate\n* [w5500-dhcp](https://github.com/newAM/w5500-rs) - W5500 DHCP client\n* [w5500-hl](https://github.com/newAM/w5500-rs) - Higher level W5500 Ethernet chip driver\n* [w5500-ll](https://github.com/newAM/w5500-rs) - Low level W5500 Ethernet chip driver\n* [w5500-mqtt](https://github.com/newAM/w5500-rs) - W5500 MQTT client\n\n## Building\n\nYou will need [rustup] and the `thumbv6m-none-eabi` target.\n\n```bash\nrustup target add thumbv6m-none-eabi\n```\n\nAfter you have that target available you can build, the default target is already set in `.cargo/config.toml`.\n\n```bash\ncargo build\n```\n\n[rustup]: https://rustup.rs/\n[AmbientSensor]: https://github.com/newam/ambientsensor\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewam%2Fambientsensor-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnewam%2Fambientsensor-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewam%2Fambientsensor-rs/lists"}