Site icon Renzo Mischianti

STM32 Risparmio energetico: libreria LowPower, cablaggio e Idle (STM Sleep).

Risparmio energetico STM32: libreria LowPower, cablaggio e modalità Idle

Risparmio energetico STM32: libreria LowPower, cablaggio e modalità Idle

Spread the love

Risparmio energetico STM32: libreria LowPower, cablaggio e modalità Idle

In un dispositivo remoto, una caratteristica importante può essere il consumo energetico, e come per altri dispositivi, l’STM32 consente una serie di stati a basso consumo energetico.

In questo articolo, esamineremo la libreria da utilizzare e le prestazioni dei nostri dispositivi.

Ecco la mia selezione di STM32 STM32F103C8T6 STM32F401 STM32F411 ST-Link v2 ST-Link v2 official

Libreria

Nell’ambito di Arduino, utilizzeremo la libreria STM32LowPower, rendendo così il processo molto semplice.

È possibile trovare questa libreria nel gestore delle librerie di Arduino.

Gestore delle librerie Arduino: STM32 Low Power

Questa libreria ha anche alcune dipendenze, tra cui una libreria che abbiamo utilizzato nell’articolo “STM32: RTC interno, sistema orario e backup batteria (VBAT)“, che serve per interfacciarsi con l’orologio RTC interno.

Come al solito, è possibile trovarla nel gestore delle librerie.

Gestore delle librerie Arduino: STM32 RTC

API

Nota: Con la versione STM32RTC inferiore a 1.1.0, il numero minimo di millisecondi è di 1000 ms.

La funzione Begin() deve essere chiamata almeno una volta prima delle funzioni idle(), sleep(), deepSleep() o shutdown().

Le funzioni attachInterruptWakeup() o enableWakeupFrom() dovrebbero essere chiamate prima delle funzioni idle(), sleep(), deepSleep() o shutdown().

Se HardwareSerial viene utilizzato come sorgente di sveglia, verrà configurato per utilizzare la sorgente di clock HSI anche se un’altra sorgente di clock periferico è configurata.

Se RTC viene utilizzato come sorgente di sveglia, verrà configurato per utilizzare la sorgente di clock LSE anche se un’altra sorgente di clock RTC è selezionata.

La scheda si riavvierà quando uscirà dalla modalità deepSleep o shutdown.

Collegamenti per i nostri test

Utilizzeremo l’ST-Link per programmare e alimentare l’STM32, ma inseriremo un multimetro nel mezzo tra il pin 3.3v dell’ST-Link V2 e il pin 3.3v dell’STM32 per misurare l’amperaggio e analizzare il consumo di energia.

Ecco l'STM32 e l'ST-Link V2 utilizzati in questo test STM32F103C8T6 STM32F401 STM32F411 ST-Link v2 ST-Link v2 official

Qui l'FTDI USB to TTL CH340G - USB to TTL FT232RL


Qui il mio multimetro Aneng SZ18

Per ottenere l’output seriale, utilizziamo un FTDI esterno connesso solo ai pin GND e Tx dell’STM32 a loro volta collegati al GND e pin Rx del FTDI.

STM32F1 e Serial per il debug

STM32: programmazione tramite ST-Link, debug seriale tramite FTDI e controllo dell’ampiezza su breadboard

STM32F1 e Serial2 per il debug

STM32: programmazione tramite ST-Link, debug seriale tramite FTDI e controllo dell’ampiezza su breadboard

STM32F4 e Serial per il debug

STM32F4 black pill e ST-Link: debug seriale tramite FTDI con controllo dell’ampiezza

STM32F4 e Serial2 per il debug

STM32F4 black pill e ST-Link: debug seriale tramite FTDI con controllo dell’ampiezza

Sveglia con un’interruzione interna gestita da RTC

Ora stiamo per fare alcuni test, prima di tutto, controlliamo il consumo energetico di tutti gli stati di sospensione (idle, sleep, deepSleep, shutdown), e utilizziamo un’interruzione interna gestita da RTC per svegliare il dispositivo.

In questo articolo prenderemo in considerazione solo l’Idle poi nei prossimi i restanti stati.

Pinout STM32F103C6 bassa risoluzione

Per questo test, è necessaria la libreria STM32LowPower e la libreria STM32RTC.

Idle

Come descritto, lo stato Idle corrisponde allo stato Sleep nel framework ST. Questo stato ha un tempo di risveglio rapido e ferma la CPU.

STM32F1

STM32F103C8 Blue-Pill: configurazione per il test di basso consumo energetico

Il primo dispositivo che utilizziamo è un blue pill STM32F103C8.

/**
 *	STM32 Low Power IDLE wake up test from RTC
 *
 * 	This sketch demonstrates the usage of Internal Interrupts to wakeup a chip
 *	in idle mode.
 *
 *	In this sketch, the internal RTC will wake up the processor.
 *
 *	Renzo Mischianti <www.mischianti.org>
 * en: https://mischianti.org/category/tutorial/stm32-tutorial/
 * it: https://mischianti.org/it/category/guide/guida-alla-linea-di-microcontrollori-stm32/
 */

#include "STM32LowPower.h"

// If you use generic STM32F103C8
// you don't need this explicit declaration
// This is needed by bluepill specified version
//HardwareSerial Serial(USART2);   // PA3  (RX)  PA2  (TX)

void setup() {
	Serial.begin(115200);
	while (!Serial){ delay(100); }
	Serial.println("START!");

	// Configure low power
	LowPower.begin();
}

void loop() {
	Serial.print("Entering idle in ");
	for (int i=5; i>0; i--) {Serial.print(i);Serial.print(" ");delay(500);}
	Serial.println();
	delay(100); // Needed to give time to write the Serial
	LowPower.idle(5000); // Entering in idle

	delay(100); // Needed to restore the Serial
	Serial.print("Wake for 10 seconds! ");
	for (int i=10; i>0; i--) {Serial.print(i);Serial.print(" ");delay(1000);}
	Serial.println();
}

L’output della Serial è:

Entering idle in 5 4 3 2 1 
Wake for 10 seconds! 10 9 8 7 6 5 4 3 2 1 
Entering idle in 5 4 3 2 1 
Wake for 10 seconds! 10 9 8 7 6 5 4 3 2 1 
Entering idle in 5 4 3 2 1 
Wake for 10 seconds! 10 9 8 7 6 5 4 3 2 1 
Entering idle in 5 4 3 2 1 
Wake for 10 seconds! 10 9 8 7 6 5 4 

Entrando in modalità Idle, il consumo di corrente da 17.50mAh scende a 9.37mAh.

STM32F401

Pinout STM32F401CCU6 bassa risoluzione

Lo stesso sketch nello STM32F401CC Black-Pill da 23.50mAh ottiene un risultato inferiore per lo STM32F103, 7.55mAh.

STM32F411

Pinout STM32F411CEU6 bassa risoluzione

Lo stesso sketch nello STM32F411CE Black-Pill da 32.50mAh ottiene un risultato simile per lo STM32F103, 11.05mAh.

Grazie

  1. STM32F1 Blue Pill: piedinatura, specifiche e configurazione IDE Arduino (STM32duino e STMicroelectronics)
  2. STM32: programmazione (STM32F1) via USB con bootloader STM32duino
  3. STM32: programmazione (STM32F1 STM32F4) tramite USB con bootloader HID
  4. STM32F4 Black Pill: pinout, specifiche e configurazione IDE Arduino
  5. STM32: ethernet w5500 standard (HTTP) e SSL (HTTPS)
  6. STM32: ethernet enc28j60 standard (HTTP) e SSL (HTTPS)
  7. STM32: WiFiNINA con un ESP32 come WiFi Co-Processor
    1. STM32F1 Blue-pill: shield WiFi (WiFiNINA)
    2. STM32F4 Black-pill: shield WiFi (WiFiNINA)
  8. Come utilizzare la scheda SD con l’stm32 e la libreria SdFat
  9. STM32: memoria flash SPI FAT FS
  10. STM32: RTC interno, sistema orario e backup batteria (VBAT)
  11. STM32 LoRa
  1. STM32 Risparmio energetico
    1. STM32F1 Blue-Pill gestione clock e frequenza
    2. STM32F4 Black-Pill gestione clock e frequenza
    3. Introduzione e framework Arduino vs STM
    4. Libreria LowPower, cablaggio e Idle (STM Sleep).
    5. Sleep, deep sleep, shutdown e consumo energetico
    6. Sveglia da allarme RTC e Seriale
    7. Sveglia da sorgente esterna
    8. Introduzione al dominio di backup e conservazione delle variabili durante il RESET
    9. Registro di backup RTC e conservazione della SRAM
  1. STM32 invia email con allegati e SSL (come Gmail): w5500, enc28j60, SD e SPI Flash
  2. Server FTP su STM32 con W5500, ENC28J60, scheda SD e memoria flash SPI
  3. Collegamento dell’EByte E70 ai dispositivi STM32 (black/blue pill) e un semplice sketch di esempio

Spread the love
Exit mobile version