danwahl / adanet-co2-monitor Goto Github PK
View Code? Open in Web Editor NEWAdanet CO₂ Monitor
Adanet CO₂ Monitor
The FeatherWing has an SD card slot, nominally for storing graphics, but this could probably instead be used for logging. Since we only log once every three minutes, even a small card could could effectively be used indefinitely. Some considerations:
Currently using the "classic" fixed-space bitmap font, but FreeMono would probably look better
Scenario: I want to test it in the elevator and I mentally counted the seconds since the last update, but the trip inside the elevator is quite short.
Scenario: I like to get two readings in a place before I move on.
Pros:
Cons:
The Low Power Operation document says:
Power Cycled Single Shot Operation (SCD41 only)
But the firmware is not currently using single-shot operation, so I don't think this applies.
Still, worth verifying before purchasing SCD40s in bulk!
The pseudocode at the end is missing LC709203F
Automatic Self Calibration is currently disabled, as per the Low Power Operations document:
ASC is not supported for power cycled single shot operation.
It's not clear how often/badly the SCD4x goes out of calibration, but it might be necessary to create software/instructions for manual calibration.
Saw a comment about sparlines in another issue and thought it was a super neat idea! This is quite a high resolution display so it fits well with Tufte's original sparkline ideas.
To make room for a co2 reading sparkline I relocated the temperature field from upper left to lower right and got rid of relative humidity and pressure (never looked at them once but it could just be me...)
The 250 pixels across is just about perfect for a full day (24 hours) worth of data if we downsample by a factor of two. However, I ended up adding a label to clarify the timespan of the sparkline which took up 12 pixels leaving 238 pixel wide field. This is 2 pixels shy of the 240 we need but I figured it was close enough -- the full display ends up being 6 minutes short of 24 hours.
The vertical scale is determined by the maximum co2 reading over the last 24 hours which we already have on the display. Hopefully this relationship is clear because of similar labeling "24hr" and "max/24hr" and proximity of the labels.
I first tried a lightweight sparkline where each data point is represented by a single pixel:
But it turned out to be not super legible especially under less than perfect lighting conditions.
The second idea is a bar graph sparkline which looks a lot more legible:
@danwahl thoughts?
Reset
and Busy
pins are not currently wired up (see "Featherwing Connections"). See the MagTag section on Arduion Sleep for more infoRight now, the system will continue running until the battery is totally drained, which is presumably not good for the longevity of the battery.
Instead, the device could read the battery level on startup, and if it is below a given threshold (5%?), activate a low battery mode. The mode would set a persistent flag, and then display an error message before going back into deep sleep. Each subsequent start would check both the battery level and the flag, and only begin normal operation if the charge was above the threshold, otherwise going immediately back to sleep without updating the display.
This should prolong the healthy battery life considerably, though power draw in deep sleep is not zero, so a switch would be a better solution in the long term.
neoPixel
static
, move initialization to setup()
for consistencySeems like the processor speed could at least be turned down to 80 MHz to save power (if not all the way down to 10 MHz, though I remember reading somewhere that this might cause USB serial issues?)
Should at least update to include:
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.