Okazuje się bowiem, że poza zaletą tego układu w postaci złącza zewnętrznej anteny posiada on jeszcze układ SGMICRO SGM40567-4.2. Umożliwia on bezpośrednią obsługę akumulatora ładowanego napięciem 4,2V.
Długo się nie zastanawiałem, wyszperałem akumulator 18650 o pojemności równo 1000 mAh (tylko do testów) i przystąpiłem do działania.
W zasadzie nie ma tu dużo roboty. Wystarczy przylutować przewód pod dwa pady od spodu układu (rysunek). Akumulator proponuję umieścić w koszyku, jak na zdjęciu poniżej. Samo lutowanie jest bardzo proste, pady są duże i łatwo dostępne. Można by się było też w przyszłości pokusić o jakąś obudowę z drukarki 3d mieszczącą moduł i akumulator. Po podłączeniu akumulatora i zasilacza USB miga na module czerwona dioda oznaczająca ładowanie akumulatora. Układ w tym momencie pobiera ok. 1W, co by się mniej więcej zgadzało, ponieważ SGM40587-4.2 może ładować max. prądem 700mA. Zasilanie akumulatorowe nie przeszkadza we wgrywaniu softu do modułu. Normalnie wgrałem plik "merged" przez FDT. Po naładowaniu baterii do pełna - czerwona dioda gaśnie.
Po odłączeniu zasilania w postaci zasilacza USB moduł działa normalnie. Wg odczytu w GUI bramki Zigbee TX power cały czas ustawione jest na 20, czyli bez zmian.
Zalet takiego rozwiązania (zasilania) jest kilka. Poza oczywistym, czyli możliwością zabezpieczenia się na wypadek zaniku zasilania otrzymujemy jeszcze bonus w postaci bramki mobilnej. Teraz łatwo można sprawdzić, w którym miejscu mamy optymalny zasięg, gdzie go bramka traci itp.
Czas działania na baterii (akumulatorze): moduł na baterii 1000mAh wytrzymał ok. 9h, co daje średni pobór na poziomie 110 mA.
Uwaga: z informacji, do których dotarłem wynika, że układ w Xiao C6 nie posiada ochrony baterii przed nadmiernym rozładowaniem!
Aby monitorować napięcie akumulatora, podobne jak w XIAO ESP32C3, trzeba zastosować rezystor 200k w konfiguracji 1:2. Ta konfiguracja zmniejsza napięcie o połowę, umożliwiając bezpieczne monitorowanie przez port analogowy A0 (rysunek z Xiao C3). Ale to nie koniec, bo jeszcze trzeba to uwzględnić w oprogramowaniu bramki (w tej chwili takowej funkcji brak).
Code: Select all
#include <Arduino.h>
void setup() {
Serial.begin(115200);
pinMode(A0, INPUT); // Configure A0 as ADC input
}
void loop() {
uint32_t Vbatt = 0;
for(int i = 0; i < 16; i++) {
Vbatt += analogReadMilliVolts(A0); // Read and accumulate ADC voltage
}
float Vbattf = 2 * Vbatt / 16 / 1000.0; // Adjust for 1:2 divider and convert to volts
Serial.println(Vbattf, 3); // Output voltage to 3 decimal places
delay(1000); // Wait for 1 second
}Podsumowując. Nie ma tu wielkiej filozofii, trudność podłączenia praktycznie żadna, a korzyści mogą być spore.
Edit: post uzupełnię, jak skończę testy działania bramki na samym akumulatorku.

