Компания
39,38
рейтинг
6 октября 2014 в 10:21

Разное → ESP8266: Что внутри «народного wi-fi»?



Наша первая статья о Wi-Fi-чипе ESP8266 была тепло встречена хабра-сообществом. Не смотря на то, что содержала мало конкретной информации. Тому была веская причина — NDA, подписанное нами для получения SDK от производителя решения, компании Espressif. Именно поэтому мы просто рассказали, «вот, есть такое решение». Чтобы заинтересованные имели возможность обратить внимание.

На днях мы (проект COOLRF, не забудьте подписаться на наше ВКонтакт-сообщество, если вы еще не состоите в нём) получили разрешение производителя чипа на публикацию в наших статьях информации, ранее попадавшей под условия соглашения о неразглашении. Всех, кого интересовали подробности — welcome под кат.

Типовые сценарии использования


ESP8266 создан для использования в умных розетках, mesh-сетях, IP-камерах, беспроводных сенсорах, носимой электронике и так далее. Одним словом, ESP8266 появился на свет, чтобы стать мозгом грядущего «Интернета вещей».

Предусмотрено два варианта использования чипа: 1) в виде моста UART-WIFI, когда модуль на базе ESP8266 подключается к существующему решению на базе любого другого микроконтроллера и управляется AT-командами, обеспечивая связь решения с инфраструктурой Wi-Fi; 2) реализуя новое решение, использующее сам чип ESP8266 в качестве управляющего микроконтроллера.

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

Второй вариант сценария предусматривает написание индивидуальной прошивки для управления чипом «изнутри». В данный момент прошивка должна быть написана для фирменного компилятора. С чем, в основном, и связаны требования к неразглашению информации вокруг этого решения. В обозримом будущем производитель планирует перейти на использование GCC и эти ограничения будут сняты.

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

Ключевые характеристики


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



В итоге типовая обвязка чипа состоит всего из нескольких элементов. Меньше элементов = меньше цена компонентов, меньше стоимость пайки, меньше площадь размещения, меньше стоимость печатной платы. Что прекрасно подтверждается актуальными ценами модулей на базе героя нашего сегодняшнего обзора.

Управляет всем этим интегрированным хозяйством расширенная версия 32-битного процессора Tensilica’s L106 Diamond series. Что же интересного внутри?

  • 802.11 b/g/n protocol
  • Wi-Fi Direct (P2P), soft-AP
  • Integrated TCP/IP protocol stack
  • Integrated TR switch, balun, LNA, power amplifier and matching network
  • Integrated PLL, regulators, and power management units
  • +20.5dBm output power in 802.11b mode
  • Supports antenna diversity
  • Power down leakage current of < 10uA
  • SDIO 2.0, SPI, UART
  • STBC, 1x1 MIMO, 2x1 MIMO
  • A-MPDU & A-MSDU aggregation & 0.4μs guard interval
  • Wake up and transmit packets in < 22ms
  • Standby power consumption of < 1.0mW (DTIM3)


Ultra Low Power Technology


Энергопотребление — одна из самых важных характеристик решения, претендующего стать мозгом миллиардов устройств Интернета вещей. С чем связана популярность BLE и различных собственных реализаций радиоинтерфейсов? Ведь в конечном счете все устройства на базе этих реализаций все равно стремятся попасть в обычный Wi-Fi с помощью специальных устройств-мостов.

Секрет прост — сложно создать устройство, подключенное к WiFi, достаточное время работающее на автономном питании. Потребители не готовы менять батареи в датчиках каждые два-три месяца. Поэтому «выход в сеть» приходилось обеспечивать мостами, подключенным к постоянному электричеству. ESP8266 должен решить эту проблему. Теперь Wi-Fi можно использовать даже в автономных датчиках, работающих на небольших батареях. Благодаря использованию продвинутых механизмов управления энергопотреблением решения.

Если бегло посмотреть на характеристики потребления чипа, можно остаться в неведении. 215mA в режиме передачи — ничего особенного? Да, но стоит вчитаться в даташит и начинаешь понимать перспективы решения. ESP8266 потребляет около 60uA в режиме глубокого сна (с работающими часами реального времени) и меньше 1.0mA (DTIM=3) или меньше 0.5mA (DTIM=10) в режиме поддержания связи с точкой доступа Wi-Fi.

Что дальше?


Сегодня мы разместили в нашей группе ВКонтакте оригинальный даташит самой свежей версии. В нем есть полные характеристики решения и примерами схематических решений. Смотрите раздел «Документы» (справа, внизу). Скоро там же появится документы с описаниями AT-протокола моста UART-WIFI и фирменного API программирования чипа. Следите за нашей деятельностью, будущее обещает быть интересным.
Автор: @webself
COOLRF
рейтинг 39,38
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Комментарии (61)

  • 0
    Неплохо.

    А ШИМ можно прямо на нем генерировать?
    • 0
      Вроде бы да. Вот соответствующие функции API:

      pwm_init
      pwm_set_duty
      pwm_set_freq
      pwm_get_duty
      pwm_get_freq
      • 0
        Примеров прямо сейчас родить не смогу. Позже будут.
        • 0
          Можно к вам на Вайнера подобраться и своими глазами посмотреть. А может и руками потрогать =)
          • 0
            Мы не на Вайнера. С хакспейсом дружим, но там не живем. Встретиться можно, пишите в личку, договоримся.
  • +8
    А нельзя выложить на какое-либо еще чуть более неудобное место, чем вконтакт? Я понимаю, что такое сложно найти, но вдруг…
    • 0
      • 0
        Да, подающий ожидания ресурс. Там даже «утёкшие» данные из закрытого сдк некоторые опубликованы. На то, что публикуем мы, есть персональное разрешение от CEO Espressif.
        • 0
          и инструкции по сборке с помощью gcc там, кстати, есть.
    • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    Кстати, в очередной раз хочу отметить низкую чувствительность для n стандарта. У атероса она -71 дБм.
    Но это пол беды. Радиопередатчик всего 16 дБм.

    В пределах комнаты все будет работать шикарно. Дальше — вопрос.
    • 0
      Пардон, проглядел. Всего 14 дБм.
      Все еще хуже.
    • +1
      Для такого мелкочипа это приличная мощность. Может, есть специальные чипы для внешнего усиления и можно повысить мощность передатчика за счет внешнего усилителя.
      Впрочем, невысокая мощность передатчика это видимо плата за экономичность, с какой целью чипы и разрабатывались.
      • 0
        Да, я так же думаю.

        Несколько датчиков в меш — это единственный вариант добить до отдаленных мест.
        Стандарт WiFi direct подразумевает одновременную работу в режиме GO (group owner) и Client. Так что это можно будет понять только на практие, на сколько эффективно работает.
    • 0
      Вот такое тестирование люди делали. hackaday.com/2014/09/26/esp8266-distance-testing/

      366 метров взял модуль с печатной антенной на открытой местности.
      • 0
        Это уже направленная антенна или еще нет?
        • 0
          Это обычный китайский модуль с печатной антенной. Соединенный с обычным роутером.
  • +4
    Всё ближе подпольный няш-меш, в узлах которого только батарейки менять придётся.
    • +1
      Уже сейчас на мобильниках присутствует Wifi Direct.
      Так что ставку надо делать именно на мобильные устройства, а не стационарные блоки с батарейками.
      • 0
        Wi-Fi Direct — какой-то недостандарт, маловато функций для поддержания работоспособной сети. Вот IEEE 802.11s — другое дело! Там даже динамическая маршрутизация с OSPF есть.
        • 0
          Это не совсем верно.

          Стандарт 802.11s использует HWMP и дает возможность задействовать другие протоколы.

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

          А то работал я в компании, производящей сетевые беспроводные устройства, пощупал меш руками как он есть.
    • 0
      Где-то был проект по подключению слабомощных электроприборов поверх силовых проводов с передачей энергии через их индукцию.
  • +2
    Очень классное энерго-потребление!
    • +1
      Киллер-фича.

      Явно делали для автономных устройств. Где производительность не нужна, а энергопотребление должно быть низким.
      • +2
        Судя по командам, он умеет отдавать список сетей которые видит, наконец-то можно будет собрать компактный брелок WiFi-сканер/пеленгатор.
        • 0
          Там в даташите есть очень интересные намеки на использование в:

          Wi-Fi location-aware devices
          Security ID tags
          Wi-Fi position system beacons

          Я подробности этого у производителя выведать не успел, но «location-aware» и «position system» подразумевает возможность измерения силы сигнала у разных точек вокруг. Если это появится в API — будет сверхинтересно
        • –4
          наконец-то можно будет собрать компактный брелок WiFi-сканер/пеленгатор

          Гугл, перелогинься.
  • 0
    Уважаемый webself!
    Подскажите, пожалуйста, такой момент.
    С железом всё понятно — подключаем к модулю питалово, TX/RX, при необходимости резет — и готово. Со стороны UART-а просматриваем сети, находим нужную, коннектимся. Поднимаем сервер.
    А вот дальше — вопрос. Собственно, что дальше-то? Как мне получить, например, мост? Я правильно понял — как только мы отдаём команду AT+CIPSTART=4,«TCP»,«192.168.0.111»,9999" — uart становится прозрачным, и всё, что туда валится, направляется на порт 9999 айпишнику 192.168.0.111? И переконфигурировать модуль получится только после резета? (вот поэтому его и есть смысл подключить). А на приём? тот же порт, но с любого ИП? или только со 111-го? А как сделать с любого?

    Как-то примеры в интернете заканчиваются на этапе «а теперь установим соединение...». И всё.
    • +3
      Постараемся отдельный пост на эту тему сделать. Может быть в конце недели.
      • 0
        Ну как, есть подвижки в изучении модуля?
        • 0
          Есть, но пока нет времени на хабрапост.

          И да, мы не стали ковыряться с работой через AT-команды, мы экспериментируем с внутрисхемной прошивкой модуля.
    • 0
      Судя по AT-командам, модуль всегда находится в режиме AT, а данные клиент забирает принудительно(по сигналу «что-то пришло»). Иначе как реализован режим установления нескольких подключений одновременно?
      • 0
        Вроде бы нет. На руках есть исходники AT-прошивки. Реализована она на базе вызовов API. И парни с esp8266.com эту прошивку допиливают потихоньку.
        • 0
          API на каком уровне? AT-команды через UART это тоже API.
          • 0
            На уровне внутри-программинга самого чипа.
            • 0
              т.е. AT-команды это всего лишь интерфейс доступа к внутренним функциям. Но тем не менее, как же тогда реализован режим нескольких подключений?
              • 0
                Прямо сейчас не готов ответить на этот вопрос. Позже постараюсь.
  • 0
    Не увидел информации по вопросу памяти устройства. Если я делаю AT команду на приём 1МБ информации, сколько КБ девайс запомнит, чтобы потом выдать по UARTу?
    • 0
      Девайс запулит в UART всё что будет получать. И если, например, подключить железку к ардуинке и использовать библиотеку Hardware/SoftwareSerial, то с получением пакетов размером больше 64 байт могут возникнуть проблемы.
  • 0
    Какой же там может быть mesh, если, судя по спецификации, нет поддержки ни AdHoc, ни WDS, ни 11s?
    • 0
      Из коробки — никакого. Но там использован 802.11 стек из *BSD, который умеет 11s, а это даёт надежду на то, что можно будет заменить соответствующие блобы от espressif исходниками из BSD и включить нужные режимы.
      • 0
        Откуда такая уверенность про BSD и то что они перетащили туда 802.11s?
        • 0
          Имена файлов в блобах, имена функций довольно хорошо соответствуют коду freebsd.
          И я не говорил, что они перетащили туда 802.11s. Они его как раз не перетащили.
          Но мой прогноз — выкинуть бОльшую часть их libnet80211.a и заменить исходниками из freebsd, попутно добавив 802.11s и всё остальное, что понадобится, будет не очень сложно.
    • 0
      Из коробки поддерживает Wifi Direct.
      Это не совсем меш в стандартном понимании, но близко.
      Точки сами договариваются кто «папа» без участия пользователя. В этом смысле можно использовать вместо полноценного меша в инфраструктуре умного дома.
      • 0
        Я не уверен, что «из коробки» wifi директ поддерживается. Мой вопрос на их официальном форуме о примере использования в таком режиме уже месяц без ответа лежит.
        • 0
          В SDK был режим этот. SoftAP вроде назывался.
          • 0
            SoftAP — есть, но это разве WiFi direct?
            • 0
              Оно самое.
            • 0
              Точнее, там есть режим одновременной работы softap+station.
              Это и есть wifi direct.
      • 0
        WiFi Direct это чуть более чем не меш. WiFi Direct сохраняет роли стандартной спеки WiFi добавляя расширения поверх инфраструктурного режима. Иначе говоря, WiFi Direct не даст вам несколько соединений в роли STA. А построить меш топологию используя только AP и STA роли, даже если они поддерживаются одновременно, вы не сможете.
        • 0
          Вы тогда раскройте дальше свою мысль что за православный меш считаете только одноранговый. А то людим могут модумать что других вариантов нет.
          • 0
            Дело не в этом. Дело в том, что то, что делает WiFi Direct называется топологией звезда.
            Другая проблема, что даже если вы возьмете чипы, поддерживающие AP и STA (Client) одновременно, вы все равно не сможете построить меш, т. к. вы сможете иметь соединение только с одним клиентом, и с одной AP, даже если в вашей зоне видимости есть еще устройства, с которыми вы можете работать.
            • 0
              А иначе я тогда не понимаю, причем здесь WiFi и 11s, если на L3 можно и так меш построить. Только что уровень проблем другой. И всех прелестей беспроводного соединения не получить.
              • 0
                11s тут вообще никаким боком.
                У вас есть поддержка одновременной работы в режиме STA и AP. С автоматическим выбором каналов (можно и свою логику накрутить). В чем проблема? Если сеть открытая — будет работать. Если WPA2 шифрование использовать — нуэно делать один пароль на всех. Возникнет проблема неравномерного распределения частот и ее нужно будет решать, благо DFS уже придуман давно и ничего городить не нужно. И это будет вполне себе меш. Понятное дело что никакой гарантированной пропускной способности нет и не может быть при таком сценарии, но модули большие потоки данных и не потянут.
                А сообщения доставлять от датчиков вполне по силам.
                Про звезду не понял. Вот, совсем не понял. Топология получается именно MESH. MESHанина, если хотите. Никаких звезд, только хардкор.
                • 0
                  Ок, а как вы будете гарантировать, что не замкнете устройства в два кольца, которые несоединены друг с другом, и, таким образом так и не собрав все узлы в одну сеть? Вам нужен будет алгоритм, который будет разруливать то, каким образом два узла должны подключаться. Плюс никакой динамики. Если у вас узел в цепочке пропадает, то очень вероятно, что вам придется перестроить всю отвалившуюся сеть.
                  • 0
                    И то, что я имел ввиду насчет звезды в WiFi Direct. Насколько я понимаю, вы не сможете построить топологию типа: STA — AP — STA — STA — AP -STA, так же как STA — AP — STA — AP — STA так, что все устройства смогут общаться на L2 уровне. Т. е. весь роутинг у вас будет на сетевом уровне.
                    • 0
                      STA — AP — STA — STA — AP -STA можно делать во все стороны и как угодно.
                      Похоже, вам нужно почитать Олифера. Там прям на пальцах объясняется роутинг, свитчинг и сетевые уровни.

                      По поводу петель — они будут. Либо отсекать их на уровне маршрутизации, либо использовать хитрые распределенные коммутаторы. Но это уже другая история и к модулю не относится.
                      • 0
                        За Олифера спасибо. А можете подробнее объяснить, как вы построите STA — AP — STA — STA — AP — STA?
                        STA — AP — STA — это понятно, а как STA — STA? Клиенты умеют общаться друг с другом будучи в разных BSS и следуя WiFi спецификации?
                        Насколько я понимаю WiFi Direct, если вы используете его, то передачу данных на MAC уровне WiFi Direct вам не даст. И следующий уровень, на котором узлы будут видны друг другу — это сетевой.
  • 0
    Подскажите, а есть устройства с GPIO на подобии ESP8266, но исспользуещие BLE вместо WiFi?
    • +1
      есть, гуглите CC2540
      только разрабатывать под них сложнее несколько, на мой взгляд.

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

Самое читаемое Разное