레퍼런스는 다음과 같다.
- Nexus duino I/O expansion 60008
- DFR0088 I/O Expansion Shield for ARDUINO
- Arduino with Bluetooth, Wireless communication
- IO Expansion Shield For Arduino (V5)
- Arduino Shield Manual (DFRobot)
- Arduino I/O Expansion Shield (SKU: DFR0014)
아두이노 확장보드는 다중 모터 구동, 통신 등 다양한 기능을 하나의 보드에 합쳐 놓고, 관련 센서나 액추에이터의 입출력을 손쉽게 하려는 목적에서 개발된 보드이다. 아두이노 확장보드는 몇가지 변종이 있다. 여기서는 많은 센서와 모터가 필요한 로봇, 로버 개발에 편리한 아두이노 입출력 확장 보드를 다룬다.
1. IO Expansion Shield For Arduino (V5) (SKU: DFR0088)
다음 다이어그램은 쉴드 기능을 좀 더 상세히 보여주는 그림이다.
다음은 블루투스 장치를 이용해, 간단히 Serial 로 데이터를 입력받는 블루투스 입력 코드 예 이다. 이를 위해, HC-05, HC-06과 같은 블루투스 장치를 앞의 그림에 보이는 APC220 Bluetooth 단자의 RX, TX, GND, VDD에 연결해야 한다. 연결하면, 시리얼 포트 연결은 안되므로, 먼저 다음 코드를 아두이노 보드에 전송한 후, 블루투스를 연결하자.
다음은 RS485 송신 코드이다.
다음은 RS485 수신 코드이다.
2. Nexus duino I/O expansion 60008
이 글에서는 지난 시간에 언급한 Nexus 4WD Mecanum Wheel Kit 로버 (rover)에 사용한 IO Expansion Shield V1.2 for Arduino 아두이노 확장보드에 대해 다루도록 한다.
이 보드는 다음과 같은 특징이 있다.
1. IO Expansion Shield For Arduino (V5) (SKU: DFR0088)
이 보드는 DFRobot IO expansion board로 알려져 있다. XBee를 지원한다. 아울러, SD카드를 제공해 기능적 확장이 가능하다. 이 보드 다음과 같은 기능을 가진다.
- Motor driver
- Digital input / output
- Analog PWM
- RS485
- Xbee
- Bluetooth
- APC220(쉬운 무선 통신 지원 장치. UART/TTL 인터페이스 지원. 1km 장거리 통신)
- SD card read/write
다음 다이어그램은 쉴드 기능을 좀 더 상세히 보여주는 그림이다.
다음은 블루투스 장치를 이용해, 간단히 Serial 로 데이터를 입력받는 블루투스 입력 코드 예 이다. 이를 위해, HC-05, HC-06과 같은 블루투스 장치를 앞의 그림에 보이는 APC220 Bluetooth 단자의 RX, TX, GND, VDD에 연결해야 한다. 연결하면, 시리얼 포트 연결은 안되므로, 먼저 다음 코드를 아두이노 보드에 전송한 후, 블루투스를 연결하자.
int
ledPin = 13;
void
setup()
{
Serial.begin(115200);
// start serial communication for Bluetooth
}
void
loop() {
if
( Serial.available() )
// if data is available to read
{
val = Serial.read();
// read it and store it in 'val'
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
Serial.println(
"Data received"
)
// Send info back
}
}
당연히, 블루투스 통신을 위해서는, 블루투스를 페어링할 수 있는 안드로이드 스마트 폰이나 패드가 있어야 한다 (보통, 암호는 1234이다). 제대로 페어링 된 후, Bluetooth Terminal과 같은 프로그램으로 글자하나를 보내 보면, 13번 핀에 연결된 LED가 한번 점멸할 것이다.
다음은 RS485 송신 코드이다.
int
EN = 2;
//RS485 has a enable/disable pin to transmit or receive data. Arduino Digital Pin 2 = Rx/Tx 'Enable'; High to Transmit, Low to Receive
void
setup()
{
pinMode(EN, OUTPUT);
Serial.begin(19200);
}
void
loop()
{
// send data
digitalWrite(EN, HIGH);
//Enable data transmit
Serial.print(
'A'
);
delay(1000);
}
다음은 RS485 수신 코드이다.
int
ledPin = 13;
int
EN = 2;
int
val;
void
setup()
{
pinMode(ledPin, OUTPUT);
pinMode(EN, OUTPUT);
Serial.begin(19200);
}
void
loop()
{
// receive data
digitalWrite(EN, LOW);
//Enable Receiving Data
val = Serial.read();
if
(-1 != val) {
if
(
'A'
== val) {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}
}
}
2. Nexus duino I/O expansion 60008
이 글에서는 지난 시간에 언급한 Nexus 4WD Mecanum Wheel Kit 로버 (rover)에 사용한 IO Expansion Shield V1.2 for Arduino 아두이노 확장보드에 대해 다루도록 한다.
이 보드는 다음과 같은 특징이 있다.
- XBee header
- 1 servo external power supply terminal
- 8 analog IO port and power
- 6 PWM interface
- RS485 interface
- Wireless data-transmission interface
- Module size 53 x 70mm
- Weight 33.5g
이 글에서는 아두이노 확장 보드를 간단히 다루어 보았다. 이 확장보드는 로봇, 로버 등을 개발하기 용이하도록 되어 있어, 개발 생상성과 품질을 높여준다.