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

RTL87xx Arduino

nicelight

Member
Люди совсем связь с реальностью потеряли. Никто вам ничего не должен... просто верх наглости конечно.
Каюсь. Постараюсь впредь не наглеть с высказыванием мыслей о том, что лучше уж ничего не писать, и направлять этот рессурс в развитие, или более серьезные ответы, чем тратить кучу времени на посты хвастовства))).
Вы поймите, вот у вас есть уровень какой то? У и у меня какой то есть. Мне хочется развиваться дальше и просто получать овтеты на вопросы, о том, в какую сторону гуглить и где искать ответы. Но чаще выходит, что от pvvx я получаю насмешки и прочие выше описаные "плюшки". Просто потому что я телепузик и не дорос. а Он шарит и может себе позволить смотреть сверху)). Каждое мое сообщение ему пишется в надежде что может сегодня он соизволит снизойти и написать более менее вменяемый ответ или ткнуть носом в место, где и как нагуглить ответ или где он уже об этом говорил) А выходит чаще тыканье носом в грязьку. :)
 

nicelight

Member
А давайте мы действительно краудфандинг попробуем организовать, для тех кто может найти на это время и просто может запилить поддержку чипов realtek ардуиновской средой, с портом некоторых основных библиотек. Пускай костыльную, но все же.. . я бы поддержал рублем точно! )
Ну и готов был бы перенять опыт, чтобы далее принимать участие в проекте и портировать оставшиеся либы и пр. самостоятельно.
 

Neov

Member
А давайте мы действительно краудфандинг попробуем организовать, для тех кто может найти на это время и просто может запилить поддержку чипов realtek ардуиновской средой, с портом некоторых основных библиотек. Пускай костыльную, но все же.. . я бы поддержал рублем точно! )
Ну и готов был бы перенять опыт, чтобы далее принимать участие в проекте и портировать оставшиеся либы и пр. самостоятельно.
Ему это не интересно. Интеллектуальная творческая личность, с крайне специфическим характером :)
 

Simon

Member
Каждое мое сообщение ему пишется в надежде что может сегодня он соизволит снизойти и написать более менее вменяемый ответ или ткнуть носом в место, где и как нагуглить ответ или где он уже об этом говорил) А выходит чаще тыканье носом в грязьку. :)
У кого-то здесь на форуме есть хорошая подпись "Чтобы правильно задать вопрос, нужно знать большую часть ответа." И это абсолютно верно. Видимо, вы еще не доросли до уровня, при котором можно задавать именно технические вопросы. Подумайте над этим.
А на "тыканье носом в грязьку" в интернете умные люди должны не обращать внимания, вы сюда за технической информацией пришли или так, языком почесать?
 

Simon

Member
А давайте мы действительно краудфандинг попробуем организовать, для тех кто может найти на это время и просто может запилить поддержку чипов realtek ардуиновской средой, с портом некоторых основных библиотек. Пускай костыльную, но все же.. . я бы поддержал рублем точно! )
А чем текущая rtlduino не устраивает? У меня все без проблем там работает, даже скучно. Мелкие ошибки(точнее, даже несоответствия реализаций) удалось отловить самому.
 

Pilnikov

Active member
А чем текущая rtlduino не устраивает? У меня все без проблем там работает, даже скучно. Мелкие ошибки(точнее, даже несоответствия реализаций) удалось отловить самому.
ESP8266WebServer - ПОРТИРУЙТЕ
Чтобы методы были такими-же
Код:
#######################################
# Methods and Functions (KEYWORD2)
#######################################

begin    KEYWORD2
handleClient    KEYWORD2
on    KEYWORD2
addHandler    KEYWORD2
uri    KEYWORD2
method    KEYWORD2
client    KEYWORD2
send    KEYWORD2
arg    KEYWORD2
argName    KEYWORD2
args    KEYWORD2
hasArg    KEYWORD2
onNotFound    KEYWORD2
RGBmatrixPanel.h от Adafruit туда-же
 

pvvx

Активный участник сообщества
Каюсь. Постараюсь впредь не наглеть с высказыванием мыслей о том, что лучше уж ничего не писать, и направлять этот рессурс в развитие, или более серьезные ответы, чем тратить кучу времени на посты хвастовства))).
Вы поймите, вот у вас есть уровень какой то? У и у меня какой то есть. Мне хочется развиваться дальше и просто получать овтеты на вопросы, о том, в какую сторону гуглить и где искать ответы. Но чаще выходит, что от pvvx я получаю насмешки и прочие выше описаные "плюшки". Просто потому что я телепузик и не дорос. а Он шарит и может себе позволить смотреть сверху)). Каждое мое сообщение ему пишется в надежде что может сегодня он соизволит снизойти и написать более менее вменяемый ответ или ткнуть носом в место, где и как нагуглить ответ или где он уже об этом говорил) А выходит чаще тыканье носом в грязьку. :)
Вы наверно не понимаете, что мне мне не понять того, что вы не знаете и ответ не построить. Приходиться действовать другими методами - разговорить, чтобы добраться до сути. Если диалог будет построен как у алкашей - Уважам, и я уважам, ... то до технической сути и конкретизации вопроса никогда не доходит. 90% вываливают что-то более твердое, только когда поставлены к стенке. :) Так-же советую вам посмотреть серьезные технические форумы или как решаются задачи у докторов наук при регулярных сборах на кухне... :)
 

Simon

Member
ESP8266WebServer - ПОРТИРУЙТЕ
Я бы рекомендовал "портировать" от ардуино, а не от есп. Какой-то самый простой оттуда работает. Там только есть особенности в реализации WiFiClient, которые довольно прозрачны, если посмотреть исходники. Для этого рекомендую поставить Sloeber (Eclipse), чтобы не мучиться с поиском по текстовым файлам вручную.
И опять подход в стиле "а ну-ка делайте мне". Откуда вообще это берется? Нет бы нормально расписать проблему(лаконично, четко, без вываливания никому ненужных избыточных простыней кода).
 

pvvx

Активный участник сообщества
Просто уже у многих возникает вопрос: "А стоило кашу то заваривать?"
А стоило вообще развиваться IoT? Темп то у него набирает обороты не по прямой, а в прогрессии. Так-же и варианты SoC от разных производителей будут далее выходить намного чаше, чем пишется представленная вами книжка. И как в этом наступающем фронте со всех дыр вы сможете удержаться и не быть откинуты в зад? В одиночку проекты в мегабайты нативных исходников никто давно уже не тянет. Вы же предлагаете мне убить всё время на разбор и пеработку 80 мегабайт СИ и прочих скриптов только в SDK к RTL871x. Если даже это проделать, на это уйдут годы в одиночку и за это время выйдет что-то более лучшее, созданное группами с финансированием и заинтересованностью. А я даже не программист, тем более не писатель художественной литературы... Подумайте сначала, что предлагаете... :)
 

Pilnikov

Active member
Я бы рекомендовал "портировать" от ардуино, а не от есп. Какой-то самый простой оттуда работает. Там только есть особенности в реализации WiFiClient, которые довольно прозрачны, если посмотреть исходники. Для этого рекомендую поставить Sloeber (Eclipse), чтобы не мучиться с поиском по текстовым файлам вручную.
И опять подход в стиле "а ну-ка делайте мне". Откуда вообще это берется? Нет бы нормально расписать проблему(лаконично, четко, без вываливания никому ненужных избыточных простыней кода).
Дайте лутче
пример малюсенькой в пару тройку элементов web морды на json или ajax с отображением парочки динамических данных, и возможностью ввода пары параметров.
И, возможно, не придется ничего портировать.

Вот это как реализовать?
Код:
void handleSetWiFi()
{
  serv_ms = millis();
  //url='/set_wifi?as='+as+'&ap='+ap+'&ss='+ss+'&sp='+sp;
  strcpy(conf_data.ap_ssid, server.arg(0).c_str());
  strcpy(conf_data.ap_pass, server.arg(1).c_str());
  strcpy(conf_data.sta_ssid, server.arg(2).c_str());
  strcpy(conf_data.sta_pass, server.arg(3).c_str());
  strcpy(conf_data.test, "ok");
  check_and_save_conf_data(conf_data);
  server.send(200, "text/html", "OK!");
}
 

pvvx

Активный участник сообщества
ESP8266WebServer - ПОРТИРУЙТЕ
Чтобы методы были такими-же
Код:
#######################################
# Methods and Functions (KEYWORD2)
#######################################

begin    KEYWORD2
handleClient    KEYWORD2
on    KEYWORD2
addHandler    KEYWORD2
uri    KEYWORD2
method    KEYWORD2
client    KEYWORD2
send    KEYWORD2
arg    KEYWORD2
argName    KEYWORD2
args    KEYWORD2
hasArg    KEYWORD2
onNotFound    KEYWORD2
RGBmatrixPanel.h от Adafruit туда-же
А зачем плодить тупиковый вариант? Основная причина - вы привыкли к нему? Это уже походит на наркоманию. :)
Данный сервер имеет методы не для многопоточных ОС (RTOS) и не имеет никаких перспектив в развитии. Его методы никак не годятся для класса устройств с 0.5...16 МБ памятью. Вот как нему прилепить HTTPS или другие современные развивающиеся методы HTTP/HTML5 и т.д.?
 

pvvx

Активный участник сообщества
И, возможно, не придется ничего портировать.
Вот это как реализовать?
Код:
void handleSetWiFi()
{
  serv_ms = millis();
  //url='/set_wifi?as='+as+'&ap='+ap+'&ss='+ss+'&sp='+sp;
  strcpy(conf_data.ap_ssid, server.arg(0).c_str());
  strcpy(conf_data.ap_pass, server.arg(1).c_str());
  strcpy(conf_data.sta_ssid, server.arg(2).c_str());
  strcpy(conf_data.sta_pass, server.arg(3).c_str());
  strcpy(conf_data.test, "ok");
  check_and_save_conf_data(conf_data);
  server.send(200, "text/html", "OK!");
}
Можно так:
Код:
      else ifcmp("ap_") {
         cstr+=3;
          ifcmp("ssid") {
             if(pvar[0]!='\0') {
                 int len = os_strlen(pvar);
                 if(len > sizeof(wifi_ap_cfg.ssid)) {
                     len = sizeof(wifi_ap_cfg.ssid);
                 }
                 else os_memset(wifi_ap_cfg.ssid, 0, sizeof(wifi_ap_cfg.ssid));
                 os_memcpy(wifi_ap_cfg.ssid, pvar, len);
#ifdef USE_NETBIOS
                 netbios_set_name(wifi_ap_cfg.ssid);
#endif
             }
          }
          else ifcmp("psw") {
             int len = os_strlen(pvar);
             if(len > sizeof(wifi_ap_cfg.password)) {
                 len = sizeof(wifi_ap_cfg.password);
             }
             else os_memset(wifi_ap_cfg.password, 0, sizeof(wifi_ap_cfg.password));
             os_memcpy(wifi_ap_cfg.password, pvar, len);
          }
          else ifcmp("chl")     wifi_ap_cfg.channel = val;
          else ifcmp("mcns")     wifi_ap_cfg.max_sta = val;
          else ifcmp("auth")     wifi_ap_cfg.security_type = (val)? RTW_SECURITY_WEP_PSK : RTW_SECURITY_OPEN;
          else ifcmp("hssid")     wifi_ap_cfg.ssid_hidden = val;
          else ifcmp("bint")     wifi_ap_cfg.beacon_interval = val;
#if LWIP_NETIF_HOSTNAME
          else ifcmp("hostname") {
               int len = os_strlen(pvar);
               if(len >= LWIP_NETIF_HOSTNAME_SIZE) {
                   len = LWIP_NETIF_HOSTNAME_SIZE-1;
               }
               os_memcpy(lwip_host_name[wlan_ap_netifn], pvar, len);
               lwip_host_name[wlan_ap_netifn][len] = 0;
               netbios_set_name(wlan_ap_netifn, pvar);
          }
#endif
          else ifcmp("dhcp")    wifi_ap_dhcp.mode = val;
          else ifcmp("ip")         wifi_ap_dhcp.ip = ipaddr_addr(pvar);
          else ifcmp("gw")         wifi_ap_dhcp.gw = ipaddr_addr(pvar);
          else ifcmp("msk")     wifi_ap_dhcp.mask = ipaddr_addr(pvar);
#if DEBUGSOO > 2
          else os_printf(" - none! ");
#endif
      }
      else ifcmp("st_") {
         cstr+=3;
          ifcmp("arec")     wifi_st_cfg.autoreconnect = val;
          else ifcmp("rect")     wifi_st_cfg.reconnect_pause = val;
          else ifcmp("ssid") {
             if(pvar[0]!='\0') {
                   int len = os_strlen(pvar);
                   if(len > sizeof(wifi_st_cfg.ssid)) {
                       len = sizeof(wifi_st_cfg.ssid);
                   }
                   else os_memset(wifi_st_cfg.ssid, 0, sizeof(wifi_st_cfg.ssid));
                   os_memcpy(wifi_st_cfg.ssid, pvar, len);
             }
          }
          else ifcmp("psw") {
             int len = os_strlen(pvar);
             if(len > sizeof(wifi_st_cfg.password)) {
                 len = sizeof(wifi_st_cfg.password);
             }
             else os_memset(wifi_st_cfg.password, 0, sizeof(wifi_st_cfg.password));
             os_memcpy(wifi_st_cfg.password, pvar, len);
          }
          else ifcmp("auth")     wifi_st_cfg.security_type = val;
          else ifcmp("bssid")     strtomac(pvar, wifi_st_cfg.bssid);
          else ifcmp("sbss")     wifi_st_cfg.flg = val;
#if LWIP_NETIF_HOSTNAME
          else ifcmp("hostname") {
               int len = os_strlen(pvar);
               if(len >= LWIP_NETIF_HOSTNAME_SIZE) {
                   len = LWIP_NETIF_HOSTNAME_SIZE-1;
               }
               os_memcpy(lwip_host_name[wlan_st_netifn], pvar, len);
               lwip_host_name[wlan_st_netifn][len] = 0;
               netbios_set_name(wlan_st_netifn, pvar);
          }
#endif
          else ifcmp("dhcp")     wifi_st_dhcp.mode = val;
         else ifcmp("ip")         wifi_st_dhcp.ip = ipaddr_addr(pvar);
          else ifcmp("gw")         wifi_st_dhcp.gw = ipaddr_addr(pvar);
          else ifcmp("msk")     wifi_st_dhcp.mask = ipaddr_addr(pvar);
Итого примерно, в первой версии, чисто для отладки:
https://esp8266.ru/forum/attachments/snimok1393-gif.3999/
ЗЫЖ Даже картинку некогда поменять, а вы уже хотите всё готовое... :)
Вот пока это лепил, нашел с десяток сурьезных ошибок в SDK, благо исходники есть и можно поправить...
Вот вы бы поправили для начала безобразие от Ameba с настройкой пинов в wiring_digital.c. Там не сложно - надо всё выкинуть и написать проще и правильнее. А то оно не работает, вообще - повторно не переключает направления пинов и их режимы. Амебщики там даже вставили digitalChangeDir(), т.к. поняли что их код не работает.
RtlDuino/wiring_digital.c at master · pvvx/RtlDuino · GitHub
 
Последнее редактирование:

pvvx

Активный участник сообщества
Кто расскажет, почему в Дурине пишем pinMode(_pinData, OUTPUT_OPENDRAIN);
Далее выводим в порт HIGH (!), а получаем LOW уровень на пине! digitalWrite(_pinData, HIGH)
Это кто так придумал? Где его найти?
 

Юрий Ботов

Moderator
Команда форума
Кто расскажет, почему в Дурине пишем pinMode(_pinData, OUTPUT_OPENDRAIN);
Далее выводим в порт HIGH (!), а получаем LOW уровень на пине! digitalWrite(_pinData, HIGH)
Это кто так придумал? Где его найти?
Мне кажется такова логика классического ардуинщика: "LOW на открытом коллекторе - значит лампочка загорится, значит HIGH"
 

A_D

Active member
Кто расскажет, почему в Дурине пишем pinMode(_pinData, OUTPUT_OPENDRAIN);
Далее выводим в порт HIGH (!), а получаем LOW уровень на пине! digitalWrite(_pinData, HIGH)
Это кто так придумал? Где его найти?
это вроде во всех АРМах так, я как на наших 1986ВЕ9х так и на STM32 с этим сталкивался (вот пример использования на STM32) - логика простая, просто активен только нижний полевик и его вход не инвертирован, дали HIGH - он открылся и притянул к земле выход.
 

Pilnikov

Active member
Можно так:
Итого примерно, в первой версии, чисто для отладки:
https://esp8266.ru/forum/attachments/snimok1393-gif.3999/
ЗЫЖ Даже картинку некогда поменять, а вы уже хотите всё готовое... :)
RtlDuino/wiring_digital.c at master · pvvx/RtlDuino · GitHub
Сложновато конечно, но если с комментами и оформить в виде примера (законченного) то подет.
А по поводу привыкания и наркоты - это в корне не так! Я за любой шухер лишь бы работало.
Мне показали так, я попробывал - у меня получилось - малость разобрался (не вдаваясь глубоко) - приспособил под свою задачку - profit!
А контроллер поменялсо - все, слазь, конечная! я по другому просто не умею.
У нас, у телепузиков, ведь как - нам лишь бы слепить побырому, а из чего и как это только гуру кухни в курсах.
 

pvvx

Активный участник сообщества
И c такой логикой подобие i2c не сделать. Инверсия при "Открытом Коллекторе", даже на чтение, а переключение на ходу направления "вход/выход" не работает, тем более его не стоит применять при мультизадачке - неизвестно и на сколько прервется процесс и будет КЗ.
В итоге - на вумной логике Дуринщиков ничего не сделать и завязываем с Arduino.
Оставляем её для 8-ми битных MCU. Нехай покоиться в них. :p
 

pvvx

Активный участник сообщества
Зачем и-квадрат на открытом коллекторе? И, вроде, пример с LCD по IIC уже есть и работает.
Опять панику наводите.
Все LCD и прочие панели у меня на SPI.
Ножкой хочу дрыгать - не выходит. Вы же не починили простые функции установки направлений GPIO на ввод и вывод (баги от Ameba) и не поставили других ядер CPU на исполнение других потоков, для выделения одного для обработки исключительно одного непрерывного потока по алгоритмам Arduino.
У меня, к примеру, висят на двух проводках микрухи типа SHT7x и прочие I2C. Те, ктороые I2C опрашиваются аппаратным I2C, а вот другие имею сигнал готовности и прочие. В них надо нагнать битики, переключая направление и следить что уровень на линиях не опущен и т.д. Вот не выходит. Процесс ногдрыга прерывается другими задачами, а они на линииях выставляют всякие сигналы и выходит КЗ. Резисторы городить не могу - частоты I2C к мегагерцу...
Так-же, в стандарте (!) I2C, CLK и SDA могут быть притянуты к gnd устройством, что означает "занято" и подобное. Аппаратный I2C у RTL это всё понимает и работает только в режиме "Открытый коллектор", а вот ногодрыгом не выходит...
Вам же партия и правительстово доверило ремонт кода ногодрыга от Ameba и даже указало конктетный файл. Ну а пока вы его не починили - никаких изменений и продолжений в развитии Arduino не будет. На этом жирная точка в Arduino + RTL871x.
Считайте это блажью или ещё чем, но более легкой сторонней задачи для проверки вопроса "а нужна ли Arduino на RTL871x народу" я не нашел.
Тама ещё @nicelight рвался в бой - кооперируйтесь, ищите кого или сами. Когда почините, представите работающий код в любом виде, тогда и буду думать дальше :) Других то желающих иметь Arduino на RTL нет. Вас всего 2 человека.
В API к SDK переключения I/O работают изумительно, в Mbed к RTL - тоже.
 
Последнее редактирование:
Сверху Снизу