Niektóre metody użycia Seeed Studio XIAO MG24 Sense i Standard

Co to jest?

Seeed Studio XIAO MG24 i XIAO MG24 Sense to ultraniskoprądowe bezprzewodowe płytki rozwojowe oparte na SoC EFR32MG24 firmy Silicon Labs, wyposażone w wysokowydajne jądro 78MHz ARM Cortex®-M33. Obie płytki są natywnie zgodne z Matter® na protokole Thread® oraz Bluetooth® Low Energy 5.3, wspierane przez Arduino® Core. Zawierają 4MB pamięci Flash, 19 GPIO, diody LED oraz układ ładowania. Charakteryzują się bardzo niskim poborem prądu podczas pracy oraz ultraniskoprądowymi trybami, co czyni je idealnymi do zastosowań IoT, zwłaszcza projektów zasilanych bateryjnie wykorzystujących protokoły Matter®. Dodatkowo, XIAO MG24 Sense posiada wbudowany analogowy mikrofon oraz sześciosiowe czujniki IMU, co czyni go doskonałym wyborem do zastosowań TinyML, takich jak detekcja postawy. Po więcej informacji prosimy kliknąć tutaj.

Seeed Studio XIAO MG24 Silicon Labs EFR32MG24 BLE 5.3 1,95μA

Seeed Studio XIAO MG24 Standard

Zobacz produkt
Seeed Studio XIAO MG24 Sense Silicon Labs EFR32MG24 BLE 5.3

Seeed Studio XIAO MG24 Sense

Zobacz produkt

Rozpoczynanie

prosty program fabryczny

XIAO MG24

Wersja Standard zawiera fabrycznie ustawiony program o nazwie Blink Light. Po włączeniu XIAO zapali się pomarańczowy wskaźnik użytkownika.

XIAO MG24 Sense

Fabrycznie ustawiony program w wersji Sense jest zaprojektowany tak, że im głośniej krzyczysz, tym jaśniej świeci światło.

Przygotowanie sprzętu

  • 1 x Seeed Studio XIAO MG24
  • 1 x komputer
  • 1 x kabel USB typu C
uwaga: Niektóre kable USB mogą dostarczać tylko zasilanie i nie mogą przesyłać danych.

Przygotowanie oprogramowania

Dla XIAO MG24 sugerowanym narzędziem programistycznym jest Arduino IDE, więc pierwszym krokiem w przygotowaniu oprogramowania jest ukończenie instalacji Arduino.
  • Krok 1. Pobierz i zainstaluj stabilną wersję Arduino IDE odpowiednią dla Twojego systemu operacyjnego.
  • Krok 2. Uruchom aplikację Arduino.
  • Krok 3. Dodaj pakiet płyty XIAO MG24 do Arduino IDE i kliknij OK.
  • Krok 4. Zamknij Arduino IDE i otwórz je ponownie.

Dodaj płytkę XIAO MG24

Dodaj poniższy adres URL do preferencji swojego Arduino IDE.

Pobierz pakiet płytek XIAO MG24.


Wybierz wariant XIAO_MG24.


Rozpocznij swój pierwszy program Blink

  • Krok 1. Uruchom aplikację Arduino.
  • Krok 2. Przejdź do Plik > Przykłady > 01.Podstawy > Blink, otwórz program.
  • Krok 3. Wybierz model płytki XIAO MG24 i odpowiedni numer portu, aby wgrać program.

Po pomyślnym wgraniu programu zobaczysz poniższy komunikat wyjściowy i zauważysz, że pomarańczowa dioda LED po prawej stronie XIAO MG24 miga.

Użytkowanie baterii

Podłączenie i zarządzanie baterią

XIAO MG24 posiada wbudowany układ zarządzania energią, który pozwala na niezależne zasilanie z baterii lub ładowanie baterii przez port USB.
Jeśli planujesz podłączyć baterię do XIAO, zalecamy użycie certyfikowanej, ładowalnej baterii litowej 3,7V. Podczas lutowania baterii upewnij się, że prawidłowo oznaczyłeś bieguny dodatni i ujemny. Biegun ujemny powinien być podłączony do strony bliższej portowi USB, a biegun dodatni do strony dalszej od portu USB.

Wyświetlanie statusu ładowania

Wprowadziliśmy czerwoną diodę wskazującą status ładowania baterii, aby informować użytkowników o aktualnym stanie podczas ładowania.
  • Bez podłączonej baterii: Czerwona dioda zapala się po podłączeniu kabla Type-C i automatycznie gaśnie po 30 sekundach.
  • Ładowanie z podłączoną baterią: Czerwona dioda miga podczas ładowania baterii kablem Type-C.
  • Gdy bateria jest w pełni naładowana: Czerwona dioda gaśnie, sygnalizując zakończenie procesu ładowania.

Inne uwagi

  • Używaj kwalifikowanych baterii: Używaj tylko baterii spełniających określone wymagania.
  • Połączenie kablem danych: XIAO można podłączyć do komputera za pomocą kabla danych podczas pracy na baterii. Zapewniamy, że posiada wbudowany układ zabezpieczający dla bezpieczeństwa.
  • Wskaźnik LED: Gdy urządzenie XIAO MG24 jest zasilane z baterii, nie będzie świecić żadna dioda LED (chyba że zaprogramujesz je inaczej). Prosimy nie oceniać działania XIAO MG24 na podstawie stanu diody LED; polegaj na swoim programie, aby prawidłowo ocenić działanie.
  • Monitorowanie poziomu baterii: Niestety, obecnie nie możemy zapewnić sposobu na sprawdzenie pozostałego poziomu baterii przez oprogramowanie (z powodu braku dostępnych pinów na chipie). Należy regularnie ładować baterię lub używać multimetru do monitorowania poziomu baterii.

Pomiar napięcia baterii

Kod oprogramowania:

 

/*
  AnalogReadSerial

  Odczytuje analogowe wejście na pinie 0, wyświetla wynik w Monitorze portu szeregowego.
  Graficzna reprezentacja jest dostępna za pomocą Serial Plotter (menu Narzędzia > Serial Plotter).
  Podłącz środkową nóżkę potencjometru do pinu A0, a zewnętrzne nóżki do +5V i masy.

  Ten przykładowy kod jest w domenie publicznej.

  https://www.arduino.cc/en/Tutorial/BuiltInExamples/AnalogReadSerial
*/

// procedura setup uruchamia się raz po naciśnięciu reset:
void setup() {
  Serial.begin(115200);
  pinMode(PD3, OUTPUT);
  digitalWrite(PD3, HIGH);
}

void loop() {
  int voltageValue = analogRead(PD4);
  float voltage = voltageValue * (5.0 / 4095.0);
  
  Serial.print("Napięcie: ");
  Serial.print(voltage, 2);
  Serial.println(" V");
  delay(1000); // opóźnienie między odczytami dla stabilności
}

Wyświetl wynik

Przykład głębokiego uśpienia i uśpienia

Demo1 Tryb uśpienia i wybudzanie

 


/*
   Przykład uśpienia z użyciem ArduinoLowPower

   Przykład pokazuje podstawowe użycie biblioteki Arduino Low Power poprzez uśpienie urządzenia na określony czas.
   Urządzenie przejdzie w tryb uśpienia na 2000 ms. Podczas uśpienia CPU jest zatrzymany, ale pamięć RAM zachowuje swoją zawartość.

   Ten przykład jest kompatybilny ze wszystkimi płytkami Arduino firmy Silicon Labs.

   Autor: Tamas Jozsi (Silicon Labs)
 */

#include "ArduinoLowPower.h"

void setup()
{
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
  Serial.println("Uśpienie z czasowym wybudzeniem");
}

void loop()
{
  digitalWrite(LED_BUILTIN, LED_BUILTIN_ACTIVE);
  opóźnienie(500);
  digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
  opóźnienie(500);

  Serial.printf("Przechodzę w uśpienie o %lu\n", millis());
  LowPower.sleep(2000);
  Serial.printf("Wybudzono o %lu\n", millis());
}

Demo2 Tryb głębokiego uśpienia i wybudzenie

 

/*
   Przykład głębokiego uśpienia ArduinoLowPower z zewnętrznym lub czasowym wybudzeniem

   Przykład pokazuje podstawowe użycie biblioteki Arduino Low Power poprzez wprowadzenie urządzenia w głębokie uśpienie.
   Urządzenie pozostanie w głębokim uśpieniu, dopóki nie wygaśnie timer uśpienia.
   Podczas głębokiego uśpienia całe urządzenie jest wyłączone z wyjątkiem minimalnego zestawu peryferiów (takich jak pamięć Back-up RAM i RTC).
   Oznacza to, że procesor jest zatrzymany, a zawartość pamięci RAM zostaje utracona – urządzenie uruchomi się od początku szkicu po wybudzeniu.

   Ten przykład jest kompatybilny ze wszystkimi płytkami Arduino firmy Silicon Labs.

   Autor: Tamas Jozsi (Silicon Labs)
 */

#include "ArduinoLowPower.h"

void setup()
{
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
  Serial.println("Głębokie uśpienie z czasowym wybudzeniem");
}

void loop()
{
  digitalWrite(LED_BUILTIN, LED_BUILTIN_ACTIVE);
  opóźnienie(500);
  digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
  opóźnienie(500);

  Serial.printf("Przechodzę w głębokie uśpienie na 10s o %lu\n", millis());
  LowPower.deepSleep(10000);
}

 

Demo3 Tryb głębokiego uśpienia z pamięcią flash i wybudzeniem

Aby włączyć głębokie uśpienie dla pamięci flash, musisz aktywować rejestr 0xb9.
 

/*
   Przykład głębokiego uśpienia ArduinoLowPower z zewnętrznym lub czasowym wybudzeniem

   Przykład pokazuje podstawowe użycie biblioteki Arduino Low Power poprzez wprowadzenie urządzenia w głębokie uśpienie.
   Urządzenie pozostanie w głębokim uśpieniu, dopóki nie wygaśnie timer uśpienia.
   Podczas głębokiego uśpienia całe urządzenie jest wyłączone z wyjątkiem minimalnego zestawu peryferiów (takich jak pamięć Back-up RAM i RTC).
   Oznacza to, że procesor jest zatrzymany, a zawartość pamięci RAM zostaje utracona – urządzenie uruchomi się od początku szkicu po wybudzeniu.

   Ten przykład jest kompatybilny ze wszystkimi płytkami Arduino firmy Silicon Labs.

   Autor: Tamas Jozsi (Silicon Labs)
 */
#include
#include "ArduinoLowPower.h"

#define CS_PIN PA6
#define CLK_PIN PA3
#define MOSI_PIN PA5
#define MISO_PIN PA4

#define READ_DATA 0x03
#define WRITE_ENABLE 0x06
#define PAGE_PROGRAM 0x02
#define SECTOR_ERASE 0x20

void sendSPI(byte data) {
  for (int i = 0; i < 8; i++) {
    digitalWrite(MOSI_PIN, data & 0x80);
    data <<= 1;
    digitalWrite(CLK_PIN, HIGH);
    delayMicroseconds(1);
    digitalWrite(CLK_PIN, LOW);
    delayMicroseconds(1);
  }
}

void writeEnable() {
  digitalWrite(CS_PIN, LOW);
  sendSPI(WRITE_ENABLE);
  digitalWrite(CS_PIN, HIGH);
}

void setup()
{
  //Serial.begin(115200);
  pinMode(PA7, OUTPUT);
  digitalWrite(PA7, LOW);

  pinMode(CS_PIN, OUTPUT);
  pinMode(CLK_PIN, OUTPUT);
  pinMode(MOSI_PIN, OUTPUT);
  pinMode(MISO_PIN, INPUT);


  //SW
  pinMode(PD3, OUTPUT);
  pinMode(PB5, OUTPUT);
  pinMode(PB1, OUTPUT);
  pinMode(PB0, OUTPUT);
  pinMode(PA6, OUTPUT);
  digitalWrite(PD3, LOW); //VBAT
  digitalWrite(PB5, LOW); //RF_SW
  digitalWrite(PB1, LOW); //IMU
  digitalWrite(PB0, LOW); //MIC
  digitalWrite(PA6, HIGH);  //FLASH

  //Serial.println("Wybudzenie z głębokiego uśpienia na czas");
  writeEnable();
  digitalWrite(CS_PIN, LOW);
  sendSPI(0xB9);
  digitalWrite(CS_PIN, HIGH);
}

void loop()
{
  delay(12000);  
  digitalWrite(PA7, HIGH);
  opóźnienie(500);

  //Serial.printf("Przechodzę w głębokie uśpienie na 10s o %lu\n", millis());
  LowPower.deepSleep(600000);
}

Ochrona XIAO MG24 przed zablokowaniem podczas głębokiego uśpienia

XIAO MG24 od Seeed Studio to potężna płytka mikrokontrolera, ale użytkownicy napotkali problemy, gdy urządzenie staje się nieodpowiadające („zablokowane”) po wejściu w tryb głębokiego uśpienia. Ten przewodnik wyjaśnia przyczynę, opisuje proces odzyskiwania i podaje wskazówki, jak zapobiec zablokowaniu XIAO MG24.
Gdy XIAO MG24 przechodzi w tryb głębokiego uśpienia (EM4) w celu oszczędzania energii, może nie obudzić się poprawnie, blokując wgrywanie nowych szkiców. W przeciwieństwie do innych płytek XIAO, MG24 nie ma przycisku BOOT ani jasno udokumentowanej metody wejścia w tryb bootowania, co utrudnia odzyskiwanie.
Aby poznać szczegółowe kroki odzyskiwania, czytaj dalej poniżej.

1.Użyj pinu ucieczki (PC0)

XIAO MG24 ma wbudowany mechanizm ucieczki zapobiegający zablokowaniu. Jeśli PC0 zostanie podciągnięty do LOW podczas resetu, urządzenie wejdzie w nieskończoną pętlę, pozwalając na wgranie nowego szkicu.
  • Połączenie: Podłącz PC0 do GND przed zresetowaniem urządzenia.
  • Wgrywanie: Po resecie wgraj szkic, gdy urządzenie jest w pętli.

2.Zmodyfikuj swój szkic

Dodaj następujący kod do swojego szkicu, aby wykryć przełącznik użytkownika. Jeśli przełącznik jest wciśnięty, urządzenie wejdzie w nieskończoną pętlę, umożliwiając wgranie nowego szkicu podczas działania pętli:
 

#define USER_SW  PC3   // Przykładowy pin dla przełącznika użytkownika

void setup() {
  // Inny kod inicjalizacyjny...

  pinMode(USER_SW, INPUT_PULLUP);
  if (digitalRead(USER_SW) == LOW) {
    Serial.println("Włącz możliwość wgrania nowego szkicu");
    while (true) {
      digitalWrite(LED_BUILTIN, LOW);
      delay(50);
      digitalWrite(LED_BUILTIN, HIGH);
      delay(50);
    }
  }
}

3.Unikaj niepotrzebnego uśpienia pamięci flash

Upewnij się, że twój szkic nie wprowadza pamięci flash w tryb uśpienia (Deep Power Down), chyba że jest to absolutnie konieczne. Zapobiega to problemom podczas wgrywania nowych szkiców. Utrzymywanie pamięci flash w stanie aktywnym zapewnia płynniejszy proces wgrywania i unika potencjalnego uszkodzenia urządzenia.

Rozwiązania dla dostępu do portu szeregowego i odzyskiwania

Rozwiązania dla Windows

1.Pobierz dostarczony plik ZIP.

2.Podłącz XIAO MG24

Użyj kabla USB, aby podłączyć nieodpowiadający XIAO MG24 do komputera.

3.Uruchom skrypt

Otwórz rozpakowany folder i znajdź flash_erase.bat skrypt.
Kliknij dwukrotnie skrypt, aby go uruchomić. Spowoduje to wymazanie pamięci flash i zresetowanie urządzenia.

4.Weryfikacja odzyskiwania

Po zakończeniu działania skryptu XIAO MG24 powinien zostać przywrócony i być gotowy do użycia.

Rozwiązania dla macOS

1.Pobierz dostarczony plik ZIP.

2.Podłącz XIAO MG24

Użyj kabla USB, aby podłączyć nieodpowiadający XIAO MG24 do komputera.

3.Zezwól Konektor Dostęp

  • Otwórz Preferencje systemowe: Przejdź do Preferencje systemowe na twoim Macu.
  • Przejdź do Bezpieczeństwo i prywatność: kliknij na Bezpieczeństwo i prywatność, następnie przejdź do Prywatność tab.
  • Sprawdź dostępność: w zakładce Dostępność w sekcji, upewnij się, że Terminal ma pozwolenie na kontrolowanie twojego komputera.
  • Dodaj Terminal, jeśli to konieczne: jeśli Terminal nie jest na liście, kliknij przycisk +, aby dodać go ręcznie. Wybierz Terminal z folderu Aplikacje.

4.Uruchom skrypt

  • Otwórz Terminal.
  • Przejdź do rozpakowanego folderu za pomocą cd polecenia. Na przykład:
  • Uruchom skrypt za pomocą ./xiao_mg24_erase.shTo spowoduje wymazanie pamięci flash i zresetowanie urządzenia.

5. Zweryfikuj odzyskiwanie

Po zakończeniu działania skryptu XIAO MG24 powinien zostać przywrócony i być gotowy do użycia.

Uwaga

Jeśli macOS nie rozpoznaje OpenOCD, proszę upewnić się, że OpenOCD jest zainstalowany oraz że skrypt używa poprawnej ścieżki. Dodatkowo, dostarczone skrypty są specjalnie dostosowane do XIAO MG24 i nie powinny być używane z innymi modelami XIAO.

Inne informacje

Najczęściej zadawane pytania

Czy są dostępne szczegółowe informacje lub parametry dotyczące Seeed Studio XIAO MG24 Sense lub Standard?

 

Pasek boczny

Najnowszy post

Ta sekcja nie zawiera obecnie żadnych treści. Dodaj treść do tej sekcji, korzystając z paska bocznego.

Zarejestruj się do naszego newslettera

Uzyskaj najnowsze informacje o naszych produktach i specjalnych ofertach.