Блог

● Уроки и проекты Arduino

Опубликовано: 23.04.2018
Arduino

Что такое Arduino?

Платформа Ардуино пользуется огромной популярностью во всем мире благодаря удобству и простоте языка программирования, а также открытой архитектуре и программному коду. Плата Arduino состоит из микроконтроллера Atmel AVR и элементов обвязки для программирования и интеграции с другими схемами.  Подробнее ...

Установка Arduino IDE

Первое включение. Установка Arduino IDE

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

Умный дом и интернет вещей. Элементы, решения, системы управления, проекты

Самый главный компонент любой "умной" системы – его контроллер. Контроллер предназначен для получения информации и управления "умным" домом. В нашем наборе два контроллера! Это плата Arduino MEGA и модуль NodeMCU v3 Lua WI-FI ESP8266 CH340. Вы можете выбрать любой из них. Подробнее ...
 
Arduino проект 34: Организация подключения к сети Интернет с помощью модуля Ai-Thinker A6

В предыдущих главе мы рассмотрели мы сделали большие шаги построения "умного дома" –  оснастили его датчиками и исполнительными устройствами и создали и обеспечили определенную степень автоматизации для создания комфорта и безопасности. Теперь пришло время сделать наш "умный дом" устройством IoT (Интернета вещей), чтобы получить доступ к нему для мониторинга и управления из любой точки мира по сети интернет. Организуем доступ контроллеров нашего дома к сети интернет. Подробнее ...
 
Arduino Проект 33:  Модуль GPS. Принцип работы, подключение, примеры

Arduino проект 33:  Модуль GPS. Принцип работы, подключение, примеры

В этом эксперименте рассмотрим работу модуля GPS-приемника, позволяющего определять наше местоположение с помощью глобальной системы GPS, и подключение данного приемника к плате Arduino. GPS (Global Positioning System) – это система, позволяющая с точностью не хуже 100 м определить местоположение объекта.  Подробнее ...

Arduino проект 32: Беспроводная связь. Модуль GSM/GPRS SIM900

Arduino проект 32: Беспроводная связь. Модуль GSM/GPRS SIM900

В этом эксперименте рассмотрим работу модуля GSM/GPRS Shield – платы расширения, позволяющей Arduino работать в сетях сотовой связи по технологиям GSM/GPRS для приёма и передачи данных, SMS и голосовой связи. GSM/GPRS Shield на базе модуля SIMCom SIM900 выпускают несколько производителей, и платы имеют незначительные отличия. Также на некоторых платах расположены: слот для SIM-карты, стандартные 3,5 мм джек для аудиовхода и выхода и разъём для внешней антенны. На плате GSM/GPRS shild имеется несколько перемычек, позволяющих выбрать тип serial-соединения.  Подробнее ...

Arduino Проект 31: Беспроводная связь. Модуль Bluetooth HC-05 Arduino проект 31: Беспроводная связь. Модуль Bluetooth HC-05

В этом эксперименте рассмотрим работу модуля Bluetooth HC-05, позволяющего плате Arduino установить беспроводную связь и обмениваться данными с другими устройствами по протоколу Bluetooth. Bluetooth позволяет объединять в локальные сети любую технику: от мобильного телефона и компьютера до холодильника. При этом одним из немаловажных параметров новой технологии являются низкая стоимость устройства связи (в пределах 20 долларов), его небольшие размеры.  Подробнее ...
 
Arduino проект 30:  Беспроводная связь. Модуль Wi-Fi ESP8266 Arduino проект 30:  Беспроводная связь. Модуль Wi-Fi ESP8266

В этом эксперименте мы познакомимся с модулем ESP8266, с помощью которого можно подключить плату Arduini к сетям Wi-Fi, и напишем скетч для передачи данных датчика температуры на веб-сервис Народный мониторинг. Платы на ESP8266 – это не просто модули для связи по Wi-Fi. Чип, по сути, является микроконтроллером со своими интерфейсами SPI, UART, а также портами GPIO, а это значит, что модуль можно использовать автономно без Arduino и других плат с микроконтроллерами.  Подробнее ...
 
Arduino Проект 29: Работа с Интернетом на примере Arduino Ethernet Shield W5100 Arduino проект 29: Работа с Интернетом на примере Arduino Ethernet Shield W5100

В этом эксперименте мы покажем, как нашей плате Arduino получить доступ к сети Интернет с помощью модуля Ethernet shield W5100. Ethernet Shield позволяет легко подключить вашу плату Arduino к локальной сети или сети Интернет. Он предоставляет возможность Arduino отправлять и принимать данные из любой точки мира с помощью интернет-соединения.  Подробнее ...
 
Arduino проект 28:  Считыватель RFID на примере RC522. Принцип работы, подключение Arduino проект 28:  Считыватель RFID на примере RC522. Принцип работы, подключение

В этом эксперименте мы покажем, как плата Arduino получает доступ к данным RFID-карт и брелоков Mifare с помощью RFID-считывателя RC522C. Идентификация объектов производится по уникальному цифровому коду, который считывается из памяти электронной метки, прикрепляемой к объекту идентификации. Считыватель содержит в своем составе передатчик и антенну, посредством которых излучается электромагнитное поле определенной частоты.  Подробнее ...
 
Arduino проект 27:  SD-карта. Чтение и запись данных Arduino проект 27:  SD-карта. Чтение и запись данных

В этом эксперименте мы покажем, как к плате Arduino подключить SD-карту. Если вашим Аrduino-проектам не хватает памяти, а объем энергонезависимой памяти EEPROM в платах Arduino совсем небольшой, можно использовать внешние носители. Один из самых простых по подключению к платам Arduino – это SD-карта. Можно подсоединиться к SD-карте напрямую, а можно использовать модули.  Подробнее ...
 
Arduino проект 26:  Часы реального времени. Принцип работы, подключение, примеры Arduino проект 26:  Часы реального времени. Принцип работы, подключение, примеры

В этом эксперименте мы рассмотрим модуль часов реального времени на микросхеме DS1307. Микросхема Dallas DS1307 представляет собой часы реального времени с календарем и дополнительной памятью NW SRAM (56 байт). Микросхема подключается к микроконтроллеру при помощи шины I2C. Количество дней в месяце рассчитывается с учетом високосных лет до 2100 г. В микросхеме DS1307 имеется встроенная схема, определяющая аварийное отключение питания  Подробнее ...
 
Arduino проект 25:  ИК-фотоприемник и ИК-пульт. Обрабатываем команды от пульта Arduino проект 25:  ИК-фотоприемник и ИК-пульт. Обрабатываем команды от пульта

В этом эксперименте мы организуем беспроводную ИК-связь, которая нам позволит отправлять на плату Arduino команды с помощью любого ИК-пульта. В качестве приемника будем использовать микросхему TSOP31236. В одном корпусе она объединяет фотодиод, предусилитель и формирователь. На выходе формируется обычный ТТЛ-сигнал без заполнения, пригодный для дальнейшей обработки микроконтроллером.  Подробнее ...
 
Arduino Проект 24:  3-осевой гироскоп + акселерометр на примере GY-521 Arduino проект 24:  3-осевой гироскоп + акселерометр на примере GY-521

В этом эксперименте мы познакомимся с акселерометром и гироскопом и будем с помощью Arduino получать показания с этих датчиков. Модуль GY-521 на микросхеме MPU6050 содержит гироскоп, акселерометр и температурный сенсор. На плате модуля GY-521 расположена необходимая обвязка MPU6050, в том числе подтягивающие резисторы, стабилизатор напряжения на 3,3 В с малым падением напряжения с фильтрующими конденсаторами. Обмен с микроконтроллером осуществляется по шине I2C.  Подробнее ...
 
Arduino проект 23:  Ультразвуковой датчик расстояния HC-SR04. Принцип работы, подключение, пример Arduino проект 23:  Ультразвуковой датчик расстояния HC-SR04. Принцип работы, подключение, пример

В этом эксперименте мы рассмотрим ультразвуковой датчик для измерения расстояния и создадим проект вывода показаний датчика на экран ЖКИ WH1602. Ультразвуковой дальномер HC-SR04 – это помещенные на одну плату приемник и передатчик ультразвукового сигнала. Излучатель генерирует сигнал, который, отразившись от препятствия, попадает на приемник. Измерив время, за которое сигнал проходит до объекта и обратно, можно оценить расстояние.  Подробнее ...
 
Arduino проект 22:  Датчики газов. Принцип работы, пример работы Arduino проект 22:  Датчики газов. Принцип работы, пример работы

В этом эксперименте мы рассмотрим ультразвуковой датчик для измерения расстояния и создадим проект вывода показаний датчика на экран ЖКИ WH1602. Серия MQ-сенсоров для Ардуино, построены на базе мини-нагревателя внутри и используют электрохимический сенсор. Они чувствительны для определенных диапазонов газов и используются в помещениях при комнатной температуре.  Подробнее ...
 
Arduino проект 21:  Датчик влажности и температуры DHT11 Arduino проект 21:  Датчик влажности и температуры DHT11

В этом эксперименте мы рассмотрим датчик для измерения относительной влажности воздуха и температуры DHT11 и создадим проект вывода показаний датчика на экран ЖКИ WH1602. Датчик DHT11 состоит из емкостного датчика влажности и термистора. Кроме того, датчик содержит в себе простенький АЦП для преобразования аналоговых значений влажности и температуры.  Подробнее ...
 
Arduino проект 20:  Датчик температуры DS18B20
Arduino проект 20:  Датчик температуры DS18B20

В этом эксперименте мы рассмотрим популярный цифровой датчик температуры DS18B20, работающий по протоколу 1-Wire, и создадим проект вывода показаний датчика на экран ЖКИ WH1602. DS18B20 – цифровой термометр с программируемым разрешением от 9 до 12 битов, которое может сохраняться в EEPROM-памяти прибора. DS18B20 обменивается данными по шине 1-Wire и при этом может быть как единственным устройством на линии, так и работать в группе. Все процессы на шине управляются центральным микропроцессором.  Подробнее ...
 
Arduino проект 19:  Шаговый двигатель 4-фазный, с управлением на ULN2003 (L293) Arduino проект 19:  Шаговый двигатель 4-фазный, с управлением на ULN2003 (L293)

В этом эксперименте мы рассмотрим подключение к Arduino шагового двигателя. Шаговые двигатели представляют собой электромеханические устройства, задачей которых является преобразование электрических импульсов в перемещение вала двигателя на определенный угол. ШД нашли широкое применение в области, где требуется высокая точность перемещений или скорости.  Подробнее ...
 
Arduino проект 18:  Обрабатываем данные от джойстика. Управление Pan/Tilt Bracket с помощью джойстика Arduino проект 18:  Обрабатываем данные от джойстика. Управление Pan/Tilt Bracket с помощью джойстика

В этом эксперименте мы рассмотрим подключение к Arduino двухосевого аналогового джойстика. Для плат Arduino существуют модули аналогового джойстика, имеющие ось X, Y (потенциометры 10 кОм) и дополнительную кнопку – ось Z. Джойстик позволяет плавно и точно отслеживать степень отклонения от нулевой точки. Сам джойстик подпружиненный, поэтому он будет возвращаться в центральное состояние после его отпускания из определенной позиции.  Подробнее ...
 
Arduino проект 17:  Сервопривод. Крутим потенциометр, меняем положение Arduino проект 17:  Сервопривод. Крутим потенциометр, меняем положение

Сервопривод управляется с помощью импульсов переменной длительности. Угол поворота определяется длительностью импульса, который подается по сигнальному проводу. Это называется широтно-импульсной модуляцией. Сервопривод ожидает импульса каждые 20 мс. Длительность импульса определяет, насколько далеко должен поворачиваться мотор.  Подробнее ...
 
Arduino проект 16:  Графический индикатор. Подключение дисплея Nokia 5110 Arduino проект 16:  Графический индикатор. Подключение дисплея Nokia 5110

В этом эксперименте мы рассмотрим графический дисплей Nokia 5110, который можно использовать в проектах Arduino для вывода графической информации. Жидкокристаллический дисплей Nokia 5110 – монохромный дисплей с разрешением 84×48 на контроллере PCD8544, предназначен для вывода графической и текстовой информации. Питание дисплея должно лежать в пределах 2.7–3.3 В (максимум 3.3 В, при подаче 5 В на вывод VCC дисплей может выйти из строя). Но выводы контроллера толерантны к +5 В, поэтому их можно напрямую подключать к входам Arduino. Немаловажный момент – низкое потребление, что позволяет питать дисплей от платы Arduino без внешнего источника питания.  Подробнее ...
 
Arduino проект 15:  Индикатор LCD1602. Принцип подключения, вывод информации на него
Arduino проект 15:  Индикатор LCD1602. Принцип подключения, вывод информации на него

В этом эксперименте мы познакомимся с жидкокристаллическими индикаторами Winstar для вывода символьной информации. Научимся в Arduino-проектах применять библиотеки и создадим проект вывода показаний датчика температуры LM335 на экран дисплея. Жидкокристаллические индикаторы (ЖКИ, англ. LCD) являются удобным и недорогим средством для отображения данных ваших проектов. Символьный индикатор WH1602 позволяет выводить на экран 2 строки по 16 символов (размером 5×7 или 5×10 и дополнительная строка под курсор). Управляет работой дисплея контроллер.  Подробнее ...
 
Arduino проект 14:  Датчик температуры аналоговый LM335. Принцип работы, пример работы Arduino проект 14:  Датчик температуры аналоговый LM335. Принцип работы, пример работы

В этом эксперименте мы познакомимся с аналоговым датчиком для измерения температуры LM335. LM335 – это недорогой температурный чувствительный элемент с диапазоном от –40 °C до +100 °C и точностью в 1 °C. По принципу действия датчик LM335 представляет собой стабилитрон, у которого напряжение стабилизации зависит от температуры.  Подробнее ...
 
Arduino проект 13:  Фоторезистор. Обрабатываем освещённость, зажигая или гася светодиоды Arduino проект 13:  Фоторезистор. Обрабатываем освещённость, зажигая или гася светодиоды

В этом эксперименте мы познакомимся с аналоговым датчиком для измерения освещенности – фоторезистором. Распространённое использование фоторезистора – измерение освещённости. В темноте его сопротивление довольно велико. Когда на фоторезистор попадает свет, сопротивление падает пропорционально освещенности.  Подробнее ...
 
Arduino проект 12:  Управляем реле через транзистор Arduino проект 12:  Управляем реле через транзистор

В этом эксперименте мы познакомимся с реле, с помощью которого с Arduino можно управлять мощной нагрузкой не только постоянного, но и переменного тока. При подключении реле к Arduino контакт микроконтроллера не может обеспечить мощность, необходимую для нормальной работы катушки. Поэтому следует усилить ток – поставить транзистор. Для усиления удобнее применять n-p-n-транзистор.  Подробнее ...
 
Arduino проект 11:  Транзистор MOSFET. Показываем усилительные качества транзистора. На примере электродвигателя изменяем обороты Arduino проект 11:  Транзистор MOSFET. Показываем усилительные качества транзистора. На примере электродвигателя изменяем обороты

В этом эксперименте мы познакомимся с транзистором MOSFET и с помощью него будем управлять мощной нагрузкой – электродвигателем. Выводы Arduino, сконфигурированные как OUTPUT, находятся в низкоимпедансном состоянии и могут отдавать 40 мА в нагрузку и не в состоянии обеспечить питание мощной нагрузки и большого напряжения. Одним из способов управления мощной нагрузкой является использование полевых MOSFET-транзисторов.  Подробнее ...
 
Arduino проект 10:  Управляем пьезоизлучателем: меняем тон, длительность, играем музыку Arduino проект 10:  Управляем пьезоизлучателем: меняем тон, длительность, играем музыку

В этом эксперименте мы произведем генерацию звуков на Arduino c помощью пьзоизлучателя. Пьезоизлучатели бывают двух типов – со встроенным генератором и без. Пьезоизлучатели со встроенным генератором излучают фиксированный тональный сигнал сразу после подачи на них номинального напряжения. Они не могут воспроизводить произвольного сигнала.  Подробнее ...
 
Arduino проект 9:  Матрица светодиодная 8x8 Arduino проект 9:  Матрица светодиодная 8x8

В этом эксперименте мы рассмотрим каскадное подключение нескольких микросхем 74HC595, что позволит, используя 3 вывода Arduino, управлять множеством контактов, что будет продемонстрировано в примере вывода фигур на экран светодиодной матрицы 8×8. В эксперименте будем использовать двухцветную светодиодную матрицу FYM-23881BUG-11.  Подробнее ...
 
Arduino проект 8:  Микросхема сдвигового регистра 74НС595. Управляем матрицей из 4 разрядов, экономим выходы Arduino
Arduino проект 8:  Микросхема сдвигового регистра 74НС595. Управляем матрицей из 4 разрядов, экономим выходы Arduino

В этом эксперименте мы рассмотрим работу Arduino с микросхемой 74HC595 – расширителем выходов, позволяющей уменьшить количество выводов Arduino для управления 4-разрядной семисегментной матрицей. Цифровых выводов Arduino Nano и UNO, а иногда даже и Arduino Mega может не хватить, если требуется управлять большим количеством выводов. В этом случае можно использовать микросхему 74HC595.  Подробнее ...
 
Arduino проект 7: Матрица 4-разрядная из 7-сегментных индикаторов. Делаем динамическую индикацию

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

В этом эксперименте мы рассмотрим работу с семисегментным светодиодным индикатором, которая позволяет Arduino визуализировать цифры. Светодиодный семисегментный индикатор представляет собой группу светодиодов, расположенных в определенном порядке и объединенных конструктивно. Светодиодные контакты промаркированы метками от a до g (и дополнительно dp – для отображения десятичной точки), и один общий вывод, который определяет тип подключения индикатора (схема с общим анодом ОА, или общим катодом ОК).  Подробнее ...
 
Arduino проект 5: RGB-светодиод. Широтно-импульсная модуляция. Переливаемся цветами радуги
Arduino проект 5: RGB-светодиод. Широтно-импульсная модуляция. Переливаемся цветами радуги

В этом эксперименте мы рассмотрим широтно-импульсную модуляцию, которая позволяет Arduino выводить аналоговые данные на цифровые выводы, и применим эти знания для создания прозвольных цветов свечения с помощью RGB-светодиода.  Подробнее ...

 
Arduino проект 4: Светодиодная шкала 10 сегментов. Вращением потенциометра меняем количество светящихся светодиодов
Arduino проект 4: Светодиодная шкала 10 сегментов. Вращением потенциометра меняем количество светящихся светодиодов

В этом эксперименте мы рассмотрим работу аналоговых входов Arduino, работу потенциометра в качестве аналогового датчика и будем демонстрировать показания аналогового датчика с помощью светодиодной шкалы. ля получения аналоговых данных Arduino имеет аналоговые входы, оснащенные 10-разрядным аналого-цифровым преобразователем для аналоговых преобразований.  Подробнее ...
 
Arduino проект 3: Потенциометр. Показываем закон Ома на примере яркости светодиода

В этом эксперименте мы познакомимся с потенциометром и будем управлять яркостью светодиода и изменением сопротивления потенциометра. Сейчас мы рассмотрим, как подобрать ограничительный резистор и как будет влиять номинал резистора на яркость светодиода.  Подробнее ...
 
Arduino проект 2: Обрабатываем нажатие кнопки на примере зажигания светодиода. Боремся с дребезгом контактов Arduino проект 2: Обрабатываем нажатие кнопки на примере зажигания светодиода. Боремся с дребезгом контактов

Это эксперимент по работе с кнопкой. Мы будем включать светодиод по нажатии кнопки и выключать по отпускании кнопки. Рассмотрим понятие дребезга и программные методы его устранения. При использовании Arduino в качестве входов используют pull-up- и pulldown-резисторы, чтобы вход Arduino не находился в «подвешенном» состоянии (в этом состоянии он будет собирать внешние наводки и принимать произвольные значения), а имел заранее известное состояние (0 или 1).  Подробнее ...
 
Arduino проект 1:  Мигаем светодиодом Arduino проект 1:  Мигаем светодиодом

В этом эксперименте мы научимся управлять светодиодом. Заставим его мигать. Светодиод – это полупроводниковый прибор, преобразующий электрический ток непосредственно в световое излучение. По-английски светодиод называется light emitting diode, или LED.  Подробнее ...
 

 

Читать далее

● Что такое Arduino?

Опубликовано: 23.04.2018
Arduino - это удобная платформа быстрой разработки электронных устройств и электронный конструктор для новичков и профессионалов. Платформа пользуется огромной популярностью во всем мире благодаря удобству и простоте языка программирования, а также открытой архитектуре и программному коду. Плата Arduino состоит из микроконтроллера Atmel AVR и элементов обвязки для программирования и интеграции с другими схемами. На многих платах присутствует линейный стабилизатор напряжения +5 В или +3,3 В.
Тактирование осуществляется на частоте 16 или 8 МГц кварцевым резонатором (в некоторых версиях – керамическим резонатором).

В разделе УРОКИ И ПРОЕКТЫ ARDUINO представлены эксперименты с использованием модулей, шилдов, RFID, LCD 1602, TFT дисплеев, сервоприводов SG90, GSM модулей SIM800, SIM900, GPS модулей VK-16E и др.

В микроконтроллер предварительно прошивается загрузчик Boot-Loader, поэтому внешний программатор не нужен. Устройство программируется через USB без использования программаторов. Существует несколько версий платформ Arduino. Версия Leonardo базируется на микроконтроллере ATmega32u4. Uno, Nano, Duemilanove построены на микроконтроллере Atmel ATmega328. Старые версии платформы Diecimila и первая рабочая Duemilanoves были разработаны на основе Atmel ATmega168. Arduino Mega2560, в свою очередь, построена на микроконтроллере ATmega2560. А самые последние версии Arduino Due – на базе микропроцессора Cortex.
Версия UNO является одной из самых популярных и широко иcпользуемой для небольших проектов.



Разработка собственных приложений на базе плат, совместимых с архитектурой Arduino, осуществляется в официальной бесплатной среде программирования Arduino IDE. Среда предназначена для написания, компиляции и загрузки собственных программ в память микроконтроллера, установленного на плате Arduino-совместимого устройства. Основой среды разработки является язык Processing/Wiring – это фактически обычный C++, дополненный простыми и понятными функциями для управления вводом/выводом на контактах. Существуют версии среды для операционных систем Windows, Mac OS и Linux.
Читать далее

● Установка Arduino IDE

Опубликовано: 23.04.2018
Разработка собственных приложений на базе плат, совместимых с архитектурой Arduino, осуществляется в официальной бесплатной среде программирования Arduino IDE. Среда предназначена для написания, компиляции и загрузки собственных программ в память микроконтроллера, установленного на плате Arduino-совместимого устройства. Основой среды разработки является язык Processing/ Wiring – это фактически обычный C++, дополненный простыми и понятными функциями для управления вводом/выводом на контактах. Существуют версии среды для операционных систем Windows, Mac OS и Linux.

Последнюю версию среды Arduino можно скачать со страницы загрузки официального сайта www.arduino.cc.

Рассмотрим установку Arduino IDE на компьютере с операционной системой Windows. Отправляемся на страницу www.arduino.cc, выбираем версию для операционной системы Windows и скачиваем архивный файл. Он содержит все необходимое, в том числе и драйверы. По окончании загрузки распаковываем скачанный файл в удобное для себя место.
Теперь необходимо установить драйверы. Подключаем Arduino к компьютеру. На контроллере должен загореться индикатор питания – зеленый светодиод. Windows начинает попытку установки драйвера, которая заканчивается сообщением «Программное обеспечение драйвера не было установлено». Открываем Диспетчер устройств. В составе устройств находим значок Arduino Uno – устройство отмечено восклицательным знаком. Щелкаем правой кнопкой мыши на значке Arduino Uno и в открывшемся окне выбираем пункт Обновить драйверы и далее пункт Выполнить поиск драйверов на этом компьютере. Указываем путь к драйверу – ту папку на компьютере, куда распаковывали скачанный архив. Пусть это будет папка drivers каталога установки Arduino – например, C:\arduino-1.0\drivers. Игнорируем все предупреждения Windows и получаем в результате сообщение Обновление программного обеспечения для данного устройства завершено успешно. В заголовке окна будет указан и COM-порт, на который установлено устройство.
Теперь можно запускать Arduino IDE.

Среда разработки Arduino (см. рис. 2) состоит из:

• редактора программного кода;
• области сообщений;
• окна вывода текста;
• панели инструментов с кнопками часто используемых команд;
• нескольких меню.

Среда Arduino IDE
Рис. 2. Среда Arduino IDE

Программа, написанная в среде Arduino, носит название скетч.
Скетч пишется в текстовом редакторе, который имеет цветовую подсветку создаваемого программного кода. Во время сохранения и экспорта проекта в области сообщений появляются пояснения и информация об ошибках. Окно вывода текста показывает сообщения Arduino, включающие полные отчеты об ошибках и другую информацию. Кнопки панели инструментов позволяют проверить и записать программу, создать, открыть и сохранить скетч, открыть мониторинг последовательной шины.

Разрабатываемым скетчам дополнительная функциональность может быть добавлена с помощью библиотек, представляющих собой специальным образом оформленный программный код, реализующий некоторый функционал, который можно подключить к создаваемому проекту. Специализированных библиотек существует множество. Обычно библиотеки пишутся так, чтобы упростить решение той или иной задачи и скрыть от разработчика детали программно-аппаратной реализации. Среда Arduino IDE поставляется с набором стандартных библиотек. Они находятся в подкаталоге libraries каталога установки Arduino. Необходимые библиотеки могут быть также загружены с различных ресурсов. Если библиотека установлена правильно, то она появляется в меню Эскиз | Импорт библиотек. Выбор библиотеки в меню приведет к добавлению в исходный код строчки #include <имя библиотеки.h> Эта директива подключает заголовочный файл с описанием объектов, функций и констант библиотеки, которые теперь могут быть использованы в проекте. Среда Arduino будет компилировать создаваемый проект вместе с указанной библиотекой.
Перед загрузкой скетча требуется задать необходимые параметры в меню Инструменты | Плата (Tools | Board) (рис. 3) и Инструменты | Последовательный порт (рис. 4).
Современные платформы Arduino перезагружаются автоматически перед загрузкой. На старых платформах необходимо нажать кнопку перезагрузки. На большинстве плат во время процесса загрузки будут мигать светодиоды RX и TX. При загрузке скетча используется загрузчик (bootloader) Arduino – небольшая программа, загружаемая в микроконтроллер на плате. Она позволяет загружать программный код без использования дополнительных аппаратных средств. Работа загрузчика распознается по миганию светодиода на цифровом выводе D13.
Монитор последовательного порта (Serial Monitor) отображает данные, посылаемые в платформу Arduino (плату USB или плату последовательной шины). Теперь, когда мы немного узнали об Arduino и среде программирования Arduino IDE, перейдем к практическим занятиям – экспериментам.

Выбор Arduino платы
Рис. 3. Выбор Arduino платы

Выбор порта подключения платы Arduino
Рис. 4. Выбор порта подключения платы Arduino
 
В последнее время появилось много моделей контроллеров Arduino, в которых в качестве USB-чипсета используются микросхемы серии CH340.

USB-SERIAL CH340 drivers
USB-SERIAL CH340 drivers

Не волнуйтесь, если при первом подключении Arduino, компьютер не смог определить новое устройство.
Вам будет достаточно загрузить и установить последнюю версию драйвера USB-SERIAL CH340.

У вас должно всё получиться. Теперь переходим к УРОКАМ И ПРОЕКТАМ ARDUINO.


 
Читать далее

● Проект 34: Организация подключения к сети Интернет с помощью модуля Ai-Thinker A6

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

В предыдущих главе мы рассмотрели мы сделали большие шаги построения "умного дома" –  оснастили его датчиками и исполнительными устройствами и создали и обеспечили определенную степень автоматизации для создания комфорта и безопасности. Теперь пришло время сделать наш "умный дом" устройством IoT (Интернета вещей), чтобы получить доступ к нему для мониторинга и управления из любой точки мира по сети интернет. Организуем доступ контроллеров нашего дома к сети интернет.
NodeMCU – это плата на основе Wi-Fi модуля ESP8266, что позволяет подключиться ей к сети интернет по Wi-Fi соединению. С Arduino MEGA немного сложнее – необходимы внешние модули для организации доступа к интернет. В качестве внешних модулей часто используется плата Ethenet shield W5100 или W5500. Можно использовать и модули ESP8266, управляя ими по UART. Мы рассмотрим организацию доступа в интернет с использованием GPRS Shield — платы расширения, позволяющая Arduino работать в сетях сотовой связи по технологиям GSM/GPRS для приёма и передачи данных, SMS и голосовой связи.

8.1. Модуль Ai-Thinker A6

В качестве GPRS-Shield мы будем использовать недорогой модуль Ai-Thinker A6 на плате с антенной (см. рис. 8.1). От аналогов отличается низким энергопотреблением. Поддержка стандартных GSM 07.07,07.05 AT-команд, а так же специальных команд AI-THINKER.


 
Рис. 8.1. Модуль Ai-Thinker A6 на плате с антенной.

Данный модуль работает с российскими операторами Билайн, МТС, Мегафон. Потребляет ток порядка 80мА. Имеет 1 слот под mini SIM-карту. Скорость модуля по умолчанию 115200. Плата может иметь кнопку Пуск, которую необходимо удерживать около 3х секунд. Выпускается на плате, которую можно подключить к питанию +5вольт через микро usb. Модуль поддерживает АТ команды. Работу с компьютером можно производить через преобразователь UART. Имеет возможность отправлять данные по GSRS.

Характеристики модуля:

•    Рабочее напряжение: 5В через USB-micro или отдельными контактами;
•    Рабочее напряжение чипа: 3.3 - 4.6В;
•    Рабочая температура: -30 ... +80 градусов;
•    Потребление в активном режиме: 100 - 900 мА;
•    Потребление в экономном режиме: 3 мА;
•    Скорость UART: по умолчанию 115200бит/с (есть автоопределение);
•    GPRS Class 10 : Макс. 85.6 кбит;
•    Протоколы : PPP, TCP, UDP, MUX;
•    Поддержка PBCCH;
•    CSD : до 14,4 кбит;
•    SIM / USIM : 3V / 1.8V;
•    Голос: подавление эха, подавление шума.

8.2. Управление модулем Ai-Thinker A6 с помощью AT-команд

Рассмотрим управление модулем Ai-Thinker A6 с помощью AT-команд. Для этого подключим модуль к компьютеру, используя переходник FTDI. Схема соединений представлена на рис. 8.2.

Рис. 8.2. Подключение модуля Ai-Thinker A6 к компьютеру.

Подключаем модуль к компьютеру и запускаем программу для общения с последовательным портом. Можно использовать монитор последовательного порта Arduino IDE. Будем отправлять на модуль Ai-Thinker A6 AT-команды. Набор команд аналогичен AT-командам для SIM800 или SIM900, но для выходы в интернет используются специальные команды AI-THINKER.
Для включения модуля необходимо нажать кнопку POWER не меньше 2 секунд, при нажатии мигает красный светодиод, и дальше работать в терминале.Набираем в мониторе последовательного порта следующие команды:
AT+CREG?
если ответ +CREG:0,5 или +CREG:0,5, установим 1:
AT+CREG=1
Далее проверка подключения модуля к GPRS-сети
AT + CGATT?
если ответ +CGATT: 0 установим 1:
AT + CGATT=1
Это может занять много времени и написать COMMAND NO RESPONSE, необходимо повторять и потом поверить командой
AT + CGATT?
Подключаемся к точке доступа оператора связи. Для МТС это будет так:

AT + CGDCONT = 1, "IP", "internet.mts.ru"
AT + CSTT = "internet.mts.ru","mts", "mts"
Далее устанавливаем интернет-соединение:
AT + CGACT = 1,1
В случае ответа OK, можем посмотреть наш динамический IP-адрес:
AT + CIFSR
И затем обращаемся к какому-нибудь серверу, например google.ru
AT + CIPSTART = "TCP", www.google.com ", 80
Весь процесс подключения представлен на рис. 8.3.
 


Рис. 8.3. Процесс работы с модулем Ai-Thinker A6 в мониторе последовательного порта.

Теперь попробуем подключить модуль Ai-Thinker A6 к плате Arduino и отправить сообщение c данными на сервер, например http://sparcfun.com.

8.3. Подключение модуля Ai-Thinker A6 к плате Arduino MEGA

Подключим модуль Ai-Thinker A6 к плате Arduino MEGA и сделаем тестовую отправку данных по GPRS на удаленный сервер. Схема подключения приведена на рис. 8.4.
 


Рис. 8.4. Подключение модуля Ai-Thinker A6 к плате Arduino MEGA.

В качестве удаленного сервера для отправки данных удобно использовать сервер data.sparkfun.com – здесь не требуется регистрации и можно быстро проверить правильность отправки данных. На главной странице переходим по ссылке создания бесплатного потока данных (рис. 8.5).
 


Рис. 8.5. Ссылка для создания бесплатного потока данных.

На странице создания потока заполняем необходимые данные (рис. 8.6):

•    Название (Title);
•    Описание (Description);
•    Приватность (Visible/Hidden);
•    Cписок полей (Fields).

и подтверждаем.
 


Рис. 8.6. Форма создания потока данных.

При создании потока генерируются публичный ключ (Public key), приватный ключ (Private key), которые нам понадобятся при создании скетча отправки данных и страница для просмотра отправленных данных (Public URL) (рис. 8.7).
 


Рис. 8.7. Данные необходимые для создания программы отправки.

Теперь загрузим на плату Arduino MEGA скетч из листинга 8.1., внеся в него изменения – свои данные Public key и Private key для сервиса data.sparkfun.com и данные к точке доступа своего сотового оператоа (в скетче 8.1 данные для сотового оператора МТС).
Листинг 8.1

#define OK 1
#define NOTOK 2
#define TIMEOUT 3
#define RST 2

#define A6board Serial1
#define A6baud 115200
#define SERIALTIMEOUT 3000
char end_c[2];

void setup() {
  A6board.begin(A6baud);   // порт Serial1
  Serial.begin(115200);    // порт Serial
  // ctrlZ 
  end_c[0] = 0x1a;
  end_c[1] = '\0';
  Serial.println("Start");
}

void loop()
{
  Serial.println("Waiting for command");
  if (Serial.available())
    switch (Serial.read())
    { // проверка команды на отправку данных
      case 's':
        Serial.println("-Post value to Sparkfun-");
        // получение аналоговых данных A0
        float batt = (float)analogRead(A0)*5.165/594.0;
        // вызов процедуры отправки данных
        sendSparkfunGSM(1, batt);
        break;
    }
  if ( A6board.available())
    Serial.write( A6board.read());

  delay(2000);
}

///отправка данных на sparkfun()///
bool sendSparkfunGSM(byte sparkfunType, float value1) {
  String host = "data.sparkfun.com";
  String publicKey   = "9b1nm53N68cDAOvVEJgK";
  String privateKey = "xv9NwElKY7ibJ57Vdaje";
  A6command("AT+CIPSTATUS", "OK", "yy", 10000, 2);
  A6command("AT+CGATT?", "OK", "yy", 20000, 2);
  A6command("AT+CGATT=1", "OK", "yy", 20000, 2);
  A6command("AT+CIPSTATUS", "OK", "yy", 10000, 2);
  A6command("AT+CSTT=\"internet.mts.ru\",\"mts\",\"mts\"", "OK", "yy", 20000, 2); //bring up wireless connection
  A6command("AT+CGDCONT=1,\"IP\",\"internet.mts.ru\"", "OK", "yy", 20000, 2); 
  A6command("AT+CIPSTATUS", "OK", "yy", 10000, 2);
  A6command("AT+CGACT=1,1", "OK", "yy", 10000, 2);
  A6command("AT+CIPSTATUS", "OK", "yy", 10000, 2);
  A6command("AT+CIFSR", "OK", "yy", 20000, 2); //get  IP adress
  A6command("AT+CIPSTATUS", "OK", "yy", 10000, 2);
  A6command("AT+CIPSTART=\"TCP\",\"" + host + "\",80", "CONNECT OK", "yy", 25000, 2); //start up the connection
  A6command("AT+CIPSTATUS", "OK", "yy", 10000, 2);
  // отправка данных на сервер
  A6command("AT+CIPSEND", ">", "yy", 10000, 1); 
  delay(500);
  A6board.print("GET /input/");
  A6board.print(publicKey);
  A6board.print("?private_key=");
  A6board.print(privateKey);
  A6board.print("&battery=");
  A6board.print(value1, 2);
  A6board.print(" HTTP/1.1");
  A6board.print("\r\n");
  A6board.print("HOST: ");
  A6board.print(host);
  A6board.print("\r\n");
  A6board.print("\r\n");

  Serial.print("GET /input/");
  Serial.print(publicKey);
  Serial.print("?private_key=");
  Serial.print(privateKey);
  Serial.print("&battery=");
  Serial.print(value1, 2);
  Serial.print(" HTTP/1.1");
  Serial.print("\r\n");
  Serial.print("HOST: ");
  Serial.print(host);
  Serial.print("\r\n");
  Serial.print("\r\n");

  A6command(end_c, "HTTP/1.1", "yy", 30000, 1);
  A6board.println(end_c); //sending ctrlZ
  unsigned long   entry = millis();
  A6command("AT+CIPSTATUS", "OK", "yy", 10000, 2);
  A6command("AT+CIPCLOSE", "OK", "yy", 15000, 1); //sending
  A6command("AT+CIPSTATUS", "OK", "yy", 10000, 2);
  delay(100);
  Serial.println("-End-");
}


byte A6waitFor(String response1, String response2, int timeOut) {
  unsigned long entry = millis();
  int count = 0;
  String reply = A6read();
  byte retVal = 99;
  do {
    reply = A6read();
    if (reply != "") {
      Serial.print((millis() - entry));
      Serial.print(" ms ");
      Serial.println(reply);
    }
  } while ((reply.indexOf(response1) + reply.indexOf(response2) == -2) && millis() - entry < timeOut );
  if ((millis() - entry) >= timeOut) {
    retVal = TIMEOUT;
  } else {
    if (reply.indexOf(response1) + reply.indexOf(response2) > -2) retVal = OK;
    else retVal = NOTOK;
  }
  return retVal;
}

byte A6command(String command, String response1, String response2, int timeOut, int repetitions) {
  byte returnValue = NOTOK;
  byte count = 0;
  while (count < repetitions && returnValue != OK) {
    A6board.println(command);
    Serial.print("Command: ");
    Serial.println(command);
    if (A6waitFor(response1, response2, timeOut) == OK) {
      returnValue = OK;
    } else returnValue = NOTOK;
    count++;
  }
  return returnValue;
}

bool A6begin() {
  A6board.println("AT+CREG?");
  byte hi = A6waitFor("1,", "5,", 1500);  
  while ( hi != OK) {
    A6board.println("AT+CREG?");
    hi = A6waitFor("1,", "5,", 1500);
  }

  if (A6command("AT&F0", "OK", "yy", 5000, 2) == OK) {   
    if (A6command("ATE0", "OK", "yy", 5000, 2) == OK) {  
      if (A6command("AT+CMEE=2", "OK", "yy", 5000, 2) == OK) 
         return OK;  
      else return NOTOK;
    }
  }
}

void ShowSerialData()
{
  unsigned long entry = millis();
  while ( A6board.available() != 0 && millis() - entry < SERIALTIMEOUT)
    Serial.println(A6board.readStringUntil('\n'));
}

String A6read() {
  String reply = "";
  if (A6board.available())  {
    reply = A6board.readString();
  }
  return reply;
} 



После загрузки скетча на плату Arduino запускаем монитор последовательного порта и при отправке символа s происходит процесс инициализации отправки данных с аналогового входа A0 в сервис data.sparkfun.com (см. рис. 8.8).
 


Рис. 8.8. Отображение в мониторе процесса отправки данных в сервис data.sparkfun.com

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке.

8.4. Подключение модуля NodeMCU к сети Интернет по Wi-Fi.

Рассмотрим подключение платы NodeMCU к сети интернет. Для этого необходимо подключиться по Wi-Fi к точке доступа, имеющей выход в интернет. Загрузим в плату NodeMCU скетч подключения к Wi-Fi точке доступа и отправки данных в сервис data.sparkfun.com (листинг 8.2), измените данные на свои для подключения к точке доступа и в сервисе data.sparkfun.com:

const char* ssid     = "my_point";
const char* password = " my_point pass";
 
const char* host = "data.sparkfun.com";
const char* streamId   = "---------------------";
const char* privateKey = "---------------------";

Листинг 8.2

#include <ESP8266WiFi.h>
 
const char* ssid     = "my_point ";
const char* password = "my_point pass ";
 
const char* host = "data.sparkfun.com";
const char* streamId   = "---------------------";
const char* privateKey = "---------------------";
 
void setup() {
  Serial.begin(115200);
  delay(10000);
 
  // подсоединение к WiFi точке доступа
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
   
  WiFi.begin(ssid, password);
   
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
 
  Serial.println("");
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}
 
float value = 0;
 
void loop() {
  delay(10000);
 
  Serial.print("connecting to ");
  Serial.println(host);
   
  // создаем TCP соединение
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }
   
  // создаем строку URL
  String url = "/input/";
  url += streamId;
  url += "?private_key=";
  url += privateKey;
  url += "&battery=";
  value=3.3*analogRead(A0)/1024;
  url += value;
   
  Serial.print("Requesting URL: ");
  Serial.println(url);
   
  // отправить данные на сервер
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" + 
               "Connection: close\r\n\r\n");
  delay(10);
   
  // ответ сервера
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
   
  Serial.println();
  Serial.println("closing connection");
}



После загрузки скетча на плату запускаем монитор последовательного порта и наблюдаем процесс отправки данных с аналогового входа A0 в сервис data.sparkfun.com (см. рис. 8.9) каждые 10 секунд.
 


Рис. 8.9. Отображение в мониторе процесса отправки данных в сервис data.sparkfun.com

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке.





 

Читать далее

Главное меню

Каталог

Полезные ссылки

Цена
от
до