• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Освоение ESP8266 в UDK новичком шаг за шагом

Делаю тему для полных нубов. В первую очередь под себя. Наработки и с этой темы отдам человеку который напишет статью для новичков.

Что есть: ESP8226 преобразователь usb->usrt на ft232rl, свежеустановленная UDK, созданный проект по видео
и нуб (ваш покорный слуга)
итак: есть несколько шагов которые надо освовить для полноценного освоения ESP82266
1) запустить и проверить - сделано по статье из основного сайта;
2) попытаться прошить любой оф. прошивкой - сделано;
3) написать примитивный проект и залить его в esp сделано по видео ;
4) заморгать светодиодом - вот тут мы и начнём тему;
5) поднять UART и вывести через него строку - предстоит сделать;
6) управление светодиодом через UART - предстоит сделать;
7) ... в планах
список будет редактироваться по мере наполнения темы.
 
Конкретно сейчас я остановился на 4м пункте.
1) создаю проект-пустышку по вышеприведённому видео;
2) открываю более всего подходящий пример для этой задачи gpio16_led
3) сразу копирую в user_main.c сей волшебный код
Код:
// то без чего не компилиреутся проект
uint32 ICACHE_FLASH_ATTR user_rf_cal_sector_set(void)
{
  enum flash_size_map size_map = system_get_flash_size_map();
  uint32 rf_cal_sec = 0;

  switch (size_map) {
  case FLASH_SIZE_4M_MAP_256_256:
  rf_cal_sec = 128 - 8;
  break;

  case FLASH_SIZE_8M_MAP_512_512:
  rf_cal_sec = 256 - 5;
  break;

  case FLASH_SIZE_16M_MAP_512_512:
  case FLASH_SIZE_16M_MAP_1024_1024:
  rf_cal_sec = 512 - 5;
  break;

  case FLASH_SIZE_32M_MAP_512_512:
  case FLASH_SIZE_32M_MAP_1024_1024:
  rf_cal_sec = 1024 - 5;
  break;

  default:
  rf_cal_sec = 0;
  break;
  }

  return rf_cal_sec;
}
4) копирую секцию дефайнов из user_main.c проекта gpio16_led
#include "ets_sys.h"
#include "osapi.h"
#include "os_type.h"
#include "user_interface.h"
#include "driver/uart.h"
#include "driver/gpio16.h"

и вот тут начинаются чисто нубские вопросы:
#define GPIO_KEY_PIN 3
#define GPIO_LED_PIN 4
что значат эти дефайны? номера GPIO к которым подключены кнопка и светодиод?

и просто банальный и тупой вопрос: как вообще задать состояние тому или иному GPIO?
 

az_dedsad

New member
Всем привет!
Я новичок горю желанием внести свои пять копеек, и на этом еще и получить кое-что ))
Вот задумал проект - "ЧПУ Дача".
Сюжет таков: На даче - на грядках, огороде и теплице-парниках сидят в засаде(ах) "пацаны" .
(пацан - это автономный ESP-12F ( в "стабильной" обвязке после прошивки ) + аналоговый датчик влажности почвы, и пара цифровых датчиков температуры почвы и воздуха). Ну и плюс батарейка, куда без неё. Ну герметично упакован, дабы не простудиться.
По команде "агронома" ( о нем чуть ниже) пацаны просыпаются , озираются (собирают данные о влажности и температуре), пакуют пакет и отправляют по Wi-Fi агроному. Зевают перед сном (проверяют батарейку ну и прочее) и снова погружаются в сон. Спят, едва дыша, до следующего оклика агронома ( а он их будит 2-4 раза в сутки).
Теперь об агрономе. Этот тоже, тот же ESP-12F, только более "продвинутый". Его обязанности таковы - 2-4 раза в сутки разбудить пацанов. Получить от них донесения, провести первичный анализ данных. По результату анализа дать распоряжения - кого полить , кого укрыть, дабы теплее было, отправить доклад Хозяину на сервер в интернет - через приятеля (модуль DSM-GPRS). Затем можно расслабиться и подремать.... Пока будильник не прозвенит или Хозяин не разбудит...
Вот таков сценарий , и даже не сценарий, а предварительный набросок к нему. Пока даже не вспоминаю такое слово - алгоритм. Пока, на первый взгляд вроде-бы идея не слишком "заумная", и реализуема без высокой квалификации. Нет лишних схем-обвязок. Все операции просты ( и халява имеется - практически готовые скетчи ).
Конечно- мигать светодиодами тоже предстоит поучиться, но хочется понимать - А ЗАЧЕМ.
Пока всё. Можете пинать. Потерплю, если по делу....
 

Сергей_Ф

Moderator
Команда форума
@az_dedsad Пацаны не могут спать и просыпаться по командам Агронома. Пацаны сами должны будиться, а не ждать команд сверху. А агроному спать нельзя - пропустит отчеты Пацанов. Так что в розетку его надо.
А так мысли нужные. Ждем реализацию ;)
 
начал читать книгу по ESP.
Почерпнул много нового, но только теорию(
Открыл демопроект blinky и залил его как есть на контроллер. Однако светодиод не моргает и всё время гадит в консоль отладочной информацией. Видимо всё время уходит в ребут. Видел где-то у людей подобную проблему. Найду решение - напишу сюда.
 

shuraf

Member
начал читать книгу по ESP.
Почерпнул много нового, но только теорию(
Открыл демопроект blinky и залил его как есть на контроллер. Однако светодиод не моргает и всё время гадит в консоль отладочной информацией. Видимо всё время уходит в ребут. Видел где-то у людей подобную проблему. Найду решение - напишу сюда.
У тебя проект на UDK или Ардуине?
 
Проблема: модуль ESP8266-12 постоянно уходит в перезагрузку после после прошивки (после нажатия flash). Симптомы: Не запускается прошивка и постоянно моргает синий светодиод.
Решение: методом тыка подобрать в makefile проекта параметр
Код:
SPI_SIZE_MAP ?= 0
тот параметр что подойдёт и запустит Вашу прошивку - и есть тот объём памяти программ который Вы можете зашить.
 
Теперь когда светодиод заморгался (проект blinky) возникла следующая...
Проблема: После подачи питания модуль самопроизвольно перезапускается каждые 3-4 секунды. Проводники короткие. Критически важные контакты проверенны. проблема где-то в программной части, ибо оф. прошивки работают стабильно.
в терминал выдаётся следующее (поймал в два захода на скорости 115200 и 74480):
Код:
Terminal log file
Date: 16.03.2017 - 18:39:56
-----------------------------------------------
@ЉRjrA(!‹SЛq‹РљЦ›XЛQъ^КQ*!лTK
!юКI*AЊ1‚1)dP»Qк    <0>ЮYhађnй@HhIОAрZ
eRR—*)АVA5y`И<0>nй*IН<0>    iн^Љ9Љ    И^ЉzA,!ыЮAО<0>кI*AL-‡LВ!e\є%(юyh5ађNй*AHHIоAФ'AЙоA,Ф'бrf cal sector: 120
rf[112] : 00
rf[113] : 00
rf[114] : 01

SDK ver: 2.0.0(5a875ba) compiled @ Aug  9 2016 15:12:27
phy ver: 1055, pp ver: 10.2


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

load 0x40100000, len 27216, room 16
tail 0
chksum 0xb1
load 0x3ffe8000, len 884, room 8
tail 12
chksum 0x59
ho 0 tail 12 room 4
load 0x3ffe8380, len 316, ro
 
Последнее редактирование:

az_dedsad

New member
@az_dedsad Пацаны не могут спать и просыпаться по командам Агронома. Пацаны сами должны будиться, а не ждать команд сверху. А агроному спать нельзя - пропустит отчеты Пацанов. Так что в розетку его надо.
А так мысли нужные. Ждем реализацию ;)
Мне нравится когда меня зщамечают, НО НЕ НРАВИТСЯ - когда везде и всюду ИГНОРИРУЮТ. , Ради приличия на форуме... Или не все еще понимаю как новичок???
 

az_dedsad

New member
Наверно имелось в виду не состояние, а режим работы GPIO? Если да, то можно начать с чтения книги по esp8266 или посмотреть в SDK или глянуть как это сделано в других прошивках.
И послать новичка туда, тада ... НУ и пусть догадается сам - куда...
 

nikolz

Well-known member
Теперь когда светодиод заморгался (проект blinky) возникла следующая...
Проблема: После подачи питания модуль самопроизвольно перезапускается каждые 3-4 секунды. Проводники короткие. Критически важные контакты проверенны. проблема где-то в программной части, ибо оф. прошивки работают стабильно.
в терминал выдаётся следующее (поймал в два захода на скорости 115200 и 74480):
Код:
Terminal log file
Date: 16.03.2017 - 18:39:56
-----------------------------------------------
@ЉRjrA(!‹SЛq‹РљЦ›XЛQъ^КQ*!лTK
!юКI*AЊ1‚1)dP»Qк    <0>ЮYhађnй@HhIОAрZ
eRR—*)АVA5y`И<0>nй*IН<0>    iн^Љ9Љ    И^ЉzA,!ыЮAО<0>кI*AL-‡LВ!e\є%(юyh5ађNй*AHHIоAФ'AЙоA,Ф'бrf cal sector: 120
rf[112] : 00
rf[113] : 00
rf[114] : 01

SDK ver: 2.0.0(5a875ba) compiled @ Aug  9 2016 15:12:27
phy ver: 1055, pp ver: 10.2


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

load 0x40100000, len 27216, room 16
tail 0
chksum 0xb1
load 0x3ffe8000, len 884, room 8
tail 12
chksum 0x59
ho 0 tail 12 room 4
load 0x3ffe8380, len 316, ro
Это у Вас срабатывает WDT. и все начинается с рестарта.
---------------------------------------------------------
Тщательней изучайте документацию и читайте книжки по программированию микропроцессоров.
Не используйте метод тыка.
 

shuraf

Member
Тщательней изучайте документацию и читайте книжки по программированию микропроцессоров.
Не используйте метод тыка.
Чтобы понять что там написано, надо несколько лет учиться чтобы "поморгать светодиодом".

*Сам АСУшник и легко программирую контроллеры, в еклипсе на джаве делаю прошивки для модемов, но даже это пока не дало мне с наскоку перейти в UDK, хотя и есть большое желание.
 

nikolz

Well-known member
Чтобы понять что там написано, надо несколько лет учиться чтобы "поморгать светодиодом".

*Сам АСУшник и легко программирую контроллеры, в еклипсе на джаве делаю прошивки для модемов, но даже это пока не дало мне с наскоку перейти в UDK, хотя и есть большое желание.
Ну тогда странно читать что вы тыком выбрали SPI_SIZE_MAP ?= 0
В то время как для ESP-12 у которой 4 МВ следует либо 4 либо 6 (я ставлю 6) конечно и 0 будет работать так как 4 мб явно больше 512 кб
------------------------------
C UDK работать очень просто, надо:
1) знать СИ
2) познакомится с make
3) изучить 2c-esp8266_non_os_sdk_api_reference_en.pdf
 

Andy Korg

Moderator
Команда форума
И послать новичка туда, тада ... НУ и пусть догадается сам - куда...
Дык вы бы спросили конкретно, я бы подсказал.
В книжке описание GPIO начинается с 79 страницы, раздел так и назвается "GPIOs". В SDK в \\Espressif\examples\ESP8266\blinky\user\user_main.c В прошивке pvvx файл GPIO16.c Он кстати во многих прошивках одинаковый.
 
Теперь когда светодиод заморгался (проект blinky) возникла следующая...
Проблема: После подачи питания модуль самопроизвольно перезапускается каждые 3-4 секунды. Проводники короткие. Критически важные контакты проверенны. проблема где-то в программной части, ибо оф. прошивки работают стабильно.
в терминал выдаётся следующее (поймал в два захода на скорости 115200 и 74480):
Код:
Terminal log file
Date: 16.03.2017 - 18:39:56
-----------------------------------------------
@ЉRjrA(!‹SЛq‹РљЦ›XЛQъ^КQ*!лTK
!юКI*AЊ1‚1)dP»Qк    <0>ЮYhађnй@HhIОAрZ
eRR—*)АVA5y`И<0>nй*IН<0>    iн^Љ9Љ    И^ЉzA,!ыЮAО<0>кI*AL-‡LВ!e\є%(юyh5ађNй*AHHIоAФ'AЙоA,Ф'бrf cal sector: 120
rf[112] : 00
rf[113] : 00
rf[114] : 01

SDK ver: 2.0.0(5a875ba) compiled @ Aug  9 2016 15:12:27
phy ver: 1055, pp ver: 10.2


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

load 0x40100000, len 27216, room 16
tail 0
chksum 0xb1
load 0x3ffe8000, len 884, room 8
tail 12
chksum 0x59
ho 0 tail 12 room 4
load 0x3ffe8380, len 316, ro
Решение (частично неправильное): вставить строку из документации
Код:
  system_soft_wdt_stop();
после строк
Код:
    ets_wdt_enable();
    ets_wdt_disable();
Проблему перезагруза решает частично - не раз в три секнды перезагружает а в раз в 20 - 30 секунд.
 
Решил отложить в сторону blinky и скомпилировал и залил hello_world. работает без косяков. три часа полёт нормальный.
upd: поковырял ещё пару проектов и понял что только blinky косячный. blinky2 собирается нормально.
 
Последнее редактирование:
Сверху Снизу