Arduino Mega Server для ESP32

Модератор: Alex

eGorka
Сообщения: 182
Зарегистрирован: Чт ноя 24, 2016 10:47 am
Благодарил (а): 5 раз
Поблагодарили: 25 раз

Re: Arduino Mega Server для ESP32

Сообщение eGorka » Сб июл 15, 2017 9:22 pm

Не, не запускал, со своим развлекаюсь.
СпойлерПоказать
spiffs.PNG
spiffs.PNG (53.23 КБ) 6363 просмотра
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Arduino Mega Server для ESP32

Сообщение alexsis_76 » Пн июл 17, 2017 1:10 am

error: 'NOP' was not declared in this scope
что такое NOP?
см функцию spiTrans
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server для ESP32

Сообщение serghei » Пн июл 17, 2017 7:34 am

Я подразумеваю , что NOP , это нет операции. Тут засада для меня гораздо глубже. Для 8266 я просто скопировал код для NRF24 и вставил в AMS и все скомпилировалось и заработало.
С ЕСП32 такой фокус не сработал из-за <avr/pgmspace.h> и других не соответстрий в драйверах.Как переписывать библиотеки под дрова я пока не знаю.
И работа с SD картой то же по другому организована.Пока файлы записать на карту не знаю как.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
eGorka
Сообщения: 182
Зарегистрирован: Чт ноя 24, 2016 10:47 am
Благодарил (а): 5 раз
Поблагодарили: 25 раз

Re: Arduino Mega Server для ESP32

Сообщение eGorka » Пн июл 17, 2017 9:03 am

serghei писал(а):И работа с SD картой то же по другому организована.Пока файлы записать на карту не знаю как.

Код: Выделить всё

File file = SD.open("/test.txt", w);
file.print("test");
file.close(); 
???
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server для ESP32

Сообщение serghei » Пн июл 17, 2017 9:23 am

Так не пробовал.В тестовом примере для карты запись и чтение файлов работает. Я просто не доганяю как это адаптировать для 32.Тут ещё надо сформировать дату и значение переменной.Вечером попробую подробней написать, с планшета код не вставить.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Arduino Mega Server для ESP32

Сообщение alexsis_76 » Пн июл 17, 2017 11:44 am

Я подразумеваю , что NOP , это нет операции
мне честно говоря сложно представить использование NOP в таком контексте ,загляни в spiTrans
что она принимает
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server для ESP32

Сообщение Alex » Пн июл 17, 2017 5:27 pm

И работа с SD картой то же по другому организована.Пока файлы записать на карту не знаю как.
Я в шоке. :? В дистрибутиве AMS для ESP32, в модуле SD есть код для любых манипуляций с файлами. АМС его не использует и я его закомментировал, но оставил (видать специально для вас). :)
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server для ESP32

Сообщение serghei » Пн июл 17, 2017 11:21 pm

Я сам от себя в не меньшем шоке ( из - за проблем с головой и памятью 15 лет назад ). Только благодаря Вашим урокам и помощи форумчан что то стало получаться.
Закоментированный код карты - это первый скетч , который запустил на ESP32. Всё чудесно работало. Сейчас перепроверил код Ser009, если руками подставить готовый файл , то он откроется правильно. Значит AMS-32 умеет работать с файлами .csv , но файл пока не создается. Чтобы его создать , должно произойти событие и записаться на карту. У Дуи это место рядом с
СпойлерПоказать

Код: Выделить всё

  timeStamp();
  Serial.print("GLOBAL Init DONE (");
  Serial.print(millis() / 1000);
  Serial.println(F("s)\n"));
  timeStamp();
  Serial.print("AMS WORK "); 
  //printFreeMem(); 
  Serial.println();

MessText = "Перезапуск AMS";   // текст сообщения
MessLoger(String (MessText), String(Info)); // тип сообщения
} // setup       
В ESP32 подобных мест два: первый в конце setup
СпойлерПоказать

Код: Выделить всё

  #ifdef FEATURE_LEDS
    initLeds();
  #endif
  #ifdef FEATURE_KEYS
    initKeys();
  #endif

  #ifdef ROBOTDYN_FEATURE
    initRobotdyn();
  #endif

  #ifdef FEATURE_DHT
    initDHT();
  #endif

  printInitDone();

//============================================
MessText = "Перезапуск AMS_ESP32";
MessLoger(String (MessText), String(Info));

//==============================================

} // setup    
И во вкладке Common
СпойлерПоказать

Код: Выделить всё

void printInitDone() {
  Serial.print(F("GLOBAL Init DONE (")); Serial.print(millis() / 1000); Serial.println(F("s)"));
  Serial.println();
  Serial.println(F("AMS WORK"));
  timeStamp(); printFreeMem("");

  //============================================
//MessText = "Перезапуск AMS_ESP32";
//MessLoger(String (MessText), String(Info));

//==============================================

}

// Lifer

byte lifer;
Сам код для логгера событий
СпойлерПоказать

Код: Выделить всё

/*
  Modul Message ver 0.1
  part of Arduino Mega Server project
  Модуль архивных сообщений
  для Ардуино Мега Сервер
*/

/* Создает запись в файле *.csv 
 * Необходимо передать функции:
 * MessText - название сообщения
 * MessType - тип сообщения
*/

void MessLoger(String MessText, String MessType){
  
// собираем Имя путь и имя файла
String MessName;
     //MessName+="/Alarm/";
     if(day()<10)
       MessName+="0"+String(day(),DEC);
     else
       MessName+=String(day(),DEC);
     if(month()<10)
       MessName+="-0"+String(month(),DEC);
     else
       MessName+="-"+String(month(),DEC);
       MessName+="-"+String(year()-2000,DEC);
       MessName+=".csv";

     File file = SD.open(String (MessName), FILE_WRITE);
        if(file){
        if(day() < 10) {file.print('0');}
        file.print(String (day()));
        file.print("-");  
        if(month() < 10) {file.print('0');}
        file.print(String (month()));
        file.print("-");
        file.print( String (year()));
        file.print(",");
        if(hour() < 10) {file.print('0');}
        file.print( String (hour()));
        file.print(":");
        if(minute() < 10) {file.print('0');}
        file.print(String (minute()));
        file.print(":");
        if(second() < 10) {file.print('0');}
        file.print(String (second()));
        file.print(",");
        file.print( String (MessText));
        file.print(",");
        file.println( String (MessType));
        file.close();
        }
        else{}
} 
Может просто не туда вставляю вывод текста и файл не создается ? Ещё раз - если файл закинуть на карту руками - он отображается
СпойлерПоказать
ARH_32.jpg
ARH_32.jpg (170.98 КБ) 6237 просмотров
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
eGorka
Сообщения: 182
Зарегистрирован: Чт ноя 24, 2016 10:47 am
Благодарил (а): 5 раз
Поблагодарили: 25 раз

Re: Arduino Mega Server для ESP32

Сообщение eGorka » Чт июл 20, 2017 7:34 am

serghei писал(а):Я подразумеваю , что NOP , это нет операции. Тут засада для меня гораздо глубже. Для 8266 я просто скопировал код для NRF24 и вставил в AMS и все скомпилировалось и заработало.
С ЕСП32 такой фокус не сработал из-за <avr/pgmspace.h> и других не соответстрий в драйверах.Как переписывать библиотеки под дрова я пока не знаю.
Описание решения проблемы.
За это сообщение автора eGorka поблагодарил:
serghei (Чт июл 20, 2017 9:44 am)
Рейтинг: 1.16%
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server для ESP32

Сообщение serghei » Чт июл 20, 2017 9:44 am

Библиотеку нашел сразу и переименовал первым делом. Дальше буду разбираться в выходные. Спасибо !

Как оказалось не все так просто в Датском королевстве. Смысл ошибки в гуглопереводе
Проблема здесь в том, что библиотека ESP32 и RF24 имеет одно и то же имя макроса, NOP так что компилятор не знает, что заменить где.

В этом случае проще сменить библиотеку RF24, чем ESP32, потому что она появляется меньше раз и никогда не является хорошей идеей переименовать что-нибудь из ядра ESP32

Таким образом, в RF24 он объявлен RF24-master\nRF24L01.h и используется только в строке 176 файла RF24-master\RF24.cpp, одним из способов является переименование этого макроса, а другой способ просто заменить это имя идентификатора на значение напрямую.
Вы можете переименовать «NOP» во всю библиотеку RF24
или
просто удалить его и заменить: status = SPI.transfer( NOP );на status = SPI.transfer( 0xFF );
Заменил и посыпались ошибки компилятора
nrf24.ino: In function 'void setNotRequired(Sender*)':
nrf24.ino:104:4: error: invalid use of incomplete type 'struct Sender'
arduino_mega_server_esp32sd.ino:208:28: note: forward declaration of 'struct Sender'
nrf24.ino: In function 'void setPacketType(Sender*, byte)':
И целый букет дальше.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Ответить