[ATMEL]/SAMD212017. 12. 25. 03:10

ATSAMD21 Arduino M0 보드 테스트 - I2C SHT20 온습도 센서 테스트

ATSAMD21 Arduino M0 보드 테스트 - I2C SHT20 온습도 센서 테스트





ATSAMD21의 I2C 테스트를 Arduino 코드(I2C 라이브러리)를 이용해서 테스트 진행 해 보았다.

Arduino 보드의 최대 장점은 하드웨어에 독립적으로 다양한 예제들을 사용할 수 있다는 점. 


I2C도 기본 라이브러리에 포함되어 있고 그냥 가져다 쓰면 된다.


I2C를 테스트 해 보기 위해 기존에 제작해 두었던 온습도 센서 모듈 SHT20를 적용하여 온습도를 출력하는 예제를 테스트 했다.




우선 하드웨어 적으로 다양한 센서 및 확장 테스트 보드를 사용할 수 있는 표준 핀맵의 Arduino 확장 테스트 보드를  Aruino M0 보드에 장착한다.


STH20 센서는 기존에 제작 해 두었던 Sensor100 SSM 보드를 이용하였다.







소프트웨어 적으로 Arduino의 라이브러리 관리 에서 STH20을 검색해서 나오는 uFire SHT20 예제 코드를 설치 해서 테스트 했다.






SHT21 Arduino 기본 테스트 예제코드

#include "uFire_SHT20.h"

uFire_SHT20 sht20;


void setup()

{

  Serial.begin(9600);

  Wire.begin();

  sht20.begin();

}


void loop()

{

  sht20.measure_all();

  Serial.println((String)sht20.tempC + "°C");

  Serial.println((String)sht20.tempF + "°F");

  Serial.println((String)sht20.dew_pointC + "°C dew point");

  Serial.println((String)sht20.dew_pointF + "°F dew point");

  Serial.println((String)sht20.RH + " %RH");

  Serial.println((String)sht20.vpd() + " kPa VPD");

  Serial.println();

  delay(5000);

}





SHT20 기본 예제 코드 실행하면 정상적으로 SHT20의 온습도 값을 출력 해 주는것을 확인 할 수 있다.



Posted by nexp

댓글을 달아 주세요

[ATMEL]/SAMD212017. 12. 14. 07:12

ATSAMD21 Arduino M0 보드 테스트 - 시리얼 포트

ATSAMD21 Arduino M0 보드 테스트 - 시리얼 포트

Arduino 기본 예제로 시리얼 포트 출력을 해 봤는데... 정상 출력이 안된다.
무엇이 문제 일까?

void setup() {
  Serial.begin(115200);
}


void loop() {
  // read the analog in value:
  sensorValue = analogRead(A0);

  Serial.println(sensorValue);

  delay(200);
}


자료를 찾아보니 Arduino Zero 는 3개의 시리얼 포트를 사용할 수 있고 SDAMD21의 USB 를 이용한 CDC 포트는 SerialSUB 라는 클래스 이름으로 등록 되어 있고 UART0 ( PA10(TX), PA11(RX))는  Seial1으로 등록되어 있다.




초기화시에 필요한 UART를 등록해서 사용하면 된다.



void setup() 
{
  // initialize serial communications at 9600 bps:
  
  Serial1.begin(9600);   //PA10(TX), PA11(RX)
  
  SerialUSB.begin(9600); //SAMD21 CDC native serial
}


void loop() {
  // read the analog in value:
  sensorValue = analogRead(A0);

  Serial1.print(sensorValue);
  SerialUSB.println(sensorValue);

  delay(200);
}

Posted by nexp

댓글을 달아 주세요

[ATMEL]/SAMD212017. 12. 13. 07:57

ATSAMD21 Arduino M0 보드 테스트 - 부트로더 다운로드하기

ATSAMD21 Arduino M0 보드 테스트 - 부트로더 다운로드하기


ATSAMD21 Arduino M0보드를 새로 제작해서 M0보드 부트로드 다운로드 했는데.. 에러가 발생한다.


Severity:        ERROR
ComponentId:    20100
StatusCode:    131106
ModuleName:    TCF command: Modules:add failed.

Unable to parse objectfile D:\WORK\project\2020\ELAB\TEST\samd21j\Bootloader_D21_M0_150515.hex: Unsupported format.


찾아보니 hex파일 끝에 케리지 리턴이 입력되어 있어 그렇다고 하고 열어서 지워 주니 잘 동작 한다.






기존 SAMD21 보드로 Atmel Studio7에서 다운로드 해 봐도 하면 에러가 발생한다.


기존에 잘 테스트 했었던 것인데 왜 안될까?
부트 옵션인것 같긴한데...

이번에 새로 제작한 Arduino M Zero보드에 새칩을 테스트 해 보니 잘 동작한다.

부트 옵션이 차이가 있는것 같다. 

USER_WORD_0_.NVMCTRL_BOOTROT을 16384Byte로 설정해 주니 문제가 없다








Posted by nexp

댓글을 달아 주세요

[ATMEL]/SAMD212017. 12. 12. 05:24

ATSAMD21 Arduino M0 보드 제작

ATSAMD21 Arduino M0 보드 제작

AT91SAMD21J18을 이용하여 Adruino 형태의 보드를 제작 했다.

Arduino M0 핀맵과 동일하게 제작해서 M0 보드로 활용 가능하도록 했다.



기본은 Arduino M0 보드를 기준으로 하고  몇가지 부가 기능들을 좀 추가 하여 여러가지 용도로 테스트 할수 있도록 제작 하였다.




아두이노 에서 ATSAMD21 M0보드 설정하기

기본 부트로드를 다운로드 한 후 아두이노 보드메니저에서 Arduino M0 Pro(Native USB Port)를 설정해 주면된다.




기본 세팅은 테스트 되었고 이제 아두이노용으로 제작한 다양한 확장 실드 보드로 테스트 하면 좋을것 같다.


Posted by nexp

댓글을 달아 주세요

[ATMEL]/SAMD212016. 2. 28. 16:13

Arduino Zero - Serial 어디에 정의 되어 있을까?

Arduino Zero - Serial 어디에 정의 되어 있을까?




Arduino Zero는 SAMD21 MCU이므로 6채널의 SERCOM 있다. UART 채널을 추가 하거나 변경하려고 보니 어디에 Serial 설정이 되어 있는지 정리할 필요가 있을것 같다.


Uart.h 에  Serial 관련 클래스가 할당되어 있다.

extern Uart Serial;

extern Uart Serial5;



기본은 PA10, PA11에 설정되어 있다.

typedef enum

{

UART_TX_PAD_0 = 0x0ul, // Only for UART

UART_TX_PAD_2 = 0x1ul, // Only for UART

UART_TX_RTS_CTS_PAD_0_2_3 = 0x2ul, // Only for UART with TX on PAD0, RTS on PAD2 and CTS on PAD3

} SercomUartTXPad;




void Uart::begin(unsigned long baudrate, uint8_t config)

{

  pinPeripheral(uc_pinRX, g_APinDescription[uc_pinRX].ulPinType);

  pinPeripheral(uc_pinTX, g_APinDescription[uc_pinTX].ulPinType);


sercom->initUART(UART_INT_CLOCK, SAMPLE_RATE_x16, baudrate);

sercom->initFrame(extractCharSize(config), LSB_FIRST, extractParity(config), extractNbStopBit(config));

sercom->initPads(UART_TX_PAD_2, SERCOM_RX_PAD_3);

sercom->enableUART();

}



Arduino Zero는 PA10, PA11에 UART가 설정되어 있다. 추가나 수정은 UART클래스를 이용하면 쉽게 설정 가능하다.

PA11 D0 SERCOM0.3 SERCOM2.3

PA10 D1 SERCOM0.2 SERCOM2.2






Posted by nexp

댓글을 달아 주세요