Модуль расширения позволяет подключить к Arduino несколько каналов проводной и беспроводной связи, а также множество датчиков, моторов дисплеев и других устройств. Для этого предусмотрены соединители UART, I2C, RS485 и контакты цифровых и аналоговых сигналов. Есть контакты для подключения модулей радиосвязи. На плате смонтированы вилки для установки
модулей Xbee. Предусмотрена возможность подключения
модуля SD карты. Имеетcя кнопку сброса и средства индикации.
Характеристики Питание 5 В
Индикация На плате установлен индикатор состояния цифрового контакта D13 имеющего вторую функцию – линия SCK интерфейса SPI. Второй светодиод связан с модулем Xbee.
Контакты Funduino Xbee sensor shield V5 Funduino Xbee sensor shield V5 установлен в соединители Arduino. В контакты модуля расширения sensor shield V5 установлен модуль Bluetooth модуль Xbee.
Digital pins – контакты цифровых сигналов 0…13. Возле каждого цифрового контакта расположены контакт питания VCC и контакт общего провода. Линия питания VCC соединена с диодом подключенным к полюсу + клеммы External power. Контакт цифрового сигнала и контакты питания образуют подгруппу из трех контактов. К каждой подгруппе подключается датчик, электродвигатель или другое устройство обеспечиваемое питанием от Funduino Xbee sensor shield V5.
Кроме цифрового сигнала принимаемого или передаваемого на порт микроконтроллера сигнальные линии имеют функции перечисленные в таблице.
RS485 – винтовая клемма из четырех контактов. В работе интерфейса RS485 участвуют контакты А, B и GND. Также клемма содержит контакт питания.
APC220 – промаркирован APC&BT. Соединитель предназначен для подключения модуля радиосвязи
APC220 или модуля Bluetooth.
Перемычки Выбирается связь через интерфейс RS485 или через соединитель APC&BT. Три перемычки переставляются одновременно.
Схема funduino Xbee sensor shield V5 Funduino Xbee sensor shield V5 expansion board with RS485 and BLUEBEE Bluetooth interface for Arduino.
Клемма servo power соединена с D1 – диод Шотки SS14. Он защищает funduino Xbee sensor shield от неправильного подключения полюсов питающего напряжения. Для питания устанавливаемого модуля Xbee в схему входит микросхема U2 – стабилизатор напряжения 3,3 В. Микросхема U1 преобразует сигналы между интерфейсами UART и RS485. Для этого применен компонент SP485CN. Вывод 4 микросхемы SP485CN соединен с контактом Arduino D1/TX. Вывод 1 микросхемы SP485CN соединен с контактом Arduino D0/RX. Вывод 3 микросхемы SP485CN соединен с контактом Arduino D2. Микросхема принимает сигнал о включении выхода, активный высокий логический уровень. Если на контакте D2 Arduino высокий уровень, то происходит передача, низкий – прием.
RS485 Интерфейс RS485 часто используется при создании современных локальных сетей в промышленных изделиях. Наличие интерфейса RS485 позволяет использовать funduino Xbee sensor shield V5 в проектах умный дом. Несколько слов о практическом воплощении интерфейса в микроконтроллерных модулях
здесь. При подключении других приборов имеющих RS485 к Xbee sensor shield V5 expansion board потребуется жгут из трех проводов, один из которых соединяется с общим проводом клеммы. Передавать питание для других приборов по общему проводу жгута связи нельзя. Это вызовет сильные помехи в линии связи.
Особенностью работы с микросхемой интерфейса RS485 является наличие сигнала управляющего выбором режима прием или передача. Программа должна формировать уровень на соответствующем выходе ардуино для управлениям режимом работы.
Примеры участков программы.
Передача данных
int EN = 2; //Цифровой контакт Arduino Digital Pin 2 управляет режимом
// Лог. 1 – передача, лог. 0 – прием
void setup()
{
pinMode(EN, OUTPUT);
Serial.begin(19200);
}
void loop()
{
//отправить данные
digitalWrite(EN, HIGH);//Включение передачи данных
Serial.print('A');
delay(1000);
}
Прием даных
int ledPin = 13;
int EN = 2;
int val;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(EN, OUTPUT);
Serial.begin(19200);
}
void loop()
{
//принять данные
digitalWrite(EN, LOW);//Включение передачи данных
val = Serial.read();
if (-1 != val) {
if ('A' == val) {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}
}
}