개발자/Arduino

Arduino Nano 33 IoT - Ultimate Guide

지구빵집 2020. 9. 7. 12:11
반응형

 

 

이 가이드의 목적은 프로젝트에서 Arduino Nano 33 IoT를 사용하는데 필요한 주요 정보를 모으는 것입니다. 이 가이드를 작성할 당시 Arduino Nano 33 IoT는 시장에서 상당히 새롭고 인터넷에서 사용할 수 있는 정보가 많지 않았습니다.

 

보드에 대한 정보가 부족하여 약간 실망했고 여기서 대부분의 통찰력은 실험에서 알아낸 것으로 이 가이드를 작성했습니다. 일부 정보는 다른 웹 사이트에서도 제공되며,이 경우 해당 리소스는 섹션에서 언급합니다. 이 정도로 요약이 잘 되고 실질적인 문서는 찾아보기 힘들죠. 본 가이드의 출처는 Arduino Nano 33 IoT - Ultimate Guide이고 번역하여 올립니다. 문제가 될 경우 알려주시면 즉시 조치하겠습니다.

 

Arduino Nano 33 IoT에 대한 공식 빠른 시작 가이드는 Arduino 웹 사이트에서 제공합니다.

 

Arduino Nano 33 IoT는 입력 및 출력 (IO 핀)에 3.3V 만 지원하며 대부분의 다른 Arduino 보드와 같이 5V를 허용하지 않습니다. IO 핀에 3.3V 이상을 연결하면 보드가 손상됩니다.

 

핀아웃은 클래식 Arduino Nano 핀아웃과 호환됩니다. 클래식 5V 핀은 기본적으로 연결되어 있지 않으며 VUSB 점퍼를 연결하지 않으면 전원을 공급하지 않습니다.

 

핀 A4 및 A5에는 내부 풀업이 있으며 I2C 버스로 사용하도록 설계되었습니다. 따라서 A4 및 A5를 아날로그 입력으로 사용하지 않는 것이 좋습니다. 

 

Unofficial Arduino Nano 33 IoT pinout diagram 

 

https://github.com/ostaquet/Arduino-Nano-33-IoT-Ultimate-Guide

 

유용한 가이드로는 다음과 같은 자료가 있습니다.
Unofficial Arduino Nano 33 IoT pinout diagram (PDF)
Official pinout diagram (PDF)
Official datasheet of Atmel SAMD21G 

 

어떤 핀을 외부 인터럽트로 사용할 수 있을까요?

 

아래 핀은 Nano 33 IoT에서 attachInterrupt( )와 함께 인터럽트 입력으로 사용할 수 있습니다. 이 정보의 출처는 이 링크를 참고하세요.

                                                                

Board PIN Internal PIN
A1 15
A5 19
A7 21
D2 2
D3 3
D9 9
D10 10
D11 11

 

Arduino nano 33 IoT의 파워는?

 

Arduino Nano 33 IoT는 작동 전압이 3.3V 인 동안 USB 커넥터 (5V) 또는 Vin 핀 (4.5V-21V)을 통해 전원을 공급받을 수 있습니다. 그러나 공급 전압은 사용량에 따라 달라지는 것 같습니다. 이 주제에 대한 Arduino 포럼에 대한 토론이 있습니다. 

 

전원 공급 장치 및 전압 당 피크 전류 소비에 관한 아래 실험 결과를 참조하십시오. 

 

 

아래 프로그램은 임베디드 모듈의 전력 소비를 테스트하는 데 사용되었습니다.

  • Sleep : 워치 독을 사용하여 보드를 유휴 상태로 설정 (아래의 절전 방법 섹션 참조)
  • BareMinimum : Arduino IDE의 기본 제공 예제에 포함된 작업만 수행하십시오.
  • Blink : Arduino IDE의 내장 예에 포함 된 내부 LED를 깜박입니다.
  • IMU_ShakeDetector : IMU를 사용하여 내부 LED (소스 코드)에서 가속 및 빛을 감지합니다.
  • Wifi_BasicScanNetworks : Wi-Fi를 사용하여 네트워크를 스캔하고 사용 가능한 네트워크가 있는 경우 내부 LED에 불이 들어옵니다 (소스 코드).
  • Wifi_HTTPS_GET : Wi-Fi를 사용하여 SSL이 활성화 된 www.google.com 페이지를 가져오고 모든 것이 정상이면 내부 LED가 켜집니다 (소스 코드). 

 

Arduino Nano 33 IoT에서 5V 출력을 활성화하는 방법은 무엇입니까?

 

Arduino Nano 33 IoT에는 기본적으로 배선되지 않은 5V 핀이 있습니다. 프로젝트에 5V가 필요하고 USB를 통해 전원을 공급하는 경우 VUSB 점퍼를 연결하여 VUSB 핀에서 5V 전원 공급을 활성화할 수 있습니다. 이를 위해 보드에 VUSB 점퍼를 납땜하면 됩니다.

 

solder the VUSB jumper

 

Arduino Nano 33 IoT에 VUSB 점퍼를 납땜하는 방법: 이 핀을 통해 보드에 전원을 공급할 수 없다는 점에 유의하십시오. USB로 전원을 공급받는 외부 구성 요소에 편리한 5V 만 있으면 됩니다. USB 잭을 통해 보드에 전원을 공급하지 않으면이 핀에서 0V로 유지됩니다.

 

Arduino Nano 33 IoT로 전력을 절약하는 방법은 무엇입니까?

 

Arduino Nano 33 IoT로 전력을 절약하기 위해 권장되는 접근 방식이 있습니다.

 

Arduino Nano 33 IoT에서 Wi-Fi를 사용하는 방법은 무엇입니까?

 

Arduino Nano 33 IoT에 내장된 Wifi 모듈은 인기 있는 NINA W102 ESP32 기반 모듈입니다. 2.4 GHz 대역에서 Wifi 802.11 b / g / n 및 Bluetooth v4.2 (Bluetooth BR / EDR 및 Bluetooth 저에너지 BLE)를 지원합니다. 이 모듈은 공식 WiFiNINA 라이브러리와 완벽하게 호환됩니다.

 

Arduino IDE에 공식 라이브러리를 설치하려면 Tools-> Manage Libraries ... 메뉴로 이동합니다. 라이브러리 관리자에서 WifiNINA를 검색하고 Arduino by WiFiNINA를 설치합니다.

 

WifiNINA를 검색하고 Arduino by WiFiNINA를 설치

 

Useful ressources:

 

Arduino Nano 33 IoT에서 관성 측정 장치 (IMU)를 사용하는 방법은 무엇입니까?

 

Arduino Nano 33 IoT에 내장된 IMU는 LSM6DS3입니다. 3 축 가속도계와 3 축 자이로 스코프로 구성됩니다. Arduino Nano 33 IoT의 LSM6DS3는 슬레이브 주소 0x6A의 I2C 버스를 통해 쉽게 사용할 수 있습니다. 

 

There are two handy libraries to use the IMU:

 

공식 Arduino LSM6DS3 라이브러리 (기본 사용법)

 

Arduino IDE에 공식 라이브러리를 설치하려면 Tools-> Manage Libraries ... 메뉴로 이동합니다. 라이브러리 관리자에서 LSM6DS3를 검색하고 Arduino_LSM6DS3를 설치합니다.

 

Arduino LSM6DS3 라이브러리 설치

 

The usage is described on the official Arduino website. 라이브러리를 사용한 간단한 사용 예제를 참고합니다.

 

Sparkfun LSM6DS3 라이브러리 (고급 사용)

 

Arduino IDE에 공식 라이브러리를 설치하려면 도구-> 라이브러리 관리 ... 메뉴로 이동합니다. 라이브러리 관리자에서 LSM6DS3를 검색하고 SparkFun Electronics의 SparkFun LSM6DS3 Breakout을 설치합니다.

 

SparkFun Electronics의 SparkFun LSM6DS3 Breakout을 설치

 

사용법은 라이브러리의 GitHub 페이지에 설명되어 있습니다. 이 라이브러리는 다음과 같은 고급 기능을 제공합니다.

  • I2C 채널 및 SPI에서 다중 인스턴스를 통한 사용.
  • 원시 값을 의미 있는 데이터로 변환하는 수학 함수가 있는 추가 드라이버.
  • 데이터 버스트 수집을 위한 내장 버퍼 사용.
  • 이 라이브러리를 사용할 때 I2C 주소를 0x6A로 변경하는 것을 잊지 마십시오 (기본적으로 SparkFun 모듈 주소는 0x6B). 미니멀 한 예제의 변경 사항은 드라이버 초기화에 있습니다.
  • 라인 : LSM6DS3 myIMU;
  • 다음으로 변경해야 합니다. LSM6DS3 myIMU (I2C_MODE, 0x6A); 

 

어떻게 씨리얼 포트를 사용할 수 있는지 설명합니다. How to use serial communication? (Why there is no SoftwareSerial.h in the Arduino Nano 33 IoT?) 

 

Arduino Nano 33 IoT에는 SoftwareSerial.h가 필요하지 않기 때문에 사용할 수 없습니다. 이 보드는 훨씬 더 많은 기능을 제공합니다. 다른 핀에 할당할 수 있는 하드웨어 시리얼.

 

이 기능은 마이크로 컨트롤러 Atmel SAMD21G에서 제공하며 I / O 멀티플렉싱이라고 합니다 (자세한 내용은 Atmel SAM D21E / SAM D21G / SAM D21J 데이터 시트의 21 페이지 참조). 마이크로 컨트롤러는 거의 모든 핀에 할당할 수 있는 6 개의 SERCOM을 제공합니다.

 

일부 SERCOM은 이미 Arduino Nano 33 IoT에서 사용됩니다. 

 

· SERCOM2 for SPI NINA
· SERCOM3 for MOSI/MISO
· SERCOM4 for I2C bus
· SERCOM5 for Serial debugging (USB) 

 

우리는 여전히 SERCOM0과 SERCOM1을 가지고 있습니다.

 

핀 할당에 대한 자세한 내용은 variant.cpp 및 variant.h 파일에 설명되어 있습니다. Arduino는 오픈 소스이므로 SAMD 보드 용 GitHub 저장소에서 쉽게 찾을 수 있습니다.

 

Arduino Nano 33 IoT의 경우 핀 할당은 다음에 설명되어 있습니다.

 

variant.cpp를 읽으면 핀 할당, 특히 SAMD 핀 (PAxx 또는 PBxx)과 Arduino 핀 간의 링크를 이해합니다.

 

SAMD 핀은 데이터 시트 Atmel SAM D21E / SAM D21G / SAM D21J의 PORT Function Multiplexing과 연결하는 데 중요합니다.

 

SERCOM은 클래식 또는 대체가 될 수 있습니다. 데이터 시트에서 클래식은 C 열에 있고 대체는 D 열에 있습니다. SERCOM은 인덱스와 패드로 정의됩니다. 예 : SERCOM0 / PAD [3]는 0.3이라고도 합니다.

 

비고: 패드는 RX에 대해 0에서 3까지 정의되지만 TX는 0과 2에서만 정의됩니다. 사용할 핀을 선택할 때 중요한 고려 사항입니다. 참고로 할당할 SERCOM을 선택하는 데 사용한 표 아래를 참조하십시오.

 

SERCOM을 선택하는 데 사용한 표

 

충분한 이론, 해결책을 찾으십시오.

Arduino Nano 33 IoT의 핀 5 (RX) 및 6 (TX)에 하드웨어 직렬을 추가합니다.

 

#include <Arduino.h>
#include "wiring_private.h"

Uart mySerial (&sercom0, 5, 6, SERCOM_RX_PAD_1, UART_TX_PAD_0);

// Attach the interrupt handler to the SERCOM
void SERCOM0_Handler()
{
    mySerial.IrqHandler();
}

void setup() {
  // Reassign pins 5 and 6 to SERCOM alt
  pinPeripheral(5, PIO_SERCOM_ALT);
  pinPeripheral(6, PIO_SERCOM_ALT);

  // Start my new hardware serial
  mySerial.begin(9600);
}

void loop() {
  // Do something with mySerial...
}

 

또 다른 예는 Arduino Nano 33 IoT의 핀 13 (RX) 및 8 (TX)에 하드웨어 직렬을 추가하는 것입니다.

 

#include <Arduino.h>
#include "wiring_private.h"

Uart mySerial (&sercom1, 13, 8, SERCOM_RX_PAD_1, UART_TX_PAD_2);

// Attach the interrupt handler to the SERCOM
void SERCOM1_Handler()
{
    mySerial.IrqHandler();
}

void setup() {
  // Reassign pins 13 and 8 to SERCOM (not alt this time)
  pinPeripheral(13, PIO_SERCOM);
  pinPeripheral(8, PIO_SERCOM);

  // Start my new hardware serial
  mySerial.begin(9600);
}

void loop() {
  // Do something with mySerial...
}

 

헥헥~ 드디어 정리. 정말 쌈박하게 정리 잘하셨다. 진짜 궁극의 가이드라 불러도 손색이 없다. 난 언제쯤 이런 문서를 작성하게 될까?

 

여기까지 하고 놀러 나가야 하는 데 사회적 거리두기 2.5단계에다가 9월 13일까지 일주일 더 연장한다. 태풍 마이삭이 물러가자마자 다른 태풍 하이선이 몰아닥친다. 피해가 많이 없길 바란다. 그러고 보니 놀러 갈 데가 없다. 조심하고 또 조심하여 끝까지 잘 버티길 바란다.

 

 

참고 자료

아두이노 M0( SAMD21G )에서 새로운 serial 만들기 

wiring_private.h 파일 깃허브 

Creating a new Serial 

본 자료 궁극의 가이드

 

 

 

 

 

반응형