ESP8266:Модули/Плата HUZZAH ESP8266 от Adafruit

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.



Плата HUZZAH ESP8266 от Adafruit[1]

Процессор ESP8266 – это микроконтроллер производства Espressif с частотой 80 МГц, работающий через беспроводной интерфейс WiFi (может выступать и клиентом, и точкой доступа), а также имеющий стек TCP/IP и поддержку DNS. Хотя ESP8266 обрел большую популярность, использовать его было сложно. Многие недорогие модули на базе ESP8266 были плохо совместимы с контактами макетной платы, не имели встроенного 3,3-вольтового регулятора напряжения с силой тока 500 мА (или другого компонента для переключения вольтовой логики), а также не имели сертификации CE или FCC. Однако теперь есть как минимум один модуль, который помогает всех этих проблем избежать – прототипная плата HUZZAH ESP8266.

Этот модуль (по заявлениям компании Adafruit, разработавшей продукт) заметно упрощает работу с процессором ESP8266. В его основе лежит сертифицированный чип ESP8266 – со встроенной антенной и множеством свободных контактов – который припаян к специально разработанной печатной плате. Разработчики добавили в модуль HUZZAH следующее:

  • Кнопку сброса (рядом с надписью «Reset»)
  • Пользовательскую кнопку (рядом с надписью «GPIO0»), которая используется также для переключения ESP8266 в режим загрузчика
  • Красный светодиод, которым можно моргать
  • Переключение вольтовой логики (на шине UART и контакте сброса)
  • Регулятор напряжения, выдающий 3,3 вольта и 500 мА (чип ESP8266 тянет примерно 250 мА, так что используйте силу тока разумно)
  • Входные питающие контакты, защищенные двумя диодами (один – для USB-кабеля, второй – для батареи)

Контакты HUZZAH ESP8266 совместимы с макетной платой, а также выполнены в виде отверстий, что позволяет подключиться к ним с обеих сторон платы. Плата HUZZAH ESP8266 имеет следующие контакты:

  • Один входной аналоговый контакт (максимальное напряжение – 1,0 вольта)
  • Девять GPIO-контактов (с 3,3-вольтовой логикой); их также можно использовать для интерфейсов I2C и SPI
  • Два контакта для интерфейса UART
  • Два входных питающих контакта (диапазон напряжения – от 3 до 6 вольт)
  • Три контакта для управления ESP8266 (LDO, RST и EN)
  • Один контакт для выдачи 3,3-вольтового напряжения

Контакты интерфейса UART находятся в левой части HUZZAH ESP8266, и к ним можно подключить конвертерный кабель USB-Serial, чтобы с его помощью загружать на чип ПО, а также принимать/передавать отладочную информацию. Закончив с программированием, кабель FTDI можно отсоединить, а затем просто подключить HUZZAH ESP8266 к своему проекту.

На каждый HUZZAH ESP8266 предварительно загружен интерпретатор языка Lua, разработанный командой NodeMCU (если точнее, NodeMCU 0.9.5 версии 20150318 на базе Lua 5.1.4), благодаря которому вы, используя конвертерный кабель USB-Serial, можете выполнять команды, а также «сохранять» Lua-программы прямо на flash-память ESP8266.

Если хотите, Lua можно пропустить и сразу начать работать с IDE Arduino. Для этого нужно лишь установить в IDE Arduino аддон для чипа ESP8266. После этого вы сможете работать с ESP8266, как с обычным микроконтроллером, оснащенным WiFi-платой, и никакие другие процессоры вам не понадобятся.

Каждый комплект состоит из собранной и протестированной прототипной платы HUZZAH ESP8266, а также снабжен полоской 0,1-дюймовых штырьковых контактов. Их можно припаять к HUZZAH, а затем с их помощью подключить HUZZAH к макетной плате. Для этого также понадобятся паяльник и припой, которые в комплекте с HUZZAH не идут. Кроме того, вам понадобится конвертер USB-Serial вроде консольного USB-кабеля (только для Windows), чипа FTDI Friend (для любой ОС; это адаптерный чип FTDI FT232RL, модифицированный компанией Adafruit) или кабеля FTDI (для любой ОС), чтобы с его помощью загружать ПО на HUZZAH ESP8266.

Распиновка

Внимание: Чип ESP8266 питается 3,3 вольтами и работает на 3,3-вольтовой логике. Поэтому GPIO-контакты ESP8266, как правило, не устойчивы к 5 вольтам (разве что разработчик не внес соответствующую модификацию). Максимальное напряжение для аналогового контакта и того меньше – 1,0 вольта.

Если сравнить HUZZAH ESP8266 с мини-модулем ESP-01, то у первого гораздо больше свободных GPIO-контактов. Запрограммировав HUZZAH при помощи Lua или IDE Arduino, вы можете использовать эти GPIO-контакты для управления светодиодами, считывания данных с кнопок, коммуникации с датчиками и т.д. Кроме того, на HUZZAH ESP8266 есть несколько контактов, выполняющих питающие и контрольные функции.

Питающие контакты

Чипу ESP8266 требуется для питания 3,3-вольтовое напряжение, а требуемая сила тока в некоторых случаях может достигать 500 мА (или около того). Но, как правило, ESP8266 тянет примерно 250 мА – можете спокойно использовать эту цифру для расчета энергетического «бюджета» своей цепи. Чтобы упростить питание HUZZAH ESP8266, разработчики установили на нее 3,3-вольтовый регулятор напряжения. Диапазон входного напряжения у этого регулятора составляет от 3,4 до 6 вольт, но мы советуем придерживаться диапазона 4-6 вольт, т.к. при включенном WiFi чипу ESP8266 может понадобиться больше напряжения, чем обычно.

У этого регулятора два входных питающих контакта, V+ и VBat. Оба оснащены диодами Шоттки, поэтому вы можете подключить их к разному напряжению, и регулятор будет просто питать плату от более высокого напряжения. Кроме того, на плате есть еще один контакт V+; он расположен в левой части и используется для подключения к конвертерному кабелю USB-Serial.

Рекомендуем использовать контакт VBat для прямого подключения литий-полимерной батареи или комплекта AA-батареек, а контакт V+ оставить неподключенным – на тот случай, если понадобится подключить кабель USB-Serial (например, кабель FTDI).

Кроме того, к регулятору подключен выходной контакт 3V, который используется для выдачи 3,3-вольтового напряжения.

Контакты для последовательной коммуникации

  • Контакты RX и TX – это контакты для последовательной коммуникации, которые также используются для загрузки на ESP8266 нового ПО. Именно их вы будете чаще всего использовать для коммуникации с HUZZAH ESP8266.
  • Контакт TX – это контакт для вывода данных из модуля, и он работает на 3,3-вольтовой логике.
  • Контакт RX – это контакт для ввода данных в модуль, и он может работать на 5-вольтовой логике (благодаря тому, что этот контакт оснащен средством для переключения вольтовой логики).

Эти контакты доступны в двух местах платы. Одно расположено в левой, а другое – в правой нижней части HUZZAH ESP8266 (см. картинку выше).

GPIO-контакты

Прототипная плата HUZZAH ESP8266 оснащена девятью GPIO-контактами: #0, #2, #4, #5, #12, #13, #14, #15 и #16. Все можно использовать для ввода и вывода данных. Все работают на 3,3-вольтовой логике и не совместимы с 5-вольтовым напряжением. Более подробно об ограничениях при использовании GPIO-контактов читайте в технической документации, но имейте в виду, что максимальная сила тока, которую можно тянуть от GPIO-контакта ESP8266 – это 12 мА.

Это контакты типа «general purpose» (отсюда и «GP» в названии), т.е. «общего пользования». Другими словами, это универсальные контакты, которые можно использовать для множества различных задач, связанных с вводом и выводом данных. Большинство GPIO-контактов HUZZAH оснащено подтягивающим резистором.

Кроме того, многие GPIO-контакты платы могут выполнять специальные функции:

  • GPIO-контакт #0. У него нет подтягивающего резистора. Кроме того, он подключен одновременно к красному светодиоду и кнопке, расположенной рядом с надписью «GPIO0». ESP8266 использует этот контакт, чтобы определить, когда нужно переходить в режим загрузчика. То есть, если во время запуска этот контакт находится в состоянии LOW, то ESP8266 активирует загрузчик. Впрочем, вы всегда можете использовать его и в качестве выходного контакта, а также для мигания красным светодиодом.
  • GPIO-контакт #2. Этот контакт тоже используется, чтобы определить, нужно ли входить в режим загрузчика. Кроме того, он подключен к синему светодиоду, который расположен рядом с WiFi-антенной. Он оснащен подтягивающим резистором, и вы также можете использовать его в качестве выходного контакта и для мигания синим светодиодом.
  • GPIO-контакт #15. Тоже используется, чтобы определить, нужно ли входить в режим загрузчика. Оснащен стягивающим резистором, и это нужно для того, чтобы при запуске этот контакт случайно не перешел в состояние HIGH. Его также может использовать в качестве выходного контакта.
  • GPIO-контакт #16. Используется для выведения HUZZAH ESP8266 из режима глубокого сна. Для этого его нужно подключить к контакту RESET.

Внимание: У версии Rev A этой платы контакты #4 и #5 переставлены. Поэтому, если они у вас не работают, просто поменяйте их местами. Adafriut обещает исправить эту проблему при производстве новых печатных плат.

Аналоговые контакты

Точнее, не аналоговЫЕ, а аналоговЫЙ, т.к. он всего один – это входной контакт рядом с надписью «A» (см. картинку выше). Его максимальное напряжение составляет около 1,0 вольта. Поэтому, если вам нужно будет прочесть более высокое аналоговое напряжение, его нужно будет подогнать к диапазону от 0 до 1 вольт.

Управляющие контакты

На ESP8266 есть несколько управляющих контактов:

  • LDO – это контакт для управления регулятором напряжения. По умолчанию он притянут к значению HIGH, но если подключить его к GND, это выключит 3,3-вольтовый регулятор. По сути, это простейший способ отключения питания у всей цепи. К этому контакту подключен подтягивающий резистор на 10 кОм, который будет использоваться на линии с более высоким напряжением (будь то V+ или VBat). Если непонятно, смотрите схему.
  • RST – это контакт для сброса ESP8266. По умолчанию притянут к HIGH. Если притянуть его к LOW, моментально выполнит сброс ESP8266. Кроме того, этот контакт может работать с 5 вольтами.
  • EN (CH_PD) – это контакт для включения/выключения ESP8266. По умолчанию притянут к HIGH. Если притянуть его к LOW, моментально выполнит сброс ESP8266. Этот контакт может работать только с 3,3-вольтовой логикой.

Сборка


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

Расположите HUZZAH ESP8266. Положите HUZZAH так, чтобы короткие штырьки прошли сквозь отверстия на плате.




Время пайки! Спаяйте все контакты, но начните с одной из сторон.



Переверните плату и спаяйте вторую сторону.

Готово! Проверьте, нет ли на припое дефектов. Если нет, переходите дальше.

Если вы планируете программировать HUZZAH ESP8266 через кабель FTDI или консольный кабель, есть смысл припаять к боковой части платы еще один гребешок – на этот раз с 6 контактами.

Если необходимо, отрежьте 6-контактный гребешок. Затем вставьте его в макетную плату (длинными штырьками вниз).

Разместите HUZZAH на макетной плате лицевой стороной вниз.


Припаяйте 6-контактный гребешок.

Готово! Проверьте, нет ли на припое дефектов. Если нет, переходите дальше.

Использование NodeMCU Lua

Примечание: На наш взгляд, Lua больше подходит для тестирования, т.к. позволяет передавать короткие команды, а для программирования лучше использовать IDE Arduino.

На каждую HUZZAH ESP8266 предустановлен интерпретатор Lua, разработанный командой NodeMCU. На момент написания этой статьи разработчиками HUZZAH используется NodeMCU 0.9.5 версии 20150318 на базе Lua 5.1.4, но в будущем на HUZZAH ESP8266, возможно, будет устанавливаться билд поновее.

Lua по-прежнему в разработке, поэтому мы настоятельно рекомендуем посетить сайт NodeMCU и обновить Lua до последней версии (к слову, там же можно сгенерировать кастомную прошивку). О том, как обновить Lua, читайте в этом руководстве.

При помощи последовательной коммуникации интерпретатору Lua можно передавать команды и считывать результаты этих команд. Для этих целей идеально подойдет консольный кабель или кабель FTDI. Кроме того, для питания и коммуникации можно использовать и 3,3-вольтовую, и 5-вольтовую логики, т.к. на контакте RX стоит переключатель вольтовой логики.

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

Подключение конвертерного кабеля USB-Serial

Подключите к HUZZAH кабель FTDI или консольный кабель. Если используете кабель FTDI, то черный провод должен быть подключен к контакту GND (т.е. к «земле»).

Если используете консольный кабель, подключите черный провод к контакту GND, красный – к V+, белый – к TX, а зеленый – к RX.

Если все подключено правильно, при запуске HUZZAH красный и синий светодиоды начнут мигать, но продолжаться это будет недолго.

Использование консоли

Теперь воспользуйтесь на компьютере консольной программой вроде CoolTerm (Mac), Putty (Windows) или screen (Linux). Также можно воспользоваться Teraterm, но этой программе не шибко нравится скорость 115,2 Кбит/сек, на которой по умолчанию работает ESP8266. В общем, Teraterm можно попробовать, но для этого ее, возможно, понадобится перезагрузить.

Затем подключитесь к COM-порту или последовательному порту, к которому подсоединен кабель. Скорость коммуникации выставьте на 9600 бод.

Убедитесь, что выключили управление потоком и аппаратное «рукопожатие».

Также убедитесь, что для конца строки стоит настройка «CR-LF» (т.е. «\r\n»; это значит «перевод строки + возврат каретки»). Кроме того, если вы вставляете большие куски кода, можно включить задержку между символами. Разные консольные программы настраиваются по-разному, так что подробнее о настройках читайте в мануале к используемой программе.


Подключив консольную программу, нажмите на кнопку Reset на HUZZAH ESP8266. Это сбросит плату, после чего она напишет в консоли приветственное сообщение:

Если сообщения не пришло, сначала проверьте, мигают ли синий и красный светодиоды, когда вы нажимаете на кнопку Reset. Если нет, убедитесь, что плата питается от контакта V+ или от контакта VBat. Если мигают, убедитесь, что выставили правильную скорость передачи данных (это должно быть 9600 бод), а также проверьте правильность подключения контактов RX, TX и GND.

Привет, мир!

Окей, теперь можно поуправлять светодиодом. В качестве подопытного давайте воспользуемся красным светодиодом, подключенным к GPIO-контакту #0.

Примечание: Распиновка NodeMCU не соответствует распиновке Arduino/gcc. Для удобства распиновка Arduino напечатана на самой HUZAAH ESP8266.

Внимание: У версии Rev A этой платы контакты #4 и #5 переставлены. Поэтому, если они у вас не работают, просто поменяйте их местами. Adafriut обещает исправить эту проблему при производстве новых печатных плат.


Примечания Плата/Arduino NodeMCU/Lua
Без подтягивающего резистора! 0 3
2 4
3 9
4 1
5 2
9 11
10 12
12 6
13 7
14 5
15 8
16 0


Итак, чтобы мы смогли управлять светодиодом на 0-ом контакте, его нужно выставить в режим вывода данных. Для этого впишите в консоли следующее (именно впишите, без копипаста):

gpio.mode(3, gpio.OUTPUT)

Чтобы включить светодиод, впишите следующее (именно впишите, без копипаста):

gpio.write(3, gpio.LOW)

Чтобы выключить светодиод, впишите следующее (именно впишите, без копипаста):

gpio.write(3, gpio.HIGH)

Кроме того, эти действия можно автоматизировать при помощи простого скрипта.

При использовании большого текста со вставкой могут возникнуть проблемы, т.к. интерпретатору Lua требуется небольшая задержка между символами, а также настройка «CR-LF». Поэтому есть смысл вставлять каждую строчку по отдельности, а затем вручную нажимать  ↵ Enter .

while 1 do
  gpio.write(3, gpio.HIGH)
  tmr.delay(1000000)   -- wait 1,000,000 us = 1 second
  gpio.write(3, gpio.LOW)
  tmr.delay(1000000)   -- wait 1,000,000 us = 1 second
end

В результате светодиод начнет включаться/выключаться с периодичностью 1 раз в секунду.

Обратите внимание, что эти действия помещены в цикл, поэтому остановить их при помощи интерпретатора не получится. Чтобы остановить их, просто нажмите на кнопку Reset!

Код выше останавливает процессор при помощи функции tmr.delay(). Однако умнее будет мигать светодиодом при помощи таймера (код взят отсюда):

-- настройка контакта:
local pin = 3
local status = gpio.LOW
local duration = 1000    -- время работы таймера (1 секунда)

-- инициализация контакта:
gpio.mode(pin, gpio.OUTPUT)
gpio.write(pin, status)

-- создание интервала:
tmr.alarm(0, duration, 1, function ()
    if status == gpio.LOW then
        status = gpio.HIGH
    else
        status = gpio.LOW
    end

    gpio.write(pin, status)
end)

Сканирование WiFi-сетей и подключение к одной из них

Теперь давайте попробуем написать простую программку для сканирования и подключения к WiFi.

Вернувшись в консоль Lua, выставьте ESP8266 в режим WiFi-клиента, вписав следующее:

wifi.setmode(wifi.STATION)

Затем запустите сканер, который напечатает список найденных точек доступа:

-- печатаем список точек доступа:
function listap(t)
      for k,v in pairs(t) do
        print(k.." : "..v)
      end
end
wifi.sta.getap(listap)

Или можно дополнить этот фрагмент, чтобы информация о WiFi-сетях была более подробной:

-- печатаем список точек доступа:
function listap(t)
      for ssid,v in pairs(t) do
        authmode, rssi, bssid, channel = 
          string.match(v, "(%d),(-?%d+),(%x%x:%x%x:%x%x:%x%x:%x%x:%x%x),(%d+)")
        print(ssid,authmode,rssi,bssid,channel)
      end
end
      
wifi.sta.getap(listap)

Затем подключитесь к точке доступа при помощи функций wifi.sta.config() и wifi.sta.connect(). Подключение займет 1-2 секунды, после чего к модулю можно отправить запрос wifi.sta.status() – с его помощью узнается статус WiFi-сети. Если результатом будет «5», это значит, что подключение выполнено успешно и IP-адрес получен.

wifi.sta.config("accesspointname","yourpassword")
wifi.sta.connect()
tmr.delay(1000000)   -- ждем 1000000 мс = 1 секунда
print(wifi.sta.status())
print(wifi.sta.getip())

Веб-клиент

Теперь, когда HUZZAH ESP8266 получила IP-адрес, мы можем подключиться к какому-нибудь сайту (например, к сайту компании Adafruit), а затем прочитать указанную страницу и напечатать ее в консоли:

sk=net.createConnection(net.TCP, 0)
sk:on("receive", function(sck, c) print(c) end )
sk:connect(80,"104.236.193.178")
sk:send("GET /testwifi/index.html HTTP/1.1\r\nHost: wifitest.adafruit.com\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")

Кроме того, модуль можно настроить таким образом, чтобы он DNS’ил за вас. Просто вместо IP-адреса укажите имя хоста.

sk=net.createConnection(net.TCP, 0)
sk:on("receive", function(sck, c) print(c) end )
sk:connect(80,"wifitest.adafruit.com")
sk:send("GET /testwifi/index.html HTTP/1.1\r\nHost: wifitest.adafruit.com\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")

Это лишь несколько тестовых программ для HUZZAH ESP8266. Более подробную информацию о функциях ищите в документации на сайте NodeMCU. Более подробно о скриптовом языке Lua можно почитать тут.

Использование IDE Arduino

Хотя каждая HUZZAH ESP8266 идет с предустановленным интерпретатором Lua, использовать его необязательно. Вместо него можно воспользоваться более популярной IDE Arduino. Но учтите, что загрузка кода при помощи IDE Arduino стирает прошивку NodeMCU. Поэтому, если вы захотите вернуться к интерпретатора Lua, его нужно будет переустановить при помощи флэшера.

Чтобы загружать код на ESP8266 и использовать консоль, понадобится конвертер USB-Serial. Для этого подойдет кабель FTDI или консольный кабель, причем вы можете работать и с 3,3-вольтовой, и с 5-вольтовой логикой, т.к. на контакте RX установлен переключатель вольтовой логики.

Примечание: По какой-то причине консольные USB-кабели PL2303 работают только с компьютерами на Windows. Поэтому пользователям Mac лучше воспользоваться кабелями FTDI.

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

Подключение кабеля USB-Serial

Подключите к плате консольный кабель или кабель FTDI. Если используете кабель FTDI, черный провод должен быть подключен к контакту GND (т.е. к «земле»).

Если используете консольный кабель, подключите черный провод к контакту GND, красный – к V+, белый – к TX, а зеленый – к RX.

Если все подключено правильно, при запуске HUZZAH красный и синий светодиоды начнут мигать, но продолжаться это будет недолго.

Установка IDE Arduino

Загрузите отсюда IDE Arduino версии 1.6.4 или выше. Не используйте 1.6.2! Если у вас уже установлена IDE Arduino нужной версии, то можно воспользоваться ею.

Кроме того, по этой ссылке можно скачать аддон ESP8266 для IDE Arduino.

Установка аддона ESP8266

Откройте IDE Arduino и кликните по Файл > Настройки (File > Preferences). Затем найдите пункт Дополнительные ссылки для менеджера плат (Additional Boards Manager URLs) и впишите туда «http://arduino.esp8266.com/stable/package_esp8266com_index.json».

Инструкцию по установке сторонних аддонов в IDE Arduino читайте тут.

Теперь кликните в IDE Arduino на Инструменты > Плата > Менеджер плат... (Tools > Board > Boards Manager...) и установите аддон.

Настройка HUZZAH ESP8266

Перезапустив IDE Arduino, кликните по Инструменты > Плата > Adafruit HUZZAH ESP8266 (Tools > Board > Adafruit HUZZAH ESP8266).

В пункте CPU Frequency выставьте 80 МГц. Позднее можно попробовать разогнать до 160 МГц.

Для начала лучше попробовать скорость 115200 бод. Позднее можно попробовать скорость побыстрее, но начать лучше с этой.

Затем кликните на Инструменты > Порт (Tools > Port) и выберите порт, к которому подключен кабель USB-Serial.

Мигание светодиодом

Начнем давайте с самого простого – с включения/выключения светодиода.

Вставьте код, показанный ниже, в окно для скетчей:

void setup() {
  pinMode(0, OUTPUT);
}

void loop() {
  digitalWrite(0, HIGH);
  delay(500);
  digitalWrite(0, LOW);
  delay(500);
}

Теперь плату нужно перевести в режим загрузчика. Это придется делать перед каждой загрузкой кода. Таймаута у режима загрузчика нет, так что торопиться некуда. Выполните следующие действия:

  1. Зажмите кнопку GPIO0. В результате должен загореться красный светодиод
  2. Держа кнопку GPIO0 зажатой, нажмите на кнопку RESET
  3. Отпустите кнопку RESET, а затем и GPIO0
  4. Когда вы отпустите кнопку RESET, красный светодиод неярко мигнет. Это значит, что ESP8266 готов к загрузке

Пока ESP8266 находится в режиме загрузчика, загрузите скетч при помощи IDE Arduino.

Скетч запустится в ту же секунду – вы увидите мигание светодиода. Ура!

Подключение через WiFi

Теперь, когда мы научились моргать светодиодом, давайте перейдем к чему-то повеселее. Например, к программе, позволяющей подключаться к веб-серверу. Создайте новый скетч и скопируйте в него вот этот код:

/*
 *  Простой тест с HTTP-запросом GET от веб-клиента
 */

#include <ESP8266WiFi.h>

const char* ssid     = "yourssid";
const char* password = "yourpassword";

const char* host = "wifitest.adafruit.com";

void setup() {
  Serial.begin(115200);
  delay(100);

  // начинаем с подключения к 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");    //  "Подключились к WiFi"
  Serial.println("IP address: ");  //  "IP-адрес: "
  Serial.println(WiFi.localIP());
}

int value = 0;

void loop() {
  delay(5000);
  ++value;

  Serial.print("connecting to ");  //  "Подключаемся к "
  Serial.println(host);
  
  // используем класс WiFiClient, чтобы создать TCP-соединение:
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");  //  "Подключение не удалось"
    return;
  }
  
  // создаем URL для запроса:
  String url = "/testwifi/index.html";
  Serial.print("Requesting URL: ");  //  "Запрашиваемый 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(500);
  
  // считываем все строчки из ответа от сервера
  // и печатаем их в мониторе порта:
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  
  Serial.println();
  Serial.println("closing connection");  //  "Соединение закрыто"
}

Не забудьте изменить вот эти строчки:

const char* ssid     = "yourssid";
const char* password = "yourpassword";

В них указываются название точки доступа и пароль к ней. Затем загружаем этот код аналогично коду для мигания светодиодом. То есть переходим в режим загрузчика и загружаем код через IDE Arduino.

Откройте в IDE Arduino монитор порта на скорости 115200 бод. В нем должна появиться информация о подключении, а также данные, скачанные с сайта.

Вот и все!

Эти скетчи – лишь самая основа. Более подробно читайте на GitHub-репозитории, посвященном аддону ESP8266 для IDE Arduino.

Другие варианты

  • Вы можете попробовать embedXcode – это шаблон Xcode для работы с ESP8266
  • Также есть esp-open-sdk – это набор инструментов, позволяющий программировать ESP8266 напрямую (более подробно читайте на wiki-сайте об ESP8266)

Загрузки

Даташиты

CAD-файлы

Дополнительно

Схема

В версии Rev C регулятор напряжения SPX3819 уступил место AP2112. Теперь максимальное напряжение составляет 6 вольт (но снизилось падение напряжения – 250 милливольт вместо 340 милливольт), а максимальная выходная сила тока – 600 мА.

Фабричная схема

На первой картинке размеры в миллиметрах, а на второй – в дюймах.


FAQ об ESP8266

Когда я подключаю компоненты к некоторым контактам HUZZAH, она перестает работать. Что происходит?

Некоторые контакты ESP8266 используются в качестве контактов для загрузчика. Поэтому в режиме загрузчика они могут принимать неожиданные (на первый взгляд) значения:

  • Контакт CH_PD (EN) всегда должен быть притянут к HIGH (если подать на него LOW, это выключит модуль)
  • Контакт RST всегда должен быть притянут к HIGH (если подать на него LOW, это выключит модуль)
  • При помощи контакта GPIO0 определяется, активен ли режим загрузчика. Чтобы запустить программу пользователя, во время запуска или сброса платы этот контакт должен быть притянут к HIGH. Если притянуть его к LOW, это включит режим загрузчика. Кроме того, к GPIO0 подключен красный светодиод, который загорается, когда на GPIO0 подается значение LOW
  • Контакт GPIO2 должен быть притянут к HIGH во время запуска или сброса платы
  • Контакт GPIO15 должен быть притянут к LOW во время запуска или сброса платы

Моя HUZZAH постоянно сбрасывается и крашится. Что происходит?

Самая распространенная причина крашей – это неполадки с питанием. Убедитесь, что HUZZAH питается от стабильных 5 вольт. Кабель USB-Serial, идущий от HUZZAH, должен быть подключен к материнской плате компьютера или USB-хабу с собственным питанием.

Я не могу найти на компьютере последовательный порт, к которому подключена Feather HUZZAH...

Не забудьте установить на компьютер VCP-драйверы для моста CP2104.

Все равно не могу найти на компьютере последовательный порт, к которому подключена Feather HUZZAH!

Многие электронные компоненты поставляются с USB-кабелями, которые можно использовать только для зарядки, что влечет за собой очевидные проблемы... Поэтому убедитесь, что ваш USB-кабель – это полноценный кабель для передачи данных. Если вам попался кабель только для зарядки, просто выкиньте его, чтобы в будущем снова не столкнуться с такой проблемой.

При работе с Mac мне выдает ошибку компиляции «no such file».

Если ваша ошибка выглядит примерно так...

fork/exec /Users/xxxxxxx/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-g++: no such file or directory
Error compiling.

...то решение следующее:

  1. Откройте Менеджер плат в IDE Arduino
  2. Удалите аддон для ESP8266
  3. Откройте папку «~Library» (откройте Finder, выберите Go > Go to folder и введите «~Library»). Найдите папку «Arduino15»
  4. В папке «Arduino15» найдите папку «packages» и удалите в ней папку «esp8266»
  5. Вернитесь в IDE Arduino и установите аддон для ESP8266
  6. Вернитесь в Finder и убедитесь, что у вас есть файл «xtensa-lx106-elf-g++» по маршруту «Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-g++»
  7. Готово!

Каждый раз, когда я запускаю или сбрасываю ESP8266, в консоли появляется много непонятного мусора.

Это отладочные сообщения ROM-памяти, которые передаются на скорости 74880 бод, поэтому они редко отображаются в виде нормального ASCII-текста. Информация искажается, и в результате мы видим лишь набор странных символов.

У меня трудности с загрузкой кода на HUZZAH через IDE Arduino.

Убедитесь, что используете действительно хороший кабель USB-Serial. Также обязательно установите официальные драйвера для этого кабеля! Кроме того, мы заметили, что кабели на базе PL2303 не работают на Mac по той же самой причине. Для Mac лучше подойдет кабель FTDI или чипсеты на базе CP210x.

Я поменял кабель, но у меня все равно трудности с загрузкой кода на HUZZAH через IDE Arduino.

Иногда помогает переключить в IDE Arduino тип платы на «Generic ESP8266 Module». Кроме того, настройку Reset Method нужно выставить на «nodemcu».

Более подробно смотрите в этом посте.

Я застрял в режиме загрузчика и не могу загрузить код.

Вы имеете в виду, что светодиод горит в пол силы, а при попытке загрузить код появляется ошибка? Во-первых, вы уверены, что кабель USB-Serial подключен и правильно работает? Если да, и проблема остается, то попробуйте следующее: подключите контакт GPIO0 к GND через 220-омовый резистор, а затем попробуйте загрузить код. Возможно, потребуется несколько попыток, но в итоге код должен загрузиться, а HUZZAH – выйти из режима загрузчика. После этого резистор можно отключить.

Эту проблему можно решить и по-другому – подключив друг к другу контакты RST и EN (CH_PD). Запрограммировав модуль, отключите их.

Lua не отвечает на мои команды.

Убедитесь, что у консольной программы стоит правильная настройка для конца строки. Настройки PuTTY по умолчанию не соответствуют тем, что нужны для коммуникации между Lua и ESP8266. Lua нужна настройка «CR-LF» (т.е. «\r\n»; это значит «перевод строки + возврат каретки»), а у PuTTY по умолчанию стоит только «LF» (т.е. только «\n»)!

См.также

Внешние ссылки