Опубликовано

Модуль BLE Bluetooth HM-10/11

По материалам руководства к набору “Умный дом на базе Arduino. Большой набор + КНИГА

Модули Bluetooth оснащены последовательным портом, способным взаимодействовать с платой Arduino через контакты RX (прием) и TX (передача), и приемопередатчиком, использующим протокол беспроводной связи Bluetooth для взаимодействия «по воздуху» с другими устройствами, который понимают этот протокол (например, со смартфонами). Такой приемопередатчик функционирует как модем, преобразовывая сигналы протокола Bluetooth в обычный асинхронный последовательный протокол и обратно.

Существуют различные протоколы Bluetooth. Модули HM-10 и HM-11 поддерживают протокол Bluetooth 4.0, что дает возможность их подключения к смартфонам и на ОС Android, и на iOS (iPhone) — в отличие от популярных модулей HC-05 и HC-06, которые могут взаимодействовать только с ОС Android. HM-10/11 нельзя соединить с модулями HC-06 и HC-05, т. к. последние поддерживают протокол Bluetooth 2/2.1.

Наиболее существенным достоинством модулей Bluetooth BLE (Bluetooth Low Energy, Bluetooth LE) является их сверхмалое пиковое энергопотребление, среднее энергопотребление и энергопотребление в режиме простоя, что весьма важно для устройств с автономным питанием.


Примечание

Модуль HM-11, по своим эксплуатационным характеристикам аналогичен HM-10, но занимает меньшую площадь и имеет меньшее количество контактов.


Внешний вид, назначение контактов

bluetooth-hm-10

Рис. M5.1. Внещний вид и назначение контактов Bluetooth HM-10

Технические характеристики

Наименование Значение
Чип Bluetooth CC2540 или CC2541
Протокол связи Bluetooth 4.0 BLE
Радиус действия до 100 метров
Объем flash-памяти (для хранения прошивки и настроек), Мбит 8
Частота радиосигнала, ГГц 2,40 ÷ 2,48
Ток
  • в режиме установки связи — до 50 мА
  • после установки связи 9 мА
  • в режиме сна — 50 ÷ 200 µA
Напряжение питания, В + 2,5 В до + 3,3 В
Пароль по умолчанию 000000
Имя Bluetooth устройства по умолчанию HMSoft, BT05-A

До тех пор, пока модуль HM-10 не сопряжен ни с одним устройством, он находится в режиме команд и об этом сообщает мигающим светодиодом. При сопряжении с устройством светодиод начинает гореть постоянно, а модуль переходит в режим передачи данных.

Схема подключения

3-05-2-bluetooth

Рис. M5.2. Подключение Bluetooth HM-10

Тестируем подключение Bluetooth

  1. Установим терминальное приложение для смартфона. Их достаточно много, и функциональные возможности их примерно одинаковы. Предлагаем для смартфонов с OC Android популярное бесплатное приложение Serial Bluetooth Terminal, ориентированное на работу как с «классическими» модулями Bluetooth, так и с модулями, которые поддерживают протокол Bluetooth 4.0 BLE (рис. M5., а). Для iPhone и iPad можно использовать приложение HM10 Bluetooth Serial Lite (рис. M5.3, б).
3-05-3-bluetootch
а б

Рис. M5.3. а — окно установки Serial Bluetooth Terminal на Google Play; б — установка приложение HM10 Bluetooth Serial Lite для iOS

  1. Установив приложение на смартфон, откройте его. При этом Bluetooth на смартфоне должен быть включен.
  2. Подключите Bluetooth, как показано на рис. M5.2, а. Индикатор, расположенный на модуле Bluetooth, начнет мигать в ожидании соединения.
  3. Выберите в меню команду Device, а затем нажмите кнопку SCAN в правом верхнем углу окна (рис. M5.2, б).
а б

Рис. M5.4. Поиск устройств Bluetooth BLE в радиусе действия вашего телефона

  1. После недолгого поиска на экране появится список обнаруженых модулей Bluetooth (рис. M5.5, а). Ваш модуль может быть обозначен в списке на вкладке BLUETOOTH LE как HM-10 или BT05-A (в зависимости от производителя).
  2. Щелкните двойным щелчком на имени вашего модуля Bluetooth, и произойдет соединение модуля с платой Arduino через последовательный порт. При этом светодиодный индикатор на модуле перестанет мигать, а на экране смартфона появится надпись Connected (рис. M5.5, б).
а б

Рис. M5.5. Подключение к Bluetooth BLE

Совет

В зависимость от производителя конкретного устройства Android и версии операционной системы (для Android она должна быть выше 4.3) вы можете увидеть или не увидеть HM-10 среди устройств, обнаруженных Bluetooth (Bluetooth devices). Если ваш Android не находит HM-10 в своих настройках Bluetooth, попробуйте использовать приложение BLE Scanner app.

Взаимодействие смартфона и Arduino через Bluetooth BLE

Теперь, когда соединение Arduino и модуля Bluetooth установлено, осуществим обмен информацией между устройствами. Для этого:

  1. Временно отсоедините провода, подключенные к контактам D0 (RX) и D1(TX) платы Arduino, и загрузите код, приведенный в листинге M5.1.

Листинг M5.1. Обмен информацией между Arduino и модулем Bluetooth

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void setup() {
 
Serial.begin(9600);
 
Serial.println("poexali!");
 
}
 
void loop() {
 
if (Serial.available()) {
 
char c = Serial.read(); // читаем из software-порта
 
Serial.print(c); // пишем в hardware-порт
 
}
 
}

Если при загрузке скетча на Arduino не отключать эти провода, то компилятор выдаст ошибку, показанную на рис. M5.6. Конфликт связан с тем, что пины D0 и D1 также используются для связи с компьютером посредством USB.

Рис. M5.6. Ошибки загрузки скетча в Arduino

  1. Снова подключите провода к контактам D0 (RX) и D1(TX) и выполните сопряжение смартфона с модулем Bluetooth, как было показано на рис. M5.5.
  2. Выполнив сопряжение, можно поздороваться с хостом на другом конце Bluetooth-канала (рис. M5.7). Как можно видеть, приветствие прошло успешно!
3-05-7a-bluetootch 3-05-7b-bluetootch
а б

Рис. M5.7. Привет Arduino! — вводим на смартфоне (а) и получаем в Мониторе порта (б)

При отладке скетча вам придется многократно отключать провода от контактов D0 и D1 во время загрузки скетча в Arduino. Кроме того, одного порта вам может быть недостаточно. В этом случае целесообразно использовать библиотеку SoftwareSerial, которая предустановлена в Arduino IDE. Библиотека SoftwareSerial позволяет реализовать последовательный интерфейс не только на D0 и D1, но и на любых других цифровых выводах Arduino с помощью программных средств, дублирующих функциональность UART (отсюда и название «SoftwareSerial»). Кроме того, она дает возможность программно создавать несколько последовательных портов, работающих на скорости до 115200 бод.

  1. Подключите контакты TX и RX модуля Bluetooth к выводам D2 и D3 (RXD3, TXD2) платы Arduino (а не к D0 и D1, как вы делали ранее!).
  2. Загрузите код, приведенный в листинге M5.2.

Листинг M5.2. Сопряжение платы Arduino и модуля Bluetooth

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(2,3);//указываем пины RX и TX соответственно
 
void setup() {
 
pinMode(2,INPUT);
 
pinMode(3,OUTPUT);
 
Serial.begin(9600);
 
mySerial.begin(9600);
 
Serial.println("poexali!");
 
}
 
void loop() {
 
if (mySerial.available()) {
 
char c = mySerial.read(); // читаем из software-порта
 
Serial.print(c); // пишем в hardware-порт
 
}
 
if (Serial.available()) {
 
char c = Serial.read(); // читаем из hardware-порта
 
mySerial.write(c); // пишем в software-порт
 
}
 
}
  1. Введите в Мониторе порта любой текст (рис. M5.8, а) и нажмите кнопку Отправить — текст появится в окне терминала смартфона (рис. M5.8, б).
3-05-8a-bluetootch 3-05-8b-bluetootch
а б

Рис. M5.8. Привет Android! вводим в Мониторе порта (а) и получаем на смартфоне (б)

Управление светодиодом RGB по Bluetooth

Теперь осуществим на практике управление электронным прибором со смартфона по каналу Bluetooth.

1. Соберите схему, представленную на рис. M5.9.

3-05-9

Рис. M5.9. Управление RGB-светодиодом через Bluetooth

2. Загрузите скетч, приведенный в листинге M5.3.

Листинг M5.3. Управление светодиодом RGB через Bluetooth

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <SoftwareSerial.h>
 
// Константы для хранения номеров контактов вывода:
 
const int greenPin = 9; //"зеленый" контакт LED RGB
 
const int bluePin = 10; //"синий" контакт LED RGB
 
const int redPin = 11; //"красный" контакт LED RGB
 
const int pinRX = 2; //RX – вход для приема данных -> к TX bluetooth
 
const int pinTX = 3; //TX – выход для передачи данных -> к RX bluetooth
 
int currentPin = 0; // текущий контакт для задания яркости
 
SoftwareSerial mySerial(pinRX,pinTX); // указываем пины rx и tx
 
void setup() {
 
pinMode(pinRX,INPUT);
 
pinMode(pinTX,OUTPUT);
 
pinMode(redPin, OUTPUT);
 
pinMode(greenPin, OUTPUT);
 
pinMode(bluePin, OUTPUT);
 
 
 
Serial.begin(9600);
 
mySerial.begin(9600);
 
Serial.println("poexali!");
 
}
 
void loop() {
 
if (mySerial.available()) {
 
char inByte = mySerial.read(); // читаем из software-порта
 
Serial.print(inByte); // пишем в hardware-порт
 
rgb(inByte); //включаем светодиод «цветом» inByte
 
}
 
 
 
if (Serial.available()) {
 
char c = Serial.read(); // читаем из hardware-порта
 
mySerial.write(c); // пишем в software-порт
 
rgb(c); //включаем светодиод «цветом» с
 
}
 
}
 
//функция для включения светодиода RGB
 
void rgb(byte cByte){
 
digitalWrite(currentPin,LOW);
 
// игнорируем любые другие значения:
 
if (cByte == 'r') {
 
currentPin = redPin;
 
}
 
if (cByte == 'g') {
 
currentPin = greenPin;
 
}
 
if (cByte == 'b') {
 
currentPin = bluePin;
 
}
 
digitalWrite(currentPin,HIGH);
 
}

3. Теперь, вводя символы r, g и b в Мониторе порта или на смартфоне, подключенном через модуль Bluetooth с помощью терминальной программы, мы можем изменять цвет светодиода RGB.

Опубликовано

Пассивный пьезоэлектрический зуммер 5 В

По материалам руководства к набору “Умный дом на базе Arduino. Большой набор + КНИГА

С помощью модуля зуммера можно генерировать звуковые сигналы и даже простые мелодии. Принцип действия зуммера основан на пьезоэлектрическом эффекте, согласно которому при подаче электричества на зуммер он начинает деформироваться. При этом производятся удары о металлическую пластинку, которая и издает звук определенной частоты.

Существуют активные и пассивные зуммеры. Главное различие их состоит в том, что активный можно только включить и выключить, подав напряжение на его контакты. Для пассивного зуммера (рис. M1.1) кроме питания требуется источник, который задаст параметры звукового сигнала. В качестве такого источника может выступать плата Ардуино. Для генерации мелодий следует подключать цифровой пин зуммера к пину Arduino, который поддерживает ШИМ (~D5, ~D6, ~D9, ~D10, ~D11).

Внешний вид, назначение контактов

3-01-1-зуммер

Рис. M1.1. Пассивный зуммер

Основные характеристики

Наименование Значение
Напряжение, В 5
Максимальный ток, мА 32
Минимальный уровень звука на расстоянии 10 см, дБ 85
Диапазон частот, Гц 2300 ± 300

Схема подключения

3-01-2-зуммер

Рис. M1.2. Подключение зуммера

Программный код

Листинг M1.1. Подключение зуммера

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#define SoundPin 5 // пин пьезоизлучателя
 
int DelaySound = 1000; //Пауза. 1000 миллисекунд=1 секунда
 
void setup(){
 
}
 
void loop(){
 
tone(SoundPin, 1915); //Воспроизводим сигнал с частотой тона
 
//1/(2*1915)=261 Гц (нота До)
 
delay(DelaySound); //Длительность воспроизведения сигнала 1 с
 
tone(SoundPin, 1700);
 
delay(DelaySound);
 
tone(SoundPin, 1519);
 
delay(DelaySound);
 
tone(SoundPin, 1432);
 
delay(DelaySound);
 
tone(SoundPin, 1275);
 
delay(DelaySound);
 
tone(SoundPin, 1136);
 
delay(DelaySound);
 
tone(SoundPin, 1014);
 
delay(DelaySound);
 
noTone(7); // Выключаем звук
 
}

Пояснение

Функция tone() генерирует на порту входа/выхода сигнал — прямоугольную «волну» заданной частоты и с 50%-ным рабочим циклом. Длительность может быть задана параметром delay, в противном случае сигнал генерируется, пока не будет вызвана функция noTone().

Вы можете использовать активный пьезоэлектрический зуммер (пьезоэлемент) для воспроизведения различных мелодий. При этом на него следует подавать сигнал определенной частоты и длительности.


Примечание

Подробную информацию о соответствии частоты сигнала воспроизводимым музыкальным нотам, а также примеры программ, можно найти на сайте разработчика Arduino: http://www.arduino.cc/en/Tutorial/Melody.


Добавив в схему подключения пьезоэлемента несколько кнопок, можно сделать небольшой электронно-клавишный инструмент, используя несколько пьезоэлементов — собрать целый оркестр, а с помощью фоторезистора — создать «световой терменвокс».

Световой терменвокс

Соберем простейший имитатор музыкального инструмента терменвокса (рис. M1.3). Только играя на нашем терменвоксе, исполнитель будет подносить руки не к антенне (как при игре на классическом терменвоксе), а к фоторезистору.


Примечание

Cопротивление фоторезисторов уменьшается под воздействием света и увеличивается в темноте. Фоторезисторы просты в использовании, но слишком медленно реагируют на изменение уровня освещенности и имеют весьма низкую точность. Как правило, сопротивление фоторезисторов может варьироваться от 50 Ом при дневном освещении до более чем 10 МОм в темноте.


Схема подключения

3-01-3-терменвокс

Рис. M1.3. Световой терменвокс

Программный код

Листинг M1.2. Световой терменвокс

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#define buzzerPin 5 //номер пина зуммера
 
#define photoPin A3 //номер пина фоторезистора
 
int aVal; //Значение на фоторезисторе
 
int sMax=1023; //максимальное значение фоторезистора
 
int buzzerFreq; //частота звука
 
const long BUZZ_FREQ_MAX = 2500; //задаем макс. частоту излучения
 
 
 
void setup(){
 
// Объявляем пин, к которому подключен зуммер как выход
 
pinMode(buzzerPin,OUTPUT);
 
Serial.begin(9600);
 
}
 
 
 
void loop(){
 
aVal=analogRead(photoPin); //считываем значение с фоторезистора
 
Serial.print("aVal:");
 
Serial.println(aVal);
 
// задаем частоту излучения // пьезоизлучателя
 
buzzerFreq = (aVal * BUZZ_FREQ_MAX)/sMax;
 
buzz(buzzerPin, buzzerFreq, 10);
 
}
 
//подпрограмма генерации звука buzz
 
void buzz(int targetPin, long frequency, long length) {
 
long delayValue = 1000000/frequency/2;
 
long numCycles = frequency * length/ 1000;
 
for (long i=0; i < numCycles; i++){
 
digitalWrite(targetPin,HIGH);
 
delayMicroseconds(delayValue);
 
digitalWrite(targetPin,LOW);
 
delayMicroseconds(delayValue);
 
}
 
}

Все — простейший терменвокс готов! Теперь попробуйте, изменяя освещенность фоторезистора, создать звуковую композицию.

Опубликовано

RFID-модуль RC522

По материалам руководства к набору “Умный дом на базе Arduino. Большой набор + КНИГА

Радиочастотная идентификация RFID (от англ. Radio Frequency IDentification) представляет собой бесконтактную технологию, которая широко используется в системах контроля доступа, аутентификации персонала, в логистике, в розничной торговле и др. Для идентификации людей наиболее популярным является формат бесконтактной пластиковой карточки, по размеру совпадающей с банковской. Такую карточку для запроса доступа как правило нужно осознанно подносить к считывающему устройству на расстояние порядка 10 см.

Внешний вид, назначение контактов

Система RFID состоит из двух основных компонентов: RFID-метки (тега), которая находится у объекта, который мы хотим идентифицировать, и RFID-считывателя (рис. M2.1).

RFID

Рис. M2.1. RFID-модуль RC522

RFID-считыватель состоит из радиочастотного модуля, блока управления и антенной катушки, которая генерирует высокочастотное электромагнитное поле. RFID-метка является пассивным компонентом, в состав которого входит антенна и электронный микрочип. Когда микрочип приближается к электромагнитному полю считывателя на расстояние около 2 см, в катушке его антенны благодаря индукции генерируется напряжение, которое включает микрочип. Поссле этого RFID-метка может обмениваться информацией с RFID-считывателем.

В проектах мы воспользуемся RFID-считывателем RC522 на базе популярной микросхемы MFRC522 производства фирмы NXP Semiconductors. В комплект поставки считывателя RC522 входят две RFID-метки типа Mifare Classic с памятью объемом 1 Кбайт: карточка и брелок. Каждая метка имеет уникальный идентификационный ключ (UID).

Основные характеристики

Наименование Значение
Напряжение, В 3,3
Потребляемый ток в активном состоянии, мА 13 ÷ 26
Потребляемый ток в состоянии ожидания мА 10 ÷ 13
Рабочая частота, МГц 13,56
Поддерживаемые типы карт MIFARE S50, MIFARE S70, MIFARE UltraLight, MIFARE Pro, MIFARE DESfire
Размеры, мм 40×60

Схема подключения

M2-2-RFID

Рис. M2.2. Схема подключения RFID-модуля RC522 к Arduino Uno


Примечание

Для подключения модуля RFID вы также можете использовать контактную группу ISCP на плате Arduino Uno, подключив туда контакты MISO (ICSP-1), SCK (ICSP-3) и MOSI (ICSP-4).


Получаем UID метки RFID

  1. Загрузите специализированную библиотеку MFRC522 (https://github.com/miguelbalboa/rfid/archive/master.zip).
  2. Подключите библиотеку в среду разработки Arduino IDE: Скетч | Подключить библиотеку | Добавить .ZIP библиотеку…
  3. Загрузите скетч DumpInfo из папки примеров библиотеки MFRC522: Файл | Примеры | MFRC522 | DumpInfo.
  4. Запустите монитор порта.

Программа считывает информацию с поднесенной RFID-метки и выводит ее в терминал. Для RFID-меток из комплекта RC522 она будет иметь примерно следующий вид:

Card UID: 7E 56 37 D5

Card SAK: 08

PICC type: MIFARE 1KB

  • первая строка — уникальный идентификатор RFID-метки (UID) для этого типа меток (4 байта);
  • вторая строка — поле SAK (Select Acknowledge), содержащее информацию о типе метки и производителе. Значение 08 означает, что это метка типа Mifare Classic 1K производства NXP;
  • третья строка — расшифровка типа метки, извлеченная из поля SAK: Mifare 1KB.

Внимание!

Запишите уникальный идентификатор (UID) вашей RFID-метки! Он понадобится вам в следующем примере.


Программный код

Загрузите скетч из листинга M2.1. При поднесении метки к считывателю на мониторе порта будет появляться надпись Access granted, а на плате загораться встроенный светодиод.

Листинг M2.1. Подключение модуля RFID

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <SPI.h>
 
#include <MFRC522.h>
 
// Настраиваем пины SS и RST для нашей платы - Arduino Uno
 
#define SS_PIN 10
 
#define RST_PIN 9
 
#define LED13 13 //Встроенный светодиод.
 
//Зажигается когда доступ разрешен
 
MFRC522 mfrc522(SS_PIN, RST_PIN); // Создаем объект MFRC522
 
void setup() {
 
pinMode(LED13, OUTPUT);
 
Serial.begin(9600);
 
SPI.begin(); // Инициализируем интерфейс SPI
 
mfrc522.PCD_Init(); // Инициализируем MFRC522
 
Serial.println("Approximate your card to the reader...");
 
Serial.println();
 
}
 
void loop(){
 
if (!mfrc522.PICC_IsNewCardPresent()) // Ожидаем RFID-метку
 
return;
 
// При обнаружении RFID-метки пытаемся считать ее данные
 
if (!mfrc522.PICC_ReadCardSerial())
 
return;
 
// Извлекаем уникальный идентификатор RFID-метки (UID)
 
String content = "";
 
// Преобразуем поле UID в строку типа "XX XX XX XX"
 
for (byte i = 0; i < mfrc522.uid.size; i++)
 
{
 
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
 
content.concat(String(mfrc522.uid.uidByte[i], HEX));
 
}
 
content.toUpperCase();
 
// Выводим UID в терминал
 
Serial.print("Tag UID:");
 
Serial.println(content);
 
// Сравниваем UID с заданным
 
if (content.substring(1) == "<strong>7E 56 37 D5</strong>") // Укажите <strong>здесь</strong> UID
 
//RFID-метки, которой
 
//разрешен доступ
 
{
 
// Если UID совпал с заданным - доступ разрешен
 
Serial.println("Access granted");
 
Serial.println();
 
// Включаем встроенный на плате светодиод на 3 секунды
 
digitalWrite(LED13, HIGH);
 
delay(3000);
 
digitalWrite(LED13, LOW);
 
}
 
else // Если UID не совпал с заданным - доступ запрещен
 
{
 
Serial.println("Access denied");
 
Serial.println();
 
}
 
}
Опубликовано

8-разрядный расширитель портов PCF8574

По материалам руководства к набору “Умный дом на базе Arduino. Большой набор + КНИГА

Если вы исчерпали для подключения внешних устройств (датчиков, модулей, светодиодов и др.) все выводы Arduino (для Arduino UNO это 6 аналоговых и 14 цифровых), то модуль расширителя портов (рис. M4.1) поможет вам добавить дополнительно 8 контактов (P0 … P7). Эти контакты можно использовать как в качестве входов (например, для чтения сигнала с датчика), так и для выходов (например, для включения светодиодов). Модули расширителя портов работают на шине I2C, и, если подключить в проекте последовательно 8 таких устройств, вы соответственно получите дополнительно 8 × 8 = 64 контакта для ввода и вывода.

Внешний вид, назначение контактов

M4-1-PCF8574

Рис. M4.1. 8-разрядный расширитель портов PCF8574

Основные характеристики

Наименование Значение
Рабочий режим питания, В от 2,5 до 6 В
Низкий ток покоя, мА максимум 10 мА
Адресация на 3 вывода аппаратных адресов для использования до 8 устройств (до 16 устройств при использовании PCF8574A)

Схема подключения

M4-2-PCF8574

Рис. M4.2. Схема подключения кнопки и светодиода

Программный код

  1. Скачайте по ссылке https://github.com/skywodd/pcf8574_arduino_library библиотеку PCF8574/PCF8575 Arduino library для работы Arduino с расширителем PCF8574.
  2. Скачав библиотеку, выберите ее и установить с помощью команды Скетч | Подключить библиотеку | Добавить ZIP библиотеку…
  3. Загрузите скетч из листинга M4.1.

Листинг M4.1. Подключение расширителя портов PCF8574

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include &lt;Wire.h&gt;
 
#include "PCF8574.h" //Библиотека для расширителя портов.
 
 
 
PCF8574 expander; //создадим объект класса PCF8574 с расширителем
 
#define pinLed 0 //Номер пина светодиода на расширителе (P0)
 
#define pinButton 1 //Номер пина кнопки на расширителе (P1)
 
 
 
void setup(){
 
expander.begin(0x20); / Инициализация расширителя по адресу 0x20
 
 
 
expander.pinMode(pinLed,OUTPUT); //Настройка пина светодиода
 
//(на расширителе) на выход
 
expander.pinMode(pinButton,INPUT_PULLUP); // Настройка пина кнопки
 
//(на расширителе) на вход
 
}
 
 
 
void loop(){
 
if (expander.digitalRead(pinButton)==HIGH)
 
expander.digitalWrite(pinLed, HIGH);
 
else
 
expander.digitalWrite(pinLed,LOW);
 
}

Примечание

Если вы используете для управления проектом со смартфона платформу RemoteXY, закомментируйте в файле PCF8574.h библиотеки PCF8574 строку:

1
#define PCF8574_INTERRUPT_SUPPORT

Это строка номер 36. Тем самым вы отключите у расширителя поддержку прерываний, но зато предотвратите конфликт приложения RemoteXY и расширителя PCF8574, которые используют одинаковый вектор прерываний.