Проекты с использованием контроллера Arduino (2-е издание)
Год: 2015
Автор: Петин В.А.
ISBN: 978-5-9775-3550-2
Язык: Русский
Формат: PDF
Качество: Отсканированные страницы
Количество страниц: 464
Сайт разработчика: http://www.arduino.cc/
Описание: В книге рассмотрены основные платы Arduino и платы расширения (шилды), добавляющие функциональность основной плате. Подробно описан язык и среда программирования Arduino IDE. Тщательно разобраны проекты с использованием контроллеров семейства Arduino. Это проекты в области робототехники, создания погодных метеостанций, "умного дома", вендинга, телевидения, Интернета, беспроводной связи (bluetooth, радиоуправление). Для всех проектов представлены схемы и исходный код. Также в раздачу включен исходный код для устройств Android, используемых в проектах для связи с контроллерами Arduino. Также в раздаче исходные коды программ проектов из книги, библиотек, описания и спецификации электронных компонентов, схемы из книги в формате spl7.
СОДЕРЖАНИЕ
скрытый текст
Часть I. Arduino — общий обзор 17Глава 1. Введение в Arduino 19
1.1. Arduino — что это? 19
1.2. В чем преимущество Arduino? 20
1.3. История создания Arduino 20Глава 2. Обзор контроллеров семейства Arduino 22
2.1. Arduino Pro Mini 23
2.2. Arduino Duemilanove 23
2.3. Arduino Nano 25
2.4. Arduino LilyPad 26
2.5. Arduino Uno 27
2.6. Arduino Mega2560 28
2.7. Arduino Leonardo 29
2.8. Arduino Due 30Глава 3. Платы расширения Arduino 31
Часть II. Среда разработки и язык программирования контроллеров Arduino 37
Глава 4. Среда программирования Arduino IDE 39
4.1. Установка Arduino IDE в Windows 39
4.2. Установка Arduino IDE в Linux 41
4.3. Настройка среды Arduino IDE 41Глава 5. Программирование в Arduino 45
5.1. Базовые знания 45
5.1.1. Цифровые выводы 45
5.1.2. Аналоговые входы 46
5.1.3. Широтно-импульсная модуляция 46
5.1.4. Память в Arduino 46
5.2. Структура программы 48
5.2.1. Функции setup() и loop() 48
5.3. Синтаксис и операторы 49
5.3.1. Управляющие операторы 49
5.3.1.1. Оператор if (условие) и операторы сравнения ==, !=, < , > 49
5.3.1.2. Оператор if..else 49
5.3.1.3. Оператор for 50
5.3.1.4. Оператор switch 51
5.3.1.5. Оператор while 51
5.3.1.6. Оператор do ... while 52
5.3.1.7. Оператор break 52
5.3.1.8. Оператор continue 52
5.3.1.9. Оператор return 53
5.3.2. Синтаксис 53
5.3.2.1. ; (точка с запятой) ; (semicolon) 53
5.3.2.2. {} (фигурные скобки) {} (curly braces) 53
5.3.2.3. Комментарии // (single line comment), /* */ (multi-line comment) 54
5.3.3. Арифметические операторы 54
5.3.3.1. = (assignment) = оператор присваивания 54
5.3.3.2. + (cложение), - (вычитание), * (умножение) , / (деление) 55
5.3.3.3. % (modulo) 55
5.3.4. Операторы сравнения 55
5.3.5. Логические операторы 55
5.3.5.1. && (логическое И) 55
5.3.5.2. || (логическое ИЛИ) 55
5.3.5.3. ! (логическое отрицание) 56
5.3.6. Унарные операторы 56
5.3.6.1. ++ (увеличение значения) / -- (уменьшение значения) 56
5.3.6.2. += , -= , *= , /= 56
5.4. Данные 56
5.4.1. Типы данных 56
5.4.1.1. boolean 57
5.4.1.2. char 57
5.4.1.3. byte 57
5.4.1.4. int 57
5.4.1.5. unsigned int 58
5.4.1.6. long 58
5.4.1.7. unsigned long 58
5.4.1.8. float 59
5.4.1.9. double 59
5.4.1.10. string — текстовые строки 59
5.4.1.11. Массивы 60
5.4.1.12. void 61
5.4.2. Константы 61
5.4.3. Переменные 62
5.4.3.1. Объявление переменных 62
5.4.3.2. Границы переменных 62
5.4.4. Преобразование типов данных 63
5.4.4.1. char() 63
5.4.4.2. byte() 63
5.4.4.3. int() 63
5.4.4.4. long() 63
5.4.4.5. float() 64
5.5. Функции 64
5.5.1. Цифровой ввод/вывод 64
5.5.1.1. Функция pinMode 64
5.5.1.2. Функция digitalWrite() 64
5.5.1.3. Функция digitalRead() 65
5.5.2. Аналоговый ввод/вывод 66
5.5.2.1. Функция analogRead() 66
5.5.2.2. Функция analogReference() 67
5.5.2.3. Функция analogWrite() 67
5.5.3. Дополнительные фунции ввода/вывода 69
5.5.3.1. Функция tone() 69
5.5.3.2. Функция noTone() 69
5.5.3.3. Функция shiftOut() 69
5.5.3.4. Функция pulseIn() 71
5.5.4. Работа со временем 72
5.5.4.1. Функция millis() 72
5.5.4.2. Функция micros() 72
5.5.4.3. Функция delay() 73
5.5.4.4. Функция delayMicroseconds() 74
5.5.5. Математические функции 75
5.5.5.1. Функция min(x,yx) 75
5.5.5.2. Функция max(x, y) 75
5.5.5.3. Функция abs() 75
5.5.5.4. Функция constrain(x, a, b) 76
5.5.5.5. Функция map(value, fromLow, fromHigh, toLow, toHigh) 76
5.5.5.6. Функция pow(base, exponent) 77
5.5.5.7. Функция sq(x) 77
5.5.5.8. Функция sqrt(x) 77
5.5.6. Тригонометрические функции 78
5.5.6.1. Функция sin(rad) 78
5.5.6.2. Функция cos(rad) 78
5.5.6.3. Функция tan(rad) 78
5.5.7. Генераторы случайных значений 78
5.5.7.1. Функция randomSeed(seed) 78
5.5.7.2. Функция random() 79
5.5.8. Операции с битами и байтами 79
5.5.8.1. Функция lowByte() 80
5.5.8.2. Функция highByte() 80
5.5.8.3. Функция bitRead() 80
5.5.8.4. Функция bitWrite() 80
5.5.8.5. Функция bitSet() 81
5.5.8.6. Функция bitClear() 81
5.5.8.7. Функция bit() 81
5.5.9. Внешние прерывания 81
5.5.9.1. Функция attachInterrupt 82
5.5.9.2. Функция detachInterrupt 82
5.6. Управление портами через регистры ATmega 83Часть III. Практическое применение Arduino 87
Глава 6. Arduino и набор функций Serial 89
6.1. Функции библиотеки Serial 90
6.1.1. Функция Serial.begin() 90
6.1.2. Функция Serial.end() 90
6.1.3. Функция Serial.available() 90
6.1.4. Функция Serial.read() 91
6.1.5. Функция Serial.flush() 92
6.1.6. Функция Serial.print() 92
6.1.7. Функция Serial.println() 93
6.1.8. Функция Serial.write() 93
6.1.9. Функция Serial.peek() 93
6.2. Библиотека SoftwareSerial 94
6.2.1. Функция SoftwareSerial() 94
6.2.2. Функция SoftwareSerial.listen() 94
6.2.3. Функция SoftwareSerial.isListening() 95
6.2.4. Функция SoftwareSerial.overflow() 96Глава 7. Arduino и знакосинтезирующие жидкокристаллические индикаторы 97
7.1. Принцип работы модулей ЖКИ WINSTAR WH1604 98
7.2. Библиотека LiquidCrystal 103
7.2.1. Функция LiquidCrystal() 104
7.2.2. Функция begin() 105
7.2.3. Функция clear() 105
7.2.4. Функция home() 105
7.2.5. Функция setCursor() 105
7.2.6. Функция write() 106
7.2.7. Функция print() 106
7.2.8. Функция cursor() 107
7.2.9. Функция noCursor() 107
7.2.10. Функция blink() 107
7.2.11. Функция noBlink() 107
7.2.12. Функция display() 107
7.2.13. Функция noDisplay() 108
7.2.14. Функция scrollDisplayLeft() 108
7.2.15. Функция scrollDisplayRight() 108
7.2.16. Функция autoscroll() 108
7.2.17. Функция noAutoscroll() 108
7.2.18. Функция leftToRight() 109
7.2.19. Функция rightToLeft() 109
7.2.20. Функция createChar() 109
7.3. Библиотека LiquidCrystalRus 111Глава 8. Библиотека EEPROM 116
8.1. Функции библиотек EEPROM 116
8.1.1. Функция чтения EEPROM.read 116
8.1.2. Функция записи EEPROM.write 117
8.2. Примеры использования памяти EEPROM 118
8.2.1. Воспроизведение звука 118
8.2.2. Звонок с мелодиями 121Глава 9. Использование Arduino Leonardo в качестве USB-устройства 126
9.1. Имитация клавиатуры на Arduino Leonardo 127
9.2. Имитация компьютерной мыши на Arduino Leonardo 129Глава 10. Arduino и 1-Wire 133
10.1. Что такое 1-Wire? 133
10.2. Применение 1-Wire 136
10.3. Протокол 1-Wire 137
10.3.1. Описание интерфейса 1-Wire 137
10.3.2. Обмен информацией по 1-Wire 138
10.3.3. Протокол обмена информацией 1-Wire 141
10.4. Библиотека OneWire 143
10.4.1. Функция begin() 144
10.4.2. Функция requestFrom() 144
10.4.3. Функция beginTransmission() 144
10.4.4. Функция endTransmission() 145
10.4.5. Функция write() 145
10.4.6. Функция available() 145
10.4.7. Функция read() 146
10.4.8. Функция onReceive() 146
10.4.9. Функция onRequest() 146
10.5. Устройство iButton и программирование электронного замка 146
10.5.1. Поиск устройств 1-Wire и получение уникального кода 148
10.5.2. Режимы работы 150
10.5.3. Режим пользователя 151
10.5.4. Первоначальный ввод ключа в пустую базу 151
10.5.5. Просмотр, запись и удаление кодов ключей в режиме администратора 153
10.5.6. Блок-реле. Открывание замка 156
10.5.7. Проигрывание мелодий 157Глава 11. Arduino и цифровой датчик температуры DS18B20 159
11.1. Описание датчика DS18B20 159
11.2. Использование библиотеки OneWire 162
11.3. Библиотека DallasTemperature 163Глава 12. Arduino и датчики температуры и влажности DHT 165
12.1. Характеристики датчиков DH11, DH22 165
12.2. Подключение к Arduino 166
12.3. Библиотека DHT 167Глава 13. Сетевой обмен с помощью Arduino 169
13.1. Устройство Arduino Ethernet shield 169
13.2. Библиотека Ethernet library 171
13.2.1. Класс Ethernet (Ethernet class) 171
Функция Ethernet.begin() 172
Функция Ethernet.localIP() 172
13.2.2. Класс IPAddress (IPAddress class) 172
Функция IPAddress() 172
13.2.3. Класс Server (Server class) 173
Функция ethernetServer() 173
Функция begin() 173
Функция available() 173
Функция write() 174
Функция print() 175
Функция println() 175
13.2.4. Класс Client (Client class) 175
Функция client() 176
Функция EthernetClient() 176
Функция connected() 176
Функция connect() 177
Функция write() 177
Функция print() 177
Функция println() 177
Функция available() 178
Функция read() 178
Функция flush() 178
Функция stop() 179
13.2.5. Класс EthernetUDP (EthernetUDP class) 179
Функция begin() 179
Функция read() 179
Функция write() 180
Функция beginPacket() 180
Функция endPacket() 181
Функция parsePacket() 181
Функция available() 182
Функция remoteIP() 182
Функция remotePort() 182
13.3. Домашняя метеостанция с доступом через Интернет 182
13.3.1. Устройство, настройка и отладка метеостанции 182
13.3.2. Создание виджета для планшетов с ОС Android 187
13.3.3. Размещение данных метеостанции на сайте 188Глава 14. Arduino и карта памяти SD 190
14.1. Arduino-библиотека SD 190
14.1.1. Класс SD 190
Функция begin() 191
Функция exists() 191
Функция mkdir() 191
Функция rmdir() 191
Функция open() 191
Функция remove() 192
14.1.2. Класс File 192
Функция available() 192
Функция close() 193
Функция flush() 193
Функция peek() 193
Функция position() 194
Функция print() 194
Функция println() 194
Функция seek() 195
Функция size() 195
Функция read() 195
Функция write() 195
Функция isDirectory() 196
Функция openNextFile() 196
Функция rewindDirectory() 196
14.2. Запись показаний датчиков на SD-карту 196Глава 15. Arduino и светодиодные матрицы 202
15.1. Светодиоды и светодиодные матрицы 202
15.2. Светодиодная матрица FYM-23881BUG-11 203
15.3. SPI-расширитель выходов 74HC595 204
15.4. Игра "Тетрис" на светодиодных матрицах FYM-23881BUG-11 206
15.4.1. Управление изображением на светодиодных матрицах 208
15.4.2. Фигуры игры "Тетрис" 209
15.4.3. Управление фигурами игры "Тетрис" 211
15.4.4. Проверка столкновения фигур 213
15.5. Светодиодная матрица RGB 215
15.6. RGB-ночник, управляемый с помощью движения рук 216Глава 16. Arduino и управляемые светодиодные ленты RGB
221
16.1. RGB-светодиодная лента WS2812 221
16.2. Arduino-библиотека Adafruit_Neopixel 223
16.3. Создание табло результатов ЧМ-2018 по футболу на RGB-ленте WS2812 224Глава 17. Работа Arduino с вендинговыми аппаратами 230
17.1. Купюроприемник ICT серий A7 и V7 230
17.2. Подключение купюроприемника ICT V7 к Arduino 234
17.3. Скетч для получения номинала принимаемой купюры 236
17.4. Монетоприемник CH-926 237
Настройка монетоприемника 238
Калибровка монетоприемника 239
17.5. Подключение монетоприемника к Arduino 239
17.6. Написание скетча 240Глава 18. Arduino и радиочастотная идентификация (RFID) 242
18.1. Радиочастотная идентификация 242
18.2. Датчик считывания RFID-карт 245
18.3. Скетч для считывания RFID-карт 247Глава 19. Arduino и датчики расстояния 250
19.1. Ультразвуковые дальномеры HC-SR04 250
19.2. Принцип работы ультразвукового дальномера HC-SR04 251
19.3. Библиотека Ultrasonic 251
19.4. Инфракрасные датчики расстояния Sharp 252
19.5. Подключение датчиков Sharp к Arduino 255Глава 20. Arduino и передача данных в инфракрасном диапазоне 256
20.1. Обмен данными в инфракрасном диапазоне 256
20.2. Протоколы для ИК-пультов 258
20.2.1. Протокол RC5 258
20.2.2. Протокол NEC 259
20.2.3. Протокол JVC 261
20.2.4. Протокол Sony 262
20.3. Подключение ИК-приемника 263
20.4. Библиотека IRremote 263
20.5. Скетч для получения кодов ИК-пульта 265Глава 21. Создаем робота 271
21.1. Ходовая часть 271
21.2. Драйвер двигателей L293D 274
21.3. Массив возможных состояний моторов 277
21.4. Разработка скетча движений робота 279
21.5. Движение робота по линии в автономном режиме 282Глава 22. Arduino и шаговые двигатели 291
22.1. Управление шаговым двигателем 292
22.2. Arduino-библиотека Stepper 293
22.2.1. Функция Stepper() 293
22.2.2. Функция setSpeed(rpm) 293
22.2.3. Функция step(steps) 294
22.3. Пример использования библиотеки Stepper 294
22.4. Arduino-библиотека AccelStepper 296Глава 23. Arduino и сервоприводы 297
23.1. Сервоприводы 297
23.2. Arduino-библиотека Servo для управления сервоприводом 300
23.2.1. Функция attach() 301
23.2.2. Функция detach() 301
23.2.3. Функция write(int) 302
23.2.4. Функция writeMicrosconds(int) 302
23.2.5. Функция read() 302
23.2.6. Функция attached() 302
23.3. Робот-паук на сервоприводах 303
23.4. Скетч для управления роботом-пауком 307Глава 24. Arduino и Bluetooth 312
24.1. "Голубой зуб" 312
24.2. Модуль Bluetooth HC-05 312
24.3. Управление роботом с Android-устройства по Bluetooth 318Глава 25. TV-выход на Arduino 327
25.1. Схема подключения 327
25.2. Arduino-библиотека TVOut 327
25.2.1. Функция установки режима begin() 328
25.2.2. Функции задержки 328
Функция delay() 328
Функция delay_frame() 328
25.2.3. Функции получения параметров 329
Функция hres() 329
Функция vres() 329
Функция char_line() 329
25.2.4. Основные графические функции 329
Функция set_pixel() 329
Функция get_pixel() 330
Функция fill() 330
Функция clear_screen() 330
Функция invert() 331
Функция shift_direction() 331
Функция draw_line() 331
Функция draw_row() 331
Функция draw_column() 332
Функция draw_rect() 332
Функция draw_circle() 333
Функция bitmap() 333
25.2.5. Функции вывода текстовой информации 333
Функция select_font() 334
Функция print_char() 334
Функция set_cursor() 334
Функция print() 334
Функция println() 335
25.2.6. Функции вывода аудио 335
Функция tone() 335
Функция noTone() 335
25.3. Создание пользовательских шрифтов 336
25.4. Создание графических примитивов 337
25.5. Создание простейшей игровой консоли 340
25.6. Разработка игры для игровой консоли 342
25.6.1. Создание переменных игры 342
25.6.2. Управление положением "игрока" с помощью джойстика 343
25.6.3. Генерация и перемещение объектов-цифр 345
25.6.4. Проверка столкновения "игрока" и объектов-цифр 346
25.6.5. Счетчик баллов "игрока" 347
25.6.6. Переход на новый уровень 348
25.6.7. Отображение данных игры на табло 348
25.6.8. Звуковое сопровождение игры 349
25.6.9. Основной цикл игры 349
25.6.10. Добавляем меню для выбора игр 350Глава 26. Arduino и радиоуправление 352
26.1. Принципы формирования радиосигнала 353
26.2. Установка связи приемника с передатчиком 355
26.3. Разработка скетча приема команд для Arduino 356Глава 27. Arduino и беспроводной радиомодуль NRF24L01 359
27.1. Радиомодуль NRF24L01 359
27.2. Библиотека для работы с модулем NRF24L01 360
27.2.1. Параметры библиотеки Mirf 361
27.2.2. Функции библиотеки Mirf 361
Функция init() 361
Функция setRADDR() 361
Функция setTADDR() 361
Функция config() 361
Функция dataReady() 362
Функция getData() 362
Функция send() 362
Функция isSending() 362
27.3. Пример соединения двух плат Arduino с помощью модуля NRF24L01 363Глава 28. Работа Arduino с USB-устройствами 366
28.1. Интерфейс USB 366
28.2. USB Host Shield 367
28.3. HID-устройства USB 368
28.4. Подключение HID-мыши USB 371
28.5. Использование HID-устройства (руль Defender) для управления роботом 371
28.6. Управление iRobot Create с помощью беспроводного геймпада через Arduino 381Глава 29. Arduino и ROS 388
29.1. Что такое ROS? 388
29.2. Дистрибутивы ROS 389
29.3. Установка ROS 389
29.4. Узлы и темы в ROS 390
29.5. Пакет rosserial 391
29.6. Подготовка сообщения (publisher) на Arduino 392
29.7. Создание подписки (subscriber) на Arduino 395
29.8. Связь через ROS двух плат Arduino 397Глава 30. Голосовое управление 400
30.1. Управление электроприборами с помощью радиорозеток UNIEL 400
30.2. Радиомодули FS1000A 402
30.3. Модуль распознавания голоса Voice Recognition Module V2 405
30.3.1. Обучение модуля 405
30.4. Система голосового управления 408Приложения 415
Приложение 1. Список использованных источников 417
Приложение 2. Начальная школа 418Плавное регулирование яркости 418
Урок 2. Подключение кнопки 421
Урок 3. Работа с монитором порта 425
Урок 4. Подключение датчика температуры и влажности, работа с монитором порта 428
Урок 5. Подключение модуля часов 431
Урок 6. Работа с жидкокристаллическим экраном 433
модуляции 435
Урок 8. Подключение фоторезистора 438
Урок 9. Подключение фоторезистора и 8-ми светодиодов 440Проект 1. Бегущий огонек 443
Проект 2. Секундомер 444
Проект 3. Тренер 448
Проект 4. Цветная температура 453
Проект 5. Метеостанция 455Приложение 3. Описание электронного архива 462
Размер: 91.6 MB