Вы находитесь на странице: 1из 33

МИНОБРНАУКИ РОССИИ

федеральное государственное бюджетное образовательное учреждение


высшего образования
«Московский государственный технологический университет «СТАНКИН»
(ФГБОУ ВО «МГТУ «СТАНКИН»)

НАУЧНО – ТЕХНИЧЕСКИЙ ОТЧЕТ

О ПРОХОЖДЕНИИ ________________ПРОИЗВОДСТВЕННОЙ____________ ПРАКТИКИ


вид практики

СТУДЕНТА__________3___________КУРСА _________ИДБ-16-16________________ГРУППЫ

БОГОМОЛОВОЙ АНАСТАСИИ ОЛЕГОВНЫ


(ФИО)

МЕСТО ПРОХОЖДЕНИЯ ПРАКТИКИ ____________________________________________

_______________________________________________________________________________

СРОКИ ПРАКТИКИ: ____________С___25 ИЮНЯ 2018 ПО 22 ИЮЛЯ 2018_____________

РУКОВОДИТЕЛИ ПРАКТИКИ:

ОТ КАФЕДРЫ______________КОЗАК НИКОЛАЙ ВЛАДИМИРОВИЧ, ДОЦЕНТ, К.Т.Н.__


(ФИО, ДОЛЖНОСТЬ)

ОТ ОРГАНИЗАЦИИ_____________________________________________________________
(ФИО, ДОЛЖНОСТЬ)

Практикант ________________________
(дата, подпись)

Оценка __________________
Руководитель
Практики от кафедры ________________________
(дата, подпись)

МОСКВА 2019
Оглавление
Введение ............................................................................................................................................ 4
Цель: .............................................................................................................................................. 4
Задачи: ........................................................................................................................................... 4
Arduino Uno ....................................................................................................................................... 5
Общие сведения ............................................................................................................................. 5
Характеристики .............................................................................................................................. 5
Схема ............................................................................................................................................. 6
Питание .......................................................................................................................................... 6
Выводы питания: ........................................................................................................................ 7
Память ........................................................................................................................................... 7
Входы и Выходы ............................................................................................................................ 7
Распиновка ..................................................................................................................................... 8
Связь .............................................................................................................................................. 9
Токовая защита разъема USB.......................................................................................................... 9
Физические характеристики ........................................................................................................... 9
Цифровые выводы .......................................................................................................................... 9
WeMos D1 R2................................................................................................................................... 11
Общие сведение ........................................................................................................................... 11
Технические характеристики ........................................................................................................ 11
Схема ........................................................................................................................................... 12
Назначение выводов ..................................................................................................................... 12
Комплектующие .............................................................................................................................. 13
Высокочувствительный датчик воды ............................................................................................ 13
Инфракрасный датчик препятствий YL-63.................................................................................... 14
Датчик освещенности на LM393 ................................................................................................... 15
Программный инструментарий ........................................................................................................ 16
Программирование ....................................................................................................................... 16
Запись эскизов на плату Arduino ................................................................................................... 17
Автоматическая (программная) перезагрузка ................................................................................ 17
Стандартные библиотеки .............................................................................................................. 18
Библиотеки 2.0 ............................................................................................................................. 18
Библиотека SPI ............................................................................................................................. 19
Коротко о Serial Peripheral Interface (SPI). ..................................................................................... 19
Wire Library .................................................................................................................................. 20
Функции ....................................................................................................................................... 22
Функция pinMode() ................................................................................................................... 22
Функция digitalWrite() ............................................................................................................... 22
2
Функция digitalRead()................................................................................................................ 23
АttachInterrupt(interrupt, function, mode) ..................................................................................... 23
Функция analogWrite() .............................................................................................................. 25
Функция analogReference() ........................................................................................................ 25
Практическая часть .......................................................................................................................... 27
Подключение датчиков................................................................................................................. 27
Датчик движения YL-63 ............................................................................................................ 27
Высокочувствительный датчик воды ........................................................................................ 29
Датчик освещенности ............................................................................................................... 30
Создание модуля умного света на основе датчика освещённости и микроконтроллера WeMos при
использовании диода. ............................................................................................................................ 32
Заключение ...................................................................................................................................... 32
Библиография .................................................................................................................................. 33

3
Введение
В современном мире уже успели многое изобрести. Люди стараются изобретать и делать все
максимально качественно и из хороших материалов. Из-за чего вещи упрощающие жизнь
становятся дорогими. Позволить себе могут не многие, а кому это необходимо для простого
существования приходится во многом себе отказывать и копить. На данной практике не было
необходимости делать что-то, в чем бы кто-то нуждался. Но были совершенны попытки
удешевления и сбора устройств из недорогих аналогов.

Цель:
1. Создание модуля умного света на основе датчика освещённости и микроконтроллера
WeMos.
2. Создание начальной схемы подключения датчиков для дальнейшей реализации
программного управления микроклиматом теплицы.

Задачи:
1. Анализ аппаратных средств микроконтроллеров семейства Arduino и датчиков сбора
данных об окружающей среде.
2. Анализ программного инструментария для подключение различного рода датчиков к
микроконтроллерам.
3. Разработка типовых схем подключения датчиков сбора данных об окружающей среде.
4. Реализация подключения датчиков сбора данных об окружающей среде к
микроконтроллерам семейств Arduino и WeMos.
5. Программная реализация сбора данных для реализации умного света.
6. Программная реализация сбора данных для управления микроклиматом теплицы.

По итогу работы должны появиться модуль умного света сделанный на основе


микроконтроллера WeMos и начальная сборка части модуля управления микроклимата теплицы
на основе микроконтроллера семейства Arduino.

4
Arduino Uno

Общие сведения

Arduino Uno(см. рис. 1) контроллер построен на ATmega328. Платформа имеет 14 цифровых


вход/выходов (6 из которых могут использоваться как выходы ШИМ), 6 аналоговых входов,
кварцевый генератор 16 МГц, разъем USB, силовой разъем, разъем ICSP и кнопку перезагрузки.
Для работы необходимо подключить платформу к компьютеру посредством кабеля USB, либо
подать питание при помощи адаптера AC/DC или батареи.

В отличие от всех предыдущих плат, использовавших FTDI USB микроконтроллер для связи
по USB, новый Ардуино Uno использует микроконтроллер ATmega8U2

"Uno" переводится как один с итальянского. Новая плата стала флагманом линейки плат
Ардуино.

Рис. 1

Характеристики

Таблица 1

Характеристика Значение
Микроконтроллер ATmega328
Рабочее напряжение 5В

Входное напряжение (рекомендуемое) 7-12 В


Входное напряжение (предельное) 6-20 В

5
Цифровые Входы/Выходы 14 (6 из которых могут
использоваться как выходы ШИМ)
Аналоговые входы 6
Постоянный ток через вход/выход 40 мА
Постоянный ток для вывода 3.3 В 50 мА
Флеш-память 32 Кб (ATmega328) из которых
0.5 Кб используются для загрузчика
ОЗУ 2 Кб (ATmega328)
EEPROM 1 Кб (ATmega328)
Тактовая частота 16 МГц

Схема

Принципиальная схема(рис.2):

Рис. 2

Питание

Arduino Uno может получать питание через подключение USB или от внешнего источника
питания. Источник питания выбирается автоматически.

Внешнее питание (не USB) может подаваться через преобразователь напряжения AC/DC
(блок питания) или аккумуляторной батареей. Преобразователь напряжения подключается
посредством разъема 2.1 мм с центральным положительным полюсом. Провода от батареи
подключаются к выводам Gnd и Vin разъема питания.

6
Платформа может работать при внешнем питании от 6 В до 20 В. При напряжении питания
ниже 7 В, вывод 5V может выдавать менее 5 В, при этом платформа может работать нестабильно.
При использовании напряжения выше 12 В регулятор напряжения может перегреться и повредить
плату. Рекомендуемый диапазон от 7 В до 12 В.

Выводы питания:

VIN. Вход используется для подачи питания от внешнего источника (в отсутствие 5 В от


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

5V. Регулируемый источник напряжения, используемый для питания микроконтроллера и


компонентов на плате. Питание может подаваться от вывода VIN через регулятор напряжения, или
от разъема USB, или другого регулируемого источника напряжения 5 В.

3V3. Напряжение на выводе 3.3 В генерируемое встроенным регулятором на плате.


Максимальное потребление тока 50 мА.

GND. Выводы заземления.

Память

Микроконтроллер ATmega328 располагает 32 кБ флэш памяти, из которых 0.5 кБ


используется для хранения загрузчика, а также 2 кБ ОЗУ (SRAM) и 1 Кб EEPROM.(которая
читается и записывается с помощью библиотеки EEPROM).

Входы и Выходы

Каждый из 14 цифровых выводов Uno может настроен как вход или выход, используя
функции pinMode(), digitalWrite(), и digitalRead(), . Выводы работают при напряжении 5 В. Каждый
вывод имеет нагрузочный резистор (по умолчанию отключен) 20-50 кОм и может пропускать до
40 мА. Некоторые выводы имеют особые функции:

Последовательная шина: 0 (RX) и 1 (TX). Выводы используются для получения (RX) и


передачи (TX) данных TTL. Данные выводы подключены к соответствующим выводам микросхемы
последовательной шины ATmega8U2 USB-to-TTL.
Внешнее прерывание: 2 и 3. Данные выводы могут быть сконфигурированы на вызов
прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении
значения. Подробная информация находится в описании функции attachInterrupt().
ШИМ: 3, 5, 6, 9, 10, и 11. Любой из выводов обеспечивает ШИМ с разрешением 8 бит при
помощи функции analogWrite().

SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Посредством данных выводов


осуществляется связь SPI, для чего используется библиотека SPI.
7
LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на
выводе имеет высокий потенциал, то светодиод горит.

На платформе Uno установлены 6 аналоговых входов (обозначенных как A0 .. A5), каждый


разрешением 10 бит (т.е. может принимать 1024 различных значения). Стандартно выводы имеют
диапазон измерения до 5 В относительно земли, тем не менее имеется возможность изменить
верхний предел посредством вывода AREF и функции analogReference(). Некоторые выводы
имеют дополнительные функции:

I2C: 4 (SDA) и 5 (SCL). Посредством выводов осуществляется связь I2C (TWI), для
создания которой используется библиотека Wire.

Дополнительная пара выводов платформы:

AREF. Опорное напряжение для аналоговых входов. Используется с функцией


analogReference().

Reset. Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно


применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к
кнопке на самой плате Arduino.

Обратите внимание на соединение между выводами Arduino и портами ATmega328.

Распиновка
Обратите внимание, что приведенная ниже распиновка соответствует только DIP чипам.
Ардуино Mini базируется на более компактном чипе (IC package) и имеет два дополнительных
ADC пина (Рис. 3).

Рис. 3

8
Цифровые входы/выходы 11,12 и 13 используются ICSP коннектором для MISO, MOSI, SCK
соединений (контакты 17, 18 и 19 на ATMega 168). Избегайте низкоомной нагрузки на этих к
входах при использовании ICSP коннектора.

Связь

На платформе Arduino Uno установлено несколько устройств для осуществления связи с


компьютером, другими устройствами Arduino или микроконтроллерами. ATmega328
поддерживают последовательный интерфейс UART TTL (5 В), осуществляемый выводами 0 (RX)
и 1 (TX). Установленная на плате микросхема ATmega8U2 направляет данный интерфейс через
USB, программы на стороне компьютера "общаются" с платой через виртуальный COM порт.
Прошивка ATmega8U2 использует стандартные драйвера USB COM, никаких стороних драйверов
не требуется, но на Windows для подключения потребуется файл ArduinoUNO.inf. Мониторинг
последовательной шины (Serial Monitor) программы Arduino позволяет посылать и получать
текстовые данные при подключении к платформе. Светодиоды RX и TX на платформе будут
мигать при передаче данных через микросхему FTDI или USB подключение (но не при
использовании последовательной передачи через выводы 0 и 1).

Библиотекой SoftwareSerial возможно создать последовательную передачу данных через


любой из цифровых выводов Uno.

ATmega328 поддерживает интерфейсы I2C (TWI) и SPI. В Arduino включена библиотека


Wire для удобства использования шины I2C.

Токовая защита разъема USB

В Arduino Uno встроен самовостанавливающийся предохранитель (автомат), защищающий


порт USB компьютера от токов короткого замыкания и сверхтоков. Хотя практически все
компьютеры имеют подобную защиту, тем не менее, данный предохранитель обеспечивает
дополнительный барьер. Предохранитель срабатыват при прохождении тока более 500 мА через
USB порт и размыкает цепь до тех пока нормальные значения токов не будут востановлены.

Физические характеристики

Длина и ширина печатной платы Uno составляют 6.9 и 5.3 см соответственно. Разъем USB и
силовой разъем выходят за границы данных размеров. Четыре отверстия в плате позволяют
закрепить ее на поверхности. Расстояние между цифровыми выводами 7 и 8 равняется 0,4 см, хотя
между другими выводами оно составляет 0,25 см.

Цифровые выводы
Выводы платформы Arduino могут работать как входы или как выходы. Данный документ
объясняет функционирование выводов в этих режимах. Также необходимо обратить внимание на
то, что большинство аналоговых входов Arduino (Atmega) могут конфигурироваться и работать
так же как и цифровые порты ввода/вывода.
9
Свойства порта вводы/вывода (pin), сконфигурированного как порт ввода
Выводы Arduino (Atmega) стандартно настроены как порты ввода, таким образом, не
требуется явной декларации в функции pinMode(). Сконфигурированные порты ввода находятся в
высокоимпедансном состоянии. Это означает то, что порт ввода дает слишком малую нагрузки на
схему, в которую он включен. Эквивалентом внутреннему сопротивлению будет резистор 100
МОм подключенный к выводу микросхемы. Таким образом, для перевода порта ввода из одного
состояния в другое требуется маленькое значение тока. Это позволяет применять выводы
микросхемы для подключения емкостного датчика касания, фотодиода, аналогового датчика со
схемой, похожей на RC-цепь.
С другой стороны, если к данному выводу ничего не подключено, то значения на нем будут
принимать случайные величины, наводимые электрическими помехами или емкостной
взаимосвязью с соседним выводом.
Подтягивающие (нагрузочные) резисторы
Если на порт ввода не поступает сигнал, то в данном случае рекомендуется задать порту
известное состояние. Это делается добавлением подтягивающих резисторов 10 кОм,
подключающих вход либо к +5 В (подтягивающие к питанию резисторы), либо к земле
(подтягивающие к земле резисторы).
Микроконтроллер Atmega имеет программируемые встроенные подтягивающие к питанию
резисторы 20 кОм. Программирование данных резисторов осуществляется следующим образом.
pinMode(pin, INPUT); назначить выводу порт ввода
digitalWrite(pin, HIGH); включить подтягивающий резистор
Подтягивающий резистор пропускает ток достаточный для того, чтобы слегка светился
светодиод подключенный к выводу, работающему как порт ввода. Также легкое свечение
светодиодов означает то, что при программировании вывод не был настроен как порт вывода в
функции pinMode().
Подтягивающие резисторы управляются теми же регистрами (внутренние адреса памяти
микроконтроллера), что управляют состояниями вывода: HIGH или LOW. Следовательно, если
вывод работает как порт ввода со значением HIGH, это означает включение подтягивающего к
питанию резистора, то конфигурация функцией pinMode() порта вывода на данном выводе
микросхемы передаст значение HIGH. Данная процедура работает и в обратном направлении, т.е.
если вывод имеет значение HIGH, то конфигурация вывода микросхемы как порта ввода функцией
pinMode() включит подтягивающий к питанию резистор.
Затруднительно использовать вывод микросхемы 13 в качестве порта ввода из-за
подключенных к нему светодиода и резистора. При подключении подтягивающего к питанию
резистора 20 кОм на вводе будет 1.7 В вместо 5 В, т.к. происходит падение напряжения на
светодиоде и включенном последовательно резисторе. При необходимости использовать вывод
микросхемы 13 как цифровой порт ввода требуется подключить между выводом и землей
внешний подтягивающий резистор.
Свойства порта ввода/вывода, сконфигурированного как порт вывода
Выводы, сконфигурированные как порты вывода, находятся в низкоимпедансном состоянии.
Данные выводы могут пропускать через себя достаточно большой ток. Выводы микросхемы
Atmega могут быть источником (положительный) или приемником (отрицательный) тока до 40 мА
для других устройств. Такого значения тока достаточно чтобы подключить светодиод (обязателен
последовательно включенный резистор), датчики, но недостаточно для большинства реле,
соленоидов и двигателей.
10
Короткие замыкания выводов Arduino или попытки подключить энергоемкие устройства
могут повредить выходные транзисторы вывода или весь микроконтроллер Atmega. В
большинстве случаев данные действия приведут к отключению вывода на микроконтроллере, но
остальная часть схемы будет работать согласно программе. Рекомендуется к выходам платформы
подключать устройства через резисторы 470 Ом или 1 кОм, если устройству не требуется больший
ток для работы.

WeMos D1 R2
Общие сведение
WeMos D1 R2 на базе чипа ESP8266(см. рис. 4). Контроллер имеет формфактор Arduino Uno
и работает в большинстве случаев как UNO но имеет одно огромное преимущество над
стандартным Ардуино - он обладает встроенным Wi-Fi и прошивки в данном модуле можно
обновлять по воздуху.

Рис.4

Еще одним преимуществом данной платы является то, что на ней есть разъем под внешнюю
Wi-Fi антенну, что позволяет увеличить площадь покрытия сетью, если вы будете его
использовать в режиме передатчика.

Технические характеристики
• 11 цифровых входов / выходов. Все выводы поддерживают interrupt/pwm/I2C/one-wire (за
исключением D0)
• 1 аналоговый вход (максимальное входное напряжение 3,3 В)
• Micro USB разъем
• Разъем питания (9-24 В)
• Поддержка Arduino IDE
• Микроконтроллер ESP-8266EX
• Частота микроконтроллера 80MHz/160MHz
• Flash память 4 Мб
• Программирование через Serial или OTA (беспроводная загрузка программного кода по Wi-
Fi)

11
• Наличие WI-FI модуля

Схема

Принципиальная схема(рис.5):

Рис.5

Назначение выводов
Таблица 2

Pin Function ESP-8266


Pin
TX TXD TXD
RX RXD RXD
A0 Analog input, max 3.3V A0
input
D0 IO GPIO16
D1 IO,SCL GPO5
D2 IO,SDA GPIO4
D3 IO,pull-up GPIO0
D4 IO,pull-up,BUILTIN_LED GPIO2
D5 IO,SCK GPIO14
D6 IO,MISO GPIO12
D7 IO,MOSI GPIO13
12
D8 IO,pull-down,SS GPIO15
G Ground GND
5V 5V -
3V3 3.3V 3.3V
RST Reset RST

Комплектующие

Высокочувствительный датчик воды

Описание:
Датчик воды(рис.6) предназначен для обнаружения воды, которая может быть широко
используется при измерении количества осадков, уровня воды и даже утечки жидкости.

Датчик в основном состоит из трех частей:


Резистор 1 MΩ и несколько линий контактов.

Рис.6

Этот датчик работает, имея ряд открытых контактов связанных, чередованием между
заземленными и чувствительными.
Контакты датчика имеют слабый подтягивающий резистор 1 MΩ.
Резистор будет поднимать значение датчика до высокого уровня, пока капля воды не закроет
контакт датчика.
Схема будет работать с цифровыми контактами ввода / вывода вашего Arduino, или с
аналоговыми контактами, чтобы обнаружить количество вызванного водой контакта между
заземленными и следами датчика.
Имеет низкое энергопотребление и высокую чувствительность.
Может быть совместим с Arduino UNO, Arduino mega2560 , Arduino ADK и т.д.

Особенности:
1. Рабочее напряжение: 5 В
2. Рабочий ток: <20 мА
3. Интерфейс: аналоговый
13
4. Ширина обнаружения: 40 мм × 16 мм
5. Рабочая температура: 10 ℃ ~ 30 ℃
6. Вес: 3 г
7. Размер: 65мм × 20мм × 8мм
8. Arduino-совместимый интерфейс
9. Низкое энергопотребление
10 .Высокая чувствительность
11. Выходное напряжение сигнала: 0 ~ 4,2 В

Выходы(рис.7):
«S» обозначает входной сигнал
«+» для питания
"-" для GND

Предназначен для:
1. Обнаружение осадков
2. Утечка жидкости
3. Детектор переполнения бака

Рис.7

Инфракрасный датчик препятствий YL-63


Цифровой инфракрасный датчик обхода препятствий YL-63 (или FC-51) (см. рис. 9)
применяется тогда, когда нужно определить наличие объекта, а точное расстояние до объекта
знать необязательно. Датчик состоит из инфракрасного излучателя, и фотоприемника. ИК
источник излучает инфракрасные волны, которые отражаются от препятствия и фиксируются
фотоприемником. Датчик обнаруживает препятствия в диапазоне расстояний от нуля до
установленной предельной границы. Он построен на основе компаратора LM393, который выдает
напряжение на выход по принципу: обнаружено препятствие –логический уровень HIGH, не
обнаружено – логический уровень LOW, данное состояние показывает и находящийся на датчике
красный светодиод. Пороговое значение зависит от настройки датчика и регулируется с помощью
установленного на модуле потенциометра. Для индикации питания на датчике установлен
зеленый светодиод. Датчик применяется в робототехнике для обнаружения препятствий при
движении колесных или гусеничных роботов.

14
Рис.8

Технические характеристики датчика препятствия YL-63


● Модель: YL-63(или FC-51)
● напряжение питания: 3.3–5 В
● тип датчика: диффузионный
● компаратор: LM393
● расстояние обнаружения препятствий: 2 – 30 см
● эффективный угол обнаружения препятствий: 35°
● потенциометр для изменения чувствительности
● светодиод индикации питания
● светодиод индикации срабатывания

Датчик освещенности на LM393


Модуль освещенности на LM393 (см. рис. 9), используется для измерения интенсивности
света в различных устройствах, таких как, автоматизация света (включении света ночью), роботах
(определения дня или ночи) и приборов контролирующих уровень освещенности. Измерения
осуществляется с помощью светочувствительного элемента (фоторезистора), который меняет
сопротивление в зависимости от освещенности.

Рис.9

Технические параметры
► Напряжение питания: 3.3 В ~ 5.5 В
► Потребляемый ток: 10 мА
► Цифрового выход: TTL (лог 1 или лог 0)
► Аналогового выход: 0 В … Vcc
► Диаметр монтажного отверстия: 2.5 мм

15
► Выходной ток: 15 мА
► Габариты: 42мм х 15мм х 8мм

Общие сведения
Существует два модуля, визуально отличие только в количестве выводов (3 pin и 4 pin),
дополнительный вывод добавлен, для снятие прямых показаний с фоторезистора (аналоговый
выход), в статье пойдет речь о четырех контактом варианте модуля. В этих двух модулей,
измерение осуществляется с помощью фоторезистора, который изменяет напряжение в цепи в
зависимости от количества света, попадающего на него.

Таблица.3

Модуль освещенности с четырьмя выводами содержит два выходных контакты, аналоговый


и цифровой и два контакта для подключения питания. Для считывания аналогово сигнала
предусмотрен отдельный вывод «AO», с которого можно считать показания напряжения с 0 В …
3.3 В или 5 В в зависимости от используемого источника питания. Цифровой вывод DO,
устанавливается в лог «0» или лог «1», в зависимости от яркости, чувствительность выхода,
можно регулировать с помощью поворотного потенциометра. Выходной ток цифрового выхода,
способен выдать более 15 мА, что очень упрощает использования модуля и дает возможность
использовать его минуя контроллер Arduino и подключая его напрямую ко входу однокональному
реле или одному из входов двухконального реле.

Программный инструментарий

Программирование

Платформа программируется посредством ПО Arduino. Из меню Tools > Board выбирается


«Arduino Uno» (согласно установленному микроконтроллеру). Подробная информация находится в
справочнике и инструкциях.

Микроконтроллер ATmega328 поставляется с записанным загрузчиком, облегчающим запись


новых программ без использования внешних программаторов. Связь осуществляется
оригинальным протоколом STK500.

16
Имеется возможность не использовать загрузчик и запрограммировать микроконтроллер
через выводы ICSP (внутрисхемное программирование). Подробная информация находится в
следующей инструкции.

Запись эскизов на плату Arduino


Если есть внешний программатор (например, AVR-ISP, STK500 или параллельный
программатор), можно записывать эскизы на плату Arduino без использования загрузчика. Это
позволяет использовать все пространство программы (флэш) чипа на плате Arduino. Таким
образом, с ATmega168 получаете 16 КБ вместо 14 (на ATmega8 вы получите 8 КБ вместо 7). Это
также позволяет избежать задержки загрузчика при включении питания или перезагрузке платы.
Однако процедура «Загрузка с помощью программатора» не сжигает предохранители, если есть
новый заводской микроконтроллер, надо сначала записать загрузчик, чтобы иметь правильно
работающее устройство.

Это легко сделать следующим образом:

Инструменты-> Доски-> Ваша доска


Сервис-> Программист-> Ваш программист
Эскиз-> Загрузить с помощью программатора

Чтобы вернуться к стандартному способу программирования вашего Arduino, нужно


переписать загрузчик. Сделать это:

Инструменты-> Доски-> Ваша доска


Сервис-> Программист-> Ваш программист
Сервис-> Записать загрузчик

Автоматическая (программная) перезагрузка

Uno разработана таким образом, чтобы перед записью нового кода перезагрузка
осуществлялась самой программой Arduino на компьютере, а не нажатием кнопки на платформе.
Одна из линий DTR микросхемы ATmega8U2, управляющих потоком данных (DTR), подключена
к выводу перезагрузки микроконтроллеру ATmega328 через 100 нФ конденсатор. Активация
данной линии, т.е. подача сигнала низкого уровня, перезагружает микроконтроллер. Программа
Arduino, используя данную функцию, загружает код одним нажатием кнопки Upload в самой среде
программирования. Подача сигнала низкого уровня по линии DTR скоординирована с началом
записи кода, что сокращает таймаут загрузчика.

Функция имеет еще одно применение. Перезагрузка Uno происходит каждый раз при
подключении к программе Arduino на компьютере с ОС Mac X или Linux (через USB). Следующие
полсекунды после перезагрузки работает загрузчик. Во время программирования происходит
задержка нескольких первых байтов кода во избежание получения платформой некорректных
17
данных (всех, кроме кода новой программы). Если производится разовая отладка скетча,
записанного в платформу, или ввод каких-либо других данных при первом запуске, необходимо
убедиться, что программа на компьютере ожидает в течение секунды перед передачей данных.

На Uno имеется возможность отключить линию автоматической перезагрузки разрывом


соответствующей линии. Контакты микросхем с обоих концов линии могут быть соединены с
целью восстановления. Линия маркирована «RESET-EN». Отключить автоматическую
перезагрузку также возможно подключив резистор 110 Ом между источником 5 В и данной
линией.

Стандартные библиотеки
EEPROM - чтение и запись в «постоянное» хранилище
Ethernet - для подключения к Интернету с использованием Arduino Ethernet Shield, Arduino
Ethernet Shield 2 и Arduino Leonardo ETH
Firmata - для связи с приложениями на компьютере с использованием стандартного
последовательного протокола.
GSM - для подключения к сети GSM / GRPS с экраном GSM.
LiquidCrystal - для управления жидкокристаллическими дисплеями ( ЖК-дисплеями )
SD - для чтения и записи SD-карт
Серво - для управления серводвигателями
SPI - для связи с устройствами, использующими шину последовательного периферийного
интерфейса (SPI)
SoftwareSerial - для последовательной связи на любых цифровых выводах. Версия 1.0 и
более поздняя Arduino включает Mikal Hart «s NewSoftSerial библиотеку как SoftwareSerial .
Stepper - для управления шаговыми двигателями
TFT - для рисования текста, изображений и фигур на экране Arduino TFT
WiFi - для подключения к интернету с помощью Arduino WiFi Shield
Проводной - двухпроводной интерфейс ( TWI / I2C ) для отправки и получения данных
через сеть устройств или датчиков.
Библиотеки Matrix и Sprite больше не являются частью основного дистрибутива.

Библиотеки 2.0
CurieBLE - взаимодействуйте со смартфонами и планшетами с помощью Bluetooth Low
Energy (BLE).
CurieIMU - управление бортовым акселерометром и гироскопом.
18
CurieTimerOne - позволяет использовать функции таймера.
CurieTime - позволяет контролировать и использовать внутренние RTC (часы реального
времени)

Библиотека SPI
Библиотека SPI позволяет контроллеру Arduino взаимодействовать с устройствами
поддерживающими SPI протокол. Arduino в данном случае выступает в качестве ведущего
устройтва.

Коротко о Serial Peripheral Interface (SPI).


Последоваетельный периферийный интерфейс (SPI) — это последовательный синхроный
протокол передачи данных используемый микроконтроллерами для обмена данными с одним или
несколькими периферийными устройствами на небольших растояниях.

Для организации соединения SPI необходимо одно ведущее устройство, обычно это
микроконтроллер, которое управляет соединением с ведомыми устройствами. Обычно
подключение осуществляется тремя общими линиями и линией выбора переферийного(ведомого)
устройства:

Master In Slave Out (MISO), переводится как "вход ведущего выход ведомого", используется
для передачи данных от ведомого к ведущему.
Master Out Slave In (MOSI) — выход ведущего вход ведомого, для передачи данных от ведущего к
периферийным устройствам.
Serial Clock (SCK) — синхронизирующая линия, синхросигнал генерируется ведущим
устройством.
Slave Select pin — вход на ведомых устройствах с помощью которого ведущий может
инициировать обмен данными с периферийным устройством. Если на этом входе LOW, то
ведомый взаимодействует с ведущим, если HIGH, то ведомый игнорирует сигналы от ведущего.

При работе с SPI устройствами надо учитывать следующие моменты:

Какой порядок вывода данных используется: Most Significant Bit (MSB - старший бит (разряд)) or
Least Significant Bit (LSB - младший бит) первый. Порядок может быть изменен функцией
SPI.setBitOrder().

Уровень сигнала синхронизации — по какому синхронизирующему сигналу (HIGH или LOW)


передаются данные.
Фаза синхронизации — влияет на последовательность установки и выборки данных. Фаза
синхронизации SPI и уровень сигнала задается функцией SPI.setDataMode().
Скорость на которой работает SPI устанавливается функцией SPI.setClockDivider().

Таблица 2

19
Производители SPI устройств несколько по разному реализуют протокол, поэтому
необходимо
внимательно
Режим Уровень сигнала (CPOL) Фаза (CPHA)

0 0 0

1 0 1

2 1 0

3 1 1

ознакомиться с техническим описанием к устройству. Комбинация фазы синхронизиции (CPHA) и


уровня сигнала синхронизации (CPOL) задают режим логики работы интерфейса SPI. Режим
устанавливается функцией SPI.setDataMode().

Подключение

На контроллерах Arduino Duemilanove и других на базе ATmega168 /328, шина SPI


использует выходы 10 (SS), 11 (MOSI), 12 (MISO), и 13 (SCK). На Arduino Mega — 50 (MISO), 51
(MOSI), 52 (SCK), и 53 (SS). Обратите внимание, что даже если вы не используете выход SS, он
должен быть установлен как выход, в противном случае интерфейс может оказаться в режиме
ведомого и библиотека не будет работать как надо.

В качестве SS выхода может быть использован выход отличный от 10-го. Например, при
работе с Arduino Ethernet shield контроллер использует выход 4 для взаимодействия с SD картой
по SPI и выход 10 для работы с Ethernet контроллером.

Функции
begin()
end()
setBitOrder()
setClockDivider()
setDataMode()
transfer()

Wire Library

Эта библиотека позволяет вам общаться с устройствами I2C / TWI. На платах Arduino с
разметкой R3 (разводка 1.0) SDA (линия передачи данных) и SCL (линия синхронизации)

20
находятся на разъемах выводов рядом с выводом AREF. Arduino Due имеет два интерфейса I2C /
TWI: SDA1 и SCL1находятся рядом с выводом AREF, а дополнительный - на контактах 20 и 21.

В качестве ссылки в таблице(см. Таблица 3) ниже показано расположение TWI-выводов на


различных платах Arduino.

Таблица 3

доска I2C / TWI контакты

Uno, Ethernet A4 (SDA), A5 (SCL)

Mega2560 20 (SDA), 21 (SCL)

Leonardo 2 (SDA), 3 (SCL)

В связи 20 (SDA), 21 (SCL), SDA1 , SCL1

Начиная с Arduino 1.0 библиотека наследует функции Stream, что делает ее совместимой с
другими библиотеками чтения / записи. Из-за этого send () и receive () были заменены read () и
write ().
Существуют как 7-, так и 8-битные версии адресов I2C . 7 бит идентифицируют устройство, а
восьмой бит определяет, записывается оно или читается с него. Библиотека Wire использует 7-
битные адреса. Если у вас есть таблица данных или пример кода, который использует 8-битный
адрес, вам нужно отбросить младший бит (т.е. сдвинуть значение на один бит вправо), получив
адрес от 0 до 127. Однако адреса от 0 до 7 не используются, потому что зарезервированы, поэтому
первым адресом, который можно использовать, является 8. Обратите внимание, что при
подключении выводов SDA / SCL необходим подтягивающий резистор. Пожалуйста, обратитесь к
примерам для получения дополнительной информации. На плате MEGA 2560 есть подтягивающие
резисторы на контактах 20 - 21 на борту.
Реализация библиотеки Wire использует 32-байтовый буфер, поэтому любая связь должна
быть в пределах этого предела. Превышение байтов в одной передаче будет просто отброшено.

Примеры
Цифровой потенциометр : управление аналоговыми устройствами. Цифровой
потенциометр AD5171.
Master Reader / Slave Writer : Запрограммируйте две платы Arduino для связи друг с другом
в конфигурации Master Reader / Slave Sender через I2C.
Master Writer / Slave : Запрограммируйте две платы Arduino для связи друг с другом в
конфигурации Master Writer / Slave Receiver через I2C.
Считыватель SFR Ranger : Считайте ультразвуковой дальномер, подключенный через I2C.
Добавить SerCom : добавление дополнительных последовательных интерфейсов в
микроконтроллеры SAMD.

21
Функции

Функция pinMode()
pinMode()
Описание
Устанавливает режим работы заданного вход/выхода(pin) как входа или как выхода. Подробнее
про цифровые вход/выходы(pins).
Синтаксис
pinMode(pin, mode)
Параметры
pin: номер вход/выхода(pin), который Вы хотите установить
mode: режим одно из двух значение - INPUT или OUTPUT, устанавливает на вход или выход
соответственно.
Возвращаемое значение
нет
Примечание
Аналоговые входы (analog pins) могут быть использованы как цифровые вход/выходы (digital
pins). Обращение к ним идет по номерам от 14 (для аналогового входа 0) до 19 (для аналогового
входа 5).

Функция digitalWrite()
digitalWrite()
Описание
Подает HIGH или LOW значение на цифровой вход/выход (pin).
Если вход/выход (pin) был установлен в режим выход (OUTPUT) функцией pinMode(), то для
значение HIGH напряжение на соответствующем вход/выходе (pin) будет 5В (3.3В для 3.3V плат),
и 0В(земля) для LOW.
Если вход/выход (pin) был установлен в режим вход (INPUT), то функция digitalWrite со
значением HIGH будет активировать внутренний 20K нагрузочный резистор. Подача LOW в свою
очередь отключает этот резистор. Нагрузочного резистра достаточно чтобы светодиод,
подключенный к входу, светил тускло. Если вдруг светодиод работает, но очень тускло, возможно
необходимо установить режим выход (OUTPUT) функцией pinMode().
Замечание. Вход/выход 13 сложнее использовать как цифровой вход, т.к. он имеет
встроенный в плату резистор и светодиод. Если вы активируете еще внутренний нагрузочный
резистор 20K, то напряжение на этом входе будет около 1.7В, вместо ожидаемых 5В, т.к.
светодиод и добавочный резистор снижает напряжение, т.е. Вы всегда будете получать LOW. Если
же Вам все же необходимо использовать 13ый вход/выход, то используйте внешний нагрузочный
резистор.

22
Синтаксис
digitalWrite(pin, value)
Параметры
pin: номер вход/выхода(pin)
value: значение HIGH или LOW
Возвращаемое значение
нет
Примечание
Аналоговые входы (analog pins) могут быть использованы как цифровые вход/выходы (digital
pins). Обращение к ним идет по номерам от 14 (для аналогового входа 0) до 19 (для аналогового
входа 5).

Функция digitalRead()
digitalRead()
Описание
Функция считывает значение с заданного входа - HIGH или LOW.
Синтаксис
digitalRead(pin)
Параметры
pin: номер вход/выхода(pin) который Вы хотите считать
Возвращаемое значение
HIGH или LOW
Примечание
Если вход не подключен, то digitalRead может возвращать значения HIGH или LOW
случайным образом.
Аналоговые входы (analog pins) могут быть использованы как цифровые вход/выходы (digital
pins). Обращение к ним идет по номерам от 14 (для аналогового входа 0) до 19 (для аналогового
входа 5).

АttachInterrupt(interrupt, function, mode)


Задает функцию обработки внешнего прерывания, то есть функция, которая будет вызвана
по внешнему прерыванию. Если до это была задана другая функция, то назначается новая.
Большинство контроллеров Arduino умеют обрабатывать до двух внешних прерываний,
пронумерованных так: 0 (на цифровом порту 2) и 1 (на цифровом порту 3). Arduino Mega
обрабатывает дополнительно еще четыра прерывания: 2 (порт 21), 3 (порт 20), 4 (порт 19) и 5
(порт 18).
Таблица 4

23
Плата int.0 int.1 int.2 int.3 int.4 int.5

UNO, Ethernet 2 3 х х х х

Mega2560 2 3 21 20 19 18

Leonardo 3 2 0 1 7 х

Arduino Due имеет мощные возможности обработки прерываний, что позволяет прикрепить
функцию прерывания для всех доступных контактов. Вы можете напрямую указать порт(пин) в
attachInterrupt ().
Параметры
interrupt: номер прерывания (int)
или pin: номер цифрового порта (только для Arduino Due)
function: функция, вызваемая прерыванием, функция должна быть без параметров и не
возвращать значений. В англоязычной документации употребляется термин interrupt service
routine для такой функции.
mode задает режим обработки прерывания. Допустимо использование следующих констанст:
LOW вызывает прерывание, когда на порту LOW
CHANGE прерывание вызывается при смене значения на порту, с LOW на HIGH и наоборот
RISING прерывание вызывается только при смене значения на порту с LOW на HIGH
FALLING прерывание вызывается только при смене значения на порту с HIGH на LOW
Возвращаемое значение
Нет
Замечание по использованию
Внутри функции обработки прерывания не работает delay(), значения возвращаемые millis()
не изменяются. Возможна потеря данный передаваемых по последовательному соединению (Serial
data) в момент выполнения функциии обработки прерывания. Переменные, изменяемые в
функции, должным быть объявлены как volatile.
Использование перерываний
Прерывания обычно используют для задач, которые должны быть выполнены автоматически
при наступление какого либо внешнего воздействия. Например, считывание значения энкодера
(датчика угла) или реакция на действия пользователя.
Так, если вы хотите считывать значения энкодера без использования прерываний, то
написать программу, которая бы не пропускала ни одного импульса, практически невозможно,
такая программа должна будет практически все время считывать значения с датчика, чтобы не
пропусть импульс. На другие операции просто не останется процессорного времени. Это же
относится и к другим датчикам, выдающим короткий импульс. В таких задачах использования
24
внешних прерываний позволяет разгрузить процессор для других операций и не пропустить
ожидаемый сигнал.

Функция analogWrite()
Описание
Выдает аналоговую величину (ШИМ волну) на порт вход/выхода. Функция может быть
полезна для управления яркостью подключенного светодиода или скоростью электродвигателя.
После вызова analogWrite() на выходе будет генерироваться постоянная прямоугольная волна с
заданной шириной импульса до следующего вызова analogWrite (или вызова digitalWriteили
digitalRead на том же порту вход/выхода). Частота ШИМ сигнала приблизительно 490 Hz.
На большинстве плат Arduino (на базе микроконтроллера ATmega168 или ATmega328) ШИМ
поддерживают порты 3, 5, 6, 9, 10 и 11, на плате Arduino Mega порты с 2 по 13. На более ранних
версиях плат Arduino analogWrite() работал только на портах 9, 10 и 11.
Для вызова analogWrite() нет необходимости устанавливать тип вход/выхода функцией
pinMode().
Функция analogWrite никак не связана с аналоговыми входами и с функцией analogRead.
Синтаксис
analogWrite(pin, value)
Параметры
pin: порт вход/выхода на который подаем ШИМ сигнал.
value: период рабочего цикла значение между 0 (полностью выключено) and 255 (сигнал подан
постоянно).
Возвращаемое значение
нет
Замечание
Период ШИМ сигнала на портах вход/выхода 5 и 6 будет несколько длиннее. Это связано с
тем, что таймер для данных выходов также задействован функциями millis() и delay(). Данный
эффект более заметен при установке коротких периодов ШИМ сигнала (0-10).

Функция analogReference()
Описание
Функция определяет опорное напряжение относительно которого происходят аналоговые
измерения. Функция analogRead() возвращает значение с разрешением 10 бит пропорционально
входному напряжению на аналоговом входе, и в зависимости от опорного напряжения.
Возможные настройки:
DEFAULT: стандартное опорное напряжение 5 В (на платформах с напряжением питания 5
В) или 3.3 В (на платформах с напряжением питания 3.3 В)

25
INTERNAL: встроенное опорное напряжение 1.1 В на микроконтроллерах ATmega168 и
ATmega328, и 2.56 В на ATmega8.
INTERNAL1V1: встроенное опорное напряжение 1.1 В (Arduino Mega)
INTERNAL2V56: встроенное опорное напряжение 2.56 (Arduino Mega)
EXTERNAL: внешний источник опорного напряжения, подключенный к выводу AREF
Синтаксис

analogReferenc
e(type)

Параметры
type: определяет используемое опорное напряжение (DEFAULT, INTERNAL или
EXTERNAL).
Возвращаемое значение
нет
Внимание
Внешнее напряжение рекомендуется подключать к выводу AREF через резистор 5 кОм.
Таким образом уменьшается риск повреждения микросхемы Atmega если настройки
analogReference не совпадают с возможностями платформы. Однако при этом произойдет
небольшая просадка напряжения, вследствие того, что имеется встроенный резистор 32 кОм,
подключенный к выводу AREF. В этом случае оба резистора работают как делитель напряжения.
Подсоединение внешнего резистора позволяет быстро переключаться на напряжение 3.3 В вывода
AREF с напряжения 5 В DEFAULT без конфигурации аппаратной части и АЦП.
Использование вывода AREF
Напряжение, подключенное к выводу AREF, конвертируется АЦП и, затем, определяется
значение напряжения, при котором АЦП выдает самое высокое цифровое значение, т.е 1023.
Другие значения напряжения, поступающие в АЦП, конвертируются пропорционально. Таким
образом, при настройке DEFAULT 5 В значение напряжения 2.5 В в АЦП будет конвертироваться
в 512.
В стандартной конфигурации платформ Arduino вывод AREF (вывод 21 Atmega) не
задействован. В этом случае при настройке DEFAULT к выводу подключается внутреннее
напряжение AVCC. Соединение является низко-импедансным и любое напряжение подведенное к
выводу в этот момент может повредить микросхему ATMEGA.
Настройкой INTERNAL к выводу AREF подключается внутреннее напряжение 1.1 В (или
2.56 микросхемы ATmega8). При этом напряжение соответствующее или превышающее 1.1 В
будет конвертироваться АЦП в 1023. Другие значения напряжения конвертируются
пропорционально.
Внутреннее подключение источника 1.1 В к выводу является высоко-импедансным, что
означает, что для измерение напряжения на выводе может быть произведено только мультиметром
с высоким сопротивлением. Ошибочное подключение напряжения к выводу AREF при этой
настройке функции analogReference не повредит микросхему, но превысит значение 1.1 В. В этом
случае АЦП будет конвертировать напряжение внешнего источника. Во избежание

26
вышеописанных проблем настоятельно рекомендуется подключать внешнее напряжение через
резистор 5 кОм.
Рекомендуемой настройкой для вывода AREF является EXTERNAL. При этом происходит
отключение обоих внутренних источников, и внешнее напряжение будет являться опорным для
АЦП.

Практическая часть

Подключение датчиков влажности, движения, а также дисплея к плате Arduino UNO.


Конечным продуктом должно получиться так, что бы дисплей показывал, сколько воды находится
в резервуаре(горшке с растением) и находится ли рядом объект.

Подключение датчиков священности к WeMos D1, что бы в последствии можно было


регулировать освещённость. Конечным результатом при подключении должен стать регулятор
«умный свет». При недостаточной освященности включающий освящение, а так же в вечернее
время.

Подключение датчиков

Датчик движения YL-63


Модуль имеет 3 вывода:
VCC (1)— питание 3-5 В;
GND(2) — земля;
OUT(3) — цифровой выход.

Рис. 10

27
Схема подключения (рис.11):

Рис. 11

Программная реализация

Программная реализация подключения датчика движения с объяснением программы в


комментариях.

// контакт подключения выхода датчика


#define PIN_YL63 2
// Данные с датчика Y63
#define barrier digitalRead(PIN_YL63)
void setup() {
// инициализация последовательного порта
Serial.begin(9600);
// настройка контакта подключения датчика в режим INTPUT
}
void loop() {
if (barrier == 2) {
Serial.println("not"); // Зона обнаружения препятствия
while (barrier == 0) // Ждем выхода
{;}
}
else {
Serial.println("BARRIER"); // Вне зоны обнаружения препятствия
while (barrier == 1) // Ждем входа
{;}
}
}

28
Высокочувствительный датчик воды

Модуль имеет 3 вывода:


“+” — питание 3-5 В;
“-“ — земля;
S — цифровой выход

Подключение

Рис. 12

Схема подключения(рис.13):

Рис. 13

. Программная реализация

Программная реализация подключения высокочувствительного датчика воды

int sensorPin = A0;


29
int sensorValue = 0;
int sencorValueAlarm = 500;

void setup () {
Serial.begin(9600);
}
void loop (){
sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
delay(500);
}

Датчик освещенности

Подключение
Модуль имеет 3 вывода:

VCC — питание 3-5 В;


GND — земля;
OUT — цифровой выход.

Схема подключения(рис. 14):

Рис. 14

30
Программная реализация

Программная реализация подключения датчика освещённости с объяснением программы в


комментариях. Программный код послужил реализации модуля умного света на основе
микроконтроллера WeMos.

unsigned long timON=64800000; //микросекунд в 18 часах


unsigned long timOFF=18000000; //микросекунд в 5 часах

void(*res)(void)=0; //функция перезагрузки

void setup()
{
pinMode(D5,INPUT); //цифровой пин датчика
pinMode(D2, OUTPUT); //цифровой пин светодиода
Serial.begin(115200); //инициация порта
}
void loop()
{
int a=digitalRead(D5);//записываем 1/0 с датчика в булевую переменную (1-темно, 0-светло)
unsigned long t=millis();//запомнили сколько прошло времени от начала программы
Serial.print(a);
Serial.print(" Time ");
Serial.print(t/3600000);
Serial.print(":");
Serial.print((t%3600000)/60000);
Serial.print(":");
Serial.print((t%60000)/1000);
Serial.print(",");
Serial.print(t%1000);

if(t>=86400000)// День длится 86 400 000 микросекунд


res();//по истечении 24ч перезагрузимся
if(t<timOFF || t>timON)
{
digitalWrite(2,0);//ночью свет горит всегда
Serial.print(" night, Light ");
}
else
{
digitalWrite(2,!a);
Serial.print(" day, Light ");
}
if(digitalRead(2))
Serial.println("OFF");

31
else
Serial.println("ON");
}

Создание модуля умного света на основе датчика освещённости и


микроконтроллера WeMos при использовании диода.

На Рис. 15 представлено подключение данного модуля. Представлены датчик


освещённости(e), микроконтроллер WeMos(d), диод(c), 4 резистора(a) и макетная плата(b) на 170
контактов. Использованы лишь диод, микроконтроллер и макетная плата. Через плату произошла
передача питания (2) и земли (1).

Рис. 15

Заключение
По итогу работы с датчиками и микроконтроллерами, удалось собрать модуль освещённости
на основе микроконтроллера WeMos. С использованием как источник света диод, при
подключении лампы возникли сложности. Создание начальной схемы подключения датчиков для
дальнейшей реализации программного управления микроклиматом теплицы вызвало трудности.
Был выполнен анализ аппаратных средств микроконтроллеров, датчиков сбора данных об
окружающей среде и программного инструментария. Разработаны и реализованы схемы
подключения датчиков, а так же программная реализация. Удалось подключить без проблем
инфракрасный датчик препятствий YL-63 и высокочувствительный датчик уровня воды к
микроконтроллеру семейства Arduino. Подключение было совершенно без осложнений и
сложностей в написании программного обеспечения. Подключение дисплея вызвало трудности.
Вывод текста на дисплей оказалось невозможным из-за сбоя при подключения внутренней
библиотеки. Поиск и подключение других библиотек результатов не дал. Удавшееся подключение
датчиков можно посмотреть в разделе представленном ранее.

32
Библиография
1. Петин В.А. Проекты с использованием контроллера Arduino./ Петин В.А.
Серия «Электроника» БХВ-Петербург 2015 464 ISBN 978-5-9775-3337-9
2. Саймон Монк. Программируем Arduino. / Саймон Монк. Питер 2017 272
ISBN 978-5-496-02385-6
3. Улли Соммер. Программирование микроконтроллерных плат
Arduino/Freeduino.// Улли Соммер. BHV 2016 256 ISBN 978-5-9775-3680-6
4. Ревич Юрий.Занимательная электроника./ Ревич Юрий. Серия:
«Электроника» BHV 2018 672 ISBN 978-5-9775-3961-6

33