Skip to content

sshspb/esp8266-platformio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

esp8266-platformio

examples for esp8266 ESP-01 board on PlatformIO

Чтобы составлять заметки, воспользуемся следующим инструментарием:

  • Markdown is a text-to-HTML conversion tool for web writers.

  • Showdown is a Javascript Markdown to HTML converter.

ESP8266 pins list function, register, strapping

ESP8266 pins list function, register, strapping

Pins functions:

esp8266 pin functions

Memory Map

см. https://github.com/esp8266/esp8266-wiki/wiki/Memory-Map

ESP8266 ESP-01

Модуль ESP-01 содержит микроконтроллер ESP8266 (Processor Tensilica L106 32 bit, with on-chip SRAM, on top of its Wi-Fi functionalities) и чип flash-памяти 1MB (EEPROM — Electrically Erasable Programmable Read-Only Memory — электрически стираемое перепрограммируемое ПЗУ).

ESP01 schematic

В нижней части модуля ESP-01 находятся восемь контактов.

На ESP-01 есть два светодиода:

  • красный - указывает на наличие питания
  • синий - указывает на наличие потока данных и может также управляться программно пользователем (pin GPIO1 (TX))

ESP-01 pinout facade

ESP-01 pinout schematic

Напряжение питания модуля 3,3 вольта (предельные значения 2,5 - 3,6 вольт). Прежде чем подключать модуль к компьютеру через USB-TTL конвертер необходимо установить перемычку на плате конвертера в положение 3,3В. Подача 5В на контакты выведет модуль из строя.

Максимально допустимый ток на контактах ввода/вывода 15 мА. Величина тока, необходимого во время работы Wi-Fi, до 500 мА.

Default Connection Parameters

- SSID: ESP_XXXXXX (XXXXXX are the last 6 characters of module’s MAC address) 
- Encryption: WPA/WPA2 
- Serial Parameters: 74880, 8, 1, None 
- Mode: SoftAP (Access Point)
- IP Address: 192.168.4.1

Basic AT Instructions

AT                Test AT startup
AT+RST            Restart module
AT+GMR            View version info 
AT+CWMODE=<mode>  Set Wi-Fi <mode> 1:Station 2:AP 3:Both
AT+CWLAP          List AP
AT+CWJAP=<ssid>,<pwd>  Join AP
AT+CWQAP          Disconnect from AP
AT+CWLIF          Check IP address of connected device
AT+CIPSR          Get local IP address (Station mode)

esp-01 первое включение 115200 8-N-1

 ets Jan  8 2013,rst cause:2, boot mode:(3,7)

load 0x40100000, len 2408, room 16 
tail 8
chksum 0xe5
load 0x3ffe8000, len 776, room 0 
tail 8
chksum 0x84
load 0x3ffe8310, len 632, room 0 
tail 8
chksum 0xd8
csum 0xd8

2nd boot version : 1.6
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000

ready
-------------------------

AT
OK

AT+GMR
AT version:1.3.0.0(Jul 14 2016 18:54:01)
SDK version:2.0.0(5a875ba)
Farylink Technology Co., Ltd. v1.0.0.2
May 11 2017 22:23:58
OK

AT+CWMODE=1
OK

AT+CWLAP
+CWLAP:(0,"ScrewYou!",-85,"74:da:da:08:ab:f9",1,132,0)
+CWLAP:(2,"interzet14",-81,"90:f6:52:c8:d2:72",2,107,0)
+CWLAP:(3,"nastya88",-80,"50:ff:20:1a:58:a0",3,118,0)
+CWLAP:(3,"NorthSide",-78,"64:66:b3:54:09:fa",4,122,0)
+CWLAP:(4,"DomRu13-4-15",-77,"f8:f0:82:36:43:e8",5,32767,0)
+CWLAP:(4,"izet 4",-88,"f8:f0:82:d2:c2:08",5,115,0)
+CWLAP:(3,"SkyNet20",-44,"54:04:a6:8d:18:a0",6,78,0)
+CWLAP:(2,"SkyNET",-91,"20:cf:30:88:7d:b0",6,120,0)
+CWLAP:(3,"Avrora",-88,"c8:be:19:8d:17:80",7,120,0)
+CWLAP:(3,"Boom_boom",-88,"ec:08:6b:e1:d1:40",8,108,0)
+CWLAP:(3,"RT-WiFi_3BDC",-85,"70:2e:22:62:3b:dc",8,122,0)
+CWLAP:(3,"ROSTELECOM_9641",-86,"c8:91:f9:c9:96:42",1,122,0)
+CWLAP:(4,"TP-LINK_CA2AE2",-92,"c0:4a:00:ca:2a:e2",1,122,0)
+CWLAP:(1,"besarab",-56,"00:16:cb:05:80:7c",11,117,0)
+CWLAP:(4,"Xiaomi_AA6B",-79,"34:ce:00:4a:aa:6c",11,137,0)
+CWLAP:(3,"ASUS300",-91,"10:c3:7b:cc:f4:44",11,122,0)
+CWLAP:(3,"LENOVO-PC 6806",-81,"2a:ee:65:5e:78:f3",11,32767,0)

OK

Схема программирования

ESP-01 Flashing Circuit Schematic

Собираем схему программирования ESP-01, ещё раз проверяем всё ли верно, подаём питание и подключаем через USB-TTL конвертер к компьютеру.

Кнопка Reset служит для перезапуска программы модуля. Для перезапуска необходимо нажать и отпустить кнопку Reset, при этом контакт RST кратковременно замыкается на GND.

Если в момент кратковременного нажатия на кнопку Reset, а точнее, в момент отпускания кнопки Reset, или во время подачи питания на модуль, кнопка Flash нажата, то есть контакт GPIO0 заземлён на GND, модуль входит в режим прошивки (программирования).

ESP8266 Boot Options

For normal program execution GPIO0 and GPIO2 need to be pulled up to Vcc (3.3V), each with a resistor in the range 2K to 10K resistor. A 2K resistor gives better noise immunity. OLIMEX uses 2K resistors SparkFun uses 10K resistors.

The settings of these inputs is only checked during the power up (or reset) of the chip. After that the pins are available for general use, but their use is restricted by these external pull up/down resistors.

Шина I2C

Для работы с LCD 16x2 необходимо подключить шину I2C дисплея к модулю ESP-01 по следующей схеме:

I2C bus electronics to the pin-limited ESP-01

Пример кода находится в файле nodeMCU/lcdprint.lua .

Терминал

Для связи с оборудованием, подключённым к последовательныму COM-порту, необходима терминальная программа.

  • PuTTY — свободно распространяемый клиент на Windows и Unix платформы для различных протоколов удалённого доступа, включая SSH, Telnet, rlogin. Имеется возможность работы через последовательный порт. Можно указывать любые скорости, в том числе 74880 Бод.

  • CoolTerm — программа-терминал под OS Windows для обмена данными с устройствами, подключенными к последовательным портам. Только для OS Windows. Удобней чем PuTTY, однако нет возможности работать на скорости 74880 Бод.

Flash Download Tool

Для прошивки, загрузки программы во flash-память модуля, нам понадобится Flash Download Tool, а также Software Development Kit

  • Flash Download Tool is the Espressif official flashing tool for ESP8266

  • The non-OS SDK ESP8266 NONOS SDK V2.2.1 provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions

Запускаем Flash Download Tool

  • В окне выбора инструмента нажимаем на кнопку ESP8266 Download Tool.

  • В верхней части основного окна выбираем вкладку SPIDownload.

  • Выбираем правильные номер COM порта и скорость передачи.

  • На переключателе SPI SPEED выбираем 40MHz и на переключатель SPI MODE - QIO.

  • На схеме нажимаем и удерживаем кнопку Flash; нажимаем, на секунду, и отпускаем кнопку Reset; отпускаем кнопку Flash.

  • Нажимаем кнопку Start в левом нижнем углу окна инструмента прошивки.

Download_Tool

В результате инструмент загрузки определил размер EEPROM в модуле как 8Mbit, то есть 1 мегабайт, а также частоту кварцевого генератора 26 МГц, и считал MAC-адреса в режимах AP (Access Point, точка доступа) и STA (Station, станция).

flash vendor: 85h : N/A
flash devID: 6014h N/A; 8Mbit 
crystal: 26 Mhz
AP:  86-F3-EB-7F-DB-1E  
STA:  84-F3-EB-7F-DB-1E

Запись на модуль ESP-01 1M

Устанавливаем:

  • CrystalFreq как 26M;
  • 40MHz в переключателе SPI SPEED;
  • QIO в переключателе SPI MODE;
  • 8Mbit в переключателе FLASH SIZE.

lists the download addresses for non-OTA firmware

0x00000 eagle.flash.bin 
0x01000 eagle.irom0text.bin
0xFB000 blank.bin
0xFC000 esp_init_data_default.bin
0xFE000 blank.bin

lists the download addresses for the OTA firmware

0x00000 boot.bin 
0x01000 user1.bin
0x81000 user2.bin
0xFB000 blank.bin
0xFC000 esp_init_data_default.bin
0xFE000 blank.bin

Прошивка

  • Перезагрузим модуль в режим прошивки (программирования):

    • нажимаем и удерживаем кнопку Flash
    • нажимаем, на секунду, и отпускаем кнопку Reset
    • отпускаем (или дождаться окончания прошивки) кнопку Flash
  • Нажимаем кнопку Start в левом нижнем углу окна инструмента прошивки.

Ждём окончания процесса перепрограммирования.

  • Нажимаем и отпускаем кнопку Reset - модуль перезапустится в нормальный режим.

Проверка успешности прошивки

Запускаем на компьютере терминальную программу CoolTerm, где в окне настроек устанавливаем нужный COM порт, и скорость 115200 бод.

Нажимаем и отпускаем кнопку Reset - модуль перезапустится в нормальный режим.

Задаём в терминальной программе CoolTerm AT-команды модулю ESP-01

AT
OK

AT+GMR
AT version:1.6.2.0(Apr 13 2018 11:10:59)
SDK version:2.2.1(6ab97e9)
compile time:Jun  7 2018 19:34:26
Bin version(Wroom 02):1.6.2
OK

AT+CWLAP
+CWLAP:(4,"WiFi-DOM.ru-6957",-47,"8c:68:c8:aa:87:2c",1,113,0,5,3,7,0)
+CWLAP:(4,"Xiaomi_AA6B",-88,"34:ce:00:4a:aa:6c",1,143,0,5,3,7,1)
+CWLAP:(4,"Wive-NG-MT15",-92,"f8:f0:82:1d:16:ad",1,135,0,5,3,7,0)
+CWLAP:(4,"Beeline_2G_FF9431",-89,"d4:60:e3:d9:22:f8",1,112,0,4,3,7,0)
+CWLAP:(3,"ASUS",-92,"04:92:26:3d:22:b8",3,110,0,4,4,7,1)
+CWLAP:(1,"besarab",-70,"00:16:cb:05:80:7c",11,125,0,0,0,3,0)
+CWLAP:(3,"SkyNet20",-56,"54:04:a6:8d:18:a0",6,86,0,4,4,7,1)
+CWLAP:(3,"NorthSide",-74,"64:66:b3:54:09:fa",7,130,0,4,4,7,1)
+CWLAP:(0,"ScrewYou!",-85,"74:da:da:08:ab:f9",11,145,0,0,0,7,0)
+CWLAP:(3,"RT-WiFi_3BDC",-86,"70:2e:22:62:3b:dc",10,130,0,4,4,7,1)
+CWLAP:(3,"Inna64",-87,"90:f6:52:b1:55:84",11,108,0,5,3,7,1)
+CWLAP:(3,"ZimaNET",-86,"c0:25:e9:e3:61:8a",11,117,0,4,4,7,1)
OK

Esptool

Для чтения и записи flash-памяти устройств с микроконтроллерами ESP8266 можно использовать утилиту Esptool, написанную на языке Python, что предполагает наличие последнего на компьютере.

esptool.py — A Python-based, open source, platform independent, utility to communicate with the ROM bootloader in Espressif ESP8266 & ESP32 chips.

For example

  • Determine the Flash Size:
esptool.py --port COM4 flash_id
  • Read 1MB of attached flash:
esptool.py --port COM4 read_flash 0x0 0x100000 flash_contents.bin
  • Write binary data to flash:
esptool.py --port COM4 write_flash 0x1000 my_app-0x01000.bin

Welcome to the esptool wiki !

Перед каждым вводом команды esptool нужно переводить модуль ESP8266 в режим прошивки, нажимая на кнопку Reset при нажатой кнопке Flash, которая замыкает вывод GPIO0 на GND.

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

dweet.io

Пригодится, для отладки, dweet.io - сервис хранения показаний (dweets) датчиков, без оплаты до 5 dweets хранятся 24 часа.

write dweet

  • request in web brouser
https://dweet.io/dweet/for/shs-thing-name?temperature=25.12
  • or send
POST /dweet/for/shs-thing-name HTTP/1.1
Host: dweet.io
Connection: close
Content-Type: application/json
Content-Length: 25

{"temperature": "25.12" }

read dweet(s)

  • read the latest dweet

https://dweet.io/get/latest/dweet/for/shs-thing-name

  • read all the dweets

https://dweet.io/get/dweets/for/shs-thing-name

DS18B20 – датчик температуры с интерфейсом 1-Wire

Техническая спецификация здесь: https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf

По этой ссылке описание на русском языке.

Датчик DS18B20

  • Обменивается данными с микроконтроллером по однопроводной линии связи, используя протокол интерфейса 1-Wire.
  • Диапазон измерения температуры составляет от -55 до +125 °C.
  • Для диапазона от -10 до +85 °C погрешность не превышает 0,5 °C.
  • Напряжение питания в пределах 3,0 В … 5,5 В.
  • Разрешение преобразования 9 … 12 бит, по умолчанию 12 бит.
  • Время измерения не превышает 750 мс при максимально возможном разрешении 12 бит.

Сразу после подачи питания на датчик устанавливается:

  • разрешение преобразования 12 бит
  • в двухбайтном регистре температуры значение 0550h что соответствует 85 градусам

У каждой микросхемы DS18B20 есть уникальный серийный код длиной 64 разряда (8 байт). Temperature register format

Измеренное значение температуры хранится в дополнительном коде в 16-разрядном температурном регистре, Temperature register format

в младших двух байтах девятибайтовой оперативной памяти (SRAM) scratchpad . 64-Bit Lasered ROM Code

Инициализация – импульсы сброса и присутствия

Любые коммуникационные операции DS18B20 начинаются с последовательности инициализации, которая состоит из импульса сброса от ведущего устройства ведомому, и ответного импульса присутствия из DS18B20. Этот процесс показан на рисунке 13. Термодатчик посылает импульс присутствия в ответ на импульс сброса, чтобы сообщить ведущему устройству, что он подключен к шине и готов к использованию.

reset 1-Wire

Во время последовательности инициализации ведущее устройство передает импульс сброса (Tx), формируя на шине сигнал низкого уровня в течение времени не менее 480 мкс. Далее, ведущее устройство освобождает шину и переходит в режим приема (Rx). Когда шина освобождается, она подтягивается к высокому логическому уровню резистором 5 кОм. Датчик выделяет положительный фронт, ждет 15-60 мкс и передает импульс присутствия, удерживая низкий уровень линии на время 60-240 мкс.

Временные слоты записи и чтения.

Протокол определяет два типа тайм-слотов записи данных в DS18B20: для записи значения 1 и записи значения 0. Длительность слота записи - не менее 60 мкс с паузой на восстановление между слотами 1,0 мкс, как минимум. Инициируется любой слот записи отрицательным фронтом сигнала шины (рис. 14).

Для формирования слота записи 1, после перевода шины в низкое состояние, ведущее устройство должно освободить шину на время 15 мкс. Подтягивающий резистор 5 кОм создаст на шине напряжение высокого уровня.

Для формирования слота записи 0, после перевода шины в низкое состояние, ведущее устройство должно продолжать удерживать шину в низком состоянии в продолжение всего времени слота (как минимум 60 мкс).

DS18B20 проверяет состояние сигнала в отрезке времени между 15 и 60 мкс, отсчитывая его от начала слота записи. Состояние шины на этом отрезке соответствует значению бита для записи в датчик.

read write 1-Wire

Длительность слота чтения, как и слота записи, должна быть не менее 60 мкс с паузой на восстановление между слотами 1 мкс, как минимум. Инициируется любой слот чтения отрицательным фронтом сигнала шины (рисунок 14).

После того как ведущее устройство инициализировало слот чтения, DS18B20 передает бит данных. Для передачи 1 датчик оставляет шину свободной (в высоком состоянии), а для передачи 0 – формирует на шине низкий уровень.

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

VirtualBox & Ubuntu

Краткое руководство по компиляции и загрузки программы esp8266-sdk getting started guide

Устанавливаем на виртуальной машине VirtualBox образ операционной системы Ubuntu с необходимым инструментарием ESP8266_lubuntu_20141021.ova где пользователь login espressif password espressif

Скачиваем комплект разработчика ESP8266_RTOS_SDK

  cd ~/esp
  git clone https://github.com/espressif/ESP8266_RTOS_SDK

The toolchain programs access ESP8266_RTOS_SDK using IDF_PATH environment variable.

  export IDF_PATH=~/esp/ESP8266_RTOS_SDK

Берём пример

  cd ~/esp
  cp -r $IDF_PATH/examples/get-started/project_template .

Транслировать и собрать программу

  cd ~/esp/project_template
  make menuconfig    
  make

Загрузить программу в esp8266

  make flash

Подключить к COM-порту монитор

  make monitor

To execute make flash and make monitor in one go, type make flash monitor.

VS Code & PlatformIO for Espressif Generic ESP8266 ESP-01 1M board

Visual Studio Code Code editing. Free. Open source. Runs everywhere.

PlatformIO is an open source cross-platform build system

  • 600+ embedded boards (Arduino UNO/Nano, ESP8266 ESP-01 1M ..),
  • 30+ development platforms (Atmel AVR, Espressif 8266 ..),
  • 15+ frameworks (Arduino, ESP8266 RTOS SDK, ESP8266 Non-OS SDK ..)

About

examples for esp8266 ESP-01 board on PlatformIO

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published