- ESP8266 Урок 4: Прошиваем ESP-01 — подробная инструкция
- Знакомство с недорогим и функциональным микроконтроллером ESP8266
- Прошивка и пример использования
- Основы и характеристики
- Характеристики модуля ESP-01
- Энергонезависимая память EEPROM
- Подключение EEPROM
- Работа с EEPROM
- Файловая система SPIFFS
- Распределение памяти и место для прошивки
- Прошивка «по воздуху» OTA-Update
- Платы, с которыми можно прошить модуль esp-01 по воздуху
- Как прошить esp-01 по воздуху
- Результаты прошивки по воздуху
- Разновидности МК серии ESP и их плат
- Флеш-память и файловая система
- Подбираем подходящую плату
- Пример прошивки ESP-01
- Как работать с микроконтроллером ESP8266
- Видео:
- Разработка WEB-интерфейса для ESP8266. Часть 1: Подготовка скетча в Arduino IDE
ESP8266 Урок 4: Прошиваем ESP-01 — подробная инструкция
В данном уроке мы научимся прошивать плату ESP-01, которая является одним из самых популярных модулей на базе микроконтроллера ESP8266. Этот модуль имеет небольшие габариты, низкую стоимость и хорошие характеристики, что делает его отличным выбором для различных применений.
Основы программирования ESP8266 заключаются в использовании AT-команд, которые позволяют управлять модулем через портовые строки. На данный момент существует несколько способов прошивки модуля ESP-01, но в данной инструкции мы рассмотрим один из самых простых и надежных – через USB-UART мост.
Для прошивки модуля ESP-01 с использованием USB-UART моста нам понадобятся следующие компоненты: сам модуль ESP-01, USB-UART модуль, провода для подключения и компьютер с установленным драйвером для USB-UART модуля. Начнем с того, что подключим модуль ESP-01 к USB-UART модулю.
После подключения модуля ESP-01 к USB-UART модулю, можем приступить к прошивке. Для этого нам понадобится программное обеспечение, такие как esplorer и nodemcu-flasher, a также сама прошивка, которую мы будем прошивать в flash-память модуля. Программа esplorer поможет нам проверить работу модуля и прошить модуль при необходимости, а nodemcu-flasher позволит прошить модуль без его подключения к USB-UART.
Знакомство с недорогим и функциональным микроконтроллером ESP8266
Для прошивки модуля ESP-01 вам потребуется flash-память, которая хранит прошивку и другие файлы. Прошивку можно сразу передать в flash-память с помощью USB-UART конвертера или использовать другие разновидности прошивок, такие как OTA-обновления (over-the-air). Наши файлы должны быть разложены по папкам: ota-update, tools и файла. Один из способов прошить прошивку — использовать программу nodemcu-flasher, в которой нужно указать адрес файла прошивки.
ESP8266 поддерживает различные команды, которые передаются через UART, и позволяет работать с файловой системой. При работе в режиме командной строки, вы можете использовать команды для доступа к файловой системе, подбирая нужные настройки и проверяя файлы. Источник прошивки указывается в виде строки, и процесс прошивки начинается после нажатия кнопки «Прошить».
Если вы предпочитаете прошивать ESP8266 по-старинке, то вам понадобится USB-UART конвертер. Данный конвертор подключается к ESP8266 и используется для загрузки прошивки в flash-память. По умолчанию, адрес UART для ESP8266 составляет 115200 бит/с. Для прошивки ESP8266 вам также понадобится файловая система. Для этого можно воспользоваться программой «ESPlorer», которая позволит прошивать модуль и работать с файлами.
В итоге, обладая ESP8266, вы можете свободно работать с файловой системой и прошивать модуль. Благодаря наличию встроенного Wi-Fi и большому списку доступных модулей, ESP8266 становится отличным выбором для всех типов проектов.
Прошивка и пример использования
Если вам нужно прошить ESP8266, этот модуль может быть прошит через командную строку, используя такие инструменты, как NodeMCU-Flasher и ESPlorer. При прошивке модуля энергонезависимая память EEPROM не затрагивается, поэтому данные, сохраненные в EEPROM, не будут удалены.
Одним из способов прошивки модуля является использование OTA (over-the-air) обновления. Этот метод также подходит для обновления прошивки микроконтроллера через Wi-Fi. Вы можете прочитать и записать данные в память ESP8266 с помощью функций EEPROM.read() и EEPROM.write().
Если у вас имеется файл прошивки, который вы хотите установить на ESP8266, вы можете загрузить его на устройство через программу NodeMCU-Flasher.
ESP-01 имеет небольшой объем памяти, поэтому для управления файлами на модуле используется файловая система SPIFFS (SPI Flash File System). Она позволяет хранить и управлять файлами на flash-памяти модуля. Для работы с SPIFFS в ESP8266 имеется инструмент ESPlorer, с помощью которого можно работать с файлами на модуле.
Если вам необходимо прочитать характеристики памяти модуля ESP8266, вы можете использовать метод ESP.getFlashChipSize(). Последняя прошивка ESP8266 поддерживает Wi-Fi и имеет адрес 192.168.1.1.
Основы работы с модулем ESP8266 можно изучить через знакомство с другими микроконтроллерами, такими как Arduino. Модуль ESP8266 может управлять портами микроконтроллера, чтобы настроить и контролировать функции внешних устройств.
Пример использования модуля ESP8266 может быть следующим. При подключении модуля к системе, он отправляет сообщение о своем наличии и характеристиках, после чего пользователь может взаимодействовать с модулем через адрес 192.168.1.1 и управлять функциями модуля с помощью файла index.html.
Основы и характеристики
ESP-01 — это миниатюрный Wi-Fi модуль, представляющий собой микроконтроллер с встроенным Wi-Fi. Он имеет всего два контакта для подключения к внешней плате и очень ограниченный объём памяти.
Для управления ESP-01, необходимо загрузить нашу прошивку на модуль. Для этого мы можем воспользоваться различными инструментами и методами.
Первым инструментом, которым мы попробуем воспользоваться, будет программное обеспечение ESPlorer. ESPlorer — это графический интерфейс, который позволяет управлять ESP-микроконтроллером через UART (серийный интерфейс). Для подключения к модулю ESP-01 можно использовать USB-UART мост.
В ESPlorer мы можем проверить результаты прошивки, загрузить файлы в память модуля, считывать данные из памяти и многое другое.
Еще одним способом прошивки ESP-01 является использование программы NodeMCU Flasher. Она позволяет загрузить прошивку на модуль без необходимости внешней платы и USB-UART моста.
ESP-01 имеет малый объём встроенной EEPROM памяти. Но этим не стоит ограничиваться — микроконтроллеры ESP8266 также имеют возможность подключения микроконтроллера к модулю с внешней EEPROM памятью.
Память модуля ESP-01 также подходит для прошивки методом SPIFFS (SPI Flash File System). Этот метод позволяет хранить файлы на флэш-памяти ESP8266 и обращаться к ним через HTTP протокол.
Характеристики модуля ESP-01
- Миниатюрный Wi-Fi модуль
- Ограниченный объем памяти
- Два контакта для подключения
Энергонезависимая память EEPROM
В этом разделе мы рассмотрим энергонезависимую память EEPROM, которая есть на ESP8266.
На плате ESP-01 эта память имеет размер 512 байт, поэтому она используется для хранения небольших объемов данных.
Для работы с EEPROM потребуется прошивка, которую мы рассмотрели в прошлом уроке. Если вы уже прошили плату ESP-01 с помощью nodemcu-flasher, то у вас уже есть этот функционал.
ESP8266 также поддерживает один из методов обновления прошивки под названием OTA (Over-The-Air), который позволяет обновлять прошивку через Wi-Fi. Однако, для этого нужно использовать другую версию прошивки, которая называется nodemcu-ota-update или espressif-ota-update.
В данном случае мы сразу не можем управлять памятью EEPROM, но можно сделать это с помощью файла, который помещается в специальную папку в файловой системе модуля ESP8266.
Подключение EEPROM
На плате ESP-01 есть два доступных порта: GPIO0 и GPIO2. Именно они можно использовать для подключения энергонезависимой памяти EEPROM.
Адрес памяти EEPROM начинается с 0x00 и может быть использован для записи и чтения данных. Конкретный адрес данных может быть получен из строки «EEPROM.begin(address)».
Для работы с EEPROM вам потребуется программа под названием «esplorer», которую можно скачать и установить с официального сайта проекта. Она позволяет работать с памятью EEPROM и прошивать микроконтроллеры ESP8266.
В начале работы с EEPROM мы прошиваем ESP8266 с помощью esplorer и загружаем нашу прошивку в модуль ESP-01.
Работа с EEPROM
Затем мы можем использовать функции для работы с памятью EEPROM. Для этого мы должны подключить файловую систему SPIFFS к нашей плате.
Метод EEPROM.begin() позволяет использовать память EEPROM в коде прошивки. Этот метод должен быть вызван один раз в начале работы с памятью EEPROM.
Мы можем использовать функцию EEPROM.write(address, value) для записи значения value в адрес address памяти EEPROM.
Для чтения значения из памяти EEPROM мы можем использовать функцию EEPROM.read(address), которая возвращает значение по указанному адресу.
Метод EEPROM.commit() используется для сохранения изменений в памяти EEPROM.
При этом стоит учитывать, что EEPROM имеет ограниченное количество записей и нельзя записывать данные слишком часто.
Также, функция EEPROM.put(address, value) позволяет записывать данные переменной value по адресу address в памяти EEPROM, а функция EEPROM.get(address, value) считывает данные с адреса address в переменную value.
Попробуем записать и прочитать данные из памяти EEPROM:
#includeint address = 0; int value = 5; void setup() { EEPROM.begin(512); EEPROM.write(address, value); EEPROM.commit(); int data = EEPROM.read(address); Serial.begin(9600); Serial.print("Data: "); Serial.println(data); } void loop() { }
Надеюсь, данная информация поможет вам освоить работу с энергонезависимой памятью EEPROM на ESP8266.
Файловая система SPIFFS
Во время прошивки ESP-01 установка прошивки в память микроконтроллера flash позволяет управлять файлами в его внутренней памяти. Для работы с файлами используется файловая система SPIFFS (SPI Flash File System), которая основана на использовании флэш-памяти микроконтроллера.
При прошивке ESP-01 с помощью платы NodeMCU или Wemos D1 Mini, прошивается два образа: сама прошивка и файловая система SPIFFS.
Файловая система SPIFFS существует как отдельный файл, который содержит все файлы, папки и структуру файловой системы. После прошивки этот файл появляется в корневой папке ESPlorer с именем spiffs.bin.
Для работы с файловой системой мы можем использовать команды ESPlorer, однако, также существует интересный и удобный инструмент для работы с файловой системой SPIFFS, называемый макетом файловой системы (OTA-Update). Этот инструмент позволяет загружать, удалять и переименовывать файлы, добавлять и удалять папки, а также просматривать содержимое файловой системы.
Изначально OTA-Update можно увидеть только после прошивки макета файловой системы. Например, если прошить прошивку NodeMCU, то спустя некоторое время после загрузки прошивки в действующий порт должен поступить запрос на добавление этой функции в консоль ESP SDK или появиться файл соответствующей версии в папке ESP8266 для espressif.
Для загрузки макета файловой системы в память микроконтроллера flas используется программа Nodemcu-flasher, в котором есть раздел ‘SPIFFS’. Затем развернем файловую систему.
Загружать/удалять файлы в макете файловой системы можно с помощью следующих команд:
- file.open() — открытие файла для чтения или записи
- file.remove() — удаление файла
- file.rename() — переименование файла
- file.isDirectory() — проверка, является ли файл каталогом
Также можем проверить работу SPIFFS на примере ESP-12 (нормально работает файловая система SPIFFS на функциональных платах).
Для этого скомпилируем исходник и прошьем плату. Затем в консоли внизу страницы найдем источник для ознакомления с характеристиками платы памяти. Прочитаем эту информацию и внимательно прочитаем версию flash памяти, с которой предстоит работать нашей будущей прошивке.
Скомпилируем исходник некой прошивки для ESP-01, переведём последнюю версию платы и выведем на экран.
ESP-12 имеет память SPI flash вместимостью 4 MB — это означает, что на этой плате вы подходите для микроконтроллера esp-12 платин, вы сразу можете использовать скрипт DNSServer, который у нас здесь также имеется.
Если вы посмотрите код FlashCity на платы с соответствующим объёмом памяти на SPI-флэш памяти, то сможете проверить и увидеть как будет работать ваша прошивка.
Также можно добавить в программу функциональный блок для чтения памяти SPI для проверки группы ESP.
Таким образом, мы можем продолжить знакомство с функциональной платой ESP и спокойно прошить наш микроконтроллер с использованием ESPFLASH Adaptation Kit SDK.
Распределение памяти и место для прошивки
При прошивке ESP-01, которая имеет всего 1 Мбайт flash-памяти, важно правильно распределить доступное место. Давайте разберемся, как это делается.
Модуль ESP-01 имеет две основные области flash-памяти: «boot» и «application». Boot область занимает первые 4096 байт и содержит код, отвечающий за загрузку и выполнение программы. Application область оставшихся байт flash-памяти может использоваться для самой прошивки.
Прошивка модуля ESP-01 может быть выполнена разными способами. Есть специальные прошивальные утилиты, которые работают через последовательный порт и управляют процессом прошивки. Это наиболее надежный метод, который не требует особых навыков и отлично подходит для начинающих.
Также существует метод прошивки через WiFi, который называется ota-update (over-the-air update). С его помощью прошивку можно производить без подключения к командной шине микроконтроллера.
В нашей статье мы воспользуемся удобным и простым способом прошивки ESP-01 с использованием специального переходника USB-TTL и прошивальной утилиты ESP8266Flasher.
Возможно, в видеоуроке вы заметили, что при прошивке двух плат ESP-01 день изишился чуть по-разному. В случае прошивки одной платы эта разница может быть значительной для нашей прошивки. Но не стоит пугаться: если прошивать плату два-три раза, к нам случайно попадется вариант максимального использования памяти.
Основые настройки прошивки находятся в файле прошивки в фориате .bin. В нем находятся два основных составляющих: файловая система и функция прошивки, отвечающая за работу модуля.
Итак, в прошивку esp-01 должны быть включены:
1. «boot» и «application».
2. Файловая система, отвечающая за хранение всех файлов на модуле.
3. Функция прошивки, отвечающая за работу модуля. Она считывает настройки из файла, переходит в нужный режим, подключается к Wi-Fi и обновляет прошивку в случае необходимости.
Когда мы прошили нашу плату, то операционка оказалась впритык даже сфшаренной файловой системой, наш ESP-01 спокойно прошилось. Вшиш запустился и в случае проблем при работе выдает сообщение «There is no AT Command to run». Но на данный момент, обновить файлы в нем будет невозможно. Однако плата также поддерживает прошивку через OTA-update через Wi-Fi.
Важно знать о е енергонезависимая память — это флэш память ф шине, работающая независимо от основного питания, чтобы, при выключении питания, информация в памяти не терялась. В usb-ttl переходнике она имеет размер 32 Мб, это все свободное место на плате модуля, которое необходимо поделить на разделы, где будет прошиться каждая часть прошивки.
Таким образом, при прошивке ESP-01 с помощью переходника USB-TTL и прошивальной утилиты ESP8266Flasher потребуется прошить модуль дважды: сначала прошить «boot», а затем «application».
В версии 1.6.2.0. утилиты ESP8266Flasher появилась расширенная версия настроек, где можно настроить объем памяти для «boot» и «application». Одножды узнав эти основные настройки, можно спокойно начинать работать.
Настройки: папку с файлами прошивки указываем в поле «Path» вверху. «SpiSize» — объем памяти для «boot» и «application». Сразу после поставим 128Кб (выполнение на собственной плате на данный момент уже не работает), что в 2 раза меньше рекомендации. Затем увеличиваем до 4096 байт, что эквивалентно 4-м килобайтам Файловые системы, и загружаем прошивку «boot_v1.7.bin», указав процессор ESP8266 и частоту 40 МГц. Прошивка прошилась удачно. Далее выполняем вторую прошивку, выбрав файл «at\1024+1024\blank.bin», устанавливаем все параметры и меняем способ записи.
Таким образом, мы разобрались с распределением памяти и местом для прошивки на плате ESP-01. Теперь мы готовы перейти к процессу прошивки.
Прошивка «по воздуху» OTA-Update
Для такой прошивки потребуется иметь wi-fi соединение и установленную последнюю версию Arduino IDE, поскольку мы будем работать с flash-памятью и использовать специальные инструменты (tools) в Arduino IDE.
В прошлом, для прошивки flash-памятью необходимо было подключать специальный программатор к плате и прошивать ее скетчами. Теперь данный метод можем применить для всех разновидностей плат esp8266 и не только. Все, что нам понадобится — это более новая версия Arduino IDE и возможность подключиться к интернету.
Важно отметить, что прошивка по воздуху работает только с flash-памятью, а не с EEPROM. Еще один момент — если вы используете одни из самых популярных модулей esp8266 — esp-12 или ESP-01, то для прошивки по воздуху потребуется дополнительная плата.
Платы, с которыми можно прошить модуль esp-01 по воздуху
В случае использования esp-01 существует несколько вариантов плат, которые подходят для прошивки по воздуху. Одна из них — это esp8266 adapter. Другой вариант — это esp8266сh340g.
Можно также использовать FTDI232, CP2102, CH2302 или любой другой USB-UART конвертер.
Как прошить esp-01 по воздуху
Для работы с esp-01 по воздуху необходимо скомпилировать новую версию скетча в режиме «Generic esp8266 module» и перевести модуль esp-01 в режим прошивки. Перевод модуля в режим прошивки можно сделать просто поменяв провода местами на плате или воспользовавшись специальным переходником.
Для прошивки esp-01 по воздуху используется метод, называемый «стандартным методом ota-update». Этот метод разработан специально для мк с flash-памятью, которая имеет функцию энергонезависимой памяти или EEPROM.
Функция оta-update позволяет управлять процессом прошивки через wi-fi. Для этого в системе создается мост между файловой системой flash-памятью и файловой системой с вашим прошиваемым скетчем при помощи функции «Update1(зарезервированная флеш или «основная» flash-память)» и функции «SteamFile(файл для программатора)».
Результаты прошивки по воздуху
Данный метод позволяет прошивать любые версии плат esp8266, включая esp-12 и esp-01.
После успешной прошивки вы получите сообщение о том, что wifi модуль был успешно прошит, и после перезагрузки платы она будет работать на новой прошивке.
Таким образом, этот метод позволяет прошить модуль esp-01 без подключения к компьютеру, только через wi-fi, а также обновить все необходимые файлы, в том числе и fiash-память.
Разновидности МК серии ESP и их плат
Разбираясь с прошивкой ESP-01, мы познакомимся с разнообразием микроконтроллеров серии ESP и их плат. В этом уроке мы будем использовать прошивку именно для ESP-01, но многие из описанных в прошлом уроке этапов будут подходить и для других разновидностей ESP микроконтроллеров.
Одна из наиболее популярных плат, основанных на микроконтроллере ESP, это плата под названием NodeMCU. Она совместима с большим количеством дополнительных модулей и имеет встроенный USB-TTL чип, что делает ее удобной для управления и программирования. Плата NodeMCU обычно используется в проектах Интернета вещей (IoT).
Еще одной популярной платой является Wemos. Она также основана на микроконтроллере ESP, но в отличие от NodeMCU, она имеет меньший размер и более компактный дизайн. Плата Wemos также подходит для различных проектов и является надежным выбором для разработчиков.
Одна из разновидностей микроконтроллера ESP, которую мы рассмотрим подробнее, называется ESP-12. Она имеет больше пинов для подключения внешних устройств и позволяет более гибко настраивать подключенные модули. Плата ESP-12 в основном используется для разработки Wi-Fi устройств, таких как датчики и умные устройства для дома.
Флеш-память и файловая система
Одна из важных функций ESP микроконтроллеров — наличие встроенной флеш-памяти, которая используется для хранения программ и данных. Файловая система на ESP микроконтроллерах также функционирует на базе этой флеш-памяти.
При прошивке микроконтроллера на ESP плате, мы используем файловую систему для хранения и передачи данных. Например, при прошивке с помощью инструмента nodemcu-flasher, мы передаем файлы с программой на микроконтроллер по сети.
Есть еще один способ прошить микроконтроллер, который называется OTA-обновление (OTA-update). Этот способ позволяет прошивать микроконтроллеры без проводного подключения, через Wi-Fi. Для этого необходимо настроить специальные настройки в программе и плате.
Подбираем подходящую плату
Выбор платы для проекта зависит от конкретных требований и условий использования. При выборе платы необходимо учитывать такие параметры, как количество пинов для подключения датчиков и других устройств, наличие встроенного USB-TTL чипа, наличие flash-памяти для хранения программ и данных, энергонезависимость и др.
Также необходимо учитывать возможности микроконтроллера, его скорость работы и поддерживаемые функции. Например, плата с микроконтроллером ESP может работать на частоте около 80 МГц и имеет возможность управлять Wi-Fi соединением.
Пример прошивки ESP-01
Для знакомства с процессом прошивки ESP-01 попробуем прошить ее с помощью инструмента nodemcu-flasher. Перед началом прошивки необходимо подготовить файлы, которые будут прошиваться, и папку, в которую эти файлы будут считываться для прошивки.
В прошлом уроке мы уже получили файлы для прошивки ESP-01, и в этом уроке мы будем использовать эти файлы. Откроем nodemcu-flasher и выберем папку, содержащую файлы, которые мы хотим прошить.
После выбора папки, нажмем кнопку «Flash», чтобы начать процесс прошивки. В процессе прошивки программа передает данные из файлов на микроконтроллер и показывает прогресс прошивки. После успешной прошивки можно получить сообщение об этом.
Таким образом, мы совершили знакомство с разновидностями микроконтроллеров ESP и их платами. Мы изучили особенности прошивки на этом примере и познакомились с файловой системой и функциями плат ESP. Теперь мы готовы к дальнейшему изучению и использованию ESP для своих проектов!
Как работать с микроконтроллером ESP8266
Микроконтроллеры ESP8266 изначально разработаны для работы как модуль Wi-Fi. В прошлом они использовались в основном в качестве компонента для подключения к интернету. Но сейчас они получили большую популярность благодаря своим характеристикам и удобству в использовании.
Одной из основных возможностей ESP8266 является возможность его прошивать программными образом. Прошивка — это процесс установки специального программного обеспечения на микроконтроллер, которое позволяет ему работать в конкретном режиме и выполнять определенные функции.
Для прошивки ESP8266 можно использовать различные инструменты, такие как Arduino IDE, ESP-IDF или PlatformIO. Каждый из них имеет свои особенности и подходит для определенных задач. Но в данной инструкции мы рассмотрим процесс прошивки ESP8266 с использованием Arduino IDE.
Прежде чем начать прошивку, имеется несколько важных моментов, которые стоит учесть:
- У микроконтроллера ESP8266 есть два основных разводных порта: GPIO0 и GPIO2. GPIO0 — управляет режимом работы микроконтроллера, GPIO2 — используется для подключения внешней платы.
- При прошивке ESP8266 через USB-UART конвертер, который подключается к USB-порту компьютера, в нашем случае, к USB-порту Arduino, файл прошивки передаётся напрямую посредством flash-памяти. Данная прошивка называется OTA (Over-The-Air) Update.
- ESP8266 имеет свою файловую систему под названием SPIFFS (SPI Flash File System). С её помощью мы можем загружать файлы на микроконтроллер и осуществлять с ними работу.
- Для прошивки микроконтроллера ESP8266 нам потребуется специальный программатор, который будет подключаться к порту программирования на плате и передавать прошивку микроконтроллеру. В данной инструкции мы будем использовать USB-UART конвертер.
Таким образом, чтобы прошить микроконтроллер ESP8266 в режиме flash-памяти с последней прошивкой OTA Update и возможностью работы с файловой системой SPIFFS, мы должны выполнить следующие шаги:
- Переключить микроконтроллер ESP8266 в режим программирования, подключив GPIO0 к GND.
- Подключить USB-UART конвертер к порту программирования микроконтроллера.
- Открыть Arduino IDE и выбрать соответствующую плату и порт.
- Загрузить программу Blink на микроконтроллер.
- Развернуть SPIFFS и передать нашу последнюю прошивку.
- Прошить микроконтроллер с помощью OTA Update.
- Прочитать сообщение, которое будет выведено внизу окна Arduino IDE при успешной прошивке.
В результате выполнения всех этих шагов мы получим работающий микроконтроллер ESP8266, который можно будет управлять через внешнюю плату или использовать режим flash-памяти для работы с файлами.
Видео:
Разработка WEB-интерфейса для ESP8266. Часть 1: Подготовка скетча в Arduino IDE
Разработка WEB-интерфейса для ESP8266. Часть 1: Подготовка скетча в Arduino IDE by iomoio 99,140 views 4 years ago 13 minutes, 52 seconds