rf-433 раз в сутки начинает считывать только первый символ сообщения.
- Войдите на сайт для отправки комментариев
Добрый день, уважаемые форумчане. Хотел сделать сигнализацию подвала на rf-433 (самый дешевый из них). Иногда начинались сбои в работе. Включил через монитор порта отслеживание порта. В итоге после того как происходит такой сбой начинает принимать не слово (например "GOD" а просто символ "G". Принимал абсолютно каждый посыл, без пропусков, но почему-то только первый символ.. Думал шумы, помехи, но ведь доходили совершенно все сигналы (первая буква их). К тому же я походил по комнате в поисках полного сигнала, но безуспешно, только первая буква и всё. А после сброса ардуины-приёмника сразу же опять начинало принимать полностью сигналы. Использовал библиотеку VirtualWire. питание от 18650 и ардуины и приемника (параллельно постоянно подзаряжаемой от блока питания телефонного или USB через плату подзарядки liion) .
текст прошивки (отрывок, зацикленный):
выкладывайте полный код
я за 5 лет второй раз обращаюсь. Первый раз причем мне нахамили и не помогли в итоге. Не удивлюсь если снова так будет.
я за 5 лет второй раз обращаюсь. Первый раз причем мне нахамили и не помогли в итоге. Не удивлюсь если снова так будет.
прочитайте прикрепленную тему в Песочнице - первое и второе сообщение. Вставьте код правильно. Без этого с Вами никто разговаривать не будет.
Спасибо за рекомендацию! исправил (см. ранее). Заранее извиняюсь что не сделал так сразу.
byby22 - вот вы опять скажете, что вас троллят - но это не код... а просто какая-то помойка. Вы специально старались отформатить его так, чтоб было максимально неудобно разбираться? - неужели так трудно правильно расставить отступы и скобки, поместить по одному оператору на строчку? Вставить пробелы между членами логических выражений?
А если по делу -насколько я могу разобраться в этой каше - проблема на стороне передатчика. Думаю, его код нужен тоже. Но если там такая же жуть намешана - с вероятностью процентов 80% никто не полезет копаться в этой куче бессмысленных букв
byby22 - вот вы опять скажете, что вас троллят - но это не код... а просто какая-то помойка. Вы специально старались отформатить его так, чтоб было максимально неудобно разбираться? - неужели так трудно правильно расставить отступы и скобки, поместить по одному оператору на строчку? Вставить пробелы между членами логических выражений?
А если по делу -насколько я могу разобраться в этой каше - проблема на стороне передатчика. Думаю, его код нужен тоже. Но если там такая же жуть намешана - с вероятностью процентов 80% никто не полезет копаться в этой куче бессмысленных букв
Попытка не пытка. Может кто попадется отзывчивый, например посоветует контроллер поменять или плату заэкранировать или еще какие-нибудь предположения. В передатчик не лезу уже неделю-он безошибочно вещает, это подтверждено тем, что после сброса контроллера приемника он по прежнему работает почти полные сутки без сбоев, именно после перегрузки контроллера. Я просто ищу может у кого была похожая проблема? Может тонкость есть там какая-нибудь, например буфер какой-нибудь переполняется к примеру-я ведь в этой библиотеке не совсем ориентируюсь.
byby22 - вот вы опять скажете, что вас троллят - но это не код... а просто какая-то помойка. Вы специально старались отформатить его так, чтоб было максимально неудобно разбираться? - неужели так трудно правильно расставить отступы и скобки, поместить по одному оператору на строчку? Вставить пробелы между членами логических выражений?
А если по делу -насколько я могу разобраться в этой каше - проблема на стороне передатчика. Думаю, его код нужен тоже. Но если там такая же жуть намешана - с вероятностью процентов 80% никто не полезет копаться в этой куче бессмысленных букв
Попытка не пытка. Может кто попадется отзывчивый,
Попытка не пытка. Может кто попадется отзывчивый
Вместо того, чтоб ждать "отзывчивого" - может все-таки сделаете над собой усилие и поможете тем, кто будет влезать в ваш код? стоило бы для начала код "причесать", чтобы его можно было читать нормально. Мне кажется, что у вас проблема с вложенностью циклов (то есть условия вложены неправильно) - но, повторюсь, в этой каше разобраться тяжело.
byby22 - вот вы опять скажете, что вас троллят - но это не код... а просто какая-то помойка. Вы специально старались отформатить его так, чтоб было максимально неудобно разбираться? - неужели так трудно правильно расставить отступы и скобки, поместить по одному оператору на строчку? Вставить пробелы между членами логических выражений?
А если по делу -насколько я могу разобраться в этой каше - проблема на стороне передатчика. Думаю, его код нужен тоже. Но если там такая же жуть намешана - с вероятностью процентов 80% никто не полезет копаться в этой куче бессмысленных букв
Попытка не пытка. Может кто попадется отзывчивый,
Спасибо за бесполезно потраченое время!)
Спасибо за бесполезно потраченое время!)
а вы не юродствуйте, а лучше слушайте советы
Попытка не пытка. Может кто попадется отзывчивый
Вместо того, чтоб ждать "отзывчивого" - может все-таки сделаете над собой усилие и поможете тем, кто будет влезать в ваш код? стоило бы для начала код "причесать", чтобы его можно было читать нормально. Мне кажется, что у вас проблема с вложенностью циклов (то есть условия вложены неправильно) - но, повторюсь, в этой каше разобраться тяжело.
цикл там всего один. и ошибку я проверяю всего парой строчкой:
и читаю что он поймал. Так вот, когда он не "глючит"-монитор порта пишет полностью сообщения, а после того как глюканет-в монитор порта выводятся только первые буквы сообщения. Ну а скетч полностью Вы зачем-то попросили, зачем вам вдаваться в его подробности мне лично вообще не понятно совсем, но раз Вы попросили-я его предоставил. В любом случае СПАСИБО за то что не прошли мимо.
ну не хотите - как хотите. Вы за 5 лет не только код вставлять, но и вопросы правильно задавть не научились.
ждите отзывчивого
byby22, Для ловли подобной ошибки скетч нужен как можно более короткий, но рабочий. По-этому, кусочка из начального сообщения мало, а полного скетча много. Вы бы оставили в скетче только инициализацию приёмника и в лупе две строчки из сообщения #12. Посмотрели, воспроизводится ошибка или нет. Стало бы понятно - имеет значение остальной код или нет. Дальше, возможно, с передатчиком то же самое сделать нужно будет. Надо как-то локализовывать ошибку.
kalapanga - не вполне согласен. У него в коде сообщение читается как минимум в 2х местах (если не в трех - ХЗ что разберешь в этой мешанине), причем одно чтение вложено в другое. Так что сдается мне. что глюк надо искать в полном коде.
А обозначенного маленького куска в конечном коде ВООБЩЕ НЕТ...
Это я видел. Написано конечно неудачно. И сообщения в двух местах читаются и while ещё там, в котором тоже небось застрять можно. Вот я и предлагаю оставить в скетче одно единственное чтение с выводом в порт. А то может передатчик, в котором автор так уверен, всё-таки не дело передаёт. Так хоть его отсеем.
kalapanga - не вполне согласен. У него в коде сообщение читается как минимум в 2х местах (если не в трех - ХЗ что разберешь в этой мешанине), причем одно чтение вложено в другое. Так что сдается мне. что глюк надо искать в полном коде.
А обозначенного маленького куска в конечном коде ВООБЩЕ НЕТ...
количество мест в которых встречается прием можно посчитать, воспользовавшись Ctrl+F.
Очевидно что их всего 2 шт. И на мой взгляд очевидно что функцию отправки на монитор порта я оставил за комментариями, чтобы вас не отвлекать, но если присмотреться, то эта функция присутствует практически сразу же после каждого из 2-ух мест приёма сообщения (чтобы я не пропускал ни одного из входящих сообщений). Ну а одно вложено в другое, т.к. по алгоритму я так решил. И сам код рабочий-он у меня работает и срабатывает (причем не однократно проверян), но раз в сутки где-то происходит сбой, после которого начинает принимать почему-то не всё слово, а только первый символ. Вот и думаю-или контроллер глючит или есть где-то буфер который переполняется и который еще и обнулять нужно перед каждым приёмом.
byby22 - все что вам представляется "очевидным" - вы уже излагали в первом сообщении. Но мне очевидно, что ваших знаний в данной ситуации недостаточно, так как в противном случае вы не пришли бы на форум. Поэтому у вас два пути - либо вы слушаете советы и выполняете их, и мы попытаемся найти ошибку - либо вы поступаете по своему разумению - и ищете ошибку сами.
Это я видел. Написано конечно неудачно. И сообщения в двух местах читаются и while ещё там, в котором тоже небось застрять можно. Вот я и предлагаю оставить в скетче одно единственное чтение с выводом в порт. А то может передатчик, в котором автор так уверен, всё-таки не дело передаёт. Так хоть его отсеем.
За единственно пока логичный совет спасибо. Единственный минус-сбой встречается где-то раз в сутки. Эксперимент довольно длительный(( Но если другого выхода не будет, придётся к нему прибегнуть.
Насчет передатчика даже не сомневайтесь. Я к нему не подхожу. И простой эксперимент-специально в подвале делаю чтобы сработала сигнализация. В таком случае он присылает каждую секунду сообщение "bad". Так вот, в этот момент если он еще не заглючил приходит это слово. Как только приемная сторона заглючила, каждую секунду, без пропусков приходит "b". Отключаю сигнализацию в подвале (приемник все еще работает)-вместо "otk" приходят сообщения "о". И так любые сообщения. Но как только сделаю сброс контроллеру приемника, даже не подходя к передатчику (3 этажа расстояние)-мгновенно сново начинают приходить сообщения в полном формате, т.е. "bad" и "otk"
byby22 - все что вам представляется "очевидным" - вы уже излагали в первом сообщении. Но мне очевидно, что ваших знаний в данной ситуации недостаточно, так как в противном случае вы не пришли бы на форум. Поэтому у вас два пути - либо вы слушаете советы и выполняете их, и мы попытаемся найти ошибку - либо вы поступаете по своему разумению - и ищете ошибку сами.
Всё правильно. Но есть вещи которых я сам могу отсеить опытным путём и путём логических размышлений. А есть области, в которых я мало разбираюсь. Например подскажите мне, пожалуйста, вначале программы стоит строка vw_setup(2000); -скорость передачи данных. Так вот, вопрос лично к вам например (сам я не могу на это ответить, но правда очень любопытно). В каком диапазоне эту скорость я могу изменять на данных модулях и влияет ли она на то, насколько устойчивым будет в итоге связь???
Не Ваш ли это случай: http://forum.amperka.ru/threads/433%D0%9C%D0%93%D1%86-virtualwire.6962/ ?
Только у Вас присвоение messageLength = VW_MAX_MESSAGE_LEN нужно перед обоими чтениями воткнуть.
За единственно пока логичный совет спасибо. Единственный минус-сбой встречается где-то раз в сутки. Эксперимент довольно длительный(( Но если другого выхода не будет, придётся к нему прибегнуть.
советую добавить вывод в Сериал еще и переменной messageLength
форматированный код
Не Ваш ли это случай: http://forum.amperka.ru/threads/433%D0%9C%D0%93%D1%86-virtualwire.6962/ ?
Только у Вас присвоение messageLength = VW_MAX_MESSAGE_LEN нужно перед обоими чтениями воткнуть.
ОГРОМНОЕ СПАСИБО ЗА ССЫЛКУ!!!! Попытаюсь переделать и посмотреть, прошел глюк или нет. Скорее всего именно в этом и есть беда, но откуда я мог это знать!!!!! СПАСИБО еще раз. Думаю пока мне информации достаточно.
xDriver, тоже спасибо за помощь.
Не Ваш ли это случай: http://forum.amperka.ru/threads/433%D0%9C%D0%93%D1%86-virtualwire.6962/ ?
похоже что да :)
Функция "vw_get_message" криво написана в библиотеке. Только я бы "лечил" это не так - не выставлял бы messageLength = VW_MAX_MESSAGE_LEN перед каждым чтением, а передавал бы функции "vw_get_message" вместо глобала messageLength временную переменную.
Оффтоп для администрации: впишите в правила размещения кода фразу типа "перед вставкой кода отформатируйте его, или находясь в Arduino IDE нажмите Ctrl+T".
FYI: стоит подумать как установить в форум это: https://github.com/prettier/prettier (мб написать какую-то php-затычку, которая будет передавать автоформаттеру содержимое bb-кода [code] из запощиваемого поста). Системные требования node.js+npm
Оффтоп для администрации: впишите в правила размещения кода фразу типа "перед вставкой кода отформатируйте его, или находясь в Arduino IDE нажмите Ctrl+T".
FYI: стоит подумать как установить в форум это: https://github.com/prettier/prettier (мб написать какую-то php-затычку, которая будет передавать автоформаттеру содержимое bb-кода [code] из запощиваемого поста). Системные требования node.js+npm
Насчет Ctrl+T даже не догадывался. Спасибо за обучение!
Тему можно считать закрытой. Ошибка прошла благодаря вышеперечисленному предложению. Всем спасибо за помощь и неравнодушие!!!