giovedì 27 gennaio 2022

M5Stack StickC

Aggiornamento

************************************************************

sono riuscito a modificare lo sketch usando la modalita' deepsleep
per allungare la durata della batteria. Al primo avvio viene solo mostrato
la grafica al video...i boot seguenti fatti a seguito di wake up da deep sleep
viene avviata la tastiera BLE 
L'aspetto piu' critico e' stato quello di inserire un delay al riavvio perche' sono necessari
4 secondi per riavviare la riconnessione al Bluetooth e 4 secondi per l'invio del messaggio
(tempi piu' brevi portano a connessioni non affidabili)

#include <BleKeyboard.h>
#include <M5StickC.h>

RTC_DATA_ATTR int bootCount = 0;
BleKeyboard bleKeyboard;
String player = "1"; // set player 1 or player2
void setup() {
  ++bootCount;
  if (bootCount >1 )
    {
      delay(4000);
      bleKeyboard.begin();111
      delay(4000);
      if(bleKeyboard.isConnected()) {
              bleKeyboard.print("1");1
      }
      pinMode(10, OUTPUT);
      digitalWrite(10, LOW); // accende il led
      delay(100);
      digitalWrite(10, HIGH);
    }
    else
    {
    M5.begin();
    pinMode(10, OUTPUT); // red led
    digitalWrite(10, HIGH);
    
    M5.Lcd.setRotation(3);  
    pinMode(37, INPUT); 
  
    M5.Lcd.setTextSize(3);
    M5.Lcd.setCursor(5, 18);  
    M5.Lcd.print("Player "+player);
    delay(1000);
    M5.Axp.SetLDO2(false); // spenge lo schermo      
    }
    
  esp_sleep_enable_ext0_wakeup(GPIO_NUM_37,0);//Configure GPIO37 as ext0 wake up source for low logic level
  esp_deep_sleep_start();
}
void loop() {
}

************************************************************


M5Stack Stickc e' un indossabile (piu' o meno) con a bordo un Esp 32 Pico programmabile

Ha una batteria da soli 80 mAh ed in condizioni normali resta acceso meno di 10 minuti...volevo trasformarlo in un pulsante remoto come tastiera BLE HID per comandare un PC 



Spengendo lo schermo e riducendo il clock a 80 MHz si puo' avere una durata della batteria di circa 75 minuti...ho provato a gestire la modalita' lightsleep dell'ESP32 ma con risultati non sempre affidabili. (non so se a causa di Esp32 o del controllo del widget bluetooth di Gnome su Debian che fa parecchi capricci....se avro' tempo provero' a migliorare)
#include <M5StickC.h>
#include <BleKeyboard.h>
BleKeyboard bleKeyboard;
int last_value = 0;
int cur_value = 0;
String player = "1"; // set player 1 or player2
void setup() {
bleKeyboard.begin();
setCpuFrequencyMhz(80); // downscale la frequenza da 240 a 80 Mhz
M5.begin();
pinMode(10, OUTPUT); // red led
digitalWrite(10, HIGH);
M5.Lcd.setRotation(3);
pinMode(37, INPUT);
M5.Lcd.setTextSize(3);
M5.Lcd.setCursor(5, 18);
M5.Lcd.print("Player "+player);
delay(1000);
M5.Axp.SetLDO2(false); // spenge lo schermo
}
void loop() {
M5.update();
delay(300); // per evitare la doppia pressione
cur_value = digitalRead(37);
if(cur_value != last_value){
if(cur_value==0){
if(bleKeyboard.isConnected()) {
bleKeyboard.print(player);
/*M5.Axp.SetLDO2(true);
M5.Lcd.fillScreen(RED);
delay(100);
M5.Lcd.fillScreen(BLACK);
M5.Axp.SetLDO2(false);*/
digitalWrite(10, LOW); // accende il led
delay(100);
digitalWrite(10, HIGH);
}
}
else{
}
last_value = cur_value;
}
}

Nessun commento:

Posta un commento

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...