â ååè¨äº
nokixa.hatenablog.com
Bluetooth Low Energy (BLE)ã使ãã°ãWi-Fiã®ã¨ãããä½æ¶è²»é»åã§ãé»æ± ããã§ãåãããã®ã§ã¯ï¼ã¨èããã®ã§ãããããã£ã¦ã¿ãã
BLEæ¶è²»é»å
調ã¹ã¦ã¿ããããã¾ãããæ
å ±ã¯ãªãã
Bluetooth Low Energyã®ä½æ¶è²»é»å - ãã£ã¼ã«ããã¶ã¤ã³
ç¡ç·LANã§ã¯ã100mãããã®ç¯å²ã§100Mbpsã®é度ã§éä¿¡ãã§ããã®ã§ãéåä¿¡æã¨ã200mAãããã®é»æµãæ¶è²»ãã¾ãï¼2016å¹´ç¾å¨ã®å¤ã§ãåå°ä½ã®ããã»ã¹ã«ããå¤ï¼ãBluetooth Low Energyã§ã¯ã5mãããã®ç¯å²ã§100kbpsã®é度ã§éä¿¡ãã§ããã®ã§ãéåä¿¡æã¨ã10mAãããã®é»æµãæ¶è²»ãã¾ãï¼2016å¹´ç¾å¨ã®å¤ã§ãåå°ä½ã®ããã»ã¹ã«ããå¤ï¼ã
ESP32 C3ã®ãã¼ã¿ã·ã¼ããè¦ãããBLEåä½ä¸ã®é»æµãã¨ããã®ã¯æ¸ããã¦ããªãã
Wi-Fiåä½ä¸ã®ã¿ã
esp32-c3_datasheet_en.pdf

å¥ã®ãã¼ãã ããããã§ä½¿ããã¦ããESP32ããã¤ã¹ã®ãã¼ã¿ã·ã¼ãã«ã¯ãBLEåä¿¡ãéä¿¡ã§100mAã130mAã®æ¶è²»é»æµãã¨æ¸ããã¦ããããã
ESP32 ã® BLE åä½æã®æ¶è²»é»æµã調ã¹ã¦ã¿ã ⢠IoT ã½ããã¦ã§ã¢è¨è¨ã®ãã¡ã¼ã ãã¸ãã¯ã¹ [ç¸æ¨¡å]
第ä¸å¼¾ããã°ã©ã
çæAIã«èãã¦ãM5Stampã§BLEéä¿¡ã使ãããã°ã©ã ãä½ã£ã¦ããã£ãã
æåã«ä¸çºä½ã£ã¦ããã£ãå¾ãæ¥ç¶/åæãããã¨ãã®ã¡ãã»ã¼ã¸è¡¨ç¤ºããªã¯ã¨ã¹ãã§è¿½å ãã¦ããã£ãã®ã¨ãBLEã§å¤ãæ¸ãè¾¼ã¿ãããã¨ãã®ã¡ãã»ã¼ã¸è¡¨ç¤ºã追å ããã
ããã°ã©ã
ã³ã¼ãã¯ä¸è¨ã®éãã
#include <Arduino.h>
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#define LED_PIN 4
BLECharacteristic *pCharacteristic;
bool deviceConnected = false;
#define SERVICE_UUID "12345678-1234-5678-1234-56789abcdef0"
#define CHARACTERISTIC_UUID "abcdefab-cdef-1234-5678-abcdefabcdef"
class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
std::string value = pCharacteristic->getValue();
if (value == "ON") {
digitalWrite(LED_PIN, HIGH);
Serial.println("Written \"ON\"");
} else if (value == "OFF") {
digitalWrite(LED_PIN, LOW);
Serial.println("Written \"OFF\"");
}
}
};
class MyServerCallbacks: public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
deviceConnected = true;
Serial.println("ã¹ãã¼ããã©ã³ãæ¥ç¶ããã¾ãã");
}
void onDisconnect(BLEServer* pServer) {
deviceConnected = false;
Serial.println("ã¹ãã¼ããã©ã³ãåæããã¾ãã");
}
};
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
BLEDevice::init("M5StampC3");
BLEServer *pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());
BLEService *pService = pServer->createService(SERVICE_UUID);
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setCallbacks(new MyCallbacks());
pService->start();
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->start();
}
void loop() {
}
ãã«ã
åé¡ãªããã«ãã§ããã
BLEé¢é£ã®é¨åã¯ä¸è¨ã®éãã
Dependency Graph
|-- ESP32 BLE Arduino @ 2.0.0
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLE2902.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLE2904.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEAddress.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEAdvertisedDevice.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEAdvertising.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEBeacon.cpp.o
esptool.py v4.5.1
Creating esp32c3 image...
Merged 1 ELF section
Successfully created esp32c3 image.
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLECharacteristic.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLECharacteristicMap.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEClient.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEDescriptor.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEDescriptorMap.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEDevice.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEEddystoneTLM.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEEddystoneURL.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEExceptions.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEHIDDevice.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLERemoteCharacteristic.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLERemoteDescriptor.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLERemoteService.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEScan.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLESecurity.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEServer.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEService.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEServiceMap.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEUUID.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEUtils.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEValue.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\FreeRTOS.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\GeneralUtils.cpp.o
å
¨ãã«ããã°(ã¯ãªãã¯ã§éã/éãã)
* Executing task: C:\Users\a\.platformio\penv\Scripts\platformio.exe run --environment esp32-c3-devkitm-1
Processing esp32-c3-devkitm-1 (platform: espressif32; board: esp32-c3-devkitm-1; framework: arduino)
---------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-c3-devkitm-1.html
PLATFORM: Espressif 32 (6.9.0) > Espressif ESP32-C3-DevKitM-1
HARDWARE: ESP32C3 160MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-builtin, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
- framework-arduinoespressif32 @ 3.20017.0 (2.0.17)
- tool-esptoolpy @ 1.40501.0 (4.5.1)
- toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 33 compatible libraries
Scanning dependencies...
Dependency Graph
|-- ESP32 BLE Arduino @ 2.0.0
Building in release mode
Compiling .pio\build\esp32-c3-devkitm-1\src\main.cpp.o
Building .pio\build\esp32-c3-devkitm-1\bootloader.bin
Generating partitions .pio\build\esp32-c3-devkitm-1\partitions.bin
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLE2902.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLE2904.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEAddress.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEAdvertisedDevice.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEAdvertising.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEBeacon.cpp.o
esptool.py v4.5.1
Creating esp32c3 image...
Merged 1 ELF section
Successfully created esp32c3 image.
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLECharacteristic.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLECharacteristicMap.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEClient.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEDescriptor.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEDescriptorMap.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEDevice.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEEddystoneTLM.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEEddystoneURL.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEExceptions.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEHIDDevice.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLERemoteCharacteristic.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLERemoteDescriptor.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLERemoteService.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEScan.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLESecurity.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEServer.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEService.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEServiceMap.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEUUID.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEUtils.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEValue.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\FreeRTOS.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\GeneralUtils.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\Esp.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\FirmwareMSC.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\FunctionalInterrupt.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\HWCDC.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\IPAddress.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\IPv6Address.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\MD5Builder.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\Print.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\StreamString.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\USB.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\USBCDC.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\USBMSC.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\WString.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\base64.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\cbuf.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-adc.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-bt.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-cpu.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-dac.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-gpio.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-i2c-slave.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-i2c.c.o
Archiving .pio\build\esp32-c3-devkitm-1\libab4\libBLE.a
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-ledc.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-matrix.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-misc.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-psram.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-rgb-led.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-rmt.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-sigmadelta.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-spi.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-time.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-timer.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-tinyusb.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-touch.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-uart.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\firmware_msc_fat.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\libb64\cdecode.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\libb64\cencode.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\main.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\stdlib_noniso.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\wiring_shift.c.o
Archiving .pio\build\esp32-c3-devkitm-1\libFrameworkArduino.a
Linking .pio\build\esp32-c3-devkitm-1\firmware.elf
Retrieving maximum program size .pio\build\esp32-c3-devkitm-1\firmware.elf
Checking size .pio\build\esp32-c3-devkitm-1\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [= ] 11.8% (used 38700 bytes from 327680 bytes)
Flash: [======== ] 76.0% (used 995620 bytes from 1310720 bytes)
Building .pio\build\esp32-c3-devkitm-1\firmware.bin
esptool.py v4.5.1
Creating esp32c3 image...
Merged 2 ELF sections
Successfully created esp32c3 image.
========================= [SUCCESS] Took 11.78 seconds =========================
* Terminal will be reused by tasks, press any key to close it.
åä½
"Upload and Monitor"ã³ãã³ãã§ã
ã¹ããããã¯ã"LightBlue"ã¢ããªã§æä½ãããããã¤ã¹æ¤ç´¢ãæ¥ç¶ãã§ãã¦ãCharasteristicã®æ¸ãè¾¼ã¿ã§æä½ãã§ããã
apps.apple.com
LightBlueã¢ããªã§ã®æä½
LightBlueã¢ããªãç«ã¡ä¸ããã¨ãããªãã§ã©ã«æ¤ç´¢ç»é¢ãç«ã¡ä¸ããã

M5Stampã§ããã°ã©ã åä½ããã¨ã"M5StampC3"ã®ããªãã§ã©ã«ãç¾ããã

"Connect"ãæ¼ãã¨ãæ¥ç¶ããã¦ãæ
å ±ã表示ãããã
"Services"ã«ã¯ãããã°ã©ã ã§é©å½ã«è¨å®ãã"SERVICE_UUID"ã¨ã"CHARASTERISTIC_UUID"ã表示ããã¦ããã

ãã®Characteristicãéãã¦ã¿ãã¨ãå¤ã®æ¸ãè¾¼ã¿ã¨èªã¿åºãã®ãã¿ã³ãããã

"Write new value"ãæ¼ãã¨ãå¤ã®å
¥åç»é¢ãåºããããã©ã«ãã§ã¯ããã©ã¼ãããã¯æååã«ãªã£ã¦ããã

"UTF-8 String"ãæ¼ãã¨ã"Hex"çãä»ã®ãã©ã¼ããããé¸æã§ããã

æååãã©ã¼ãããã§ã"ON"ã"OFF"ãä½åãå
¥åããã¨ããã

ä¸ã¤åã®ç»é¢ã«æ»ãã¨ã"Disconnect"ãã§ããã

M5Stampå´ã®æå
ã¹ããããæ¥ç¶ããããå¤ã®æ¸ãè¾¼ã¿ãããéã
ã·ãªã¢ã«ã³ã³ã½ã¼ã«ä¸ã«ãã®è¡¨ç¤ºãåºãã
ã¾ããå¤ã®æ¸ãè¾¼ã¿ã§ããã¡ãã¨ãã¹ã®ãã¿ã³ããã·ã¥ã¨åãæå(LEDç¹ç¯ãé³å£°)ããã£ã¦ãããã
ã¹ãã¼ããã©ã³ãæ¥ç¶ããã¾ãã
Written "ON"
Written "OFF"
Written "ON"
ã¹ãã¼ããã©ã³ãåæããã¾ãã
å
¨ãã°(ã¯ãªãã¯ã§éã/éãã)
* Executing task: C:\Users\a\.platformio\penv\Scripts\platformio.exe run --target upload --target monitor --environment esp32-c3-devkitm-1
Processing esp32-c3-devkitm-1 (platform: espressif32; board: esp32-c3-devkitm-1; framework: arduino)
---------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-c3-devkitm-1.html
PLATFORM: Espressif 32 (6.9.0) > Espressif ESP32-C3-DevKitM-1
HARDWARE: ESP32C3 160MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-builtin, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
- framework-arduinoespressif32 @ 3.20017.0 (2.0.17)
- tool-esptoolpy @ 1.40501.0 (4.5.1)
- tool-mkfatfs @ 2.0.1
- tool-mklittlefs @ 1.203.210628 (2.3)
- tool-mkspiffs @ 2.230.0 (2.30)
- toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 33 compatible libraries
Scanning dependencies...
Dependency Graph
|-- ESP32 BLE Arduino @ 2.0.0
Building in release mode
Retrieving maximum program size .pio\build\esp32-c3-devkitm-1\firmware.elf
Checking size .pio\build\esp32-c3-devkitm-1\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [= ] 11.8% (used 38700 bytes from 327680 bytes)
Flash: [======== ] 76.0% (used 996016 bytes from 1310720 bytes)
Configuring upload protocol...
AVAILABLE: cmsis-dap, esp-bridge, esp-builtin, esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
Looking for upload port...
Auto-detected: COM3
Uploading .pio\build\esp32-c3-devkitm-1\firmware.bin
esptool.py v4.5.1
Serial port COM3
Connecting....
Chip is ESP32-C3 (revision v0.3)
Features: WiFi, BLE
Crystal is 40MHz
MAC: 68:67:25:b2:d0:54
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00003fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00109fff...
Compressed 13248 bytes to 9562...
Writing at 0x00000000... (100 %)
Wrote 13248 bytes (9562 compressed) at 0x00000000 in 0.5 seconds (effective 226.5 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 146...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (146 compressed) at 0x00008000 in 0.1 seconds (effective 386.4 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 535.6 kbit/s)...
Hash of data verified.
Compressed 1023968 bytes to 556568...
Writing at 0x00010000... (2 %)
Writing at 0x0001bfae... (5 %)
Writing at 0x0002986e... (8 %)
Writing at 0x00035fe6... (11 %)
Writing at 0x0004115a... (14 %)
Writing at 0x000479f2... (17 %)
Writing at 0x0004da5a... (20 %)
Writing at 0x00053d57... (23 %)
Writing at 0x0005a972... (26 %)
Writing at 0x00061c87... (29 %)
Writing at 0x00067e6c... (32 %)
Writing at 0x0006e160... (35 %)
Writing at 0x000756ad... (38 %)
Writing at 0x0007c38c... (41 %)
Writing at 0x0008305c... (44 %)
Writing at 0x00088f6d... (47 %)
Writing at 0x0008f419... (50 %)
Writing at 0x000954a0... (52 %)
Writing at 0x0009ca68... (55 %)
Writing at 0x000a3622... (58 %)
Writing at 0x000ab219... (61 %)
Writing at 0x000b1944... (64 %)
Writing at 0x000b8210... (67 %)
Writing at 0x000bf2d7... (70 %)
Writing at 0x000c8073... (73 %)
Writing at 0x000cf3f3... (76 %)
Writing at 0x000d5bae... (79 %)
Writing at 0x000dcb37... (82 %)
Writing at 0x000e354f... (85 %)
Writing at 0x000e987f... (88 %)
Writing at 0x000ef65e... (91 %)
Writing at 0x000f5447... (94 %)
Writing at 0x000fd5f2... (97 %)
Writing at 0x00103723... (100 %)
Wrote 1023968 bytes (556568 compressed) at 0x00010000 in 16.8 seconds (effective 488.7 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
--- Terminal on COM3 | 115200 8-N-1
--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
ESP-ROM:esp32c3-api1-20210207
Build:Feb 7 2021
rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd5810,len:0x438
load:0x403cc710,len:0x90c
load:0x403ce710,len:0x2624
entry 0x403cc710
ã¹ãã¼ããã©ã³ãæ¥ç¶ããã¾ãã
Written "ON"
Written "OFF"
Written "ON"
ã¹ãã¼ããã©ã³ãåæããã¾ãã
ã¯ããã¯å¨æ³¢æ°å¤ãã¦ä½æ¶è²»é»åå
ä¸ã§ä½ã£ãããã°ã©ã ãM5Stampã«æ¸ãè¾¼ãã§ãé»æ± ããåããã¦ã¿ãã
ãã¡ãã¨åãã¨ãã¯åãããã¨ãã©ãåå¿ããªããªãã
ã¾ããä¸æ¦åå¿ããªããªãã¨ãé»æ± ãå¤ããªãã¨å¾©æ§ããªããUSBãæ¥ç¶ãã¦ãã ãã
ã¾ã æ¶è²»é»åã大ãéããã®ããã¨èãã¦ãçæAIã«å¯¾çæ¡ãåºãã¦ããã£ãããã¯ããã¯å¨æ³¢æ°ãä¸ãããã¨ããã®ããã£ãã®ã§ãããã試ãã
M5Stampã ã¨ãããã©ã«ãã§ã¯160MHzã§åãã¦ããããBLEã使ãå ´åã¯80MHzã¾ã§ä¸ãã¦ã大ä¸å¤«ã®ããã
ããã°ã©ã
çæAIã«ä½ã£ã¦ããã£ãããã°ã©ã ã
å¤æ´é¨åã¯ã
esp_pm.h
ã®ã¤ã³ã¯ã«ã¼ã追å
#include <esp_pm.h>
setup()
ã®å
é ã§ã¯ããã¯å¨æ³¢æ°è¨å®ãå®æ½
void setup() {
esp_pm_config_esp32c3_t pm_config = {
.max_freq_mhz = 80,
.min_freq_mhz = 80,
.light_sleep_enable = false
};
esp_pm_configure(&pm_config);
Serial.begin(115200);
...
ããã°ã©ã å
¨ä½ã¯ä¸è¨ã®éãã
#include <Arduino.h>
#include <esp_pm.h>
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#define LED_PIN 4
BLECharacteristic *pCharacteristic;
bool deviceConnected = false;
#define SERVICE_UUID "12345678-1234-5678-1234-56789abcdef0"
#define CHARACTERISTIC_UUID "abcdefab-cdef-1234-5678-abcdefabcdef"
class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
std::string value = pCharacteristic->getValue();
if (value == "ON") {
digitalWrite(LED_PIN, HIGH);
Serial.println("Written \"ON\"");
} else if (value == "OFF") {
digitalWrite(LED_PIN, LOW);
Serial.println("Written \"OFF\"");
}
}
};
class MyServerCallbacks: public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
deviceConnected = true;
Serial.println("ã¹ãã¼ããã©ã³ãæ¥ç¶ããã¾ãã");
}
void onDisconnect(BLEServer* pServer) {
deviceConnected = false;
Serial.println("ã¹ãã¼ããã©ã³ãåæããã¾ãã");
}
};
void setup() {
esp_pm_config_esp32c3_t pm_config = {
.max_freq_mhz = 80,
.min_freq_mhz = 80,
.light_sleep_enable = false
};
esp_pm_configure(&pm_config);
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
BLEDevice::init("M5StampC3");
BLEServer *pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());
BLEService *pService = pServer->createService(SERVICE_UUID);
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setCallbacks(new MyCallbacks());
pService->start();
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->start();
}
void loop() {
}
ãã«ã
ç¹ã«å¤ãã£ããã¨ã¯ãªãã
å
¨ãã«ããã°(ã¯ãªãã¯ã§éã/éãã)
* Executing task: C:\Users\a\.platformio\penv\Scripts\platformio.exe run --environment esp32-c3-devkitm-1
Processing esp32-c3-devkitm-1 (platform: espressif32; board: esp32-c3-devkitm-1; framework: arduino)
---------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-c3-devkitm-1.html
PLATFORM: Espressif 32 (6.9.0) > Espressif ESP32-C3-DevKitM-1
HARDWARE: ESP32C3 160MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-builtin, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
- framework-arduinoespressif32 @ 3.20017.0 (2.0.17)
- tool-esptoolpy @ 1.40501.0 (4.5.1)
- toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 33 compatible libraries
Scanning dependencies...
Dependency Graph
|-- ESP32 BLE Arduino @ 2.0.0
Building in release mode
Compiling .pio\build\esp32-c3-devkitm-1\src\main.cpp.o
Building .pio\build\esp32-c3-devkitm-1\bootloader.bin
Generating partitions .pio\build\esp32-c3-devkitm-1\partitions.bin
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLE2902.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLE2904.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEAddress.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEAdvertisedDevice.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEAdvertising.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEBeacon.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLECharacteristic.cpp.o
esptool.py v4.5.1
Creating esp32c3 image...
Merged 1 ELF section
Successfully created esp32c3 image.
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLECharacteristicMap.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEClient.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEDescriptor.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEDescriptorMap.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEDevice.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEEddystoneTLM.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEEddystoneURL.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEExceptions.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEHIDDevice.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLERemoteCharacteristic.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLERemoteDescriptor.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLERemoteService.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEScan.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLESecurity.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEServer.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEService.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEServiceMap.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEUUID.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEUtils.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEValue.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\FreeRTOS.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\GeneralUtils.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\Esp.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\FirmwareMSC.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\FunctionalInterrupt.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\HWCDC.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\IPAddress.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\IPv6Address.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\MD5Builder.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\Print.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\StreamString.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\USB.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\USBCDC.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\USBMSC.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\WString.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\base64.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\cbuf.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-adc.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-bt.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-cpu.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-dac.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-gpio.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-i2c-slave.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-i2c.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-ledc.c.o
Archiving .pio\build\esp32-c3-devkitm-1\libab4\libBLE.a
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-matrix.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-misc.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-psram.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-rgb-led.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-rmt.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-sigmadelta.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-spi.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-time.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-timer.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-tinyusb.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-touch.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-uart.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\firmware_msc_fat.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\libb64\cdecode.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\libb64\cencode.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\main.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\stdlib_noniso.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\wiring_shift.c.o
Archiving .pio\build\esp32-c3-devkitm-1\libFrameworkArduino.a
Linking .pio\build\esp32-c3-devkitm-1\firmware.elf
Retrieving maximum program size .pio\build\esp32-c3-devkitm-1\firmware.elf
Checking size .pio\build\esp32-c3-devkitm-1\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [= ] 11.8% (used 38700 bytes from 327680 bytes)
Flash: [======== ] 76.0% (used 996042 bytes from 1310720 bytes)
Building .pio\build\esp32-c3-devkitm-1\firmware.bin
esptool.py v4.5.1
Creating esp32c3 image...
Merged 2 ELF sections
Successfully created esp32c3 image.
========================= [SUCCESS] Took 11.39 seconds =========================
* Terminal will be reused by tasks, press any key to close it.
å®è¡
ãã¡ããå¤ãããªãã
ãã®ããã°ã©ã ã«å¤ããã¨ãããåä½ãå®å®ãã¦ãéä¸ã§é»æºãè½ã¡ããããªãã¨ã¯ãªããªã£ãã
ã¹ãã¼ããã©ã³ãæ¥ç¶ããã¾ãã
Written "ON"
ã¹ãã¼ããã©ã³ãåæããã¾ãã
å
¨å®è¡ãã°(ã¯ãªãã¯ã§éã/éãã)
* Executing task: C:\Users\a\.platformio\penv\Scripts\platformio.exe run --target upload --target monitor --environment esp32-c3-devkitm-1
Processing esp32-c3-devkitm-1 (platform: espressif32; board: esp32-c3-devkitm-1; framework: arduino)
---------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-c3-devkitm-1.html
PLATFORM: Espressif 32 (6.9.0) > Espressif ESP32-C3-DevKitM-1
HARDWARE: ESP32C3 160MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-builtin, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
- framework-arduinoespressif32 @ 3.20017.0 (2.0.17)
- tool-esptoolpy @ 1.40501.0 (4.5.1)
- tool-mkfatfs @ 2.0.1
- tool-mklittlefs @ 1.203.210628 (2.3)
- tool-mkspiffs @ 2.230.0 (2.30)
- toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 33 compatible libraries
Scanning dependencies...
Dependency Graph
|-- ESP32 BLE Arduino @ 2.0.0
Building in release mode
Retrieving maximum program size .pio\build\esp32-c3-devkitm-1\firmware.elf
Checking size .pio\build\esp32-c3-devkitm-1\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [= ] 11.8% (used 38700 bytes from 327680 bytes)
Flash: [======== ] 76.0% (used 996042 bytes from 1310720 bytes)
Configuring upload protocol...
AVAILABLE: cmsis-dap, esp-bridge, esp-builtin, esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
Looking for upload port...
Auto-detected: COM3
Uploading .pio\build\esp32-c3-devkitm-1\firmware.bin
esptool.py v4.5.1
Serial port COM3
Connecting....
Chip is ESP32-C3 (revision v0.3)
Features: WiFi, BLE
Crystal is 40MHz
MAC: 68:67:25:b2:d0:54
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00003fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00109fff...
Compressed 13248 bytes to 9562...
Writing at 0x00000000... (100 %)
Wrote 13248 bytes (9562 compressed) at 0x00000000 in 0.5 seconds (effective 225.8 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 146...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (146 compressed) at 0x00008000 in 0.1 seconds (effective 392.2 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 557.7 kbit/s)...
Hash of data verified.
Compressed 1023984 bytes to 556555...
Writing at 0x00010000... (2 %)
Writing at 0x0001bf9c... (5 %)
Writing at 0x0002986e... (8 %)
Writing at 0x00035fe8... (11 %)
Writing at 0x00041164... (14 %)
Writing at 0x000479ec... (17 %)
Writing at 0x0004da46... (20 %)
Writing at 0x00053d3c... (23 %)
Writing at 0x0005a95e... (26 %)
Writing at 0x00061c73... (29 %)
Writing at 0x00067e62... (32 %)
Writing at 0x0006e155... (35 %)
Writing at 0x00075634... (38 %)
Writing at 0x0007c386... (41 %)
Writing at 0x00083042... (44 %)
Writing at 0x00088f57... (47 %)
Writing at 0x0008f411... (50 %)
Writing at 0x00095490... (52 %)
Writing at 0x0009ca56... (55 %)
Writing at 0x000a3617... (58 %)
Writing at 0x000ab214... (61 %)
Writing at 0x000b1915... (64 %)
Writing at 0x000b8202... (67 %)
Writing at 0x000bf2d2... (70 %)
Writing at 0x000c8081... (73 %)
Writing at 0x000cf404... (76 %)
Writing at 0x000d5b56... (79 %)
Writing at 0x000dcb55... (82 %)
Writing at 0x000e355c... (85 %)
Writing at 0x000e98b0... (88 %)
Writing at 0x000ef68c... (91 %)
Writing at 0x000f546a... (94 %)
Writing at 0x000fd618... (97 %)
Writing at 0x0010374e... (100 %)
Wrote 1023984 bytes (556555 compressed) at 0x00010000 in 16.8 seconds (effective 488.8 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
--- Terminal on COM3 | 115200 8-N-1
--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
ESP-ROM:esp32c3-api1-20210207
Build:Feb 7 2021
rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd5810,len:0x438
load:0x403cc710,len:0x90c
load:0x403ce710,len:0x2624
entry 0x403cc710
ã¹ãã¼ããã©ã³ãæ¥ç¶ããã¾ãã
Written "ON"
ã¹ãã¼ããã©ã³ãåæããã¾ãã
ä»æ§æ¹å
éãªæ示ã§çæAIã«ããã°ã©ã ãä½ã£ã¦ããã£ãã®ã§ãã¡ãã£ã¨ä¸ä¾¿ãªã¨ããããã
- å¤ã®æ¸ãè¾¼ã¿ã§ãæååãå
¥åããªãã¨ãããªã(LightBlueã¢ããªã ã¨ãããã©ã«ãã¯"Hex"å
¥åã ã£ãã®ã§ãæååå
¥åããã«ã¯ãæ¥ç¶ãã¨ã«ä¸åº¦å
¥åãã©ã¼ãããè¨å®ãå¿
è¦)
- "ON"ãæ¸ããå¾ã"OFF"ãæ¸ããªãã¨æ¬¡ã®ãã¿ã³ããã·ã¥ãå¹ããªã
ãã¨ã¡ãã£ã¨è¿½å ããããã¨ã
- M5Stampèªä½ã«ãLED(NeoPixelã®ãã®)ãè¼ã£ã¦ããã®ã§ããããå
ãããã
ããã°ã©ã
çæAIã«ä¿®æ£ãã¦ããã£ãããã°ã©ã ã¯ä¸è¨ã®éãã
ä½åº¦ãä½ã£ã¦ããã£ã¦ããããè¦ã¦ãã£ã±ããããªä»æ§ã«ãã¦ããããããã¨ããããåããç¹°ãè¿ããã
çæAIããã®ææ¡ã§ããã¹ãã¿ã³ããã·ã¥ãLEDãé©å½ãªãã¿ã¼ã³ã§ç¹ç¯ã以å¤ã®å¤æ¸ãè¾¼ã¿ãæ¥ãã¨ãããããè²ã³ã¼ãã¨ãã¦LEDãç¹ç¯ãã¦ã¯ã©ãããã¨ããã®ããã£ãã®ã§ãããã«ä¹ã£ãã£ãã
#include <Arduino.h>
#include <esp_pm.h>
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#include <Adafruit_NeoPixel.h>
#define OUTPUT_PIN 4
#define LED_PIN 2
#define NUM_LEDS 1
BLECharacteristic *pCharacteristic;
bool deviceConnected = false;
#define SERVICE_UUID "12345678-1234-5678-1234-56789abcdef0"
#define CHARACTERISTIC_UUID "abcdefab-cdef-1234-5678-abcdefabcdef"
Adafruit_NeoPixel pixels(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
std::string value = pCharacteristic->getValue();
int len = value.length();
Serial.print("åä¿¡ãããã¼ã¿é·: ");
Serial.println(len);
Serial.print("åä¿¡ãã¼ã¿: ");
for (int i = 0; i < len; i++) {
Serial.print("0x");
Serial.print((uint8_t)value[i], HEX);
Serial.print(" ");
}
Serial.println();
if (len == 1) {
uint8_t receivedByte = (uint8_t)value[0];
if (receivedByte == 0x00) {
digitalWrite(OUTPUT_PIN, HIGH);
delay(500);
digitalWrite(OUTPUT_PIN, LOW);
} else if (receivedByte == 0x01) {
for (int i = 0; i < 2; i++) {
pixels.setPixelColor(0, pixels.Color(0, 0, 255));
pixels.show();
delay(250);
pixels.setPixelColor(0, pixels.Color(0, 255, 0));
pixels.show();
delay(250);
}
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
pixels.show();
}
} else if (len == 3) {
uint8_t r = (uint8_t)value[0];
uint8_t g = (uint8_t)value[1];
uint8_t b = (uint8_t)value[2];
pixels.setPixelColor(0, pixels.Color(r, g, b));
pixels.show();
delay(1000);
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
pixels.show();
}
}
};
class MyServerCallbacks: public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
deviceConnected = true;
Serial.println("ã¹ãã¼ããã©ã³ãæ¥ç¶ããã¾ãã");
}
void onDisconnect(BLEServer* pServer) {
deviceConnected = false;
Serial.println("ã¹ãã¼ããã©ã³ãåæããã¾ãã");
}
};
void setup() {
esp_pm_config_esp32c3_t pm_config = {
.max_freq_mhz = 80,
.min_freq_mhz = 80,
.light_sleep_enable = false
};
esp_pm_configure(&pm_config);
Serial.begin(115200);
pinMode(OUTPUT_PIN, OUTPUT);
pixels.begin();
BLEDevice::init("M5StampC3");
BLEServer *pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());
BLEService *pService = pServer->createService(SERVICE_UUID);
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setCallbacks(new MyCallbacks());
pService->start();
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->start();
}
void loop() {
}
NeoPixelã®LEDã使ãããã«ã¯ãããã¸ã§ã¯ãã«ã©ã¤ãã©ãªã®è¿½å ãå¿
è¦ã
nokixa.hatenablog.com
ãã«ã
NeoPixelã®ã©ã¤ãã©ãªã®ã³ã³ãã¤ã«ã追å ããããããã
ã¯ãªãã¯ã§éã/éãã
* Executing task: C:\Users\a\.platformio\penv\Scripts\platformio.exe run --environment esp32-c3-devkitm-1
Processing esp32-c3-devkitm-1 (platform: espressif32; board: esp32-c3-devkitm-1; framework: arduino)
---------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-c3-devkitm-1.html
PLATFORM: Espressif 32 (6.9.0) > Espressif ESP32-C3-DevKitM-1
HARDWARE: ESP32C3 160MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-builtin, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
- framework-arduinoespressif32 @ 3.20017.0 (2.0.17)
- tool-esptoolpy @ 1.40501.0 (4.5.1)
- toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 34 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Adafruit NeoPixel @ 1.12.3
|-- ESP32 BLE Arduino @ 2.0.0
Building in release mode
Compiling .pio\build\esp32-c3-devkitm-1\src\main.cpp.o
Building .pio\build\esp32-c3-devkitm-1\bootloader.bin
Generating partitions .pio\build\esp32-c3-devkitm-1\partitions.bin
Compiling .pio\build\esp32-c3-devkitm-1\lib63c\Adafruit NeoPixel\Adafruit_NeoPixel.cpp.o
esptool.py v4.5.1
Creating esp32c3 image...
Merged 1 ELF section
Successfully created esp32c3 image.
Compiling .pio\build\esp32-c3-devkitm-1\lib63c\Adafruit NeoPixel\esp.c.o
Compiling .pio\build\esp32-c3-devkitm-1\lib63c\Adafruit NeoPixel\esp8266.c.o
Compiling .pio\build\esp32-c3-devkitm-1\lib63c\Adafruit NeoPixel\kendyte_k210.c.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLE2902.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLE2904.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEAddress.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEAdvertisedDevice.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEAdvertising.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEBeacon.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLECharacteristic.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLECharacteristicMap.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEClient.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEDescriptor.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEDescriptorMap.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEDevice.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEEddystoneTLM.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEEddystoneURL.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEExceptions.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEHIDDevice.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLERemoteCharacteristic.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLERemoteDescriptor.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLERemoteService.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEScan.cpp.o
Archiving .pio\build\esp32-c3-devkitm-1\lib63c\libAdafruit NeoPixel.a
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLESecurity.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEServer.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEService.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEServiceMap.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEUUID.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEUtils.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\BLEValue.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\FreeRTOS.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\libab4\BLE\GeneralUtils.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\Esp.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\FirmwareMSC.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\FunctionalInterrupt.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\HWCDC.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\IPAddress.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\IPv6Address.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\MD5Builder.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\Print.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\StreamString.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\USB.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\USBCDC.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\USBMSC.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\WString.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\base64.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\cbuf.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-adc.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-bt.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-cpu.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-dac.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-gpio.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-i2c-slave.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-i2c.c.o
Archiving .pio\build\esp32-c3-devkitm-1\libab4\libBLE.a
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-ledc.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-matrix.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-misc.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-psram.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-rgb-led.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-rmt.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-sigmadelta.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-spi.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-time.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-timer.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-tinyusb.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-touch.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\esp32-hal-uart.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\firmware_msc_fat.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\libb64\cdecode.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\libb64\cencode.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\main.cpp.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\stdlib_noniso.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\esp32-c3-devkitm-1\FrameworkArduino\wiring_shift.c.o
Archiving .pio\build\esp32-c3-devkitm-1\libFrameworkArduino.a
Linking .pio\build\esp32-c3-devkitm-1\firmware.elf
Retrieving maximum program size .pio\build\esp32-c3-devkitm-1\firmware.elf
Checking size .pio\build\esp32-c3-devkitm-1\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [= ] 11.8% (used 38748 bytes from 327680 bytes)
Flash: [======== ] 76.3% (used 999536 bytes from 1310720 bytes)
Building .pio\build\esp32-c3-devkitm-1\firmware.bin
esptool.py v4.5.1
Creating esp32c3 image...
Merged 2 ELF sections
Successfully created esp32c3 image.
========================= [SUCCESS] Took 13.13 seconds =========================
* Terminal will be reused by tasks, press any key to close it.
åä½
LightBlueã¢ããªã§ã¯ã16é²ã®å¤ãæ¸ãè¾¼ã¿ã
6æ¡(3byte)ã®å¤ãæ¸ãã¨ãè²ã³ã¼ãã¨ãã¦èªèããã¦ãM5Stampä¸ã®LEDãç¹ç¯ããã


æå¾
ãããããªãã°è¡¨ç¤ºã
å®éã®LEDãé³å£°ãæå¾
éãã
ã¹ãã¼ããã©ã³ãæ¥ç¶ããã¾ãã
åä¿¡ãããã¼ã¿é·: 1
åä¿¡ãã¼ã¿: 0x0
åä¿¡ãããã¼ã¿é·: 1
åä¿¡ãã¼ã¿: 0x0
åä¿¡ãããã¼ã¿é·: 1
åä¿¡ãã¼ã¿: 0x1
åä¿¡ãããã¼ã¿é·: 1
åä¿¡ãã¼ã¿: 0x1
åä¿¡ãããã¼ã¿é·: 3
åä¿¡ãã¼ã¿: 0x80 0x80 0x80
åä¿¡ãããã¼ã¿é·: 3
åä¿¡ãã¼ã¿: 0x40 0x40 0x40
åä¿¡ãããã¼ã¿é·: 3
åä¿¡ãã¼ã¿: 0x80 0x0 0x80
ã¹ãã¼ããã©ã³ãåæããã¾ãã
åãã¦ããæ§åã

以ä¸
BLEã§ããªãã¨ãããããªã¼ã§åãããã¨ãã§ããã
ãã ãããã§ãã°ããé»æ± ãå
¥ãã£ã±ãªãã«ãã¦ããã¨ãæ°æéã§é»æ± ããªããªã£ã¦ãã¾ã£ã¦ããã
é»æºã¹ã¤ããã ãåãä»ãã¦ããããã
次åã¯ããããã£ã¦ããã
ãããããåä¾ã«æä¾ã§ããå½¢ã«ãªããã