gabe /presentato-mf
public · Issues · Pulls · Labels · Forks · Compare · Actions success · Badges · Packages
⭐
Log in to mark this repository.
acme-camera: environmental, solar, software design, boot plan and component slides
40e5716 · Gabriel Morell · 2026-10-13 18:37
Files changed
modified
content/presentations/acme-camera.md
+132
−4
@@ -77,11 +77,16 @@ to support Infrared and Visible Spots for lighting areas for improved visibility
| 77 | 77 | |
| 78 | 78 | --- |
| 79 | 79 | |
| 80 | −# Power Subsystem | |
| 80 | +# Environmental | |
| 81 | + | |
| 82 | +- Temperature | |
| 83 | +- Luminosity | |
| 84 | + | |
| 85 | +--- | |
| 81 | 86 | |
| 82 | −nPM1300 PMIC | |
| 87 | +# Power Subsystem | |
| 83 | 88 | |
| 84 | −- Battery Charge Controller | |
| 89 | +- Battery Charge Controller & Guage | |
| 85 | 90 | |
| 86 | 91 | <iframe src="https://diogramos.neiam.co/embed/oUXMw7KPyT-jBwSnzi-s3QGE?mode=frame" |
| 87 | 92 | width="900" height="500" style="border:0" loading="lazy" |
@@ -89,6 +94,13 @@ nPM1300 PMIC
| 89 | 94 | |
| 90 | 95 | -- |
| 91 | 96 | |
| 97 | +## What about solar? | |
| 98 | + | |
| 99 | +Let us set an expectation that expect that any input power source provides 5v regulated power, | |
| 100 | +solar included <!-- .element: class="fragment" --> | |
| 101 | + | |
| 102 | +-- | |
| 103 | + | |
| 92 | 104 | ## Solar Charge Controller |
| 93 | 105 | |
| 94 | 106 | - TI bq25504 |
@@ -98,8 +110,124 @@ nPM1300 PMIC
| 98 | 110 | width="900" height="500" style="border:0" loading="lazy" |
| 99 | 111 | ></iframe> |
| 100 | 112 | |
| 101 | −Note: nPM1300 does not provide the MPP support for the solar cells so we need an external IC to properly do it | |
| 113 | +Note: | |
| 114 | +nPM1300 does not provide the MPP support for the solar cells so we need an external IC to properly do it | |
| 102 | 115 | |
| 103 | 116 | --- |
| 104 | 117 | |
| 105 | 118 | # Software Design |
| 119 | + | |
| 120 | +<iframe src="https://diogramos.neiam.co/embed/TFsxET9ChIDsRyjTAIE3FDtP?mode=frame" | |
| 121 | + width="900" height="500" style="border:0" loading="lazy" | |
| 122 | + ></iframe> | |
| 123 | + | |
| 124 | +Note: | |
| 125 | +mcuctl sets the motion and light mode on the embedded mcu | |
| 126 | +powerctl controls the power domain for the battery charger and reads the fuel guage | |
| 127 | +portalctl provides the initial configuration UI and subsequent status web portals | |
| 128 | +cameractl reads frames and dispatches them to whatever has been configured | |
| 129 | +configctl is the source of truth that gets configuration requests | |
| 130 | + | |
| 131 | +--- | |
| 132 | + | |
| 133 | +# Boot Plan | |
| 134 | + | |
| 135 | +<iframe src="https://diogramos.neiam.co/embed/C0ICOZGl94HAS7JuVHy8OjPN?mode=frame" | |
| 136 | + width="900" height="500" style="border:0" loading="lazy" | |
| 137 | + ></iframe> | |
| 138 | + | |
| 139 | +Note: | |
| 140 | +Uses an A+B boot that only changes the boot target once we've booted successfully and connected to the backend | |
| 141 | + | |
| 142 | +--- | |
| 143 | + | |
| 144 | +# Component : Broker | |
| 145 | + | |
| 146 | +- MQTT | |
| 147 | + | |
| 148 | +Note: on unix socket for the ability to have granular security | |
| 149 | + | |
| 150 | +--- | |
| 151 | + | |
| 152 | +# Component : MCUctl | |
| 153 | + | |
| 154 | +```rust | |
| 155 | +enum MotionDetectionMode { | |
| 156 | + OnlyPIR, | |
| 157 | + PIRWakesRadar, | |
| 158 | + OnlyRadar, | |
| 159 | + Off | |
| 160 | +} | |
| 161 | +``` | |
| 162 | + | |
| 163 | +```rust | |
| 164 | +enum LightControlMode { | |
| 165 | + DuskDawn, | |
| 166 | + Motion{cooldown: u32}, | |
| 167 | + Off | |
| 168 | +} | |
| 169 | +``` | |
| 170 | + | |
| 171 | +Note: | |
| 172 | +Talks to MCU and sets/gets the motion detection and light settings | |
| 173 | + | |
| 174 | +--- | |
| 175 | + | |
| 176 | +# Component: Powerctl | |
| 177 | + | |
| 178 | +```rust | |
| 179 | +enum Power { | |
| 180 | +} | |
| 181 | +``` | |
| 182 | + | |
| 183 | +Note: | |
| 184 | +Collects power usage data, rundown and fuel guage from the PMIC | |
| 185 | + | |
| 186 | +--- | |
| 187 | + | |
| 188 | +# Component: Portalctl | |
| 189 | + | |
| 190 | +Note: | |
| 191 | +Interactive wireless authentication and cloud configuration | |
| 192 | + | |
| 193 | +--- | |
| 194 | + | |
| 195 | +# Component: Cameractl | |
| 196 | + | |
| 197 | +Note: | |
| 198 | +Reads frames from the camera and decides to do further processing depending on Config | |
| 199 | + | |
| 200 | +--- | |
| 201 | + | |
| 202 | +# Component: Configctl | |
| 203 | + | |
| 204 | +Note: | |
| 205 | +Source of truth for various configurations set from the portal | |
| 206 | +- Network configuration | |
| 207 | +- Display Name | |
| 208 | +- Cloud Configuration | |
| 209 | +- On-Device Processing Configuration | |
| 210 | + | |
| 211 | +-- | |
| 212 | + | |
| 213 | +# Component: Infctl | |
| 214 | + | |
| 215 | +Note: | |
| 216 | +This one is -- because it's a bonus one that we may not get into | |
| 217 | +Configures on-device inference using NPU hardware available in modern camera SOCs | |
| 218 | + | |
| 219 | +--- | |
| 220 | + | |
| 221 | +# Metrics | |
| 222 | + | |
| 223 | +- Performance given envelope configuration | |
| 224 | + | |
| 225 | +_leading to insights for better_ <!-- .element: class="fragment" --> | |
| 226 | + | |
| 227 | +- Battery Life across a fleet <!-- .element: class="fragment" --> | |
| 228 | + | |
| 229 | +--- | |
| 230 | + | |
| 231 | +# Instrumentation | |
| 232 | + | |
| 233 | +- Collection of combined environmental, fuel guage |
Parents: 091184f