Возможности подключения Wi-Fi модуля esp8266 к arduino
31 января в 13:47
Передавать прошивки, обновления и прочие данные путём паяльника и проводов – не лучшее решение для Ардуино. Однако микроконтроллеры для arduino wi-fi стоят недёшево, да и нужда в них есть далеко не всегда, отчего пользователи предпочитают их не использовать в своих проектах без надобности.
Но вот очередной китайский продукт захватил рынок, wi-fi jammer esp8266 своими руками можно присоединить к плате Ардуино или другой системе, и вы получите стабильное соединение с рядом других преимуществ. Так давайте разберёмся с arduino uno wi-fi, и стоит ли покупать данный модуль, а также, что вообще собой представляет подобный микроконтроллер на wi-fi ардуино.
Доступные Wi-Fi модули для Arduino
Сейчас большая часть пользователей ардуино уже не беспокоится о цене подобных девайсов, хотя ещё 3 года назад arduino wi-fi модуль считался роскошью.
Всё это благодаря wi-fi jammer esp8266, производители которого ввели на рынок совершенно новый продукт, поражающей своей функциональностью и, одновременно с тем, являющийся достаточно дешёвым, что внесло весомую лепту и создало конкуренцию в этом направлении.
Таким образом, arduino wi-fi esp8266 сейчас считается самым доступным модулем на рынке, как и все его собратья. Так, цена на зарубежных площадках стартует от 2-х долларов, что позволяет пачками закупать данные модули и не перепрошивать их тысячу раз, перепаивая контакты, чтобы сохранить работоспособность.
Варианты модулей ESP
Сначала данный wi-fi модуль ардуино использовался, в основном, как arduino wi-fi shield, так как являлся наиболее дешёвым вариантом и ничем не уступал оригинальному.
Устройство действительно практически легендарное, ведь весомых минусов за его стоимость не найти. Имеется множество библиотек, в том числе и пользовательских, а также поддерживает работу через Serial шины и простейшие АТ и АТ+ команды.
Благодаря этому никакой семантики пресловутого С99, как это часто бывает с другими сторонними микроконтроллерами, изучать не нужно.
Соответственно, даже новичок разберётся за секунды, а профессионал сможет применить уже заготовленные библиотеки. Среди других достоинств отмечается:
- Процессор на 160 МГц, однако он 32-битный, что накладывает определённый отпечаток на производительность. Но стоит помнить, что модуль всё же применяется в связке с платами Ардуино, которые сами по себе режут высокие частоты и съедают большую часть ресурсов неизвестно для чего.
- Производитель, выпустивший wi-fi модуль esp8266, интересные проекты на этом не закончил, и сейчас имеется целая линейка микроконтроллеров проверенного качества.
- Современные стандарты защиты сети. Конечно, WPA и WPA2 уже давно не столь безопасны, как хотелось бы, но их наличие не может не радовать в таком дешёвом контроллере.
- 16 портов вывода, в том числе 10-битный, позволяющий поэкспериментировать с платой.
Что ещё важнее, с коробки вас ждёт постоянная память до 4 мегабайт, в зависимости от типа платы, а это в разы упрощает работу с большими библиотеками и даже некоторыми медиа-файлами. Ведь на большинстве плат ардуино и 1 мегабайт считается непозволительной роскошью.
Характеристики esp8266 wi-fi безусловно радуют, особенно в сравнении с его более дорогими конкурентами, но у пользователя, не имевшего ранее опыта с данными платами, возникнет вопрос о том, как же его подключить.
Дело в том, что модуль имеет гораздо больше пинов, чем привыкли видеть новички, а, соответственно, у тех начинается паника. Однако, если разобраться в ситуации, то на деле в этом нет ничего сложного.
Достаточно запастись припоем и паяльником и просто почитать инструкцию.
Как подключить Wi-Fi модуль к Arduino
Давайте же рассмотрим подключение esp8266 esp 12e и что такое esp8266 мост wi-fi uart. Ведь именно подключение и настройка модуля вызывают больше всего вопросов.
Распиновка esp8266 esp 12e
В первую очередь определитесь, какая версия микроконтроллера у вас на руках. В первой встраиваются светодиоды около пинов, а на второй, которую стали выпускать совсем недавно, сигнальные огни находятся около антенны.
Перед подключением стоит подгрузить последнюю прошивку, позволяющую увеличивать скорость обмена пакетами до 9600 единиц информации в секунду. А проверять соединение мы будем через кабель usb-ttl и соответствующий терминал от CoolTerm.
Схема подключения ESP8266 к Arduino Nano
Пины для подключения вышеописанного кабеля стандартные, а вот питание идёт через 3.3 вольтовый пин с Ардуино. Важно помнить, что максимальную силу тока, которую подаёт плата, невозможно поставить выше 150 мА, а esp8266 esp 07 и esp8266 witty cloud wi-fi модуль для arduino требуют 240 Ма.
Однако, если другого источника тока нет, можете использовать и стандартный вариант от Ардуино, но мощность платы пострадает. Хотя, при не сильной загрузке, достаточно и 70 мА, будьте готовы к внезапным перезагрузкам микроконтроллера в пиковые моменты нагрузки и пишите софт соответственно, чтобы он фильтровал и разбивал файлы, не перегружая плату.
Вариант подключения модуля ESP и Ардуино Uno
Еще один вариант подключения ниже. Важно – контакты RX-TX соединяются перекрестием. Так как уровни сигналов модуля ESP8266 3.3В, а Arduino 5В, нам нужно использовать резистивный делитель напряжения для преобразования уровня сигнала.
Прописываем Wi-Fi модуль в Arduino
Как известно, при должном опыте можно и шилд esp8266 ex 12e сопрячь со смартфоном, но у новичков и прописка esp8266 esp 12 в системе Ардуино вызывает трудности. На деле достаточно подключить модуль и проверить его работоспособность, скинув несколько штатных команд АТ через меню отладки.
Например, можно добавить мигание штатным светодиодом (для схемы подключения выше):
#define TXD 1 // GPIO1/TXD01 void setup() { pinMode(TXD, OUTPUT); } void loop() { digitalWrite(TXD, HIGH); delay(1000); digitalWrite(TXD, LOW); delay(1000); }
Как только плата подтвердит, что видит микроконтроллер в системе, можно начинать полноценную работу с ним. Однако стоит отметить, что если сама плата ардуино используется в проекте лишь для подключения данного контроллера – это иррационально.
Достаточно USB-UART преобразователя, так как esp8266 не использует «мозги» ардуино, а своей флеш-памяти ему вполне хватит для хранения пары базовых библиотек и прошивок.
Соответственно, тратиться лишний раз на вспомогательную плату нет никакого смысла, если вы можете просто подпаять его к преобразователю и дальше использовать в проекте.
При этом, подключив вспомогательный источник питания и не беспокоясь, что данные перестанут передаваться в самый ответственный момент из-за недостатка мощности системы.
Важное замечание! Для последней схемы скетч загружаем в Arduino как обычно, но так как модуль ESP8266 подключен к контактам 0 и 1, программирование становится невозможным. Компилятор будет показывать ошибку. Отсоедините провода идущие к ESP8266 от контактов 0 и 1, произведите программирование, а после верните контакты на место и нажмите кнопку сброса в Arduino.
Источник: https://ArduinoPlus.ru/podkluchenie-wi-fi-modulya-k-arduino/
WiFi ESP8266 в проектах Arduino
Микросхема ESP8266 — один из самых популярных инструментов для организации беспроводной связи в проектах умного дома.
С помощью беспроводного контроллера можно организовывать связь по интерфейсу WiFi, обеспечивая проектам Arduino выход в интернет и возможность дистанционного управления и сбора данных.
На основе ESP8266 созданы такие популярные платы как WeMos и NodeMcu, а также огромное количество самодельных проектов. В этой статье, мы узнаем, что из себя представляет ESP82266, какие бывают ее разновидности, как работать с ESP8266 в среде Arduino IDE.
Описание ESP8266
ESP8266 – микроконтроллер с интерфейсом WiFi, который имеет возможность исполнять программы из флеш-памяти. Устройство было выпущено в 2014 году китайской фирмой Espressif и практически сразу же стало популярным.
Контроллер недорогой, обладает небольшим количеством внешних элементов и имеет следующие технические параметры:
- Поддерживает Wi-Fi протоколы 802.11 b/g/n с WEP, WPA, WPA2;
- Обладает 14 портами ввода и вывода, SPI, I2C, UART, 10-бит АЦП;
- Поддерживает внешнюю память до 16 МБ;
- Необходимое питание от 2,2 до 3,6 В, потребляемый ток до 300 мА в зависимости от выбранного режима.
Важной особенностью является отсутствие пользовательской энергонезависимой памяти на кристалле. Программа выполняется от внешней SPI ПЗУ при помощи динамической загрузки необходимых элементов программы. Доступ к внутренней периферии можно получить не из документации, а из API набора библиотек. Производителем указывается приблизительное количество ОЗУ – 50 кБ.
Особенности платы ESP8266:
- Удобное подключение к компьютеру – через USB кабель, питание от него же;
- Наличие встроенного преобразователя напряжения 3,3В;
- Наличие 4 Мб флеш-памяти;
- Встроенные кнопки для перезагрузки и перепрошивки;
- Все порты выведены на плату на две гребенки с шагом 2,5 мм.
Сферы применения модуля ESP8266
- Автоматизация;
- Различные системы для умного дома: Беспроводное управление, беспроводные розетки, управление температурой, дополнение к сигнализационным системам;
- Мобильная электроника;
- ID метки;
- Детские игрушки;
- Mesh-сети.
Распиновка esp8266
Существует огромное количество разновидностей модуля ESP8266. На рисунке представлены некоторые из них. Наиболее популярным вариантом является ESP 01.
Исполнение программы требуется задавать состоянием портов GPIO0, GPIO2 и GPIO15, когда заканчивается подача питания. Можно выделить 2 важных режима – когда код исполняется из UART (GPIO0 = 0, GPIO2 = 1 и GPIO15 = 0) для перепрошивки флеш-карты и когда исполняется из внешней ПЗУ (GPIO0 = 1, GPIO2 = 1 и GPIO15 = 0) в штатном режиме.
Распиновка для ESP01 изображена на картинке.
Описание контактов:
- 1 – земля, 8 – питание. По документации напряжение подается до 3,6 В – это важно учесть при работе с Ардуино, на которую обычно подают 5 В.
- 6 – RST, нужна для перезагрузки микроконтроллера при подаче на него низкого логического уровня.
- 4 — CP_PD, также используется для перевода устройства в энергосберегающий режим.
- 7 и 0 — RXD0 и TXD0, это аппаратный UART, необходимый для перепрошивки модуля.
- 2 — TXD0, к этому контакту подключается светодиод, который загорается при низком логическом уровне на GPIO1 и при передаче данных по UART.
- 5 — GPIO0, порт ввода и вывода, также позволяет перевести устройство в режим программирования (при подключении порта к низкому логическому уровню и подачи напряжения) .
- 3 — GPIO2, порт ввода и вывода.
Распиновка ESP-12
Основные отличия Ардуино от ESP8266
- ESP8266 имеет больший объем флеш-памяти, при этом у ESP8266 отсутствует энергонезависимая память;
- Процессор ESP8266 быстрее, чем у Ардуино;
- Наличие Wi-Fi у ESP8266;
- ESP8266 потребляеn больше тока, чем для Ардуино;
Программирование ESP8266 в Arduino IDE
Программный комплект разработчика esp8266 включает в себя:
- Компилятор из пакета GNU Compiler Collection.
- Библиотеки, стеки протоколов WiFi, TCP/IP.
- Средство загрузки информации в программу контроллера.
- Операционная IDE.
Изначально модули ESP8266 поставляются с прошивкой от фирмы-изготовителя. С ее помощью можно управлять модулем с внешнего микроконтроллера, реализовывать работу с Wi-Fi как с модемом. Также существует множество других готовых прошивок. Некоторые из них позволяют настраивать работу модуля при помощи WEB-интерфейса.
Можно программировать из среды Arduino IDE. При ее помощи можно легко писать скетчи и загружать их в ESP8266, прошивать ESP8266, при этом не требуется сама плата Ардуино. Arduino IDE поддерживает все виды модулей ESP8266.
В настоящий момент для ESP8266 можно реализовать следующие функции:
- Основные функции языка Wiring. Управлять портами GPIO можно точно так же, как и пинами на плате Ардуино: pinMode, digitalRead, digitalWrite, analogWrite. Команда analogRead(А0) позволяет считать значения АЦП. При помощи команды analogWrite (pin, value) можно подключить ШИМ на нужном выходе GPIO. При value=0 ШИМ отключается, максимальное значение достигает константы, равной 1023.С помощью функций attachInterrupt, detachInterrupt можно выполнять прерывание на любом порте GPIO, кроме 16.
- Тайминг и delay. Используя команды millis и micros можно вернуть мс и мкс, которые прошли с момента старта. Delay позволяет приостановить исполнение программы на нужное время. Также функция delay(…) позволяет поддерживать нормальную работу Wi-Fi, если в скетче присутствуют большие элементы, которые выполняются более 50 мс. Yield() – аналог функции delay(0).
- Serial и Serial1 (UART0 и UART1). Работа Serial на ESP8266 аналогична работе на ардуино. Запись и чтение данных блокируют исполнение кода, если FIFO на 128 байт и программный буфер на 256 байт заполнены. Объект Serial пользуется аппаратным UART0, для него можно задать пины GPIO15 (TX) и GPIO13 (RX) вместо GPIO1(TX) и GPIO3(RX). Для этого после функции Serial.begin(); нужно вызвать Serial.swap();. Аналогично Serial1 использует UART1, который работает на передачу. Необходимый пин для этого GPIO2.
- Макрос PROGMEM. Его работа аналогична работе в Ардуино. Позволяет перемещать данные read only и строковые постоянные во flash-память. При этом в ESP8266 не сохраняются одинаковые константы, что приводит к дополнительной трате флеш-памяти.
- I2C. Перед началом работы с шиной I2C выбираются шины с помощью функции Wire.pins(int sda, int scl).
- SPI, OneWire – поддерживаются полностью.
Использование esp8266 для связи Ардуино по WiFi
Перед подключением к Ардуино важно помнить, что у ESP8266 напряжение питания не может быть выше 3,6, в то время как на пате Ардуино напряжение равно 5 В. Соединять 2 микроконтроллера нужно с помощью резистивных делителей. Перед подключением модуля нужно ознакомиться с распиновкой выбранного ESP8266. Схема подключения для ESP8266-01 представлена на рисунке.
3,3 В с Ардуино – на Vcc&CH_PD на модуле ESP8266, Земля с Ардуино – к земле с ESP8266, 0 – TX, 1 – RX.
Для поддержки стабильной работы ESP8266 необходим источник постоянного напряжения на 3,3 В и максимальный ток 250 мА. Если питание происходит от конвертера USB-TTL, могут происходить неполадки и сбои в работе.
Работа с библиотекой Wi-Fi для ESP8266 схожа с библиотекой для обыкновенного шилда. Имеется несколько особенностей:
- mode(m) – для выбора одного из трех режимов: клиент, точка доступа или оба режима единовременно.
- softAP(ssid) – нужен для создания открытой точки доступа.
- softAP(ssid, password) – создает точку доступа с паролем, который должен состоять не менее чем из 8 знаков.
- WiFi.macAddress(mac) и WiFi.softAPmacAddress(mac)– определяет МАС адрес.
- WiFi.localIP() и WiFi.softAPIP() – определение IP адреса.
- printDiag(Serial); — позволят узнать данные о диагностике.
- WiFiUDP – поддержка передачи и приема multicast пакета в режиме клиента.
Работа выполняется по следующему алгоритму:
- Подключение USB-TTL к USB и к ESP.
- Запуск Arduino IDE.
- Выбрать в меню инструменты нужный порт, плату, частоту и размер flash-памяти.
- Файл — Примеры — ESP8266WiFi — WiFiWebServer.
- Записать в скетче SSID и пароль сети Wi-Fi.
- Начать компиляцию и загрузку кода.
- Дождаться окончания процесса прошивки, отсоединить GPIO0 от земли.
- Поставить скорость 115200.
- Произойдет подключение, будет записан адрес IP.
- Открыть браузер, ввести в адресной строке номер IP/gpio/1
- Посмотреть монитор порта, если к выходу GPIO2 подключен светодиод, он должен загореться.
NodeMCU на базе esp8266
NodeMCU – это платформа, основанная на базе модуля esp8266. Используется для управления схемой на расстоянии при помощи интернета через Wi-Fi. Плата малогабаритная, компактная, стоит дешево, на лицевой стороне имеется разъем для USB. Рядом кнопки для отладки и перезагрузки микроконтроллера. Также установлен чип ESP8266. Напряжение питания – от 5 до 12 В, желательно подавать более 10 В.
Большим преимуществом платы является ее малое энергопотребление. Нередко их используют в схемах с автономным питанием. На плате расположены всего 11 портов общего назначения, из них некоторые имеют специальные функции:
- D1 и D2 – для интерфейса I2C/ TWI;
- D5-D8- для интерфейса SPI;
- D9, D10 – для UART;
- D1-D10 – могут работать как ШИМ.
Платформа имеет современное API для аппаратного ввода и вывода. Это позволяет сократить количество действий во время работы с оборудованием и при его настройке. С помощью прошивки NodeMCU можно задействовать весь рабочий потенциал для быстрой разработки устройства.
WeMos на базе esp8266
WeMos — еще один вид платформы, основанный на базе микроконтроллера esp8266. Соответственно, имеется Wi-Fi модуль, поддерживается Arduino IDE, имеется разъем для внешней антенны.
Плата имеет 11 цифровых входов/выходов, которые (кроме D0) поддерживают interrupt/pwm/I2C/one-wire. Максимальное напряжение питания достигает 3,3 В. Также на платформе присутствует USB разъем.
Аналоговый вход 1 с максимальным напряжением 3,2В.
Для работы с модулем нужно установить драйвер CH340 и настроить Ардуино IDE под ESP8266. Для этого нужно в меню настройки в строке «дополнительная ссылка для менеджера плат» добавить адрес http://arduino.esp8266.com/stable/package_esp8266com_index.json.
После этого требуется найти пакет esp8266 by ESP8266 и установить его. Затем нужно выбрать в меню инструменты микроконтроллер Wemos D1 R2 и записать нужный скетч.
Выводы по ESP8266
С помощью плат на основе микросхемы ESP8266 вы можете добавить в свои проекты возможности «большого интернета», сделав их гораздо более интеллектуальными.
Дистанционное управление, сбор и анализ данных на сервере, обработка голоса и работа с изображением — все это становится доступным, когда мы подключаем наш проект по WiFi к интернету.
В следующих статьях мы подробно рассмотрим то, как можно программировать устройства на базе esp8266, а также уделим внимание таким популярным платам как WeMos и NodeMcu.
Источник: https://ArduinoMaster.ru/platy-arduino/arduino-esp8266/
Подключение ESP8266 к Arduino UNO
ESP8266 – популярный Wi-Fi модуль, без проблем работающий со всеми микроконтроллерами.
Большую популярность набирают перепрошитые модули, работающие самостоятельно, то есть без внешнего контроллера, однако в некоторых случаях бывает удобно подключиться к модулю по стандартному UART и обрабатывать пакеты, полученные ESP8266 из Интернета обычной Arduino Uno.
О таком подключение и работе с модулем мы сегодня и поговорим!
Для реализации проекта из этой статьи нам потребуются следующие компоненты:
Мы будем использовать модуль ESP-01, так как он имеет минимальное количество GPIO – для работы с AT-командами нам нужно только 2 пина (интерфейс UART), остальными же пинами управлять командами невозможно, поэтому они не особо важны. Подключение ESP8266 будет производиться к Arduino Uno.
Модуль работает на ядре Tensilica с частотой до 160 МГц, что даёт значительный прирост производительности в сравнении с Arduino. Наплатная антенна способна передавать данные и получать пакеты на расстоянии до 100 м.
В модуль установлена память объёмом 512 Кб, в которую зашита стандартная AT-прошивка. Её можно заменить на стороннюю, но сегодня мы будем разбираться именно с самым простым вариантом.
Для подключения необходимо VCC и CH_PD подключить к питанию 3.3В, GND – к GND, TX и RX – к RX и TX соответственно (крест-накрест).
Можно использовать любую Arduino, причём лучше использовать свободный UART – любой, кроме нулевого – либо, если у платы их несколько (как у Arduino Mega), то второй хардварный, либо организовывать софтверный при помощи Software Serail.
И пример схемы подключения:
Так как модуль подключается по UART, то и взаимодействовать с ним нужно по этому протоколу. В Arduino для этих целей применяется класс Serial.
Работу с ним мы уже рассматривали, вся задача – правильно сконфигурировать его. Крайне важно выбрать верную скорость: по умолчанию она равна 9600 бод, но если модуль не отзывается, имеет смысл попробовать на скоростях 115200, 57600.
Для теста связи попробуйте отправить модулю команду:
На неё он должен ответить “OK”, и пока вы этого не добьётесь, дальнейшие эксперименты бесполезны. Проверяйте подключение, пробуйте менять скорость, но обычно всё получается с первого раза.
У разных прошивок разный набор поддерживаемых команд. Узнать версию прошивки можно при помощи команды:
Набор команд для определённой прошивки можно скачать в разделе документации сайта esp8266.ru.
Например:
выполняет сканирование Wi-Fi сетей и выводит их список в удобном для разбора формате. А после того, как контроллер нашёл «свою» сеть, он может подключиться к ней при помощи команды:
Не забывайте отправлять окончания строки rn, без них модуль не будет воспринимать команды.
Для начала работы с беспроводными сетями надо установить режим работы модуля командой:
где x=:
1 – режим клиента. Модуль может подключиться к любой точке доступа
2 – режим точки доступа. Модуль может создать свою Wi-Fi сеть
3 – смешанный режим. Модуль может подключиться к точке доступа и создать свою сеть.
Мы рассмотрели команды, назначение которых одинаково в большинстве прошивок. К сожалению, более сложные команды меняются с каждым обновлением, поэтому их необходимо уточнять в официальных спецификациях.
Удачи в освоении беспроводного мира!
Источник: https://Voltiq.ru/esp8266-and-arduino/
ESP8266 и Arduino, подключение, распиновка
Привет geektimes. Тема ESP8266, как и IoT(интернет вещей), всё больше набирает популярности, и уже Arduino подхватывает инициативу — добавляя эти Wi-Fi модули в список поддерживаемых плат.
Но как же его подключить к ардуино? И возможно как-то обойтись вообще без ардуино? Сегодня именно об этом и пойдёт речь в этой статье.
Забегая наперёд, скажу, что будет вторая статья, уже более практическая, по теме прошивки и программирования модуля ESP8266 в среде разработки Arduino IDE. Но, обо всём по порядку.
Этот видеоролик, полностью дублирует материал, представленный в статье.
На данный момент, существует много разновидностей этого модуля, вот некоторые из них:А вот распиновка ESP01, ESP03, ESP12:
* Данную картинку можно посмотреть в хорошем качестве на офф.
сайте pighixxx.com.
Лично мне, больше всего нравится версия ESP07. Как минимум за то, что тут есть металлический экран (он защищает микросхемы от внешних наводок, тем самым обеспечивает более стабильную работу), своя керамическая антенна, разъём для внешней антенны.
Получается, подключив к нему внешнюю антенну, например типа биквадрат, то можно добиться неплохой дальности.
К тому же, тут есть немало портов ввода вывода, так называемых GPIO(General Purpose Input Output — порты ввода-вывода общего назначения), по аналогии с ардуино — пинов.
Давайте вернёмся к нашим баранам Wi-Fi модулям и Arduino. В этой статье, я буду рассматривать подключение ESP8266(модели ESP01) к Arduino Nano V3.
Но, данная информация будет актуальна для большинства модулей ESP8266 и так же разных Arduino плат, например самой популярной Arduino UNO. Пару слов по ножкам ESP01:
Vcc и GND(на картинке выше это 8 и 1) — питание, на ножку Vcc можно подавать, судя по документации, от 3 до 3.
6 В, а GND — земля (минус питания). Я видел, как один человек подключал этот модуль к двум AA аккумуляторам (напряжение питания в этом случае было примерно 2.7 В) и модуль был работоспособным.
Но всё же разработчики указали диапазон напряжений, в котором модуль должен гарантированно работать, если вы используете другой — ваши проблемы.
Внимание! Этот модуль основан на 3.3 В логике, а Arduino в основном — 5 В логика. 5 В запросто могут вывести из строя ESP8266, потому на него нужно отдельно от ардуино подавать питание.
— На моей ардуинке есть ножка, где написано 3.3 В, почему бы не использовать её?
Наверное подумаете вы.
Дело в том, что ESP8266 довольно таки прожорливый модуль, и в пиках может потреблять токи до 200 мА, и почти никакая ардуинка по умолчанию не способна выдать такой ток, разве что исключением является Arduino Due, у которой ток по линии 3.3 В может достигать 800 мА, чего с запасом хватит, в других же случаях советую использовать дополнительный стабилизатор на 3.3 В, например AMS1117 3.3 В. Таких валом как в Китае, так и у нас.
Ножка RST 6 — предназначена «железной» для перезагрузки модуля, кратковременно подав на неё низкий логический уровень, модуль перезагрузиться. Хоть и на видео я этим пренебрёг, но всё же вам советую «прижимать» данную ногу резистором на 10 кОм к плюсу питания, дабы добиться лучшей стабильности в работе модуля, а то у меня перезагружался от малейших наводок.
Ножка CP_PD 4(или по-другому EN) — служит, опять же, для «железного» перевода модуля в энергосберегающий режим, в котором он потребляет очень маленький ток. Ну и снова — не будет лишним «прижать» эту ногу резистором на 10 кОм к плюсу питалова. На видео я тупо закоротил эту ногу на Vcc, потому как под рукой не оказалось такого резистора.
Ноги RXD0 7 TXD0 2 — аппаратный UART, который используется для перепрошивки, но ведь никто не запрещает использовать эти порты как GPIO(GPIO3 и GPIO1 соотвественно). GPIO3 на картинке почему-то не размечен, но в даташите он есть:
К стати, к ножке TXD0 2 подключен светодиод «Connect», и горит он при низком логическом уровне на GPIO1, ну или когда модуль отправляет что-то по UART.
GPIO0 5 — может быть не только портом ввода/вывода, но и переводить модуль в режим программирования. Делается это подключив этот порт к низкому логическому уровню(«прижав» к GND) и подав питание на модуль.
На видео я делаю это обычной кнопкой.
После перепрошивки — не забудьте вытащить перемычку/отжать кнопку(кнопку во время перепрошивки держать не обязательно, модуль при включении переходит в режим программирования, и остаётся в нём до перезагрузки).
GPIO2 3 — порт ввода/вывода.
И ещё один немаловажный момент, каждый GPIO Wi-Fi модуля может безопасно выдавать ток до 6 мА, чтобы его не спалить, обязательно ставьте резисторы последовательно портам ввода/вывода на… Вспоминаем закон Ома R = U/I = 3.3В / 0.006 А = 550 Ом, то есть, на 560 Ом. Или же пренебрегайте этим, и потом удивляйтесь почему оно не работает.
В ESP01 все GPIO поддерживают ШИМ, так что к нашим четырём GPIO, то есть GPIO0-3 можно подключить драйвер двигателя, аля L293 / L298 и рулить двумя двигателями, например катера, или же сделать RGB Wi-Fi приблуду. Да, да, данный модуль имеет на борту много чего, и для простеньких проектов скрипач Arduino не нужен, только для перепрошивки.
А если использовать ESP07 то там вообще портов почти как у Uno, что даёт возможность уже уверенно обходиться без ардуино. Правда есть один неприятный момент, аналоговых портов у ESP01 вообще нет, а у ESP07 только один, ADC зовётся. Это конечно усугубляет работу с аналоговыми датчиками. В таком случае ардуино аналоговый мультиплексор в помощь.
Всё вроде как по распиновке пояснил, и вот схема подключения ESP8266 к Arduino Nano:Видите на Arduino Nano перемычка на ножках RST и GND? Это нужно для того, чтобы ардуинка не мешала прошивке модуля, в случае подключения ESP8266 при помощи Arduino — обязательное условие. Так же если подключаете к Arduino — RX модуля должен идти к RX ардуинки, TX — TX.
Это потому, что микросхема преобразователь уже подключена к ножкам ардуино в перекрестном порядке. Так же немаловажен резистивный делитель, состоящий из резисторов на 1 кОм и 2 кОм (можно сделать из двух резисторов на 1 кОм последовательно соединив их) по линии RX модуля. Потому как ардуино это 5 В логика а модуль 3.3. Получается примитивный преобразователь уровней.
Он обязательно должен быть, потому что ноги RXD TXD модуля не толерантные к 5 В.Ну и можно вообще обойтись без ардуино, подключив ESP8266 через обычный USB-UART преобразователь. В случае подключения к ардуино, мы, по сути, используем штатный конвертер интерфейсов usb и uart, минуя мозги.
Так зачем тратиться лишний раз, если можно обойтись и без ардуино вообще? Только в этом случае, мы подключаем RXD модуля к TXD конвертора, TXD — RXD.
Если вам лениво заморачиваться с подключением, возится с резисторами и стабилизаторами — есть готовые решения NodeMcu:Тут всё значительно проще, воткнул кабель в компьютер, установил драйвера и программируй, только не забывай задействовать перемычку/кнопку на GPIO0 для перевода модуля в режим прошивки.
Ну вот, с теорией наверное всё, статья получилась пожалуй довольно таки большая, и практическую часть, аля прошивка и программирование модуля, я опубликую немного позже.
Я, у себя на ютуб канале, открыл целый плейлист посвящённый моим видео по теме этого Wi-Fi модуля. В планах построили машинку, или лодку, на Wi-Fi управлении, где вместо пульта ДУ будет обычный смарт. Но пока что я к этому ещё не пришёл, так что это всего лишь планы на будущее.
Продолжение этой статьи.
Даташиты на:
ASM1117 3.3 B;
ESP8266EX(микроконтроллер, что стоит в модуле); Ещё ссылки:
Русскоязычное сообщество по ESP8266;
Источник: https://habr.com/post/390593/
Подключение WIFI модуля HLK-RM04 к Arduino Mega 2560. — Сообщество «Arduino для автомобиля» на DRIVE2
Попал мне в руки WIFI модуль HLK-RM04.
От него мне нужно было не так много как он умеет – только измерение мощности сигнала, но все же возникли некоторые особенности по подключению, с которыми я бы хотел поделиться.
Описание модуля есть на сайте производителя: www.hlktech.net/product_detail.
php?ProId=39
Визуально это небольшая плата 3 х 4 см с 28 ногами с несовместимым с Arduino шагом 2 мм — у Arduino, 2.54 мм.
Поэтому при испытаниях, чтобы надежно подключиться мне пришлось с проводов Arduino с разъема «мама» снять пластиковые корпуса и чуть поджать разъемы.
Назначение ног можно найти на сайте производителя или в руководстве производителя — можно скачать по ссылке.
cyber-place.ru/attachment…d=1087&stc=1&d=1377545160Есть еще один особенный разъем – разъем антенны. Он очень миниатюрный и требует специальной вилки желательно с кабелем и готовой антенной. Подходит антенна с разъемом от ноутбуков и роутеров…
Есть модификации со строенной антенной – маленький «кирпичек» рядом с разъемом антенны.
Для работы WIFI модуля HLK-RM04 совместно с Arduino написана библиотека WiFiRM04 – скачать ее можно здесь github.com/chunlinhan/WiFiRM04.
В ней в библиотеке уже есть некоторые готовые решения – скетч с помощью которого можно просканировать доступные WiFi сети… Соединиться с существующей сетью…Особенностью данной библиотеки является то, что она использует два серийных порта и предназначена для работы c Arduino Mega 2560.
Существуют возможность адаптировать библиотеку для работы с другими моделями Arduino – см. например здесь:http: //mysku.ru/blog/china-stores/27123.html
Мне по данным советам удалось адаптировать библиотеку под работу с Arduino Uno.
Подключение разъемов Arduino Mega 2560 и WIFI модуля HLK-RM04 указано ниже:
Разъемы
HLK-RM04 — Mega 2560UART_RX (pin 20) — TX1 (pin 18)UART_TX (pin 21) — RX1 (pin 19)RXD (pin 22) — TX2 (pin 16)TXD (pin 26) — RX2 (pin 17)VCC (pin 1 или 28) — 5V outES/RTS (pin 10) — (pin 21)
GND (pin 2) — GND
Обратите внимание, что здесь также задействован разъем ES/RTS (pin 10) модуля WiFi – необходимо это для перевода модуля в командный режим, так как библиотека для своей работы использует АТ команды.
Для начала работы с WiFiRM04 необходимо установить единую скорость общения модуля WiFi и Arduiono. В библиотеке установлена скорость 38400 — такую же скорость нужно указать в Wifi модуле – см. пункт Подключение для настройки.
Если нужна другая скорость соединения – ее можно поменять в библиотеке – см. пункт Возможные проблемы.
Возможные проблемы.Поскольку полной информации о правильном подключении и настройке я сначала не нашел, у меня при соединении появились похожие строки:
[C:Users91072206DocumentsArduinolibrariesWiFiRM04utilityat_drv.cpp::119]-I-Echo No resp[C:Users91072206DocumentsArduinolibrariesWiFiRM04utilityat_drv.cpp::119]-I-Echo No resp[C:Users91072206DocumentsArduinolibrariesWiFiRM04utilityat_drv.cpp::119]-I-Echo No resp[C:Users91072206DocumentsArduinolibrariesWiFiRM04utilityat_drv.
cpp::119]-I-Echo No resp[C:Users91072206DocumentsArduinolibrariesWiFiRM04utilityat_drv.cpp::119]-I-Echo No resp[C:Users91072206DocumentsArduinolibrariesWiFiRM04utilityat_drv.cpp::119]-I-Echo No resp[C:Users91072206DocumentsArduinolibrariesWiFiRM04utilityat_drv.
cpp::936]-I-Can't switch to at mode
Attempting to connect to SSID: MyWifi
Ответ был найден у зарубежных товарищей (github.com/chunlinhan/WiFiRM04/issues/34) — это может быть:1. Не совпадением скорости WiFi модуля и скоростью в библиотеке WiFiRM04 – она должна быть одинаковой. Но по умолчанию в библиотеке она 38400, а в WiFi модуле, если вы ее не меняли — 115200.
Источник: https://www.drive2.ru/c/2783549/
ESP8266. Часть 1. Последовательный WIFIмодуль для Arduino
Это первая из трех инструкций, которая поможет вам использовать ESP8266 с Arduino. В этом первом руководстве вы узнаете, как установить и протестировать работу модуля, подсоединенного к Arduino.
ESP8266 – это, наверное, самый универсальный модуль с последовательным интерфейсом для соединения различных физических предметов («вещей») с интернетом, поэтому он так популярен в сфере «Интернета вещей».
Это законченный модуль, который состоит из микропроцессора, доступного для программирования напрямую через ArduinoIDE (C++), или в любой другой среде программирования (обычно используется язык высокого уровня “LUA”).
Для управления «вещами» не нужна сама плата Arduino в качестве интерфейса, потому что ESP8266 уже имеет 2 GPIO (Интерфейс ввода/вывода общего назначения). Множество дополнительной важной информации вы сможете найти на форуме, посвященном ESP8266.
Ссылка на форум по ESP8266:
Характеристики:
- 802.11 b / g / n
- Wi-FiDirect (P2P), программная точка доступа soft-AP
- Интегрированный стек протоколов TCP / IP
- Интегрированный TR свитч, балун, LNA, усилитель мощности и согласующая сеть (matchingnetwork)
- Интегрированные PLL, регуляторы, DCXO и системы управления мощностью
- + 19.5 дБ выходная мощность в режиме 802.11b
- Отключение при превышении утечки тока Pin 18, 19 ==> “Serial1”
- TX2 / RX2 ==> Pin 16, 17 ==> “Serial2”
- TX3 / RX3 ==> Pin 14, 15 ==> “Serial3”
Для моих тестов я буду использовать последовательный порт 2 (Serial 2) (пины 16 и 17).
Давайте подробнее рассмотрим модуль:
- Питание: 3.3 В. Это важно, т.к. модуль не работает с напряжением в 5 В, и может сгореть. Входные пины также не поддерживают напряжение 5 В, поэтому при получении сигнала Arduino важно использовать конвертер уровня напряжения (как раньше их называли «делитель напряжения»). Другая важная вещь – это иметь независимый источник питания на 3.3 В, т.к. не всегда Arduino выдает требуемый ток для корректной работы модуля.
- Модуль имеет 6 пинов:
- TX: он будет подсоединен к RX2 на плате MEGA (может быть соединен напрямую, т.к. MEGA интерпретирует 3.3 В как HIGH)
- RX : TX2 подсоединен к MEGA через конвертер уровня напряжения
- VCC : 3.3В
- GND : Земля. Важно помнить, что необходимо подсоединять GND платы ESP8266 к GND на плате MEGA.
- CH_PD (*) : подсоединен к пину 4 последовательного порта на плате MEGA, сброс для начала обмена данными
- RST : Сброс, обычно подсоединяется к VCC
- GPIO0 : свободно (Интерфейс ввода/вывода общего назначения)
- GPIO2 : свободно (Интерфейс ввода/вывода общего назначения)
(*)На некоторых сайтах в интернете показано, что этот пин напрямую подсоединен к VCC. В моем случае без «сброса» по последовательному порту SW (устанавливает пин в значение LOW) ESP8266 не работает.
Продаются адаптеры для включения модуля в макетную плату, т.к. физически расстояние между пинами ESP8266 не совпадает с отверстиями на макетной плате. Для соединения я использовал обычный кабель «мама/папа» типа FTDI (см. ниже). Цвета совпадают с диаграммой соединений.
Шаг 2: Цепь, которая будет использована в тестах
Ничего особенного в диаграмме аппаратных последовательных соединений (HW). Красная пластина – это независимый источник питания 3.3 В, смонтированный на макетной плате. Обратите внимание, что желтый провод соединен с TX2 на Arduino, проходит через делитель напряжения (1K и 2.2K резисторы), таким образом TX2 – это HIGH (5В), ESP8266 получает примерно 3.3В (для него это HIGH).
Шаг 3: Тестирование ESP8266 с помощью AT-команд
Идея этого скетча состоит в тестировании и настройке модуля, который позволяет вводить AT-команды и видеть вывод в программе SerialMonitor.
В части «комментарии» перечислены основные AT-команды. В начале загрузки программы после имени модуля вы увидите много ненужного для нас текста в окне SerialMonitor, затем слово «ready». С этого момента вы можете вводить AT-команды.
Начните с простого «АТ», модуль должен ответить «ОК», протестируйте другие команды.
Картинка показывает, что должно появляться в окне SerialMonitor после того, как вы ввели различные команды.
- AT для тестовых примеров:
- AT =====> ESP8266 возвращает OK
- AT + RST =====> ESP8266 рестарт и возврат OK
- AT + GMR =====> ESP8266 возвращает версию AT; SDK version; id; OK
- AT + CWMODE? => ESP8266 возвращает режим работы
- AT + CWLAP ===> ESP8266 возвращает обнаруженные точки доступа
- AT + CIFSR ===> ESP8266 возвращает установленный IP
- AT + CIPMUX = 1 ==> Устанавливает плате ESP8266 режим работы с несколькими соединениями
- AT + CIOBAUD = 9600 ==> Изменить скорость обмена данными ==> ESP8266 возвращает OK
- AT + CIPSERVER = 1.80 ==> Устанавливает режим SERVER порт: 4040
- AT + CWMODE = 3 ==> Работа ESP8266 в комбинированном режиме (точка доступа (2) и сервер (1))
- AT + CWSAP = “Acc_Point_name”, “password”, wifi_Channel, cript # ==> j.
- AT + CWSAP = “ESP_8266_AP,” 1234 “, 3.0
- AT + CWJAP = “SSID”, “password” ==> Подключается к сети WiFi
- * = AT + CWJAP “ROVAI TIMECAP”, “-1 mjr747”
****************************************************************** /
Ниже представлены файлы с инструкциями для проведения тестов: скетч Arduino, и два PDF документа (один с полным списком команд и другой с более полным руководством по настройке модуля для разных режимов работы: в качестве веб сервера, точки доступа и т.д.)
Download
- ESP8266_WiFi_Module_Quick_Start_Guide_v_1.0.4.pdf
Download
Download
Шаг 4: Заключение
В следующих двух инструкциях я расскажу, как использовать Arduino/ESP8266 в качестве веб-сервера и как включать/отключать светодиоды (или любое другое устройство) удаленно, используя интернет.
Всего доброго!
Для дополнительной информации посетите мой блог:
MJRoBot.org
Источник: https://tpai.ru/blog/perevody-statej/esp8266-chast-1-posledovatelnyj-wifi-modul-dlya-arduino
Ардуино для начинающих. Урок 13. Беспроводная связь
В этом уроке мы поговорим о беспроводной связи между двумя платами Arduino. Это может быть очень полезно для передачи команд с одной ардуино на другую, или обменом информации между вашими самоделками. Возможность беспроводной передачи данных открывает новые возможности в создании своих проектов.
В этом уроке мы будем использовать модули XBee. Принцип работы будет не сильно отличаться от других модулей для беспроводной связи, таких как радио модули, bluetooth и WiFi.
В этом уроке используется:
Беспроводная связь с модулями XBee
Для начала работы с модулями беспроводной связи XBee необходимо прошить сами модули. Каждому модулю необходимо дать свой уникальный идентификатор, идентификатор общей сети и сообщить идентификаторы модулей с которыми необходимо поддерживать связь.
Что бы прошить наши модули, необходимо подключить их к компьютеру, используя USB адаптер или специальный шилд для Arduino Uno. Так же для удобства необходимо скачать программу PuTTY и посмотреть к какому COM порту подключен ваш модуль. Подробнее этот процесс показан в видео выше, поэтому расписывать как это делать я не буду. В виде это все равно нагляднее :).
После прошивки всех модулей XBee можно приступать к программированию ардуино. Для примера мы сделаем так, что одна ардуина будет считывать показания с потенциометра и передавать их на другую. А вторая ардуинка будет принимать и использовать значения для поворота сервопривода. Вот скетч для первой Arduino к которой подключен потенциометр:
// Аналоговый пин от потенциометра// Получаем и обрабатываем данныеint val map(analogRead(potPin), 0, 1023, 0, 9);// Небольшая задержка для стабильности |
Как видите скетч очень прост. Все что он делает это: получает значение с потенциометра, переводит в значение от 0 до 9 для простоты и отправляет по serial соединению. Следующий скетч тоже очень прост:
// Аналоговый пин сервопривода// Назначаем пин сервоприводаjeremysServo.attach(servoPin);while(Serial.avalable() == 0);int data = Serial.read() – '0';// Переводим команду в угол поворотаint pos = map(data, 0, 9, 0, 180);pos = constrain(pos, 0, 180); |
На этом все! Вот так мы очень просто организовали общение между двумя платами Arduino по воздуху. Позже в другой статье мы рассмотрим передачу данных по радио каналам, по блютус и вайфай.Но это будет уже не в рамках обучающего курса.
Источник: https://all-arduino.ru/arduino-dlya-nachinayushhih-urok-13-besprovodnaya-svyaz/
Arduino UNO + ESP8266 как точка доступа WiFi
Модуль ESP8266 будет сконфигурирован как самостоятельная точка доступа WiFi. Для такого режима работы не требуется привязка к существующей WiFi сети. Для соединения смартфон должен подключиться к созданной точке доступа.
Шаг 1. Создайте проект графического интерфейса
Войдите в редактор RemoteXY. Установите в поле смартфона одну кнопку. Выделите эту кнопку, затем в правой панели во вкладке «Элемент» выберите свойство «Привязать к выводу» в значение 13(LED).
Шаг 2. Настройте конфигурацию проекта
В правой панели во вкладке «Конфигурация», выберите следующие настройки.
В правой панели во вкладке «Подключение модуля» установите следующие настройки.
Настройки указывают, что ESP8266 подключается к Arduino через аппаратный Serial (контакты 0 и 1) на скорости 115200.
В настройках так же указано имя будущей точки доступа и пароль точки доступа.
Шаг 3. Сформируйте скетч для Arduino
Нажмите кнопку «Получить исходный код».
В открывшейся странице с исходным кодом скетча загрузите его на свой компьютер (ссылка «Загрузить код») и откройте его в Arduino IDE.
Так же с этой страницы загрузите библиотеку RemoteXY (ссылка «Загрузить библиотеку»).
С правильно установленной библиотекой исходный код скетча должен компилироваться без ошибок.
Подробнее об установке библиотеки RemoteXY для Arduino IDE
Шаг 4. Настройте ESP8266
Модуль ESP8266 нуждается в настройке. Возможно ваш модуль уже имеет необходимые настройки по умолчанию, но лучше это проверить.
Что необходимо проверить:
- Модуль имеет прошивку с поддержкой AT команд версии не ниже v0.40;
- Модуль настроен на скорость работы 115200.
Подробнее о настройке ESP8266 для работы с RemoteXY
Шаг 5. Подключите ESP8266 к Arduino Uno
Подключите ESP8266 к Arduino Uno по схеме приведенной ниже. Обратите внимание, что контакты RX-TX соединяются перекрестием.
Так как уровни сигналов модуля ESP8266 составляют 3.3В а у Arduino они 5В, необходимо использовать резистивный делитель напряжения для преобразования уровня сигнала.
Шаг 6. Загрузите скетч в Arduino
Скетч загружается в Arduino обычным способом. Однако из за того что модуль ESP8266 подключен к контактам 0 и 1, программирование становится невозможным. Компилятор будет показывать ошибку.
Перед программированием отсоедините провода идущие к ESP8266 от контактов 0 и 1. Произведите программирование. Затем верните контакты на место. Нажмите кнопку сброса Arduino.
Примечание: Первый признак того, что программирование прошло успешно, это мерцание синего светодиода на модуле ESP8266 в течении полсекунды сразу после сброса. Мерцание синего светодиода означает обмен данными между Arduino и ESP8266. В эти полсекунды Arduino производит настройку ESP8266 для работы в качестве точки доступа.
Установите мобильное приложение на ваш смартфон/планшет.
Примечание: В приложении для iOS перед подключением необходимо вручную подключить смартфон к точке доступа, используя системные настройки операционной системы. Приложение для Android умеет самостоятельно переключить систему на точку доступа устройства и вернуть предыдущую точку доступа после отключения.
В приложении нажмите кнопку нового подключения «+» в верхней панели. В открывшемся окне выберите подключение «WiFi точка доступа».
В приложении для iOS предварительно зайдите в системные настройки и подключитесь к точке доступа «RemoteXY» с паролем «12345678». Подключенная точка доступа должна отображаться в открывшемся окне. Нажмите кнопку «Connect».
В приложении для Android включите WiFi и нажмите кнопку обновления списка доступных точек доступа. Выберите точку доступа RemoteXY. В открывшемся окне введите пароль точки доступа «12345678», нажмите кнопку «Подключиться».
Вы можете проверить наличие связи между Arduino и ESP8266 используя Serial Monitor, который можно открыть во вкладке Tools в Arduino IDE.
Откройте Serial Monitor и установите скорость 115200. Нажмите кнопку сброса на плате Arduino.
Проверьте наличие правильно загруженной программы
Если после сброса Arduino в Serial Monitor нет никаких сообщений, это скорее всего означает, что Arduino не выполнят вашу программу. Возможно:
- нужный скетч не был загружен;
- ваша Arduino не включена;
- Serial Monitor не подключился к Arduino;
- с вашей Arduino что то не так.
Проверьте связь между Arduino и ESP8266
Если после сброса Arduino в Serial Monitor вы видите следующую последовательность команд, это означает, что инициализация ESP8266 проходит успешно и связь между Arduino и ESP8266 есть:
AT AT+RST ATE0 AT+CWMODE=2 AT+CWDHCP=0,1 AT+CWSAP=”RemoteXY”,”12345678″,10,4 AT+CIPMODE=0 AT+CIPMUX=1 AT+CIPSERVER=1,6377
Если вы видите только повторяющиеся команды «AT», это означает что нет связи между Arduino и ESP8266.
AT AT AT AT
Связь может отсутствовать по разным причинам. Ниже перечислены основные:
- контакты RX и TX подключены не верно, перепутаны контакты, или подключены не к тем контактам, или не подключены совсем;
- нет питания на ESP8266, при подаче питания на ESP8266 должен светиться красный светодиод;
- не хватает мощности источника питания 3.3 В для ESP8266;
- модуль ESP8266 неисправен.
Проверьте прошивку ESP8266
Если после сброса Arduino в Serial Monitor вы видите только начало последовательности команд, но нет завершающей команды AT+CIPSERVER=1,6377 это означает, что модуль ESP8266 имеет устаревшую прошивку. Требуется обновление прошивки.
Подробнее об обновлении прошивки ESP8266
Если инициализация проходит успешно и вы видите последнюю команду AT+CIPSERVER=1,6377, но при попытке подключения с мобильного приложения возникает ошибка, возможно, что модуль ESP8266 имеет устаревшую прошивку.
Проверьте объем памяти вашего ESP8266. Это можно сделать так же посмотрев маркировку чипа памяти, который находится на плате рядом с чипом ESP8266. Если размер памяти составляет 4 Mbit и меньше (установлен чип 25Q40), скорее всего этот модуль не будет работать как точка доступа для RemoteXY.
Проверьте питание ESP8266
Так же возможно, что вашей ESP8266 не хватает мощности источника питания. Некоторые платы Arduino имеют слабый стабилизатор напряжения 3.3 В, который не способен выдавать 200-300 мА в пиковых режимах. В этом случае в Serial Monitor вы так же увидите обрыв последовательности команд.
Проверьте особенности вашего смартфона
Некоторые модели смартфонов на Android имеют особенности подключения точек доступа WiFi, и возможно точка доступа не включается автоматически.
Попробуйте подключиться к точке доступа предварительно в ручную, используя системные настройки. После этого попробуйте соединиться с устройством из приложения RemoteXY.
Если в этом случае соединение устанавливается, значит ваш смартфон имеет такую особенность. Сообщите нам об этом.
Источник: http://remotexy.com/ru/help/start/arduino-esp8266-ss/
Урок 26.4 Соединяем две arduino по радиоканалу через nRF24L01+
При создании некоторых проектов, требуется разделить выполняемые задачи между несколькими arduino.
В этом уроке мы научимся соединять две arduino по радиоканалу ISM диапазона, используя радио модуль nRF24L01+, на расстоянии до 100 м. Если использовать радио модули NRF24L01+PA+LNA, то расстояние между arduino можно увеличить до 1 км, не меняя код скетча.
Преимущества:
- Отсутствие проводов между arduino.
- Высокая скорость передачи данных, до 2 Мб/с. Выше чем у шин I2C и UART.
- Полудуплексная связь. Режим работы модулей (приёмник / передатчик) можно менять в процессе их работы.
- Высокая помехозащищенность. Данные в пакетах принимаются с проверкой CRC.
- Контроль доставки данных. Приемник отправляет передатчику сигнал подтверждения приёма данных (без смены режима работы).
- Возможность выбора одного из 128 каналов связи. Шаг каждого канала равен 1 МГц (от 2,400 ГГц до 2,527 ГГц).
- Возможность одновременной работы до 6 передатчиков на одном канале.
Недостатки:
- Модули nRF24L01+ работают в радиочастотном диапазоне ISM (Industrial, Scientific, Medical) 2,4 ГГц, на котором работают WiFi, Bluetooth и другие устройства, например радио телефоны и даже СВЧ печи. Эти устройства могут «глушить» некоторые каналы данного диапазона.
Поэтому вблизи таких устройств дальность связи между модулями, на некоторых каналах, резко уменьшается. Увеличить дальность можно сменив канал связи на любой из 128 доступных модулям nRF24L01+.
- При выборе скорости 2 Мб/с, задействуются сразу два канала (выбранный и следующий за ним).
- Модули питаются от напряжения 3,3 В постоянного тока. Но их можно запитать от 5 В через адаптер nRF24L01+.
Нам понадобится:
Для реализации проекта нам необходимо установить библиотеки:
- Библиотека RF24 (для работы с радио модулями nRF24L01+).
- Библиотека iarduino_4LED, (для работы с Trema четырехразрядным LED индикатором).
- Библиотеки SPI и Servo входят в стандартный набор Arduino IDE.
О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki – Установка библиотек в Arduino IDE.
Видео:
Схема подключения:
Оба радио модуля nFR24L01+ подключены, через адаптер, к аппаратной шине SPI. Trema четырехразрядный LED индикатор подключён к цифровым выводам D2 и D3 (можно подключить к любым выводам Arduino).
Сервопривод подключён к цифровому выводу D4 (можно подключить к любым выводам). Trema потенциометр и слайдер подключены к аналоговым входам A1 и A0 (можно подключить к любым аналоговым входам).
Питание адаптера nFR24L01+ взято с контактов GND и Vcc (5 В).
Если Вы будете подключать модуль nFR24L01+ без адаптера, то модуль требуется запитать от напряжения 3,3 В постоянного тока.
Таблица подключения радио модуля nFR24L01+
CE | 9 (меняется в скетче) | Выбор режима: приёмник / передатчик |
CSN (CS/SS) | 10 (меняется в скетче) | Шина SPI – выбор устройства |
SСK | 13 (SCK) | Шина SPI – линия тактирования |
MO | 11 (MOSI) | Шина SPI – линия данных (от мастера к ведомому) |
MI | 12 (MISO) | Шина SPI – линия данных (от ведомого к мастеру) |
IRQ | Не используется | Прерывание |
Алгоритм работы:
Передатчик:
При старте (в коде setup) скетч настраивает работу радио модуля в режим передачи данных, указывая номер канала, скорость передачи, мощность передачи и идентификатор трубы. После чего, постоянно (в коде loop), считывает показания с Trema потенциометра и Trema слайдера, сохраняя их в массив data, и отправляет его радио модулю для передачи.
Приёмник:
При старте (в коде setup) скетч настраивает работу радио модуля, указывая те же параметры что и у передатчика, но в режим приёма данных, а также инициирует работу с LED индикатором и сервоприводом.
После чего, постоянно (в коде loop), проверяет нет ли в буфере данных, принятых радио модулем.
Если данные есть, то они читаются в массив data, после чего значение 0 элемента (показания Trema слайдера) выводится на LED индикатор, а значение 1 элемента (показания Trema потенциометра) преобразуются в градусы и используется для поворота сервопривода.
Код программы:
Передатчик:
#include // Подключаем библиотеку для работы с шиной SPI
#include // Подключаем файл настроек из библиотеки RF24
#include // Подключаем библиотеку для работы с nRF24L01+
RF24 radio(9, 10); // Создаём объект radio для работы с библиотекой RF24, указывая номера выводов nRF24L01+ (CE, CSN)
int data[2]; // Создаём массив для приёма данных
void setup(){ radio.begin(); // Инициируем работу nRF24L01+ radio.setChannel(5); // Указываем канал передачи данных (от 0 до 127), 5 – значит передача данных осуществляется на частоте 2,405 ГГц (на одном канале может быть только 1 приёмник и до 6 передатчиков) radio.setDataRate (RF24_1MBPS); // Указываем скорость передачи данных (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS – 1Мбит/сек radio.setPALevel (RF24_PA_HIGH); // Указываем мощность передатчика (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm) radio.openWritingPipe (0x1234567890LL); // Открываем трубу с идентификатором 0x1234567890 для передачи данных (на одном канале может быть открыто до 6 разных труб, которые должны отличаться только последним байтом идентификатора)
}
void loop(){ data[0] = analogRead(A1); // считываем показания Trema слайдера с вывода A1 и записываем их в 0 элемент массива data data[1] = analogRead(A2); // считываем показания Trema потенциометра с вывода A2 и записываем их в 1 элемент массива data radio.write(&data, sizeof(data)); // отправляем данные из массива data указывая сколько байт массива мы хотим отправить. Отправить данные можно с проверкой их доставки: if( radio.write(&data, sizeof(data)) ){данные приняты приёмником;}else{данные не приняты приёмником;}
}
Скачать
Приемник:
#include // Подключаем библиотеку для работы с шиной SPI
#include // Подключаем файл настроек из библиотеки RF24
#include // Подключаем библиотеку для работы с nRF24L01+
#include // Подключаем библиотеку для работы с четырёхразрядным LED индикатором
#include // Подключаем библиотеку для работы с сервоприводами
RF24 radio(9, 10); // Создаём объект radio для работы с библиотекой RF24, указывая номера выводов nRF24L01+ (CE, CSN)
iarduino_4LED dispLED(2,3); // Создаём объект dispLED для работы с функциями библиотеки iarduino_4LED, с указанием выводов дисплея ( CLK , DIO ) Servo myservo; // Создаём объект myservo для работы с функциями библиотеки Servo
int data[2]; // Создаём массив для приёма данных
void setup(){ delay(1000); myservo.attach(4); // Подключаем объект myservo к 4 выводу Arduino dispLED.begin(); // Инициируем работу индикатора radio.begin(); // Инициируем работу nRF24L01+ radio.setChannel(5); // Указываем канал приёма данных (от 0 до 127), 5 – значит приём данных осуществляется на частоте 2,405 ГГц (на одном канале может быть только 1 приёмник и до 6 передатчиков) radio.setDataRate (RF24_1MBPS); // Указываем скорость передачи данных (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS – 1Мбит/сек radio.setPALevel (RF24_PA_HIGH); // Указываем мощность передатчика (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm) radio.openReadingPipe (1, 0x1234567890LL); // Открываем 1 трубу с идентификатором 0x1234567890 для приема данных (на ожном канале может быть открыто до 6 разных труб, которые должны отличаться только последним байтом идентификатора) radio.startListening (); // Включаем приемник, начинаем прослушивать открытую трубу
// radio.stopListening (); // Выключаем приёмник, если потребуется передать данные
}
void loop(){ if(radio.available()){ // Если в буфере имеются принятые данные radio.read(&data, sizeof(data)); // Читаем данные в массив data и указываем сколько байт читать dispLED.print(data[0]); // Выводим показания Trema слайдера на индикатор myservo.write(map(data[1],0,1023,0,180)); // Поворачиваем сервопривод на угол заданный Trema потенциометром }
}
Скачать
Ссылки:
Источник: https://lesson.iarduino.ru/page/urok-26-4-soedinyaem-dve-arduino-po-radiokanalu-cherez-nrf24l01/