plantineers / edge Goto Github PK
View Code? Open in Web Editor NEWThe microcontroller firmware of plantbuddy
License: GNU General Public License v3.0
The microcontroller firmware of plantbuddy
License: GNU General Public License v3.0
This changes a lot about the code. We could still make the microcontrollers sleep to save power(#3) and would not have to deal with connectivity issues/unreliability of connections.
Currently we have the problem that esp-now is screwing up timings. While this is fine for I2C and the tsl2591 it screws up the timings on pretty much all sensors needing a delay. Since the esp32c3 doesn't have a second core we cannot just switch to another core.
We have two ways really here and both seem hard and time-intensive:
The most common RTOS to develop applications with on the esp32c3 is FreeRTOS. This has Rust bindings and would probably support deep/light sleep and give us higher level abstractions, however the project would no longer be bare-metal.
For saving the UUID for example
I guess we're gonna have to use the rng peripheral much for this one to generate the UUIDs at first start.
This shows how to use the onboard rng:
https://github.com/esp-rs/esp-hal/blob/main/esp32c3-hal/examples/rng.rs
Currently our json packets are definitely going to be too large to get sent via ESP-Now. To avoid this we should use binary serialization. We can use https://github.com/jamesmunns/postcard for that.
Saving power when the device is not in use for multiple minutes is very worthwhile. We could use the built-in sleep modes of the esp to wake it up after a time interval saving massive amounts of power. Also we could use rtc memory to store data that is persistent during even deep sleep.
Unfortunately light/deep sleep doesn't seem supported in esp-hal yet. We could also use esp-idf, which would no longer use the pure rust bindings.
Query all present sensors every 5 minutes
Make a simple Gateway to forward the ESP-Now Requests to HTTP for the server
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.