w5500 и SD модуль
- Войдите на сайт для отправки комментариев
Добрый день, уважаемые.
История такова - сделал я себе небольшой механизм на основании связки esp8266 и arduino nano для управления релюшками через вебсервер.. Как показала практика, модули esp8266-01 не обладают завидной живучестью и уходят в места вечной охоты примерно раз в пол года. Кроме того, wi-fi часто отваливался и когда вся эта гора металлолома сдохла я решил поменять wi-fi модуль на более надежный в плане связи ethernet 5500, рассудив, что технология древнее, а значит по-идее сделать будет проще. Как же я ошибался... Отдельным сексом оказалось подружить w5500 и SD карту. Не буду перечислять все железные сапоги которые пришлось износить, пока вся эта ахомудина завелась во имя буфера 74HC125. И тут начинается магия и шаманизм в чистом виде. Каждый раз, когда всю эту связку переношу с физического места на другое место w5500 теряется. Не вижу и все. Каждый раз танцы с бубном на час-полтора. По прохождении этого времени свершается сошествие духа небесного в мертвую силиконовую плоть и происходит чудо запуска. Самое свежее наблюдение - если скрутить провода от w5500-SD к mega2560 в косичку - работает только SD карта. Если провода распушить - все начинает работать. MISO, видимо очень тошнит от соседства с MOSI. Подскажите, как убрать порчу? может чего-нибудь резистором к питанию притянуть?
А схема соединений и фото сборки будут?
А то без схемы на вопрос
ЕвгенийП прав - без схемы ничего сказать невозможно.
Можно только гадать.
Увы, хрустального шара у меня нет, поэтому приходится на кофейной гуще: Вы используете отдельно модуль 5500 и отдельно модуль SD. Причем последний - с неправильно подключенными преобразователями уровня, препятствующими нормальной работе SPI.
Соединяю сетевой модуль и МК плоским шлейфом. Где-то читал, что в нем, по-науке, сигнальные проводники разделяются земляными, подключенным с одной стороны. Но у меня, на коротких риббонах, проблем не наблюдается и при хаотическим разбросе сигнальных.
Не знаю что там за бубны, у меня такая система вообще беспроблемно работает несколько лет.
только вот ресет на езернет шильд я программно дергаю из сетапа.
причем буфер для коммутации мисо от sd не нужен, там надо на шильде sd на буфере одну ногу поднять и на чипселект перекинуть.
Спасибо, я много раз натыкался на этот фокус, но мои кривые руки не способны на такую тонкую работу, поэтому нахожу более грубые методы. кроме того - схема работает, но не всегда. несколько раз перепиавал ее почти с нуля, но ведет себя - непредсазуемо. если уже работает и ее не трогать, то все стабильно. пока причинно/следственную связь не обнаружил. есть подозрение может слишком длинные провода и получается паразитная емкость, хотя... раньше были и короткие провода. результат тот же. грешил на плохой контакт в макетке. припаял все намертво. все тоже самое.
на модуле ESP-12E девайс функционирует уже два года, ни одного сбоя, опрос раз в минуту, запитываю через разъём USB
Спасибо, я много раз натыкался на этот фокус, но мои кривые руки не способны на такую тонкую работу, поэтому нахожу более грубые методы. кроме того - схема работает, но не всегда.
"Работает не всегда" и "не работает" - это одно и то же.
Скорее всего, дело именно в том, что упоминается в постах №2 и №5 - "кривая" схема преобразователей уровня на SD-модуле от китайцев, которая не дает повесить на SPI ничего кроме единственной SD-карты.
Фактически там выходы подключены друг к другу и работают по принципу "кто сильнее". В некоторых случаях оказывается, что "сильнее" тот, кто нужно, поэтому некоторая видимость работоспособности есть. Но надеяться, что такая система будет работать долго, не приходится - в любой момент может сгореть. Так что выбор невелик: либо перепаивать так, как указано в посте №5, либо использовать другой модуль SD (правда, не знаю, есть ли у китайцев "правильные" модули с преобразователем напряжения. Возможно, придется делать самому).
PS. Для 5100 такой проблемы не было, слот SD там был установлен на самой плате и схемотехника допускала параллельную работу 5100 и SD.
а 125 буфер от этого разве не спасает? или он болтается в воздухе, а там как получится?
подскажите. есть какие-то программные особенности работы с этими модулями, например делать ему ресет перед инициализацией или еще куда-нибудь может его дернуть для надежности? :)
я уже заинтригован. наверное таки нужно будет купить запасной сд-модуль и попытаться поковырять его паяльником )))
Не знаю что там за бубны, у меня такая система вообще беспроблемно работает несколько лет.
только вот ресет на езернет шильд я программно дергаю из сетапа.
причем буфер для коммутации мисо от sd не нужен, там надо на шильде sd на буфере одну ногу поднять и на чипселект перекинуть.
Вы имеете в виду, что 13 нога по схеме разведена на землю, а должно соответствовать сигналу на "ключе"?
на модуле ESP-12E девайс функционирует уже два года, ни одного сбоя, опрос раз в минуту, запитываю через разъём USB
Подскажите пожалуйста, как это у Вас удалось и какие модули подключены?
У меня проблема банальная, следую советам всего что написано на форуме, но нечего не получается. Возможно проблема в деталях, подскажите пожалуйста.
Есть NodeMCU (esp-12e). К нему подключен модель SD (https://3d-diy.ru/wiki/arduino-moduli/module-micro-sd-card-reader/ - как тут в самом начале) и NRF24L01. По отдельности всё работает отлично. Пробовал MISO SD карты подключать и через разные резисторы. С резистором 1кОм SD карта не определяется работает радио, с резистором 750 Ом, тоже самое. Пробовал с резистором 200 Ом, всё наоборот. Других резисторов под рукой не было.
Попробовал 74HC125, СS SD карты подключил на управляющий пин (1), MISO SD карты на вход (2), а MISO ESP на выход (3). SD карта работает, а радио нет. Проверил через "digitalRead(SD_CS_PIN)" состояние СS SD карты всегда "0". При инициализации радио и приёме пакета данных пробовал переводить СS SD карты в "высокое" состояние, результатов не принесло. Так как состояние всё время оставалось "0". Попробовал через While "достучаться" получил кучу непонятного текста и перезагрузку ESP.
Так же пробовал схему с 74HC125 если на управляющий пин кинуть землю. Но результат такой же.
"Вручную" отключить интерфейс SPI от SD карты не получается.
Да
эта нога по схеме держит буфер постоянно открытым, а надо его открывать только при работе с этим модулем, чтобы не гадить шину при работе с другими модулями на шине.
Да
эта нога по схеме держит буфер постоянно открытым, а надо его открывать только при работе с этим модулем, чтобы не гадить шину при работе с другими модулями на шине.
Вот в этом и часть вопроса. Не получается "гада" оторвать.
Возможно проблема в том что esp, как я понимаю, принимает сигналы 3v, а модуль SD питается от 5v. Но я кидал все пины модуля SD через модуль понижения сигнала с 5v до 3v. Но тогда зависает сам esp. Питаю напрямую то всё норм.
Даже когда модуль SD подключён отдельно, то есть возможность перевести CS в HIGH, но как только они работают вместе, то проблема.
NRF подключен через переходник, который позволяет подавать напряжение на него 5в.
Питание системы происходит от шилда для esp8266. Который запитан от USB компьютера.
Но не как не могу понять причину. Кто-то поделитесь реально работающей схемой подключения. Может я что-то не так подключил.
Темна вода в облацех…
у меня на дуе тоже CD и W5500 на одной шине не взлетели.
Насколько я помню, проблема с SD картой связана с тем, что китайцы намудрили с конвертером уровня. SD карта требует 3.3 В, esp8266 работает от того же напряжения, следовательно, конвертер уровней не нужен. Самое простое - использовать модуль SD, на котором нет активных элементов (стабилизатора напряжения и преобразователя уровня), примерно такой:
Можно также использовать переходник SD-microSD.
То есть практически напрямую, только вот от мисо cd отвешивается когда не используется?
то есть две sd можно ли подключить на одну 3.3 шинунапрямую с разведением по CS?
Попробовал 74HC125, СS SD карты подключил на управляющий пин (1), MISO SD карты на вход (2), а MISO ESP на выход (3).
Так же пробовал схему с 74HC125 если на управляющий пин кинуть землю. Но результат такой же.
ну что за глупость? Зачем было ставить буфер, если вы заземлили управляющий пин? Такое подключение буфера абсолютно бессмысленно... Подключите управляющий пин буфера к любому свободному пину и рулите им прямо из программы. Нужна СД карта - подключили ее MISO, не нужна - выключили
Попробовал 74HC125, СS SD карты подключил на управляющий пин (1), MISO SD карты на вход (2), а MISO ESP на выход (3).
Так же пробовал схему с 74HC125 если на управляющий пин кинуть землю. Но результат такой же.
ну что за глупость? Зачем было ставить буфер, если вы заземлили управляющий пин? Такое подключение буфера абсолютно бессмысленно... Подключите управляющий пин буфера к любому свободному пину и рулите им прямо из программы. Нужна СД карта - подключили ее MISO, не нужна - выключили
Землю кинул на управляющий пин 74HC125, то есть пин который открывает канал MISO для ESP. Или нужно заземлить CS с SD карты?
Пробовал как вы говорите. Но пин CS не переводиться в LOW, когда нужно. Он или всё время HIGH или LOW. Возможно это как-то связано с тем что питание у всех от шилда ESP. Попробую для модулей сделать отдельное питание. Как писал выше, если программно "достукиваться" до CS через цикл while, до виснет ESP и перегружается.
Насколько я помню, проблема с SD картой связана с тем, что китайцы намудрили с конвертером уровня. SD карта требует 3.3 В, esp8266 работает от того же напряжения, следовательно, конвертер уровней не нужен. Самое простое - использовать модуль SD, на котором нет активных элементов (стабилизатора напряжения и преобразователя уровня), примерно такой:
Можно также использовать переходник SD-microSD.
Тоже уже начинаю об этом задумываться. Сегодня попробую с отдельным питанием и ручным отключением CS, если неполучится то так и сделаю.
Модуль SD на фото в посте 4 и купленный в амперкоте - давит шину SPI. Нарисуйте схему - поймете...
Пробовал как вы говорите. Но пин CS не переводиться в LOW, когда нужно.
причем тут CS вообще? Я вам говорю подключить управляющий пин буфера 3125 к любому свободному пину МК - но не к CS и не к GND! - а к такому, который из программы можно переводить из LOW в HIGH и обратно.
не поняли еще?
Пробовал как вы говорите. Но пин CS не переводиться в LOW, когда нужно.
причем тут CS вообще? Я вам говорю подключить управляющий пин буфера 3125 к любому свободному пину МК - но не к CS и не к GND! - а к такому, который из программы можно переводить из LOW в HIGH и обратно.
не поняли еще?
Понял, но получилось без отдельного пина который контролит вход на буфере. Мой тупёж был в том что я буфер питал от 5в. А для esp8266 нужно было от 3-х.
Только теперь другая проблема нарисовалась)) Когда хочу зайти через ftp на SD карту, то не показывает файлы. Скорей всего нужно будет придумывать кнопку да бы переводить CS в HIGH да бы карта была "видна".
Скорей всего нужно будет придумывать кнопку да бы переводить CS в HIGH да бы карта была "видна".
а что уж у вас тогда "получилось" ???? Я вам уже два раза дал решение, только вы читать не умете
Скорей всего нужно будет придумывать кнопку да бы переводить CS в HIGH да бы карта была "видна".
а что уж у вас тогда "получилось" ???? Я вам уже два раза дал решение, только вы читать не умете
Возможно вы мой пост не дочитали, а сразу начали морали читать.
Получилось карту инициализировать и записывать на неё файлы. Если подключить флешку непосредственно к ПК, то файлы есть и они доступны, но при подключении через FTP к сд флешке, не видно файлов. Как я думаю, это потому что CS переходит в HIGH когда принимает данные по радио. Мои предположения были верны. Как только сделал кнопку, да бы CS переходит в LOW. То файлы становятся видны через FTP.
Как вариант, сделать кнопку на вебстранице для того чтобы можно было заходить на SD карту и качать файлы.
Всё работает как мне нужно. Но появилась другая проблема. На версии ядра esp8266 v2.7.1, не грузит вебсайт и при попытке зайти на него через браузер даёт Exeption (3) и уходит в перезагрузку. Хотя на последней версии всё работает, но тогда FTPServer не компилируеться, так как нужна версия v2.7.1.
Сейчас пытаюсь найти ошибку, возможно если кто знает в чём может быть проблема, подскажите пожалуйста!