Простое решение для Arduino с поддержкой беспроводной связи Bluetooth
Для обеспечения беспроводной связи между компьютером и Arduino имеется ряд возможностей:
Bluetooth
XBee
APC220
Все они имеют преимущества и недостатки. Как правило предпочтения отдаются Bluetooth, т.к. он реализует больше возможностей.
Применяя плату расширения ввода/вывода DFR0088 IO Expansion Shield For Arduino(V5) Вы получаете ряд преимуществ по отношению к другим вариантам.
Переключение между Bluetooth и Xbee на этой плате легко достигается переключением передающей части благодаря тому, что модуль Bluetooth встроен в модуль XBee.
Кроме того эта плата расширения имеет ряд других особенностей:
Эта плата позволяет обеспечить все три вышеперечисленные стандарты беспроводной связи, при этом модули XBee и Bluetooth подключаются в специальный разъем на плате, а APC220 - через дополнительный разъем и кабель.
На плате также имеются выводы для работы по протоколу I2C.
Через специальный разъем к плате можно подключить гнездо для SD карт.
Последовательный интерфейс RS485 имеет на плате специальные винтовые клеммные контакты.
Также на плате установлен контроллер сервоприводов с винтовыми контактами.
Для своих возможностей плата расширения имеет весьма скромную цену.
Работа Bluetooth
Подключите плату расширения к Arduino (вставьте ее в гнезда Arduino) и вставьте модуль Bluetooth в гнездо платы расширения.
Работа с ним очень проста.
Для этого не требуется пайка. Этот модуль заменяет собой проводное USB соединение, имеющееся между Вашим компьютером и Arduino.
В программе для Arduino (скетче) использовать Bluetooth очень просто. Для этого надо использовать последовательное соединение, функцию Serial.read для чтения с компьютера и Serial.print для передачи данных в компьютер.
Пример программы для Arduino
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'
Serial.println("Data received") // Send info back
}
}
РС485
Винтовые клеммы (при условии, что три перемычки установлены на "485"), отмеченные "A" и "B", подключаются непосредственно
к контактам "A" и "B" микросхемы (6 и 7 соответственно).
Винтовая клемма с маркировкой VCC подключается к контакту IC VCC (8), а также к линии +5 В платы (т. е. шине +5 В Arduino).
Винтовая клемма с маркировкой GND подключается к выводу IC GND (5), а также к линии GND платы (т. е. 0-вольтовой шине Arduino).
Контакт DI (ввод данных?) чипа (4) подключен к цифровому контакту 1 (TX) Arduino.
Контакт RO (вывод данных?) чипа (1) подключен к цифровому контакту 0 Arduino (RX) с подтягиванием резистора к шине + 5 В.
Контакт DE (разрешение выхода) чипа (3) подключен (через резистор) к цифровому контакту 3 Arduino - это активный высокий уровень.
Этот вывод DE также подключен к выводу (2) шины RE микросхемы (включение приемника) и, следовательно, также управляется цифровым выводом 3 Arduino - он имеет активный низкий уровень.
Цифровой контакт Arduino 2 = Rx/Tx "Включить"; Высокий для передачи, низкий для приема
Transmit code:
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);
}
Receive code:
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);
}
}
}