Esp8266 какие пины можно использовать
Перейти к содержимому

Esp8266 какие пины можно использовать

  • автор:

Как правильно задавать пины ESP8266 NodeMCU в скече?

это значит, что это GPIO4.
Но у меня какая-то хрень! Матрица (дисплей) у меня действительно висит на 4, но не на GPIO, а на D4. Все остальные пины задаются как положено цифрой от GPIO, но вот если я даю пин матрицы двойкой (D4 это GPIO2), то экран ничего не показывает. А вот если указываю 4, то работает. Меня тут смущает только одно, у SPI GPIO4 задействовано. И вроде всё прекрасно работало в течении 2 лет. Но сейчас при переключении реджима дисплея почему-то сбрасывается состояние датчика движения. И я уже весь мозг словал в чем дело.
Тут я переустановил винду и после установки поставил версию ESP8266 самую последнюю, но после перепрошивки начал безсистемно моргать светодиод 1,1 который. На буржуйских форумах я вычитал, что что бы жтого глюка у FastLed не было надо версию ESP ставить не старше 2.7.4. Установил и глюк с первым светодиодом пропал. Вот думаю может еще раньше версию поставить.

CodeNameHawk
Moderator

Команда форума
Вот думаю может еще раньше версию поставить.

Не стоит, 2.7.4 нормально работает.
Версии выше этой, как то работают менее стабильно, особенно если на неё есть достут с интернета.
Я назначаю выводы по номеру gpio.
Это позволяет избежать путаницы при выборе другой платы.
(Обозначения типа D5, на разных платах могут указывать на разные выводы есп)

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

Delphin911
Member

Да, наверное это правильно. А то саму метеостанцию я делал уже больше 2 лет назад. Какие тогда версии были непонятно. Тут проблема такая: работала она эти 2 года и тут с месяц назад перестал срабатывать датчик движения. Точнее он срабатывает, что движения нет и тут же поступает сигнал о движении. А у меня при отсутствии движения дисплей переходит в другой режим. И этот же режим включается с 22 до 7 утра. Я на выход датчика движения светодиод прилепил и вот сейчас, после 22 часов вижу, что он вообще постоянно горит. Т.е. этот мой ночной режим и режим отсутствия движения каким-то образом дает 1 на выход датчика движения, а точнее на вход ESP. Вход датчика движения уже менял. Не помогает. Уже на код грешу, но я после 2-х лет не менял его. Разве что раньше у меня данные писались во внутреннюю память ESP, но она похоже вышла и з строя или количество циклов записи закончилось (перестало совсем в нее писать) и я поставил SD карту, ну и скетч под нее переписал чуть чуть. Но режимов вывода на экран и работы датчика движения это не затронуло. Вот и сижу кумекаю в чем дело.

CodeNameHawk
Moderator

Команда форума

Тут нужен мастер, который сможет подключится хотя бы тестером и замерить, что и где.
Или собрать простой осциллограф https://sites.google.com/site/cvssav/stm32/oscillograf-stm32f103-lcd-2-2-spi-ili9341
Правда в BluePill там должно быть 128 Kbytes of Flash memory.

Delphin911
Member

А вот вопрос. Я немного покопался, вернул в работу RX и TX и посмотрел, что выдает Serial порт. Ну несколько незначительных (неважных) ошибок нашел, но самое главное, что после окончания Setup он у меня перегружается вот так:

Exception (28): epc1=0x4000bf64 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00208cd1 depc=0x00000000 >>>stack>>> ctx: cont sp: 3ffffc30 end: 3fffffc0 offset: 0190 3ffffdc0: 80000000 a5a50875 3955a5a5 00009700 3ffffdd0: 00208cd1 4bc6a7f0 40100ab0 3ffffec0 3ffffde0: 00000000 3fff2280 3ffefb38 40208b80 3ffffdf0: 00000000 00000000 4bc6a7f0 00000000 3ffffe00: 000097a7 0000012c 40100ab0 000097ad 3ffffe10: 00000000 4c957f2d c90a0b0a 3ffffec0 3ffffe20: 00001d40 00000000 4c957f2d 5851f42d 3ffffe30: 00001d68 000003ad 3a353631 3a353631 3ffffe40: 8a003538 71fd7963 00000000 40101470 3ffffe50: 00000000 00000000 00000001 4010072c 3ffffe60: 4022b8c8 00000000 3ffffea0 3ffffec0 3ffffe70: 00000000 3fff2280 3ffffea0 40209034 3ffffe80: 3fffdad0 00000000 00000000 4020e31b 3ffffe90: 00000000 3fff0cf0 00000000 4020e473 3ffffea0: 3fff374c 3fffff80 402010fc 4020902c 3ffffeb0: 3fffdad0 00000000 3fff126c 4020998b 3ffffec0: 3ffef3d0 3fff22fc 3fff3854 00000090 3ffffed0: 00000001 00b8ffb7 4020e582 3fff22e8 3ffffee0: 00000001 000927c0 3fff2310 40226118 3ffffef0: 3fffff48 3fffff80 00000001 40234018 3fffff00: 3ffe8ead 00000000 6e69000a 40228f8d 3fffff10: 3ffe8ead 00000000 72610070 40228f8d 3fffff20: 3ffe93e1 3fff1160 00000020 3fff12ac 3fffff30: 40224cfc 3fff1160 3ffe8eab 40224d08 3fffff40: 40224cfc 3fff1160 3ffe8eab 4020f1fd 3fffff50: 3fff0cf0 00000016 3fff1160 40225268 3fffff60: 3fff0cf0 3fff1160 3fff1160 402252dc 3fffff70: 3fff0cf0 3fff1160 00000000 4020ac14 3fffff80: 3fff374c 0016001f 4020116c 4020410c 3fffff90: 3fff2500 000b000f 80efeffe 3fff12ac 3fffffa0: 3fffdad0 00000000 3fff126c 4022754c 3fffffb0: feefeffe feefeffe 3ffe8a04 40100691 

Я порылся в инете и нашел расшифровку ets Jan 8 2013,rst cause:2, boot mode3,6). Так вот rst cause:2 - это External reset or wake-up from Deep-sleep.
Отсюда вопрос возник. У меня датчик движения висит на GPIO16, который и используется как контакт для вывода из глубокого сна. В своем другом устройстве на ESP8266 Wemos D1 & R2 mini я использую этот онтакт и для вывода из сна и для подключения датчика движения. Но там все работает, ESP не ресетится.
Еще вычитал, что

Exception (28): выдается когда бесконечный цикл. Ищу конечно, но говорю же, код два года работал. Правда SD карту внес в код. Может там чего. 
CodeNameHawk
Moderator

Команда форума
Может там чего.
Ну так отключите для проверки, всего и делов-то.
ps. используйте

#define ispolzovat_SD #ifdef ispolzovat_SD //программа для работы со сд . #endif

Чтобы отключить кусок кода достаточно закомментировать //#define ispolzovat_SD и по новой скомпилировать скетч.

Delphin911
Member

С D0 вроде стало понятно, что дело не в нем. Если отрезать весь код, а оставить только работу с датчиком движения, все работает стабильно.
Я тут почита про расшифровку результатов ошибок. Нашел описание Exception decoder. Скачал, установил, расшифровал. Но хоть убей ничего не понимаю. И все строки касаются каких-то внутренних библиотек. Только одна что-то говорит о моем коде, но опять таки что, не понят:

Decoding 14 results 0x40101100: umm_assimilate_up at C:\Users\dimon\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\umm_malloc/umm_malloc.cpp line 227 0x40206e38: _ZZ5setupENKUlPvE_clES_$isra$178 at C:\Users\dimon\Documents\Arduino\MeteoClockV4_SD_/MeteoClockV4_SD_.ino line 107 0x40100aac: millis at C:\Users\dimon\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266/core_esp8266_wiring.cpp line 188 0x4010146c: malloc at C:\Users\dimon\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\umm_malloc/umm_malloc.cpp line 552 0x40100728: ets_post at C:\Users\dimon\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266/core_esp8266_main.cpp line 177 0x4021f578: precache at ?? line ? 0x402072ec: std::_Function_handler ::_M_invoke(std::_Any_data const&, void*) at c:\users\dimon\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\xtensa-lx106-elf\include\c++\4.8.2/functional line 2073 0x4020b353: TickerScheduler::handleTicker(std::function , void*, bool*) at C:\Users\dimon\Documents\Arduino\libraries\TickerScheduler/TickerScheduler.cpp line 36 0x4020b4ab: TickerScheduler::update() at c:\users\dimon\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\xtensa-lx106-elf\include\c++\4.8.2/functional line 2174 : (inlined by) TickerScheduler::update() at C:\Users\dimon\Documents\Arduino\libraries\TickerScheduler/TickerScheduler.cpp line 112 0x402010fc: std::_Function_base::_Base_manager ::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager const&, std::_Manager_operation) at c:\users\dimon\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\xtensa-lx106-elf\include\c++\4.8.2/functional line 1931 0x402072e4: std::_Function_handler ::_M_invoke(std::_Any_data const&, void*) at c:\users\dimon\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\xtensa-lx106-elf\include\c++\4.8.2/functional line 2069 0x40205fcb: loop at C:\Users\dimon\Documents\Arduino\MeteoClockV4_SD_/MeteoClockV4_SD_.ino line 150 0x4021b674: loop_wrapper() at C:\Users\dimon\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266/core_esp8266_main.cpp line 197 0x4010068d: cont_wrapper at C:\Users\dimon\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266/cont.S line 81

Вторая строка ссылка на мой код. Но если как я сделал, отрезать весь код кроме датчика движения, то все работает. А эта строка дуле Setup.

Arduino IDE для ESP8266

Arduino IDE для ESP8266

Arduino IDE для ESP8266 позволяет писать скетчи и загружать их одним кликом в ESP8266 в знакомой среде (я бы даже сказал «до боли знакомой») Arduino IDE. Для тех кому интерфейс Arduino IDE не очень по душе, есть поддержка плагина для Eclipse. Итак, обо всем по порядку. Самые нетерпеливые могут сразу перейти к Arduino IDE для ESP8266: быстрый старт

  • Arduino IDE для ESP8266: краткий обзор реализованных в настоящее время функций
    • Базовые функции языка Wiring
    • Тайминг и delay
    • Последовательные порты Serial и Serial1 (UART0 и UART1)
    • PROGMEM
    • Библиотека WiFi ESP8266 (ESP8266WiFi)
    • Тикер
    • EEPROM
    • I2C (Библиотека Wire)
    • SPI
    • ESP8266 API
    • Библиотека OneWire
    • mDNS библиотека ESP8266mDNS
    • Библиотека Servo
    • Другие библиотеки, не включенные в поставку Arduino IDE

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

    Arduino IDE для ESP8266 поддерживает все существующие на сегодняшний день модули ESP8266 (потому что они особо и не отличаются), включая модули с флеш бОльшего, чем 512k объема. Поддерживаются модули NodeMCU (всех версий), Olimex-MOD-WiFi-ESP8266.

    Поддерживается режим авторестарта и прошивки по RTS+DTR, как у обычной Arduino, для этого потребуется USB-TTL адаптер с разведенными пинами DTR и RTS. Если у вас только RX, TX и GND на USB-TTL, то придется по-старинке вручную притягивать к земле GPIO0 и передергивать питание модуля для прошивки.

    Arduino IDE для ESP8266: краткий обзор реализованных в настоящее время функций

    Базовые функции языка Wiring

    Управление GPIO осуществляется точно также, как и управление pin для arduino: pinMode , digitalRead , digitalWrite , analogWrite функционируют как обычно. GPIO нумеруются так, как мы уже привыкли: для чтения состояния GPIO2 нужно использовать команду digitalRead ( 2 )

    GPIO0-GPIO15 могут быть INPUT , OUTPUT , INPUT_PULLUP , и INPUT_PULLDOWN . GPIO16 может быть только INPUT , OUTPUT или INPUT_PULLDOWN . Команда analogRead ( A0 ) считывает значение ADC (АЦП) с TOUT.

    Команда analogWrite ( pin , value ) включает программный PWM (ШИМ) на указанном GPIO. Команда analogWrite ( pin , 0 ) отключает PWM. value может быть в диапазоне от 0 до PWMRANGE . Константа PWMRANGE в настоящее время равна 1023.

    Поддержка прерываний обеспечивается функциями attachInterrupt , detachInterrupt . Прерывания могут быть назначены на любой GPIO, кроме GPIO16. Стандартные прерывания Arduino CHANGE , RISING , FALLING тоже поддерживаются.

    ESP8266 - функции пинов

    ESP8266 — функции пинов

    Тайминг и delay

    Функции millis и micros возвращают миллисекунды и микросекунды соответственно, прошедшие с момента старта модуля. Любимая многими функция delay также присутствует и приостанавливает выполнение скетча на указанное время в миллисекундах и позволяет отработать операциям WiFi и TCP/IP. Функция delayMicroseconds используется аналогично, только время задается в микросекундах.

    Помните о том, что когда модуль поддерживает WiFi соединение, ему приходится выполнять множество фоновых задач, кроме вашего скетча. WiFi и TCP/IP функции библиотек SDK имеют возможность обработать все события в очереди после завершения каждого цикла вашей функции loop ( ) или во время выполнения delay ( . . . ) . Если в вашем коде есть фрагменты, которые выполняются более 50 миллисекунд, то необходимо использовать delay ( . . . ) для сохранения нормальной работоспособности стека WiFi.

    Также вы можете использовать функцию yield ( ) , которая эквивалентна delay ( 0 ) . С другой стороны, функция delayMicroseconds блокирует выполнение других задач, поэтому ее использование для временных задержек свыше 20 миллисекунд не рекомендуется.

    Последовательные порты Serial и Serial1 (UART0 и UART1)

    Объект Serial работает точно также, как и с Arduino. Помимо аппаратного FIFO (по 128 байт для приема и передачи) определен и программный буфер размером по 256 байт для приема и передачи данных. Прием и передача данных происходит по прерываниям, прозрачно для вашего скетча. Функции записи и чтения блокируют выполнение скетча только когда аппаратный FIFO и программный буфер переполняются.

    Serial использует аппаратный UART0, работающий на GPIO1(TX) и GPIO3(RX). Эти пины могут быть переназначены на GPIO15 (TX) и GPIO13 (RX) вызовом функции Serial . swap ( ) ; после Serial . begin ( ) ; . Повторный вызов Serial . swap ( ) ; вернет все на свои места.

    Serial1 использует аппаратный UART1, работающий только на передачу. UART1 TX это GPIO2. Для включения Serial1 используйте Serial1 . begin ( ) ;

    По умолчанию, отладочная информация библиотек WiFi выключается, когда вы вызываете функцию Serial . begin ( ) ; . Для включения отладочной информации на UART0 используйте Serial . setDebugOutput ( true ) ; Для перенаправления вывода отладочной информации на UART1 используйте команду Serial1 . setDebugOutput ( true ) ;

    И Serial и Serial1 поддерживают 5, 6, 7, 8 бит данных, odd (O), even (E), и no (N) режимы четности, и 1 или 2 стоп бита. Для выбора нужного режима вызывайте Serial . begin ( baudrate , SERIAL_8N1 ) ; или Serial . begin ( baudrate , SERIAL_6E2 ) ; и т.д.

    PROGMEM

    Макрос PROGMEM работает точно также, как в Arduino, помещая read only данные и строковые константы (литералы) во флеш память, высвобождая HEAP. Важное отличие состоит в том, что в ESP8266 одинаковые литералы не хранятся в одном месте, поэтому использование строковых констант внутри конструкций F ( "" ) и/или PSTR ( "" ) приводит к расходованию флеш памяти при каждом вызове этих функций. Вы должны самостоятельно управлять одинаковыми строками для экономичного расходования места во флеш памяти.

    Библиотека WiFi ESP8266 (ESP8266WiFi)

    Функции библиотеки WiFi ESP8266 очень схожи с функциями библиотеки для обычного WiFi шилда.

    • WiFi . mode ( m ) : выбрать режим WIFI_AP (точка доступа), WIFI_STA (клиент), или WIFI_AP_STA (оба режима одновременно).
    • WiFi . softAP ( ssid ) создает открытую точку доступа
    • WiFi . softAP ( ssid , password ) создает точку доступа с WPA2-PSK шифрованием, пароль должен быть не менее 8 символов
    • WiFi . macAddress ( mac ) позволяет получить MAC адрес в режиме клиента
    • WiFi . softAPmacAddress ( mac ) позволяет получить MAC адрес в режиме точки доступа
    • WiFi . localIP ( ) позволяет получить IP адрес в режиме клиента
    • WiFi . softAPIP ( ) позволяет получить IP адрес в режиме точки доступа
    • WiFi . RSSI ( ) пока не реализована
    • WiFi . printDiag ( Serial ) ; выводит диагностическую информацию
    • Класс WiFiUDP поддерживает прием и передачу multicast пакетов в режиме клиента. Для передачи multicast пакета используйте вместо udp . beginPacket ( addr , port ) функцию udp . beginPacketMulticast ( addr , port , WiFi . localIP ( ) ) . Когда вы ожидаете multicast пакеты, используйте вместо udp . begin ( port ) функцию udp . beginMulticast ( WiFi . localIP ( ) , multicast_ip_addr , port ) . Вы можете использовать udp . destinationIP ( ) для определения того, был ли пакет отправлен на multicast адрес или предназначался именно вам. Multicast функции не поддерживаются в режиме точки доступа.

    WiFiServer , WiFiClient , и WiFiUDP работаю точно так же, как и с библиотекой обычного WiFi шилда. Четыре примера идет в комплекте с этой библиотекой.

    Тикер

    Библиотека Ticker может быть использована для выполнения периодически повторяющихся событий через определенное время. Два примера включено в поставку.

    В настоящее время не рекомендуется блокировать операции ввода-вывода (сеть, последовательный порт, файловые операции) в callback функциях тикера. Вместо блокирования устанавливайте флаг в callback функциях и проверяйте этот флаг в основном цикле.

    EEPROM

    Эта библиотека немного отличается от стандартной Arduino EEPROM. Необходимо вызвать функцию EEPROM . begin ( size ) каждый раз перед началом чтения или записи, размер (указывается в байтах) соответствует размеру данных, которые вы намереваетесь использовать в EEPROM. Размер данных должен быть в диапазоне от 4 до 4096 байт.

    Функция EEPROM . write не производит запись данных во флеш память немедленно, вы должны использовать функцию EEPROM . commit ( ) каждый раз, когда вы хотите сохранить данные в память. Функция EEPROM . end ( ) тоже производит запись данных, а также освобождает оперативную память от данных, запись которых произведена. Библиотека EEPROM использует один сектор во флеш памяти, начиная с адреса 0x7b000 для хранения данных. В поставку включено три примера работы с EEPROM.

    I2C (Библиотека Wire)

    Реализован только режим ведущего, частота ориентировочно до 450 кГц. Перед использованием шины I2C, нужно выбрать пины SDA и SCL путем вызова функции Wire . pins ( int sda , int scl ) , например Wire . pins ( 0 , 2 ) для модуля ESP-01. Для других модулей пины по умолчанию 4(SDA) и 5(SCL).

    SPI

    Библиотека SPI поддерживает весь Arduino SPI API, включая транзакции, в том числе фазу синхронизации (CPHA). Clock polarity (CPOL) пока не поддерживается (SPI_MODE2 и SPI_MODE3 не работают).

    ESP8266 API

    Поддержка функций, специфичных для ESP8266 (режим глубокого сна и сторожевой таймер), реализована в объекте ESP . Функция ESP . deepSleep ( microseconds , mode ) переводит модуль в режим глубокого сна. Параметр mode может принимать значения: WAKE_DEFAULT , WAKE_RFCAL , WAKE_NO_RFCAL , WAKE_RF_DISABLED . GPIO16 должен быть соединен с RESET для выхода из режима глубокого сна.

    Функции ESP . wdtEnable ( ) , ESP . wdtDisable ( ) , и ESP . wdtFeed ( ) управляют сторожевым таймером.

    ESP . reset ( ) перезагружает модуль

    ESP . getFreeHeap ( ) возвращает размер свободной памяти

    ESP . getFreeHeap ( ) возвращает размер свободной памяти

    ESP . getChipId ( ) возвращает ESP8266 chip IDE, int 32bit

    ESP . getFlashChipId ( ) возвращает flash chip ID, int 32bit

    ESP . getFlashChipSize ( ) возвращает размер флеш памяти в байтах, так, как его определяет SDK (может быть меньше реального размера).

    ESP . getFlashChipSpeed ( void ) возвращает частоту флеш памяти, в Гц.

    ESP . getCycleCount ( ) возвращает количество циклов CPU с момента старта, unsigned 32-bit. Может быть полезна для точного тайминга очень коротких операций

    Библиотека OneWire

    Библиотека OneWire была адаптирована для ESP8266 (внесены изменения в OneWire.h) Если у вас установлена библиотека OneWire в папку Arduino/libraries, то будет использоваться именно она, а не из комплекта поставки.

    mDNS библиотека ESP8266mDNS

    Библиотека позволяет реализовать в вашей программе ответ на мультикастовые DNS запросы для локальной зоны, например «esp8266.local». В настоящее время поддерживается только одна зона. Позволяет обращаться к WEB серверу ESP8266 по имени, а не только по IP адресу. Дополнительную информацию вы можете найти в прилагаемом примере и в файле readme данной библиотеки.

    Библиотека Servo

    Библиотека позволяет управлять сервомоторами. Поддерживает до 24 сервоприводов на любых доступных GPIO. По умолчанию первые 12 сервоприводов будут использовать Timer0 и будут независимы от любых других процессов. Следующие 12 сервоприводов будут использовать Timer1 и будут разделять ресурсы с другими функциями, использующими Timer1. Большинство сервоприводов будут работать с управляющим сигналом ESP8266 3,3в, но не смогут работать на напряжении 3,3в и потребуют отдельный источник питания. Не забудьте соединить общий провод GND этого источника с GND ESP8266

    Другие библиотеки, не включенные в поставку Arduino IDE

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

    • arduinoWebSockets — WebSocket сервер и клиент для esp8266 (RFC6455)
    • aREST REST API handler библиотека, позволяет управлять GPIO через http запросы вида http://192.168.1.101/digital/6/1
    • Blynk — легкий в освоении IoT фреймворк (страница на Kickstarter). Статья на нашем сайте об этой библиотеке и мобильном приложении ESP8266 – Управляем со смартфона через Blynk
    • DallasTemperature DS18B20, DS1820, DS18S20, DS1822
    • DHT11 — используйте для инициализации следующие параметры DHT dht ( DHTPIN , DHTTYPE , 15 )
    • NeoPixelBus — Arduino NeoPixel библиотека для esp8266
    • PubSubClient Библиотека MQTT by @Imroy. Статья на нашем сайте об этой библиотеке ESP8266 подключаемся к OpenWRT+Mosquitto+mqttwarn и передаем данные на ThingSpeak, EMAIL, Android, iOS, Twitter, CloudMQTT в 100 строчек кода в Arduino IDE
    • RTC — библиотека for Ds1307 & Ds3231 для esp8266
    • Souliss, Smart Home — фреймворк для Умного Дома, построенный на Arduino, Android и OpenHAB

    Установка Arduino IDE через Boards Manager

    1. Установите Arduino IDE с официального сайта Arduino.cc
    2. Запустить Arduino IDE, далее Файл — Настройки — в поле Additional Boards Manager URLs вставить ссылку на стабильную версию http : //arduino.esp8266.com/package_esp8266com_index.json или для nightly build http : //arduino.esp8266.com/staging/package_esp8266com_index.json , нажать OK (В это поле вы можете вводить несколько ссылок, разделенных запятой)
    3. Инструменты — Плата —Boards Manager
    4. В Boards Manager в поле фильтра введите esp8266 или вручную пролистайте список и кликните на ESP8266 by ESP8266 Community Forum
    5. Кликните Install и дождитесь окончания загрузки (около 130 Мегабайт). Если загрузка произошла слишком быстро, возможно, что вы уже устанавливали Arduino IDE для ESP8266 и потребуется почистить кэш Boards Manager, иначе у вас останется установленной старая версия. Нужно сначала деинсталлировать старую версию, а потом необходимо удалить файлы кэша. Для Win7 x64 удалите файлы из папки C:\Users\Пользователь\AppData\Roaming\Arduino15 и повторите все, начиная с п.2
    6. Закройте Boards Manager и в меню Инструменты выберите Плата — Generic ESP8266
    7. Установите частоту вашего модуля 80 или 160Mhz, размер флеш памяти и выберите последовательный порт, к которому подключен ваш USB-TTL адаптер

    Схема подключения ESP8266

    Оптимальное подключение ESP8266 для Arduino IDE

    Оптимальное подключение ESP8266 для Arduino IDE

    Оптимальное подключение ESP8266

    Подключение ESP8266 Примечание USB-TTL
    VCC ESP8266 подключайте к внешнему источнику питания >300мА, 3,3V
    GND все контакты GND должны быть соединены вместе: ESP8266, USB-TTL и источника питания GND
    TX (UTXD) RX
    RX (URXD) TX
    GPIO0 подтягивающий к питанию резистор 10k DTR (если на вашем USB-TTL не разведен пин DTR, то вам придется вручную переключать GPIO0 на землю для перевода ESP8266 в режим прошивки)
    RESET (RSBT, REST) подтягивающий к питанию резистор 10k, также можете добавить кнопку, соединяющую RESET и GND для ручного сброса модуля RTS (если на вашем USB-TTL не разведен пин RTS, то вам придется вручную перезагружать модуль )
    CH_PD (CH_EN) подтягивающий к питанию резистор 10k
    GPIO15 (MTDO) подтягивающий к земле резистор 10k
    (для тех модулей, где выведен пин GPIO15)
    GPIO2 подтягивающий к питанию резистор 10k
    (на схеме не показан, но рекомендуется для увеличения стабильности)
    GPIO16 для успешного выхода из режима Deep Sleep необходимо соединить пины ESP8266 GPIO16 и RESET через резистор 470 Ом (на схеме не показан)

    Примечания.

    1. Не на всех модулях выведены все пины. Перед приобретением модуля ознакомьтесь с видами модулей и их распиновкой.

    2. Если на вашем USB-TTL конвертере выведены пины CTS и DSR — для автозагрузки прошивки они вам не помогут, т.к. работают только на вход.

    3. Для стабильной работы ESP8266 требуется источник стабилизированного питания 3,3 вольт, ток более 250 миллиампер. Использование питания от USB-TTL конвертера может привести к нестабильности в работе.

    Минимальное подключение ESP8266

    Минимальное подключение ESP8266

    Минимальное подключение ESP8266 (повышенная стабильность)

    Минимальное подключение ESP8266 (повышенная стабильность)

    Более подробно, со всеми деталями, о подключении ESP8266 вы можете прочитать в нашей статье ESP8266 – подключение и обновление прошивки

    Arduino IDE для ESP8266: быстрый старт

    1. Подключить USB-TTL к USB

    2. Подключить ESP8266 к USB-TTL как обычно. Если вы подключили ESP8266 по схеме без поддержки автозагрузки прошивки (не подключены DTR и RTS), то вручную соедините GPIO0 с землей, передерните питание модуля — все готово для прошивки

    3. Запускаем Arduino IDE

    4. В меню ИнструментыПлатаGeneric ESP8266 board (в самом низу)

    5. В меню Инструменты выбираем порт, к которому подключен наш USB-TTL

    6. В меню Инструменты — выбираете частоту, размер флеш памяти вашего модуля

    7. В меню Файл — Примеры (Образцы) — ESP8266WiFi — WiFiWebServer

    8. В скетче заполняете SSID и пароль вашей WiFi сети

    9. Жмем кнопку компиляции и загрузки скетча

    10. Ждем окончании процесса прошивки. После прошивки, если модуль подключен по схеме без поддержки автопрошивки, отсоедините GPIO0 от земли и передерните питание модуля без отключения USB-TTL от питания

    11. В меню Инструменты — Монитор последовательного порта

    12. Выбираем скорость 115200

    13. Смотрим что происходит в терминале

    14. Когда модуль подключится к сети, то появятся надписи в мониторе «WiFi connected» и «Server started»

    15. Ниже будет IP адрес вашего модуля ESP8266, например 192.168.1.248

    16. Открываете любой браузер, в строке адреса вбиваете «http://192.168.1.248/gpio/1»

    17. Смотрите монитор последовательно порта и если к ESP8266 к GPIO2 у вас подключен светодиод (через резистор, разумеется), то он включится.

    Автором этого проекта адаптации Arduino IDE для ESP8266 является наш соотечественник из Санкт-Петербурга Иван Грохотков.

    Задать вопросы автору проекта Ивану Грохоткову aka igrr или сообщить об ошибке в Arduino IDE для ESP8266 можно в специальном разделе на нашем форуме.

    ESP8266 NodeMCU распиновка (pinout)

    Распиновка (pinout) NodeMCU V2 (Amica, DOIT) полностью совпадает с распиновкой ESP8266 NodeMCU V3 (LoLin). Исключение составляют зарезервированные выводы RSV (на рисунке вверху слева). У NodeMCU V3 на них заведена "земля" и напряжение 5V с USB-разъема.

    ESP8266 NodeMCU Распиновка (pinout)

    Описание и назначение выводов NodeMCU V2 ESP8266

    GND — общий, "земля"

    Выводы питания

    Vin — вывод для подключения внешнего источника питания 5V. Стабилизатор AMS1117-3.3 позволяет подавать питание на Vin в широком диапазоне от 5 до 10 V. Хотя стабилизатор допускает подачу более высокого напряжения (до 15 V), но без дополнительного охлаждения может возникать перегрев чипа.

    3.3V — контакт выходного напряжения внутрисхемного стабилизатора. Может быть использован для питания подключаемых к плате датчиков. Суммарная максимальная нагрузка всех выводов 3.3V не должна превышать 300мА.

    Выводы GPIO

    GPIO (General Purpose Interput Output) — контакты общего назначения для ввода/вывода данных. Могут быть сконфигурированы как входы или выходы и программно назначены на различные функции. Распиновка представлена на рисунке.

    Выводы управления

    RST (Reset) — вывод используется для сброса микроконтроллера ESP8266.

    EN (Chip Enable) — при подаче на вывод сигнала высокого уровня, микроконтроллер ESP8266 переходит в рабочий режим, при сигнале низкого уровня — в режим низкого энергопотребления (режим энергосбережения).

    WAKE — вывод используется для пробуждения чипа ESP8266 из режима глубокого сна (deep-sleep mode).

    АЦП (ADC)

    ADC0 / TOUT — вывод встроенного 10-разрядного аналого-цифрового преобразователя (АЦП). Преобразованные значения лежат в интервале 0-1023.
    Плата разработки NodeMCU V2 имеет внутренний делитель напряжения, входной диапазон АЦП составляет 0 — 3,3 В.

    UART

    UART — асинхронный последовательный интерфейс устанавливает связь с другими устройствами по шине UART.

    SPI

    SPI (Serial Peripheral Interface) — последовательный периферийный интерфейс. NodeMCU имеет два SPI (SPI и HSPI) в ведущем и подчиненном режимах.

    SDIO

    SDIO — интерфейс безопасных цифровых входов/выходов, предназначен для коммутации с внешней флэш-памятью стандарта SD по последовательной шине.

    Reserved

    FLASH

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

    Интерфейс I2C — последовательная асимметричная шина. I2C используется для подключения датчиков и периферийных устройств. NodeMCU ESP8266 не имеет аппаратных выводов I2C, но интерфейс можно реализовать программно. Поддерживаются как I2C Master, так и I2C Slave. Обычно в качестве контактов I2C используются следующие выводы.

    PWM (pulse-width modulation) — широтно-импульсная модуляция (ШИМ) управляет мощностью методом пульсирующего включения и выключения вывода. NodeMCU поддерживает программный ШИМ на выводах, обозначенных на рисунке изгибающейся линией.

    Onboard LEDs

    Плата имеет два встроенных светодиода. Один находится на плате NodeMCU и подключен к GPIO16, а другой на плате модуля ESP-12 и подключен к GPIO2.

    CLK (GPIO6), SDO (GPIO7), CMD (GPIO11), SD1 (GPIO8), SD2 (GPIO9) и SD1 (GPIO10) — вывода подключены к Flash чипу в модуле ESP-12E, не рекомендуется использовать.

    Выводы GPIO6-GPIO11 (SDIO) привязаны к встроенной памяти и не рекомендуются к использованию в других целях, кроме подключения внешней памяти. Все цифровые контакты ввода/вывода, за исключением GPIO16, поддерживают обработку прерываний.

    TX (GPIO1), RX (GPIO3) — контакты для загрузки прошивки и связи с компьютером, не рекомендуется использовать.

    Материалы по теме:

    Размещение этой статьи на других сайтах как полностью, так и частично разрешено только после согласования с администрацией myROBOT.RU

    Модуль Wi-Fi ESP8266 (ESP-01): подключение, прошивка и распиновка

    Модуль ESP-01 с чипом ESP8266 предназначен для связи устройства с беспроводными сетями по WiFi.

    Видеообзор

    Общие сведения

    ESP-01 — плата-модуль WiFi на базе популярного чипсета ESP8266EX . На борту платы находится микросхема Flash-памяти объёмом 2 МБ, чип ESP8266EX, кварцевый резонатор, два индикаторных светодиода и миниатюрная антенна из дорожки на верхнем слое печатной платы в виде змейки. Flash-память необходима для хранения программного обеспечения. При каждом включении питания, ПО автоматически загружается в чип ESP8266EX.

    По умолчанию модуль настроен на работу через «AT-команды». Управляющая плата посылает команды — Wi-Fi модуль выполняет соответствующую операцию.

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

    Работа с AT командами

    Подключение и настройка

    В стандартной прошивке Wi-Fi модуль общается с управляющей платой через «AT-команды» по протоколу UART.

    На всех платах Iskra и Arduino присутствует хотя бы один аппаратный UART — HardwareSerial. Если же по каким то причинам он занят другим устройством, можно воспользоваться программным UART — SoftwareSerial.

    HardwareSerial

    На управляющей плате Iskra JS и платах Arduino с микроконтроллером ATmega32U4 / ATSAMD21G18 данные по USB и общение через пины 0 и 1 осуществляется через два раздельных UART . Это даёт возможность подключить Wi-Fi модуль к аппаратному UART на пинах 0 и 1 .

    Список поддерживаемых плат:

    Для примера подключим модуль Wi-Fi к платформе Iskra Neo.

    Прошейте управляющую платформу кодом ниже.

    Код прошивки
    // serial-порт к которому подключён Wi-Fi модуль #define WIFI_SERIAL Serial1 void setup() { // открываем последовательный порт для мониторинга действий в программе // и передаём скорость 9600 бод Serial.begin(9600); while (!Serial) { // ждём, пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе } Serial.print("Serial init OK\r\n"); // открываем Serial-соединение с Wi-Fi модулем на скорости 115200 бод WIFI_SERIAL.begin(115200); } void loop() { // если приходят данные из Wi-Fi модуля - отправим их в порт компьютера if (WIFI_SERIAL.available()) { Serial.write(WIFI_SERIAL.read()); } // если приходят данные из компьютера - отправим их в Wi-Fi модуль if (Serial.available()) { WIFI_SERIAL.write(Serial.read()); } }
    SoftwareSerial

    Некоторые платы Arduino, например Uno, прошиваются через пины 0 и 1 . Это означает невозможность использовать одновременно прошивку/отладку по USB и общение с Wi-Fi модулем. Решение проблемы — программный UART . Подключите пины TX и RX ESP-модуля к другим контактам управляющей платы и используйте библиотеку SoftwareSerial.

    Для примера подключим управляющие пины Wi-Fi модуля TX и RX — на 8 и 9 контакты управляющей платы. Прошейте управляющую платформу кодом ниже.

    Код прошивки
    // библиотека для работы программного Serial #include // создаём объект для работы с программным Serial // и передаём ему пины TX и RX SoftwareSerial mySerial(8, 9); // serial-порт к которому подключён Wi-Fi модуль #define WIFI_SERIAL mySerial void setup() { // открываем последовательный порт для мониторинга действий в программе // и передаём скорость 9600 бод Serial.begin(9600); while (!Serial) { // ждём, пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе } Serial.print("Serial init OK\r\n"); // открываем Serial-соединение с Wi-Fi модулем на скорости 115200 бод WIFI_SERIAL.begin(115200); } void loop() { // если приходят данные из Wi-Fi модуля - отправим их в порт компьютера if (WIFI_SERIAL.available()) { Serial.write(WIFI_SERIAL.read()); } // если приходят данные из компьютера - отправим их в Wi-Fi модуль if (Serial.available()) { WIFI_SERIAL.write(Serial.read()); } }
    HardwareSerial Mega

    На платах форм-фактора Arduino Mega 2560 аппаратный UART, который отвечает за передачу данных через пины 1 и 0 , отвечает также за передачу по USB. Это означает невозможность использовать одновременно UART для коммуникации с Wi-Fi модулем и отладки по USB.

    Но на платах такого форм-фактора есть ещё дополнительно три аппаратных UART:

    Serial1: пины 19(RX1) и 18(TX1) ;
    Serial2: пины 17(RX2) и 16(TX2) ;
    Serial3: пины 15(RX3) и 14(TX3) .

    Список поддерживаемых плат:

    Подключите Wi-Fi модуль к объекту Serial1 на пины 18 и 19 на примере платы Mega 2560 Прошейте управляющую платформу кодом ниже.

    Код прошивки
    // serial-порт к которому подключён Wi-Fi модуль #define WIFI_SERIAL Serial1 void setup() { // открываем последовательный порт для мониторинга действий в программе // и передаём скорость 9600 бод Serial.begin(9600); while (!Serial) { // ждём, пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе } Serial.print("Serial init OK\r\n"); // открываем Serial-соединение с Wi-Fi модулем на скорости 115200 бод WIFI_SERIAL.begin(115200); } void loop() { // если приходят данные из Wi-Fi модуля - отправим их в порт компьютера if (WIFI_SERIAL.available()) { Serial.write(WIFI_SERIAL.read()); } // если приходят данные из компьютера - отправим их в Wi-Fi модуль if (Serial.available()) { WIFI_SERIAL.write(Serial.read()); } }

    Примеры работы

    Рассмотрим несколько примеров по работе с «AT-командами»

    Тестовая команда «AT»

    Откройте монитор порта. Настройте скорость соединения — 9600 бод. Конец строки — NL & CR . Введите команду AT и нажмите «Отправить». Это — базовая команда для проверки работы Wi-Fi модуля. В ответ получим «OK»: Если ответа нет или появляются непонятные символы — проверьте правильность подключения и настройки скорости обмена данными.

    Настройка режима работы

    Wi-Fi модуль умеет работать в трёх режимах:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *