ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • With Arduino NANO ESP32 (ESP32-S3)
    조립 & 하드웨어 2023. 7. 24. 00:26

    Arduino NANO ESP32 + LTE CATM1 내장형모뎀

     

    Arduino 정식 ESP32 보드가 출시되었습니다.

    NANO ESP32 (Product Reference Manual)

    이전까지 정식 출시된 Arduino 보드에는 ESP32를 WIFI/BT Connectivity 모듈로 Main MCU + ESP32 형태로 출시했지만 이번엔 별도의 MCU 없이 ESP32의 최신 코어인 ESP32-S3로 Arduino 정식 보드 타이틀 제품이 나왔습니다.

     

    블록 다이어그램을 살펴보면 아래와 같습니다. 

    Arduino NANO ESP32 Block Diagram

    ESP32-S3 코어 기반으로 제작된 Ublox NORA-W106-10B 모듈과 Quad SPI 16MB Flash Memory, USB-C Connector, RGB LED, SCK LED, Power LED, Reset Button으로 구성되어 있습니다.

     

    NORA-W106-10B 모듈은 Octal SPI 8MB of embedded PSRAM 내장되어 있습니다.

    Arduino NANO ESP32 전원회로

    보드 전원은 USB-C Connector로 5V를 공급받거나, VIN으로 6V ~ 21V 전원을 공급받아서 MP2322GQH 스위칭 레귤레이터로 3.3V 전원을 만들어서 보드에 제공하도록 구성되어 있습니다.

     

    Arduino NANO ESP32 보드는 현재 판매하는 ESP32 보드와 큰 차이가 있는데, UART(시리얼)로 펌웨어를 업로드하지 않고 USB로 직접 펌웨어를 업데이트하는 DFU(Device Firmware Update)가 적용되어 있습니다. USB TTL 부품을 줄일 수 있어 심플한 방법이지만, 이로 인해서 펌웨어 업데이트 후 Serial 출력이 되지 않는 경우가 종종 있습니다. 그럴 경우에는 USB를 보드에서 뽑았다가 다시 연결해 줘야 합니다.

     

    Arduino NANO ESP32를 사용하기 위해 아래와 같이 Board Manager를 설정합니다. Arduino IDE 2.1.1을 사용했습니다.  

    BOARDS MANAGER --> nano esp32 --> INSTALL

    보드 패키지를 인스톨하면 아래와 같이 꽤 많은 패키지들을 인스톨합니다. 

    arduino esp32 package install

    패키지 인스톨이 완료되었습니다.

    Platform arduino:esp32@2.0.10 installed

    Arduino NANO ESP32 보드를 PC에 연결 후 보드를 선택합니다. 

    이제 LTE CATM1 내장형 모뎀을 동작시키기 위해 아래와 같이 TYPE1SC_Basic_test 예제를 불러옵니다.

    Examples --> TYPE1SC-main --> Arduino_New_Nano --> TYPE1SC_Basic_test 선택

    코드를 수정하지 않고 Upload 합니다.

    Compile sketch
    Firmware Upload

    업로드 후 동작시키면 정상 동작 되지 않습니다. (!!!)

    이유는 D0, D1이 Serial1으로 등록되어 있지 않기 때문입니다. 

    아래와 같이 코드를 수정합니다. 

    M1Serial.begin(115200, SERIAL_8N1, D0, D1);

    수정 후 다시 Upload 하면 아래와 같이 정상 동작하는 것을 확인할 수 있습니다.

    정상동작!!

    한 가지만 더 진행해 보도록 하겠습니다.

    Arduino NANO ESP32 보드의 경우 RGB LED가 보드에 내장되어 있습니다. 

    회로를 보면 3.3V 아래로 Red(GPIO46), Blue(GPIO45), Green(GPIO0)이 연결된 것을 확인할 수 있습니다.

    따라서 각각의 I/O에 아날로그 설정값을 255에서 0으로 줄일수록 해당 컬러가 밝게 켜지는 것을 알 수 있습니다. 

    GPIO46(RED), GPIO45(BLUE), GPIO0(GREEN)

    그런데(!!) 여기서 해당 GPIO의 번호를 넣어서 동작시키려고 하면 절대 동작되지 않습니다. 이유는 해당 GPIO번호를 이미 Arduino PIN으로 매핑해놓았기 때문입니다. 아래 보드 데이터 시트 내용을 확인해 보겠습니다.

    GPIO46은 14, GPIO0은 15, GPIO45는 16에 매핑되어 있습니다. 

    해당 번호를 사용해야 RGB LED를 제어할 수 있습니다. 

     

    컬러설정은 위에서 설명한 것처럼 값이 작아질수록 밝아진다고 했으므로 혼동할 우려가 있어서

    아래와 같이 map 함수를 적용해서 일반적인 RGB값 설정을 적용할 수 있도록 수정했습니다.

    void setColor(int red, int green, int blue)
    {
      int _red, _green, _blue;
      _red = map(red, 0, 255, 255, 0);
      _green = map(green, 0, 255, 255, 0);
      _blue = map(blue, 0, 255, 255, 0);
     
      analogWrite(RED_PIN, _red);
      analogWrite(GREEN_PIN, _green);
      analogWrite(BLUE_PIN, _blue);
     
     
    setColor 함수는 정상적인 컬러 설정값이 들어오면 map 함수로 순서를 반대로 바꿔서 컬러값을 적용하도록 했습니다.  
    void changeColor()
    {
      int randomColor = random(0, 8);
      while (randomColor == currentColor)
        randomColor = random(0, 8);
      currentColor = randomColor;

      if (currentColor == 1) { setColor(0,255,255);   Serial.println(" [cyan]"); }
      if (currentColor == 2) { setColor(255,0,255);   Serial.println(" [magenta]"); }
      if (currentColor == 3) { setColor(255,255,0);   Serial.println(" [yellow]"); }
      if (currentColor == 4) { setColor(0,0,255);     Serial.println(" [blue]"); }
      if (currentColor == 5) { setColor(255,0,0);     Serial.println(" [red]"); }
      if (currentColor == 6) { setColor(0,255,0);     Serial.println(" [green]"); }
      if (currentColor == 7) { setColor(255,255,255); Serial.println(" [white]"); }
    }
     
    changeColor 함수는 1~7사이의 랜덤한 수를 생성해서 아래와 같은 컬러를 적용하도록 했습니다. 
     
    최종 구현은 첨부한 소스코드를 참고하시기 바랍니다.
     

    TYPE1SC_Basic_test_nano_esp32.ino
    0.00MB

    동작영상

     

    Murata Type1SC 모듈 구매, 자료 관련 문의
    (주)아성코리아
    전지만 이사 010-5418-8812 mlcc@asung.com
    박상인 수석 010-6556-5405 sipark@asung.com

    LTE-CATM1 내장형 모뎀 대량 구매 상담, 외주 개발, 협업 문의
    (주)코드주
    장병남 대표 010-8965-1323 rooney.jang@codezoo.co.kr

     

    https://mechasolution.com/shop/goods/goods_view.php?goodsno=604159&category=

     

    https://www.devicemart.co.kr/goods/view?no=14077527

     

    LTE-CatM1 내장형 모뎀 / 사물인터넷 통신모듈

    사물인터넷 개발을 위한 LTE 모듈입니다. / CodeZoo / 사물인터넷 통신모듈 / 유심은 상품상세의 링크에서 별도 구매가 필요합니다.

    www.devicemart.co.kr

    https://smartstore.naver.com/codezoo/products/7153689192

     

    Vodafone Global IoT SIM Card : codezoo

    [codezoo] IoT Global SIM, IoT Connectivity, IoT Device

    smartstore.naver.com

     

Designed by Tistory.