Ключевое ?лово

vk

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Железо для умного дома

ТЕМА: Конструктор кода в конструкторе прошивки ESP8266

Конструктор кода в конструкторе прошивки ESP8266 10 Авг 2015 10:59 #5710

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 4480
  • Спасибо получено: 824
  • Репутация: 148
Конструктор кода позволяет написать свой модуль на языке Си в конструкторе прошивки ESP8266. Например добавить свой датчик или алгоритм действий. Формирование своего сообщения на дисплеях. Отправка данных на свой сервер.

Шаблон кода:
void ICACHE_FLASH_ATTR
startfunc(){
// выполняется один раз при старте модуля.
}

void ICACHE_FLASH_ATTR
 timerfunc(uint32_t  timersrc) {
// выполнение кода каждую 1 секунду
if(timersrc%30==0){
// выполнение кода каждые 30 секунд
}
}

void webfunc(char *pbuf) {
os_sprintf(HTTPBUFF,"<br>test"); // вывод данных на главной модуля
}

В данный момент доступны функции:
digitalRead(x)
digitalWrite(x,y)
analogWrite(x,y)
-Должен быть установлен модуль программного ШИМ.
analogRead()
-Внутренний АЦП модуля.
delayMicroseconds(x)
delay(x)
micros()

Примечание: Нельзя чрезмерно активно использовать delayMicroseconds и delay -вместо их используйте таймер.см ниже.
Функции соответствуют Arduino синтаксису.

Глобальные переменные датчики:
dht_t1, dht_h1, dht_t2, dht_h2 - данные с датчиков DHT11/DHT22.
data1wire[x] - массив данных с датчиков DS18B20 начиная с нуля.
bh_l - данные с датчика BH1750
am_t, am_h - датчик AM2321.
sht_t, sht_h - датчик SHT21.
bmp_t, bmp_p - датчик BMP 085/180.

Глобальные переменные время:
time_loc.hour, time_loc.min, time_loc.sec

Глобальные переменные календарь:
time_loc.day ,time_loc.month, time_loc.year, time_loc.dow
time_loc.dow - день недели, 0 - понедельник.

Внимание ! Данные со всех датчиков имеют тип переменной 16 битной int16_t. Данные умножены на 10.

Микроконтроллер 32 битный и определение переменной как int будет занимать в памяти 4 байта. Рекомендуется правильно определять переменные: int16_t , uint16_t, int8_t , uint8_t.
Просьба писать сообщения в соотвествующих темах форума.
ESP8266: [Первая страница темы] [Отлавливаем баги]
IRC: forestnet.org канал #esp8266 - онлайн помощь.
Последнее редактирование: 16 Дек 2015 19:50 от Adminhs.
Администратор запретил публиковать записи гостям.
Спасибо сказали: Um-ka, Alex NEMO

Конструктор кода в конструкторе прошивки ESP8266 10 Авг 2015 11:20 #5711

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 4480
  • Спасибо получено: 824
  • Репутация: 148
Пример использования таймера:
void ICACHE_FLASH_ATTR read_esp(){
// тут пишем код, который будет вызываться по таймеру
}


static os_timer_t esp_timer; // глобально объявим таймер esp_timer

// запуск таймера:
os_timer_disarm(&esp_timer);
os_timer_setfn(&esp_timer, (os_timer_func_t *)read_esp, NULL); // read_esp -функцию, которую нужно вызвать по таймеру.
os_timer_arm(&esp_timer, 1000, 1); // 1000 миллисекунд. 1 - многократно. 0 -однократно.

Пример вывода float данных из INT умноженных на 10:
os_sprintf(HTTPBUFF,"dhtt1=%s",strtofl(dht_t1));

Пример вывода данных с датчика без дробной части:
os_sprintf(HTTPBUFF,"dhtt1=%d",dht_t1/10);

Вывод своего текста на LCD:
LCD_print(номер строки,текст);

Вывод своего текста на OLED:
OLED_print(номер строки,текст, шрифт);

Вывод своего текста на TFT дисплее
TFT_print(номер строки,текст,шрифт,цвет,центр 1/0);

Вывод своего текста на MAX7219
MATRIX_print (текст,шрифт, скорость бегущей строки);
Если скорость ровна нулю, то текст не двигается.

Вывод своего текста на Nextion HMI
NEXTION_print(ID поля,текст поля);

Для вывода на дисплеи своего текста необходимо задать в соответствующей строке "Out msg". Для датчиков интервал вывода текста менее 10 секунд не имеет смысла. Используйте if(timersrc%10==0){ код }

Пример тут:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Пример вывода времени на LCD (часть кода):
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Пример отправки данных на сервер по TCP
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Просьба писать сообщения в соотвествующих темах форума.
ESP8266: [Первая страница темы] [Отлавливаем баги]
IRC: forestnet.org канал #esp8266 - онлайн помощь.
Последнее редактирование: 20 Май 2016 14:29 от Adminhs.
Администратор запретил публиковать записи гостям.
Спасибо сказали: Pacific, Alex NEMO

Конструктор кода в конструкторе прошивки ESP8266 10 Авг 2015 21:42 #5718

  • shag12
  • shag12 аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 93
  • Спасибо получено: 1
  • Репутация: 0
Добрый день!

ОЧЕНЬ интересно, хотелось-бы потестить!

Сразу 2 вопроса:

1. Как обратится к PCF8574? Есть встроенная функция?
2. Как пользоваться прерываниями, если они есть?
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 10 Авг 2015 22:00 #5719

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 4480
  • Спасибо получено: 824
  • Репутация: 148
Можно обратится к любому подключенному железу, хоть к функиям прошивки, хоть к функциям SDK и в том числе и к драйверу I2C.
Но без опыта в программировании ESP8266 или/и полного описание фунций врят ли получится что-то подобное реализовать самому.

Со временем будут опубликованы все полезные функции прошивки, к которым можно обратится, но это не все сразу.

К управлению прерываниями можно добраться, но нужно читать документацию SDK. Управлять по ардуиновски тут не получится..
Просьба писать сообщения в соотвествующих темах форума.
ESP8266: [Первая страница темы] [Отлавливаем баги]
IRC: forestnet.org канал #esp8266 - онлайн помощь.
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 10 Авг 2015 22:20 #5720

  • shag12
  • shag12 аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 93
  • Спасибо получено: 1
  • Репутация: 0
Спасибо.

Для начала хочу дописать для себя вывод всех датчиков на LCD.

Посему - хочу принять участие в тестировании.
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 11 Авг 2015 07:58 #5722

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 4480
  • Спасибо получено: 824
  • Репутация: 148
Открыл доступ.

Для написания своего кода необходимо знать язык Си, хотя бы сколько-то разбираться в Arduino языке. В данный момент компилятор не выводит ошибки и не известно будет ли выводить - без этого человеку, не разбирающиеся в Си не реально что-то написать самому..
Просьба писать сообщения в соотвествующих темах форума.
ESP8266: [Первая страница темы] [Отлавливаем баги]
IRC: forestnet.org канал #esp8266 - онлайн помощь.
Администратор запретил публиковать записи гостям.
Модераторы: FlyRouter
Время создания страницы: 0.138 секунд

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.