Передача управляющих команд между ардуиноподобными устройствами

dxf

✩✩✩✩✩✩✩
17 Апр 2020
47
2
@vortigont Уровни конечно надо согласовывать, через обычный делитель в данном случае, т.к. транзисторные не подходят. Хоть рисково, но я пробовал с ними и без, результат одинаковый.В комментариях автор больше указывал на несовпадение таймингов, тоже пробовал перебирать разные сочетания, но неудачно.
 

bort707

★★★★★★✩
21 Сен 2020
3,075
915
транзисторные не подходят
Это почему? Чудеса какие...
автор больше указывал на несовпадение таймингов
Насколько я помню, у вас передача идет через уарт? Тайминги уарта однозначно определяются параметром baudrate, если вы ставите его одинаковым на ЕСП и на Ардуино - никакие другие "тайминги" влиять не должны.
Вообще сотни людей связывают ЕСП и Ардуино между собой и у всех(большинства:) работает... ищите проблемы в своем коде, а не придумывайте нелепые причины.
 
  • Лойс +1
Реакции: poty

dxf

✩✩✩✩✩✩✩
17 Апр 2020
47
2
@poty, никак не поднимет, вы же знайте что его задача снизить напругу, что бы порт esp не сжечь, ограничивающий резистор тоже не забываем. 3.3.В для лог 1 ардуинки нормально.
@bort707, с транзисторными не работает при передаче по одному проводу при использовании этой библиотеки, проверял. В других проектах логические уровни транзисторные использовал с esp, работали нормально.
Судя по тому, что прочитал в комментах на гитхабе, в библиотеке 4 параметра регулируются и влияют на качество передачи сигнала. Спасибо конечно за ценные советы по юарт, но я знаний моих ответить не хватит, лучше зайдите сами посмотрите на гит хаб. И да я ничего не изобретал, а просто взял готовый пример.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
543
Saint-Petersburg, Russia
нашёл по ней бакалаврскую работу, там утверждается, что передачу данных можно осуществлять на расстояние 2 км, и стабильно на 1 км
кстати довольно интересный проект на самом деле.
Но, если вы читали внимательно, то автор использует две шины параллельно - одну общую CAN для передачи самих данных, а вторую на одном проводе и PJDL. Причем шины таких ДВЕ - на вход и на выход. Один провод он использует только для задачи определения если на 2м конце провода другое устройство и нужно ли включить терминатор для CAN. Т.е. шина на PJDL не общая на все устройства, а точка-точка и гоняются по ней только пакеты для определения наличия соседа. Я не понял чем вызвано такое решения задействовать отдельный контроллер и протокол для определения наличия устройства на 2м конце и почему эту задачу нельзя было решить электромеханическим способом. Но автору виднее, он судя по всему чел грамотный.
Про "километр" на тестах тоже все довольно мутно. Он пишет что тестировал, но представить себе витую пару сат5 в километр длинной между зданиями я могу только с большим трудом, т.к. по стандарту она тянет 150 метров. Кто и зачем мог бросить там такой кабель для меня загадка. Возможно это был или какой-то другой кабель и не факто что это была витая пара, подробностей в материалах нет.
 

bort707

★★★★★★✩
21 Сен 2020
3,075
915
Возможно это был или какой-то другой кабель и не факто что это была витая пара, подробностей в материалах нет.
Или просто взял три бухты по 305м, соединил последовательно и вот тебе "тест передачи на 1км" не выходя из комнаты:)
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,975
635
45
Про "километр" на тестах тоже все довольно мутно. Он пишет что тестировал, но представить себе витую пару сат5 в километр длинной между зданиями я могу только с большим трудом, т.к. по стандарту она тянет 150 метров.
100 метров, дальше не тянут из за помех. А километр он сделал скорее всего в бухте кусок кабеля в 250-300м, соединив последовательно пары.
 

dxf

✩✩✩✩✩✩✩
17 Апр 2020
47
2
@vortigont, да там совместно используется тоже понял, что для управления устройствами толи если отклика нет толи ещё чего. Там какая то университетская сеть описывается, хз что и как исполнено, и более 2 км автор не проверял так сеть кампуса длиной не более 2 км.
В 5 версии спецификации есть немного информации, но пока не ясно как к esp8266 применить это. Проверял между 5 шт ардуино, всё работает из коробки.
 

dxf

✩✩✩✩✩✩✩
17 Апр 2020
47
2
Что то никак не получается подружить arduino и esp8266. Пробовал менять параметры передачи/приёма для esp8266 описанные в файле
src/strategies/SoftwareBitBang/Timing.h
Может у кого есть какие идеи?
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
543
Saint-Petersburg, Russia
проверьте без пиджена на той же схеме просто подрыгать ногами видят ли изменения уровней оба контроллера. Что-то не очень понятно что вы намудрили с делителями вместо преобразователей уровня.
 

dxf

✩✩✩✩✩✩✩
17 Апр 2020
47
2
1--й опыт. Проверка работы платы согласования логических уровней.
Обе прошивки мк просто дёрганье ножек и изменение на это состояния светодиода.
Соединение ESP8266 (ножка D1) и Arduino (ножка 12) через конвертер логических уровней на транзисторах, у плат преобразователей входы/выходы подтянуты к высокому уровню через резистор 10кОм.
Передатчиком служила ESP8266, выполнялось изменение логического уровня ножки D1 со скважностью 2, длительность импульса 1 сек.
Приёмником являлась Arduino Nano, выполнялось изменение состояния встроенного светодиода при изменении логического уровня ножки 12.
Моделька работала корректно, сбоев не наблюдалось.

2-й опыт. Написан код для ESP8266 на отправку сообщения по протоколу PJON через конвертер уровней на транзисторах.
Канал передачи при использовании 1 провода по документации PJON должен быть подтянут к земле через резистор 0,8-5МОм. Преобразователи уровней построены так, что подтягивают ножку к высокому уровню через резистор 10кОм. Передача сообщения не идёт, на ножке D1 постоянно высокий уровень (измерялось осциллографом).
На ножке Arduino естественно тоже присутствовал постоянно уровень логической 1.
Если заменить ESP8266 на Arduino в качестве передатчика, то картина будет аналогичная. Т.е. применённые преобразователи уровня не подходят.

3-й опыт. Используется код для отправки сообщения от ESP8266 для включения/выключения светодиода на Arduino.
В качестве преобразователя уровня обычный делитель напряжения, но по схемке рекомендованной в документации к PJON.
https://github.com/gioblu/PJON/blob/master/src/strategies/SoftwareBitBang/README.md
Передача между ESP8266 и Arduino работает нестабильно, иногда приёмник пропускает переданный пакет данных.

Если использовать пример кода для анализа передачи данных, то судя по сообщениям в мониторе порта передача вообще не идёт. Но на осциллограмме импульсы видно, т.е. передача сообщений идёт, но ещё какая то помеха проскакивает, что это мне не ясно. https://github.com/gioblu/PJON/blob...cal/SoftwareBitBang/NetworkAnalysis/README.md