СОЗДАНИЕ БЕСПРОВОДНОГО ШИЛДА-БАРОМЕТРА С ESP8266.
ЧАСТЬ I.ВВЕДЕНИЕ И ESP8266
Здравствуйте, дорогие любители радиотехники , хотим представить первую часть перевода статьи http://digitaljunky.io/make-a-connected-barometer-shield-for-arduino-uno/
ПРОЛОГ
Я никогда не предполагал, что буду использовать WIFI в моих проектах, так как цена соответствующих шилдов была очень высока. Шилд HUZZAH от Adafruit стоит 39.95$, а Sparkfun предлагает свой шилд за 84.95. Удивляет.
Так что вы можете представить моё удивление, когда я узнал про существование модуля ESP8266 всего за 5$! WiFi модуль за такую цену - это звучит идеально. Я начал читать о нём, изучая проекты, которые пышным букетом расцвели вокруг этого новичка. Он показался мне достаточно простым в использовании, так что я сразу же представил, как хочу начать данную статью. Примерно так:
Познакомьтесь с ESP8266 - дешёвым, plug-n-pay устройством, которое позволит легко подсоединить ваши проекты ко всемирной паутине!
Но не всегда происходит то, что мы запланировали… Первый модуль, который я купил, оказался бракованный и чуть не свёл меня с ума, пока я пытался понять, что я делаю неправильно. Перед тем, как я решил забросить электронику навсегда и планировать начать новую жизнь где-нибудь в Южной Америке, я решил потратить ещё 5 долларов на новый модуль просто на всякий случай, хотя я не был уверен, что мой модуль был изначально сломан.
Закончились ли на этом мои злоключения? Нет. Не закончились. Если вы не будете осторожно обращаться с вашей установкой (джампера подключены куда надо, отсутствуют короткие замыкания, ток достаточен), модуль ESP может (и вероятнее будет) повреждён. Но не огорчайтесь, я постарался описать наиболее возможные ошибки, чтобы избавить вас от этого безумия. И это на самом деле стоит того - выяснить как управлять этой штуковиной. Вы можете увидеть результат данной работы на моём канале Thingspeak.
ЧТО МЫ БУДЕМ ДЕЛАТЬ
Как вы могли уже понять из заголовка, мы собираемся сделать шилд для Arduino UNO R3. На шилде будет размещено 3 датчика, для получения данных о окружающей среды: температура, атмосферное давление и яркость. Данные будут передаваться в онлайн через модуль ESP8266. Модуль работает при напряжении 3.3В и потребляет около 300 мА, следовательно, для запуска надо учитывать две вещи. Первая - выход на 3.3В Arduino не предоставляет достаточного тока для питания ESP (у него есть только 50 мА), так что нам потребуется регулятор напряжения на линии 5В. Так же логический уровень Arduino слишком высок для ESP. Далее мы увидим, как решить эти две задачи.
Для того, чтобы можно было заменять модули и использовать их в других проектах, я решил разместить рейки отверстий для модулей. Я не покупал отдельных реек, а просто взял достаточную длинную и разделил на нужное количество. Так как мы теряем при подобном разделении по 1 пину, нам требуется (5 + 4 + 2*6 + 2*4) + 6 = 35 пинов.
СПИСОК КОМПОНЕНТОВ
- Arduino UNO R3 или клон Arduino UNO R3 (1 штука)
- Arduino Proto Shield (1 штука)
- Модуль WIFI ESP8266-1 (1 штука)
- Конвертер логического уровня TTL 5V - 3V
- Фоторезистор
- LD1117V33 регулятор напряжения
- Керамические конденсаторы на 100 нФ (1 штука), 10 мкФ (1 штука)
- Электролитический конденсатор 470 мкФ (2 штуки)
- Резисторы 10 кОм (4 штуки)
- Кнопка (1 штука)
- Разъёмы мама (> 35 штук)
- Провода папа-папа
- Провода папа-мама
- Макетная плата
МОДУЛЬ ESP8266
Rx: последовательная передача
Tx: последовательный приём
VCC: питание 3.3В
GPIO_0: не закреплён, заземление активирует режим загрузки прошивки
CH_PD: 3.3В - включение (низкий уровень)/выключение (высокий уровень) модуля
RESET: 3.3В - заземление перезагружает чип
ПРЕДВАРИТЕЛЬНЫЕ ДАННЫЕ
Как было сказано во введении, модуль может стать ночным кошмаром, если вы не будите использовать его правильно. Потому что проблема не в том, что не будет работать всё полностью, а в том, что работа будет происходить очень беспорядочно, что может вызывать затруднения. В течении дня, используя одни и те же настройки, вы можете получить совершенно различные результаты, время отклика будет меняться, он будет переходить в состояние “ЗАНЯТО” безо всякой причины. Поэтому вот ряд советов перед тем, как мы начнём:
- Модуль работает от 3.3В: НЕ ПЫТАЙТЕСЬ ЗАПИТАТЬ ЕГО ОТ 5В И ПОДКЛЮЧАТЬ ЕГО НАПРЯМУЮ К ПИНАМ 5В (ТАКИМ КАК ЦИФРОВЫЕ И АНАЛОГОВЫЕ ПИНЫ ARDUINO). Нет, он не сгорит мгновенно, но если у вас появятся проблемы в будущем (возможно ближайшем) вы не будете точно знать, связаны ли они с тем, что вы повредили модуль или с чем-то ещё.
- Если вы не можете связаться с ESP и синий индикатор моргает, то это означает, что одна из линий (или две) последовательного интерфейса (Rx и Tx) подключены неверно.
- На макетной плате - проверьте свои соединения, если модуль начинает вести себя слишком загадочно. Очень часто проблемы решались таким путём.
- Используйте развязывающие конденсаторы на линии питания, к которой подключен модуль ESP. Он очень чувствителен к колебаниям источника напряжения, так что лучше быть в безопасности, чем в печали.
- В зависимости от версии прошивки модуля, скорость работы может быть различной. На модулях, с которыми я работал, она была либо 9600 или 115200 бод, но может быть и другой. Если ваше устройство выдаёт мусор в консоль, то попробуйте поменять скорость работы.
- А это уже более общий совет: ВСЕГДА ЧИТАЙТЕ ДАТАШИТЫ. Очень часто я приходил домой полным энергии, подключал всё что можно на макетную плату и получал странное поведение, с которым долго пытался справится, хотя как потом я узнавал из даташита - мне всего лишь требовалось больше тока или конденсатор. Если это для вас в новинку - вы можете быть немного удивлены количеством информации в подобных документах, однако не пугайтесь. Как правило, вам требуется выяснить следующее: напряжение, ток и схемы применения устройства.
ОБЩЕНИЕ С ESP
Это первая вещь, которую нужно освоить, чтобы проверить работает ли наш модуль правильно. Первый метод, из рассмотренных ниже, подразумевает прямое подключение модуля к консоли последовательного интерфейса. Вы можете использовать любую из консолей, даже ту, что включена в среду Arduino. Putty тоже подходит для данной задачи. Лично я использую Atmel Studio с плагином Visual Micro для всего, что мне требуется.
Если вы не любитель консоли, то вы можете использовать одну прекрасную программу, которая предоставляет графический интерфейс для тестирования модуля.
В случае, если мы используем связь через Arduino, требуется загрузить на плату данный код. Он использует библиотеку SoftwareSerial для создания второго последовательного порта Arduino UNO из двух цифровых выходов. Это очень хорошо, так что вы можете использовать один последовательных интерфейс для вывода отладочной информации и другой для связи между модулем ESP и Arduino. Всё, что будет отправлено с USB на Arduino будет передано на модуль ESP, словно они соединены напрямую.
У ESP есть много команд, которые начинаются все с префикса AT. После того, как модуль получает команду, он всегда возвращает код ответа (“OK” - для большинства операций, “0,CONNECTED” - для открытия TCP соединения, “ready” - после перезагрузки и т.д.).
Самые часто используемые команды - это AT - для проверки работоспособности модуля, AT+GMR - возврат версии прошивки, AT+RST - перезагрузка, AT+CWJAP=”SSID”,”PASS” - для подключения к точке доступа. Тут есть полный список AT команд и тут небольшая памятка. Так же стоит помнить, что команды могут отличаться от версии к версии.
Используйте один из методов, которые будут представлены дальше, для подключения вашего модуля ESP8266. Как только ваша схема будет настроена, вы можете использовать следующие команды (последовательно) для работы с модулем, чтобы оценить его возможности. Я использовал версию 0.9.4, так что на вашей, команды и коды ответов могут быть различными.
Команда |
Описание |
Ожидаемый ответ |
AT |
Модуль доступен? Возвращает “busy”, если занят |
OK |
AT+GMR |
Получение версии прошивки |
00200.9.4 compiled @ Dec 24 2014 20:44:10 AI-THINKER Dec 24 2014 |
AT+RST |
Перезагрузка ESP |
OK ready |
AT+CWMODE=1 |
Установка режима клиента (2 - сервера, 3 - клиента и сервера) |
OK |
AT+CWLAP |
Поиск доступных точек доступа |
+CWLAP:(2,”TP-LINK_954D62″,-90,”f8:d1:11:95:4d:62″,2) +CWLAP:(3,”ARTDECO”,-86,”ac:81:12:ea:17:64″,2) +CWLAP:(4,”captainblood”,-87,”ac:f1:df:62:65:3f”,6) OK |
AT+CWJAP=”A_P_NAME”,”PASSWORD” |
Подключение к точки доступа |
788
05.04.2017
|