Skip to the content.

ESP32-C3 DevKitM 1 Dual USB

ESP32-C3 Dual USB

Mô tả

Lập trình

  #define BOOT_BUTTON_PIN   9  # Nút bấm Boot để nạp nạp code khi khởi động, hoặc cho mục đích tùy ý sau đó
  #define LEDRGB_PIN        8  # Đèn  LED 3 màu WS2812
  #define TX_PIN           21  # Chân TX mặc định, kèm đèn led đỏ
  #define RX_PIN           20  # Chân TX mặc định, kèm đèn led xanh
  #define RED_LED_PIN      21  # Chân TX mặc định, kèm đèn led đỏ
  #define BLUE_LED_PIN     20  # Chân TX mặc định, kèm đèn led xanh

Với Arduino IDE:

Với Visual Studio Code

Thông số chi tiết

esp32-c3 devkit m1 pinout

Demo với SPI

Thử nghiệm thành công việc đổi các chân pin SPI để chứng minh rằng ESP32-C3 có thể tùy ý lây bất cứ chân nào làm SPI.

Ví dụ cách 1: Cách gán chân SPI 1 Ví dụ cách 2: Cách gán chân SPI 2

Chú ý:

Cấu hình board PlatformIO\

  [env:esp32-c3-devkitm-1]
  build_type = release
  platform = espressif32
  board = esp32-c3-devkitm-1
  framework = arduino
  debug_tool = esp-builtin
  monitor_speed = 115200
  lib_deps = 
    miguelbalboa/MFRC522@^1.4.10
  
Code mẫu:\

  ```C
    #include <Arduino.h>
    #include <SPI.h>
    #include <MFRC522.h>
    
    //  Các tổ hợp vị tri SPI đã thử thành công
    #define SS_PIN   5  // 19 //  19 // 10     //SS/SDA
    #define SCLK_PIN 4  // 18 //  18 //  6   
    #define MOSI_PIN 18 // 5 //  5  //  7   
    #define MISO_PIN 19 // 4 //  4  //  2   
    #define RST_PIN   0 // 0 //  0  //  0         
    
      
    MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
    MFRC522::MIFARE_Key key; 
    // Init array that will store new NUID 
    byte nuidPICC[4];
    
    /**
      * Helper routine to dump a byte array as hex values to Serial. 
      */
    void printHex(byte *buffer, byte bufferSize) {
      for (byte i = 0; i < bufferSize; i++) {
        Serial.print(buffer[i] < 0x10 ? " 0" : " ");
        Serial.print(buffer[i], HEX);
      }
    }
    /**
      * Helper routine to dump a byte array as dec values to Serial.
      */
    void printDec(byte *buffer, byte bufferSize) {
      for (byte i = 0; i < bufferSize; i++) {
        Serial.print(buffer[i] < 0x10 ? " 0" : " ");
        Serial.print(buffer[i], DEC);
      }
    }
    void setup() { 
      Serial.begin(9600);
      //SPI.begin(); // Init SPI bus
      SPI.begin(SCLK_PIN, MISO_PIN, MOSI_PIN, SS_PIN);
      rfid.PCD_Init(); // Init MFRC522 
      for (byte i = 0; i < 6; i++) {
        key.keyByte[i] = 0xFF;
      }
      Serial.println(F("This code scan the MIFARE Classsic NUID."));
      Serial.print(F("Using the following key:"));
      printHex(key.keyByte, MFRC522::MF_KEY_SIZE);
    }
      
    void loop() {
      // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
      if ( ! rfid.PICC_IsNewCardPresent())
        return;
      // Verify if the NUID has been readed
      if ( ! rfid.PICC_ReadCardSerial())
        return;
      Serial.print(F("PICC type: "));
      MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
      Serial.println(rfid.PICC_GetTypeName(piccType));
      // Check is the PICC of Classic MIFARE type
      if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI && 
        piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
        piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
        Serial.println(F("Your tag is not of type MIFARE Classic."));
        return;
      }
      if (rfid.uid.uidByte[0] != nuidPICC[0] || 
        rfid.uid.uidByte[1] != nuidPICC[1] || 
        rfid.uid.uidByte[2] != nuidPICC[2] || 
        rfid.uid.uidByte[3] != nuidPICC[3] ) {
        Serial.println(F("A new card has been detected."));
        // Store NUID into nuidPICC array
        for (byte i = 0; i < 4; i++) {
          nuidPICC[i] = rfid.uid.uidByte[i];
        }
        
        Serial.println(F("The NUID tag is:"));
        Serial.print(F("In hex: "));
        printHex(rfid.uid.uidByte, rfid.uid.size);
        Serial.println();
        Serial.print(F("In dec: "));
        printDec(rfid.uid.uidByte, rfid.uid.size);
        Serial.println();
      }
      else Serial.println(F("Card read previously."));
      // Halt PICC
      rfid.PICC_HaltA();
      // Stop encryption on PCD
      rfid.PCD_StopCrypto1();
  }

Demo với I2C

esp32-c3 devkitm i2c

Porting trong mã nguồn như sau\

  // Giao tiếp I2C
  #define I2C_SCL 2
  #define I2C_SDA 3
  void setup() {
    Wire.begin(I2C_SDA, I2C_SCL);
  }

Thiết kế board

Mua sắm