**Power-Pico** is more than just a USB ammeter. It is a **high-precision, low-power analysis tool** designed specifically for embedded developers. To overcome the physical limitations of traditional ammeters in the μA-level measurement, Power-Pico adopts an innovative **multi-range auto-switching sampling** design, achieving full-range coverage from $1\mu A$ to $5A$.
Install and use the PowerPico Client. Currently, it only supports Windows.
## 🛠️ User Guide
1. Hardware Operation
The button operations and various interface displays of Power-Pico are shown below. The top button is the **Page Switch/Boot** button. Press and hold the top button before powering on to enter Boot mode for a forced firmware upgrade.
The Power-Pico hardware currently supports 2 languages: **Simplified Chinese/English**.
The PowerPico Client for PC can be used for waveform viewing, recording, exporting, and upgrading the firmware of the hardware. The client currently supports 4 languages: **Simplified Chinese/Traditional Chinese/English/Japanese**.
For detailed instructions on using the PowerPico Client, please refer to: [Client Operation Manual](https://no-chicken.com/content/Power-Pico/UserManual/client_operation.html)
├── Firmware/ # Firmware, including BootLoader.hex and App.bin
├── Hardware/ # Schematics
├── 3D models/ # STL files for 3D printing the enclosure
└── Software/ # MDK software project for PowerPico, including BootLoader and App
```
## 💻 Code Framework
Similar to previous projects, it uses a BootLoader + App structure for easy USB upgrades. The program partitioning is shown below.
<ul>
<li>The initial 48kB area of sectors 0, 1, and 2 is the BootLoader area.</li>
<li>The 16kB area of the 3rd sector is the upgrade information area, used for verifying the integrity of the App on startup. For specific verification details, see the BootLoader code.</li>
<li>The area starting from the 4th sector at 0x08010000 is the App area (A/B partitioning is not used due to insufficient on-chip Flash).</li>
High-speed data transmission is performed via USB. The data packet structure is shown below. Each packet contains 100 data sets, totaling 711 bytes including the header.
<li style="margin-bottom:8px"><a href="https://wiki.luatos.com/iotpower/cc/index.html">[2] IoT Power-CC 3D printed shell structure</a></li>
<li style="margin-bottom:8px"><a href="https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/index.html">[3] PySide6 user manual</a></li>
<li style="margin-bottom:8px"><a href="https://qfluentwidgets.com/zh/pages/about">[4] QFluentWidgets - Make QT Great Again</a></li>
<li style="margin-bottom:8px"><a href="https://pyqtgraph.readthedocs.io/en/latest/getting_started/index.html">[5] PyQtGraph user manual</a></li>
<li style="margin-bottom:8px"><a href="https://www.st.com/en/development-tools/stsw-stm32102.html">[6] STM32 USB vitual serial port driver demo</a></li>