• Система автоматизации с открытым исходным кодом на базе 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 собирается нормально.
 
Последнее редактирование:
Сверху Снизу