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

ESP+MEGA2560+SD

Alekseykok

New member
Добрый день! Столкнулся вот с какой проблемой - коряво сохраняет файл на флешку.
Танцы с бубном начались на Atmega328p, там я использовал SoftwareSerial. Для начала содержимое файла выводил прямо в терминал. Пробовал разные скорости, даже при маленьких файлах проскальзывали артефакты. Потом стало ясно, что SoftwareSerial не сможет работать даже на скорости 9600. Схема была переделана на MEGA2560, у которой аж 3 дополнительных железные порта. После небольших тестов стало ясно, что оптимальная скорость общения ESP и Mega это 19200. Все складывалось в мою пользу, в терминале ошибок не было, потом прикрутил запись на флешку - проблем тоже не возникало. До сегодняшнего дня, когда я попытался передать не 15кб как до этого тестировал, а 50кб файл. Начали опять проскальзывать артефакты даже при простом выводе в терминал. При попытке записи на SD карту - артефактов было не больше, чем при простом выводе в терминал. Есть идеи, с какой стороны зайти? Я читал, что скорость записи на SD карту по SPI не велика, но считаю что не тут затык, т.к. в терминале такие же ошибки!
 

Alekseykok

New member
Ах да, под понятием артефактов имею ввиду:
Оригинальная строка:
:101850001F93CF93DF93EC01890141155105610579
Прилетает:
:101850001F93CF93DF93EC01890 41155105610579 (пропуск в один байт)
 

Alekseykok

New member
Я смотрю в сторону "несогласованности скоростей". Думаю ESP жарит быстрее, чем MEGA принимает. В том плане, что качает ESP файл быстро, отдает медленно, что-то с буфером ESP ???
 

Alekseykok

New member
Код элементарный, отправить GET запрос, а потом слушать порт и выводить все, что туда прилетает
 

Victor

Administrator
Команда форума
Код элементарный, отправить GET запрос, а потом слушать порт и выводить все, что туда прилетает
да, только если вы это делаете на AT прошивке годовалой давности, то обречены на неудачу.
Кроме того, много раз уже обсуждалось на форуме, что AT прошивка, да еще в связке с Arduino - это тупиковый путь, хоть и работает "в принципе"
 

Alekseykok

New member
AT version:0.23.0.0(Apr 24 2015 21:11:01)
SDK version:1.0.1
Ну оккэй, если не AT прошивка - то что? Есть смыл вообще ESP ковырять или искать замену?
 

Victor

Administrator
Команда форума
если не AT прошивка - то что?
у нас весь форум посвящен именно этому вопросу (вариантов реально много) - каждый выбирает то, что ему больше подходит
Есть смыл вообще ESP ковырять или искать замену?
практически любую задачу можно решить разными способами, но ESP8266, чаще всего, дешевле по стоимости железа. По другим критериям могут быть лучше другие варианты. Кто-то выбирает ESP8266 за низкую цену и готов потратить время на изучение вопроса, а кому-то нужно сделать быстро и на тех технологиях с которыми он уже знаком, несмотря на стоимость - так что решать вам.
 

Alekseykok

New member
Уважаемый Виктор! Несомненно, у вас много опыта в этой области, может подскажите прошивку с документацией и хорошей стабильностью на прием\передачу файлов на Arduino? Время готовы тратить, но думаю ковырять каждую прошивку и написания под нее кода + проверки слишком много времени отнимут!
 

Victor

Administrator
Команда форума
Уважаемый Виктор! Несомненно, у вас много опыта в этой области, может подскажите прошивку с документацией и хорошей стабильностью на прием\передачу файлов на Arduino? Время готовы тратить, но думаю ковырять каждую прошивку и написания под нее кода + проверки слишком много времени отнимут!
Если учитывать ваш опыт с Arduino (исходя из того, что вы используете MEGA2560) попробуйте ESP8266 + SD шилд (без использования каких-либо плат Arduino) и сделать прошивку для ESP8266 в среде Arduino IDE для ESP8266. Библиотека для SD.
А если нужно что-то готовое, то придется поискать здесь из более чем 3000 проектов
 

Alekseykok

New member
Дело в том, что ESP используется только для связи, MEGA2560 выбрана не спроста, т.к. ее возможностей впритык хватает. Можно конечно попробовать SD подключить к ESP, чтобы напрямую писать файлы, но как потом мегой доступ к ней получить? Если через терминал ESP доступ получать, то больше кода и меньше стабильности будет. Дилемма
 

Alekseykok

New member
Нету у ESP такого количества вводов\выводов, так же к этой меге подключится sim800.....
 

Alekseykok

New member
Вроде победил. Написал все с 0 но с необходимыми проверками (например, в какой момент передача остановилась и можно файл закрыть) Файл 1200 строк по 44 символа в строке
1) Подключил напрямую к компу через PL2303 ESP8266 Config - после форматирования файлы совпали (убрал IPD и лишние переносы кареток)
2) Подключил к MEGA2560, сделал чтобы сразу в терминал шло без проверок - все ок
3) Сделал проверку, когда надо закрывать файл, но выдавать в терминал. Сейчас сделано громоздко, аля startswith - все ок
4) Убрал вывод в терминал - поставил запись в файл. Все, все поломалось. И отрывок из памяти прилетел, что кто-то писал про SD: надо форматировать под размер кластера 32КБ, скорость возрастет и БАЦ! все ок. Ну по крайней мере 2 раза из 3. Один раз вывалила ошибку WiFi Disconnect. сейчас прикручу автоматическое форматирование файла, а то 1200 строк устал вручную править)))
 

Alekseykok

New member
Вроде у меня все нормально работает уже год в связке atmega32-esp, так что если что пишите.
Ну с такими задачами у нас справляется на УРА, но вот передача файлов уже проблема. Вчера пробовали передать файл 200кб, опять проблема лезет, пропускает в 2х местах по три строчки. Предполагаю что между пакетами, или конец старого или конец нового. Будем дальше с бубном танцевать, думаю победим...... надо еще библиотеку SD ковырнуть. Интересно, в старой версии IDE при работе с SD используется только одна библиотека - SD, а на новой SD и SPI
 

Alekseykok

New member
Ладно, эксперимент продолжался. Попробовали файлик передать 186kb. Начались опять пропуски. Неделя (занимался по мере возможности) танцов с бубном, упрощения кода и т.д. к положительным результатам не привели. Решение пришло неожиданно - поменяли флешку на 2GB 6 Class фиг знает какого производителя. Итог - ВСЕ проблемы ушли, в т.ч. передавали файлик 715кб - проблем НЕТ.
Делаю выводы - ATMEGA2560 замечательно работает с ESP8266 AT прошивка v0.23. Единственное, чтобы перестраховатся перед каждым действием с ESP даю команду ему AT+RST и жду 3 секунды. Скорость работы 19200, сидит на Serial1
Удачи господа!
 

Tolyan

New member
Ребята покажите пожалуйста пример кода для связки ESP+MEGA2560+SD.
Нужно с компа забрать файл тот который на SD.
Какую прошивку залить на ESP ?
 
Сверху Снизу