• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Стоит ли? программирование ESP8266 в Arduino IDE

abdurino

New member
В Arduino всё более-менее ясно - вот тебе девайс, вот к нему куча модулей с библиотеками.

В ESP8266 всё очень странно. Девайс вроде мощный ES12 аж с 4М памяти, хотя почти пустой скетч заливается на 200к.
В теории можно подключить кое-какие модули, но программинг через заднее место - странный питон - чем си не угодил, скриптовое извращение lua.

То есть если я захочу подключить время типа DS3231,
ясен перец не ясно по каким пинам распихивать контакты чтобы заюзать стандартные библиотеки, если они вообще заработают.
А если я напрямую ищу библиотеку для 8266, то имею убогий lua, который мне мало чем поможет.

Итого в чем прелесть девайса, Леды через файфай зажигать? Остальное в необозримом будущем?
 

aleknest

New member
Извините за оффтоп, на зачем прикручивать RTC-часы имея реализации ntp-клиента?
 

sav-13

Member
В Arduino всё более-менее ясно - вот тебе девайс, вот к нему куча модулей с библиотеками.

В ESP8266 всё очень странно. Девайс вроде мощный ES12 аж с 4М памяти, хотя почти пустой скетч заливается на 200к.
Там же все целиком заливается вместе с WiFi функциями. Называется ESP8266 core for Arduino IDE

То есть если я захочу подключить время типа DS3231,
ясен перец не ясно по каким пинам распихивать контакты чтобы заюзать стандартные библиотеки, если они вообще заработают.
А если я напрямую ищу библиотеку для 8266, то имею убогий lua, который мне мало чем поможет.

Итого в чем прелесть девайса, Леды через файфай зажигать? Остальное в необозримом будущем?
I2C у ESP-шки реализуется на любых пинах. Поэтому при инициализации Wire необходимо указывать SGA, SCK
Wire.begin(4,5);

Не понимаю, почему вы мешаете в кучу Arduino IDE и LUA. Первый - это компилятор, создающий новую прошивку, второй - интерпретатор
 

sav-13

Member
Извините за оффтоп, на зачем прикручивать RTC-часы имея реализации ntp-клиента?
Хотя бы потому что WiFi и интернет имеет более низкую надежность по сравнению с автономными системами управления. То есть если у меня модуль перезагружается при отсутствии интернета/WiFi, то времени он не получает. А если у меня система управления завязана на время (даже часы), то это плохо.
Поэтому в критических к времени проектах хорошо работает модуль DS3231 или менее точный DS1307 с его периодической синхронизацией по NTP
 

aleknest

New member
То есть если у меня модуль перезагружается при отсутствии интернета/WiFi, то времени он не получает.
Решается ntp-серверами в локальной сети (как вариант, на роутере).
Хотя вцелом да, вариант менее надёжный, но более дешёвый.
Собственно это я больше к предложению "Итого в чем прелесть девайса, Леды через файфай зажигать?" - прелесть в том числе и в том, что часть функций можно реализовать с помощью удалённых устройств и эта возможность уже на борту.
 

abdurino

New member
,
Извините за оффтоп, на зачем прикручивать RTC-часы имея реализации ntp-клиента?
В теории к нему подойдут любые датчики,
пусть даже через сдвиговый регистр или ещё как. Ведь можно же как-то расширить количество пинов?

Там же все целиком заливается вместе с WiFi функциями. Называется ESP8266 core for Arduino IDE
Понятно. Зря конечно, если рассматривать отдельное программирование ESP то wifi будет как опция, часто не нужная. Не то чтобы я жадный... хотя )

I2C у ESP-шки реализуется на любых пинах. Поэтому при инициализации Wire необходимо указывать SGA, SCK
Wire.begin(4,5);
Не понимаю, почему вы мешаете в кучу Arduino IDE и LUA. Первый - это компилятор, создающий новую прошивку, второй - интерпретатор
При наличии нормального компилятора Си, использовать такие-то LUA и питоны грешно.
Вот смотрю сейчас на библиотеку LUA под время DS3231 - ну и для кого это всё?

Подскажите, если я надумаю таки переделывать библиотеки на ESP, куда податься? С цифровыми пинами вроде всё ясно, максимум PIND заменить на digital, а с аналоговыми где примеры посмотреть?
Хочется победить хотя бы время.

Код:
#define DS1307_CTRL_ID 0x68 
// 0110 1000

// Aquire data from the RTC chip in BCD format
bool DS1307RTC::read(tmElements_t &tm)
{
  uint8_t sec;
  Wire.beginTransmission(DS1307_CTRL_ID);
#if ARDUINO >= 100 
  Wire.write((uint8_t)0x00);
#else
  Wire.send(0x00);
#endif 
  if (Wire.endTransmission() != 0) {
    exists = false;
    return false;
  }
  exists = true;

  // request the 7 data fields   (secs, min, hr, dow, date, mth, yr)
  Wire.requestFrom(DS1307_CTRL_ID, tmNbrFields);
  if (Wire.available() < tmNbrFields) return false;
#if ARDUINO >= 100
  sec = Wire.read();
  tm.Second = bcd2dec(sec & 0x7f);  
  tm.Minute = bcd2dec(Wire.read() );
  tm.Hour =   bcd2dec(Wire.read() & 0x3f);  // mask assumes 24hr clock
  tm.Wday = bcd2dec(Wire.read() );
  tm.Day = bcd2dec(Wire.read() );
  tm.Month = bcd2dec(Wire.read() );
  tm.Year = y2kYearToTm((bcd2dec(Wire.read())));
#else
  sec = Wire.receive();
  tm.Second = bcd2dec(sec & 0x7f);  
  tm.Minute = bcd2dec(Wire.receive() );
  tm.Hour =   bcd2dec(Wire.receive() & 0x3f);  // mask assumes 24hr clock
  tm.Wday = bcd2dec(Wire.receive() );
  tm.Day = bcd2dec(Wire.receive() );
  tm.Month = bcd2dec(Wire.receive() );
  tm.Year = y2kYearToTm((bcd2dec(Wire.receive())));
#endif
  if (sec & 0x80) return false; // clock is halted
  return true;
}
 

aleknest

New member
,
В теории к нему подойдут любые датчики, пусть даже через сдвиговый регистр или ещё как.
Да напрямую подключаются. Ессно, если речь идёт, например, о ESP-12, а не о ESP-01.

,
Ведь можно же как-то расширить количество пинов?
В той же ESP-12 их больше 10-ка. Ну сдвиговым регистром да, можно всякими релюхами поуправлять.
Но зачем так масштабировать? При цене в 2 доллара можно раскидывать функции по устройствам, увязав это всё на одну точку доступа, или объявив одну из ESP-х точкой доступа.
 

abdurino

New member
имею е-12,
итого 4,5,2,16,14,12,13 итого 7 свободных пинов. Особо не разгуляешься )

По времени вопрос решил. Следующий DS18B20, посмотрим как пойдёт )
 
Последнее редактирование:

ElizarovDmitry

New member
Добрый день! Скажите, а для esp можно использовать библиотеки от ардуино или свои имеются? В общем, я пока разобраться не могу с чего начать. необходимо подцепить ir и rf передатчики. в ардумно это библиотеки IRremote и RemoteSwitch вроде. Чтобы реализовать все это проще работать через IDE?
 

abdurino

New member
Добрый день! Скажите, а для esp можно использовать библиотеки от ардуино или свои имеются? В общем, я пока разобраться не могу с чего начать. необходимо подцепить ir и rf передатчики. в ардумно это библиотеки IRremote и RemoteSwitch вроде. Чтобы реализовать все это проще работать через IDE?
если вы меня спрашиваете, то надо пробовать.
я пока доволен чипом, всё работат. и сколько не пишешь всё 200к заливается ) ещё минимум 300к, максимум 3300к свободно )
надо бы ещё затестить девайс на скорость... вот
 

sav-13

Member
Добрый день! Скажите, а для esp можно использовать библиотеки от ардуино или свои имеются? В общем, я пока разобраться не могу с чего начать. необходимо подцепить ir и rf передатчики. в ардумно это библиотеки IRremote и RemoteSwitch вроде. Чтобы реализовать все это проще работать через IDE?
Проще воспользоваться готовой прошивкой, где это уже реализовано. Например, как здесь
Использование Ардуино IDE и прочие SDK дают гибкость решения
 
Сверху Снизу