Увеличение памяти esp 01
Вы здесь: Home Железо Без проводов (WI-FI) Прошивка и запуск модуля ESP8266
Для начала необходимо определить сколько памяти установлено на модуле ESP8266. Встречаются варианты модулей, с установленной памятью 512 кбайт(4 мегабита) , а так же 4мбайт(32 мегабита). Редко, но попадаются с флеш памятью 1 мбайт(8 мегабит). Почти все разновидности ESP-12 и новые ESP-07 имеют на борту 4 мегабайта. Объем памяти можно определить по маркировке flash чипа, посмотреть в программе Flash Download Tool или на вкладке /debug. Маркировка имеет вид 25QXX, где XX - объем в мегабитах, например 25Q32 имеет на борту 32 мегабита=4 мегабайта.
Определение размера памяти по вкладке ip_adr/debug:
Вкладка debug содержит разную полезную информацию, в том числе и реальный размер чипа флеш памяти в строке Flash real size, а так же размер памяти, установленный в прошивающей программе Flash set size, который важен для правильной поддержки OTA.
Если у вас нет купленых ключей, то прошивку можно скачать на страничке проекта, где доступны2 облегченных варианта прошивки:
-Вариант с поддержкой OTA с объемом памяти чипа 1мбайт. Данная прошивка прошивается и в модули и с бОльшим объемом flash. Необходимо обязательно выбирать в прошивающей программе размер памяти 1мбайт !! Модули с 512кб не поддерживаются !!
-Вариант без поддержки OTA. Подходит для любого объема flash памяти. Необходимо обязательно выбирать в прошивающей программе размер памяти 512кбайт !!
Возможность дальнейшего обновления прошивки по OTA доступна только у кого есть активированные ключи !
Прошивку можно собрать так же в конструкторе прошивки , где необходимо выбрать настройки для поддержки OTA и объема flash 1 мегабайт.
При использовании OTA и с объемом 512кб невозможно одновременно использовать множество опций конструктора, а так же использовать новые SDK, т.к. прошивка в модуль не помещается !!
Если у вас имеются проблемы со стартом прошивки, то обязательно смотрим ниже абзац про решение проблем с прошивкой !
Подключение модуля для прошивки
Для прошивки ESP8266 необходим USB-UART переходник или Arduino. ESP8266 необходимо обеспечить напряжение питания 3.3в и током 200..300мА. Питание 3.3в от ARDUINO или от USB-UART подключать не рекомендуется - модуль может работать не стабильно из-за нехватки тока. Рекомендуется использовать стабилизатор вида 1117.
Подключение ESP8266 к USB-UART: Необходимо подключить общие выводы GND(минус). RX у USB-UART на TX ESP, TX у USB-UART на RX ESP. Подключаем так же источник питания 3.3в.
Подключение ESP8266 к Arduino: Необходимо подключить общие выводы GND(минус).RX у Arduino на RX ESP, TX у Arduino на TX ESP. Подключаем так же источник питания 3.3в. RESET у Arduina необходимо подключить к GND.
На модуле ESP8266 вывод CH_EN необходимо подключить к +3.3в для того, чтобы включить чип.
GPIO 0 на время программирования, перед включением питания необходимо подключить к GND(земля). После успешной прошивки GPIO 0 можно отключить от GND. Если на модуле выведен GPIO 15, то его необходимо подключить на GND через резистор 10кОм на постоянной основе !!
Прошивка модуля
Для начала необходимо установить драйвера для вашего USB-UART переходника или Arduinы.
Прошивка через Nodemcu Flasher: Устанавливаем на вкладке Advanced Параметр Flash size в соотвествии выбранным размером flash памяти (в байтах). Остальные параметры не трогаем. Указываем на вкладке Config путь на файл прошивки с адресом 0x0000. На вкладке Operation выбираем COM порт и жмем кнопку FLASH.
Прошивка через Flash download tool: Описание в разработке(Действия аналогичны).
Прошивка через esptool. Пример команды esptool.py --port /dev/ttyUSB0 write_flash -fs 8m 0x00000 esp8266.bin . где -fs 8m параметр нужен только для указания размера при одномегабайтовой прошивке.
Скорость COM порта рекомендуется ставить не выше 115200.
Запуск модуля
После успешной прошивки необходимо запустить режим safe mode, замкнув между собой RX и TX и перезапустив модуль или нажать 3 раза подрят (с интервалом нажатия около секунды) кнопку RESET на ESP8266. В эфире появится точка с именем homessmart , к которой можно подключится используя смартфон или ноутбук.
После успешного коннекта заходим по адресу http://192.168.4.1 . Настраиваем подключение на свой роутер на вкладке main веб интерфейса. Необходимо вбить в поля WiFi options данные своей точки доступа. Для подключения к роутеру выбираем режим "Station mode". После нажатия кнопки set ниже появится IP адрес, на который можно заходить внутри своей беспроводной сети.
Далее обновляем страницу и видим внизу IP адрес, на который уже можно будет заходить внутри Вашей локальной сети.
Тут же вы можете установить свой логин и пароль на странички настроек веб интерфейса. По умолчанию логин esp8266, пароль 0000. Длинна логина и пароля не более 8 символов. Пароль затребуется на все вкладки настроек. А при установленной опции "Full Security" и на все GET запросы управления. В режиме safe mode пароль не запрашивается !
На данной вкладке можно задать имя модулю, которое будет отображаться на главной и в системе flymon, а так же в топике на MQTT сервере.
Решение проблем с прошивкой
Иногда, после сторонних прошивок или мусора модуль может не запустится и необходимо выполнить дополнительные действия. Необходимо затереть flash память пустым бланком по адресу 0x00000. Если вы используйте прошивку с размером 1 мегабайт, то качаем этот бланк. Далее уже прошиваем саму прошивку снова.
У некоторых пользователей даже после зачистки бланком модуль не стартует или стартует только при установленном режиме 512 кб или 4мб, возможно это связано с низким качеством flash памяти или частичной её несовместимостью с чипом ESP8266. Обратите внимание, что если даже у вас получилось запустить прошивку в режиме 4мб, то обновление по OTA в таком режиме не пройдет - модуль не запустится после обновления. По некоторым сведениям от пользователей помогает замена чипа памяти.
ВАЖНО !! Если модуль не может получить IP адрес. Висит постоянно статус connect , то рекомендуется вписать IP адрес вручную ниже. Для этого необходимо выбрать режим Static IP и вписать IP модуля и IP шлюза(IP роутера). После этого можно заходить на модуль уже внутри сети по IP адресу, который указали в настройках..
Сохранение настроек в файл
Настройки модуля можно сохранить в файл, исключая настройки WI-FI, состояния GPIO, список датчиков DS18B20. Файл необходимо скачать по адресу ИП_АДРЕС/configsave.bin . Записывается обратно в модуль через программатор по адресу 0x3C000 для 512кб прошивки, 0x7C000 - для 1мб. Настройки можно скачать и через esptool.py используя пример ниже подставив нужный адрес.
Всем привет! Информация не новая, но, думаю, есть и те, кому она будет полезной. Хочу рассказать о способе увеличения памяти в модулях esp8266. Подробности под катом.
Wi-Fi модули esp8266 благодаря своей дешевизне и маленьким габаритам получили широчайшее распространение, на них собрано множество различных конструкций для домашней автоматизации. А главное, они позволяют загружать прошивки собственных проектов. Меня это очень заинтересовало, для экспериментов купил самый дешевый модуль ESP8266-01 с одним мегабайтом памяти на борту.
Сейчас понимаю, что это не самый лучший выбор, но для ознакомительных целей подойдет.
Модуль имеет следующую распиновку.
Для его подключения собрал макетную плату, питание осуществляется от USB-UART переходника через стабилизатор AS1117 на 3.3в. В спецификации указано, что выводы tx/rx толерантны к 3.3 вольтам, но их зачастую подключают напрямую без согласования уровней. Я же решил использовать level converter, так безопасней и правильней.
CH_PD подключаем через резистор 10К к 3.3В.
RES — подключаем через кнопку на землю.
Также для перехода в режим перепрошивки вывел перемычку с GPIO0 на землю.
Для загрузки прошивок в модуль можно использовать любую из программ XTCOM_UTIL, NodeMCU Flasher или FLASH DOWNLOAD TOOL. Пробовал использовать каждую из программ, но больше всего понравилась FLASH DOWNLOAD TOOL (главное не забыть перевести еспшку в режим обновления). Для этого:
1. Отключаем питание
2. Подключаем gpio0 на землю
3. Подаем питание
4. В программе выбираем нужный com порт, скорость (в моем случае 115200) и путь к прошивке
5. Жмем кнопку загрузки прошивки, а вывод RES кратковременно подключаем к земле, например, через кнопку
6. После загрузки файла отключаем питание, goio0 отключаем от земли. Подаем питание
На ESP8266-01 установлена память 25Q80ASSIG фирмы Winbond Electronics. Это флеш-память с интерфейсом SPI, 8МБит, 1МБ. Datasheet.
Приступаем к апгрейду.
С помощью фена сдуваем старую микросхему.
Теперь на её место ставим купленную 25Q32FVSIG. Это флеш-память с интерфейсом SPI, 32Мбит, 4МБ. Datasheet. Несмотря на то, что её корпус чуть больше, она нормально встала на площадки.
Запускаем программу flash download tool, тут видно, что память определилась правильно.
Дальше попробовал загрузить прошивку от homes-smart, собранную в конструкторе. Все запустилось без проблем.
Заключение.
Данная микросхема памяти позволяет быстро и очень дешево сделать апгрейд, что существенно расширит ваши возможности в разработке проектов.
В бонусе памятник самолету АН-26 — символу северной авиации.
Разные варианты реализации модуля ESP8266 обозревались тут не раз, и заслуженно. Этот мелкий, с монету, чип с WiF на борту может работать и точкой доступа, и клиентом и программируется как угодно — и продаётся за считанные доллары.
Не успели мы привыкнуть к мысли, что всякие интересные поделки можно сделать на грошовой Arduino, Attiny или STM — как и устройства с WiFi и мощными процессорами на 80 мегагерц стали им конкурентами по цене. (Чёрт, у меня процессор в первом собственном компьютере был немногим быстрее, какой же я старый).
Одна беда — все устройства с ESP8266, что прошли через мои руки, были уж очень неудобными, их подключение было мукой. Но китайская промышленность нас услышала и сделала уже почти хорошо :)
За что мы «любим» разные варианты ESP8266:
- Они питаются от 3.3 вольт, а не от более привычных пяти
- Им в пике надо ток до 320mA, что не под силу обычным преобразователям USB-TTL
- Шаг между выходами платы обычно составляет не стандартные 2,54 мм, а 2 мм ровно — что делает пайку затейливым приключением
- Есть только одна версия платы с шагом между контактами 2,54 мм («ESP8266-01»), но у неё минимум полезных контактов
- В режим программирования чип переводится замыканием контактов, что требовало сноровки. Либо припаивания кнопки
- С Reset та же беда — либо отключать питание, либо кнопку паять
Плата представляет собой «бутерброд» из двух. На верхнем слое (слева на обоих фото) сам чип ESP8266, под ним — разъём питания MicroUSB и регулятор напряжения AMS1117-3.3, задача которого — превратить 5 вольт в 3.3. По datasheet регулятору по зубам токи до 0.8А, так что для питания чипа этого хватает с лихвой. Там же — кнопка Reset для перезагрузки.
Чтобы было чем занять пустующие углы платы, китаец впихнул туда RGB LED и фоторезистор, о них — позже.
На нижнем слое «бутерброда» (на фото справа) расположился полноценный MicroUSB, чип CH340G и кнопки «Flash» (режим прошивки) и «Reset».
«Бутербродность» даёт бóльшую свободу действий. Вы можете подключить «бутерброд» к компьютеру в нижний (полноценный) разъём USB, перепрограммировать его — и затем встроить в вашу поделку только верхнюю часть, сэкономив на размерах корпуса.
Более того, низ «бутерброда» можно использовать для программирования самодельных модулей. Я сам паял завалявшиеся модули ESP8266-12 и ESP8266-07 на не очень удачные платы-адаптеры за $0,22 и приделывал «на соплях» регуляторы AMS1117 — оба работали безо всяких проблем и оказались стопроцентно совместимы по разъёмам и кнопкам:
Ладно, хватит нахваливать модуль, давайте сделаем что-нибудь полезное. На странице продавца рекламируется какой-то SDK и даже какое-то китайское «облако» для устройств на базе ESP8266 и Android, правда информации о них на английском (почти) нет. Раз так, махнём на них, запустим Arduino IDE 1.6 и полезем в настройки.
В окно «Additional URLs» вставим строку Затем откроем «Boards manager» и введём в строку поиска «ESP8266». Нажмём Install и приготовимся ждать, пока скачается аж 130 мегабайт пакетов:
Подключим «бутерброд» к компьютеру в нижний (полноценный) разъём MicroUSB. Windows должна определить конвертер USB-TTL «CH340G» и присвоить ему виртуальный порт. Именно этот порт мы и укажем в настройках Arduino IDE. Остальные настройки такие:
Обратите внимание — в процессе прошивки кнопку Flash жать не нужно — плата обо всём позаботится сама.
После того, как новая программа залита в ESP8266, его можно отключить от компьютера и запитать хоть от павербанка. Нижнюю часть «бутерброда» можно отсоединить, она уже не нужна.
Либо с помощь Arduino serial monitor (скорость порта — 115200), либо в вебинтерфейсе роутера подсматриваем IP-адрес, который заполучил в домашней WiFi-сети наш ESP8266. Открываем этот адрес в браузере компьютера или телефона:
Наше устройство подключилось к домашней сети, подняло веб-сервер и нам отвечает.
Убедились в работоспособности устройства? Едем дальше. Для того, чтобы оно сгодилось на что-то полезное в быту, интересно «подружить» его, например, с реле. Правда, классические реле на 5 вольт по определению отпадают — слишком велик риск, что напряжения 3.3 вольта не хватит, чтобы электромагнит смог сдёрнуть якорь. Поэтому берём твердотельное реле Omron за $1.90. По даташиту имеющегося у нас напряжения ему хватит для чёткого срабатывания:
Подключаем «плюс» и «минус» к контактам VCC и GND верхнего слоя «бутерброда», а третий, сигнальный, провод — к, например, контакту GPIO 2. В качестве программы можно взять скетч WiFiWebServer, который прилагается к библиотеке Ардуино, или же воспользоваться программой коллеги Sav13 с samopal.pro/wifi-power-esp8266/
Я для теста взял простую галогеновую лампочку на 20Вт и вдоволь ей «нащёлкался»:
Срабатывание происходит за долю секунды после подачи команды. Чтобы проверить надёжность, я вставил в код простенький счётчик и набросал простой bat-файл, который с паузой в секунду включал и выключал лампочку. До кучи открыл пару дополнительных окон, из которых начал бомбардировать IP-адрес модуля бесконечной командой ping. Через несколько часов счётчик включений-выключений превысил 19 тыс., но всё работало — что вселяет некоторую уверенность в надёжности устройства.
Если вы дочитали досюда, но в голове крутится мысль «что-то это всё сложно», у меня для вас заготовлено приятное
Помните, я упоминал, что китайский производитель «на сдачу» поставил на плату RGB-светодиод и фоторезистор? С ними можно поэкспериментировать, даже если у вас нет никаких иных датчиков и прочей периферии.
В этом варианте сделать над собой усилие и запустить Arduino IDE вам потребуется ровно один раз.
В настройках «зебры» укажите, что трёхцветный светодиод на плате подключён к пинам 12 (зелёный), 13 (синий) и 15 (красный):
В настройках «gauge» укажите, что фоторезистор на плате подключён к аналоговому входу «adc0»:
Активируйте то, что вы наваяли, нажав на кнопку в правом верхнем углу. Вы увидите, что жёлтый индикатор меняет показания в зависимости от освещённости, а RGB LED на «бутерброде» меняет цвет, когда вы тыкаете по «зебре»:
Практика показала, что эта штуковина очень нравится детям. Одно дело — играть на планшете в чужие игры, другое — это сделать и раскрасить «пульт» самому и управлять чем-то осязаемым. Достаточно взять на себя подготовительную часть в Arduino, а затем показать, как этим пользоваться, выдать несколько светодиодов, кнопок или деталек типа аналогового датчика температуры LM35 — у вас немедленно отберут «игрушку» и чадо будет занято надолго. За уши не оторвёте, проверено.
Для быстрого создания прототипов Blynk также оказался очень удобен — проще набросать кнопки и переключатели там, чем городить собственный вебинтерфейс. Сэкономленное время можно с большей пользой потратить на сборку очередной поделки.
По цене немногим выше 200 рублей вы получаете очень мощное и вполне самостоятельное устройство, на котором можно программировать всякие полезности для дома — и управлять ими по WiFi.
«Бутерброд» оказался на диво удачным. Он менее чем на доллар дороже «голого» ESP8266-12, но экономит вам кучу времени и хлопот. Ворох проводов и макетка — не нужны.
Ход с предустановкой на плату LED и фотодатчика — очень удачный. Даже если у вас кроме модуля и кабеля MicroUSB ничего нет, вы всё равно можете хоть что-то для начала испробовать и получить удовольствие от покупки. Если они не нужны на готовом изделии — просто отпаяйте или срежьте.
По такой цене «бутерброд» — явный конкурент Arduino Nano, и делает очень ненужными модули Bluetooth (типа HC-05) и тем более — радиомодули NRF24L01+.
После своего появления платы на базе Wifi чипа ESP8266, стали по настоящему народными. Огромные возможности и минимальная цена, которая даже на старте продаж и в розницу не превышала 5$ сделали свое дело. Вокруг чипа организовались сообщества в которых люди делятся информацией и создают программное обеспечение.
В чем же причина такой популярности, помимо низкой цены?
Все дело в том, что платы на ESP8266 это не просто модули для связи по WiFi. Чип по сути, является микроконтроллером со своими интерфейсами SPI, UART, а также портами GPIO, а это значит, что модуль можно использовать автономно без Arduino и других плат с микроконтроллерами.
Информация
В данном обзоре я буду использовать, одну из самых первых плат ESP-01. Так же для полноценной работы с чипом потребуется конвертер USB/UART, рекомендую 6-пиновый USB — UART TTL на CP2102, обзор которого уже был на mysku.
Подключение
Распиновка разъёма ESP-01, представлена на рисунке:
Если в своих проектах вам не хватит двух выведенных GPIO, а заниматься «грязными хаками» нет желания, то я рекомендую сразу приобретать более новые платы, например ESP-07 или ESP-12. Только имейте ввиду, что данные платы требуют самостоятельной разводки и в продаже для этого есть специальные мининаборы.
ESP-01 hacked by Dave Allan, как пример. Дополнительно вы получаете 4 GPIO: GPIO14, GPIO12, GPIO13 и GPIO15
Схема подключения:
— ESP-01 VCC к USB/UART VCC (+3.3В);
— ESP-01 GND к USB/UART GND;
— ESP-01 URXD к USB/UART TXD;
— ESP-01 UTXD к USB/UART RXD;
— ESP-01 CH_PD к USB/UART VCC (+3.3В);
— ESP-01 GPIO0 к USB/UART GND — только во время прошивки.
Прошивка
Для ESP8266, существует SDK и оригинальная прошивка от Espressif Systems, но многих она не устраивает ввиду своей «сырости», поэтому выпускаются не оригинальные прошивки, такие как NodeMCU, Frankenstein и другие.
В данном обзоре будет использоваться не оригинальная прошивка NodeMCU. Список команда и примеры можно посмотреть на GitHub.
Первый скрипт
Если при работе со скриптами у Вас будут проблемы, то рекомендуется подать питание 3.3V не от USB/UART, а от отдельного источника. Напряжение должно быть именно 3.3V, например через модуль стабилизированного питания на AMS1117 3.3V 800ma.
Для написания и загрузки скриптов в ESP8266, будет использоваться небольшая и удобная IDE — ESPlorer:
Наш первый скрипт, будет выключать и включать светодиод с периодичностью в 2 секунды:
— Отключаем питание, к GPIO2 подключаем резистор и светодиод. Включаем питание;
— Запускаем ESPlorer, выбираем нужный COM и скорость порта 9600, нажимаем Open;
— Вставляем код и нажимаем Save To ESP;
— Для повторного запуска нажимаем DoFile.
Подключаем датчик DHT11
Чтобы продемонстрировать, более продвинутую работу с прошивкой NodeMCU подключим к ESP-01 датчик DHT11:
— DHT11 VCC к USB/UART VCC
— DHT11 GND к USB/UART GND
— DHT11 Out к USB/UART GPIO2
Прошу прощения за качество видео, снимал на телефон.
Эпилог
Чип ESP8266 это безусловно прорыв, прежде всего в соотношении цена/качество. Конечно стоит упомянуть о существующих проблемах в оригинальных и не оригинальных прошивках, но работы ведутся и я надеюсь, что в будущем подобные чипы, будут встроены в каждый чайник.
На большинстве старых модулях установлен чип памяти на 4 мегабита. т.е. это 512 кб что очень мало, если необходимо использование обновления через интернет (OTA).
Расмотрим маркировку чипов памяти:
чипы маркируются как W25Q4 или просто 25Q4 , где 4 - это объем памяти в мегабитах. Т.е. нам нужно не менее 8 мегабит, что соотвествует 1 мегабайту.
На Алиэкспресс можно найти чипы и на 8 и на 32 мегабит, но как я заметил на 32 мегабита цена выгоднее - берем их:
Перепаять чип вполне реально, дополнительных действий не требуется - после перепайки нужно просто стандартно перепрошить модуль через USB-UART переходник, указав размер флеш памяти 8 мегабит в прошивальщике при использовании OTA.
Иногда модуль может не запустится с новой памятью, чтобы успешно запустить модуль необходимо затереть память бланком, Сами бланки и инструкция находится тут.
я поменял заводские 4мбита на 32мбита (cFeon 032B-104HIP) на модуле ESP-201. всё отлично работает, только пришлось у новой памяти укоротить ножки - корпус оказался чуть больше.
кстати штатная память сдохла на второй день экспериментов .
Что-то у меня не заводится ESP-01
Запаял MX25L1605 Macronix стертую на программаторе.
NodeMCU флэшером заливаю однофайловую с адреса 0x00000 и тишина. В Safe Mode не запускается.
Пробовал и трехфайловой шить и галку "Поддержка flash 1mb" в конструкторе ставить - без разницы.
Попробую позже что-то из проверенных флэшек запаять.
Но подозреваю , что-то недопонял по прошивке
"Поддержка flash 1 мегабайт и выше. Только для OTA ! При прошивке необходимо установить объем flash 1 мегабайт(8 мегабит) в программе прошивальщике"
И тут
"после перепайки нужно просто стандартно перепрошить модуль через USB-UART переходник, указав размер флеш памяти 8 мегабит в прошивальщике при использовании OTA. "
Все-таки
первоначально нужно заливать прошивку на 512k ? или собирать с "поддержкой 1MB" ?
Как-бы убедится что код действительно записался во Flash (в NodeMCU верификации нет) , кроме как сдергивать на программатор ?
Прошивать нужно на 1 мег, если нужно на 1 мег. В прошивающей программе нужно выбрать 1 мегабайт, иногда нужно ставить реальный размер - в данном случае 16 мегабит..
Т.е. последовательность такая:
1. в конструкторе собираю прошивку с "Поддержка flash 1mb"
2. однофайловую заливаю флэшером с 0x00000 выбирая Flash Size 1MByte
3. замыкаю TX-RX и получаю safe mode
зы кстати , нехилая такая путаница получается с байтами-битами
в конструкторе вообще мили-биты
Читайте также: