Отладка датчиков и шлюза

Вы можете столкнуться с какими-то странными проблемами, когда начинаете делать свои датчики. Мы попытались здесь привести список распространенных проблем.

  • Используете ли вы последнюю стабильную версию MySensors для датчика и шлюза? Соответствует ли версия плагина контроллера версии библиотеки?
  • Вы действительно используете настоящий nRF24L01+? Иногда продавцы ebay отправляют не лицензионную версию или клон HopeRF RFM73.
  • Три раза проверьте подключение радио.
  • Проверьте питание радиомодуля. Он требует стабильного источника питания 3,3 В. Попробуйте добавить развязывающий конденсатор на контакты к 3.3V и GND, чтобы свести к минимуму пульсации. Выберите конденсатор около 47 мкФ с низким последовательным сопротивлением(ESR), если это возможно. Проверьте полярность конденсатора. Или возьмите керамический.
  • Попробуйте взять другой источник питания. Некоторые дешевые зарядные USB устройства дают очень плохой выход.
  • Ваш сенсор питается от USB компьютера? Удостоверьтесь, что он даёт достаточный ток. Особенно при использовании радиоприемника с усилителем.
  • Провода между Arduino и радио должны быть короткие. Если есть возможность, возьмите провод как можно короче для плат прототипирования.
  • Если вы используете расширенную версию чипа NRF24L01+ (с внешней антенной) и испытываете проблемы с коммуникацией, у вас может возникнуть проблема с подачей питания достаточной мощности. Попробуйте не использовать регулятор напряжения Arduino, подавая напряжение питания непосредственно от источника 3,3 В. Также вы можете попробовать изменить (понизить) уровень мощности. Это делается путем добавления параметров к методу begin() или в MyConfig.h перед загрузкой эскиза для проблемного датчика. Обратите внимание, что уровень мощности не влияет на чувствительность приема. Дополнительную информацию см. В библиотеке API MySensors.
  • Иногда качество сигнала зависит он положения радио в пространстве.

Включение отладки и мониторинга логов

Чтобы включить отладочные сообщения, вам нужно просто добавить #define MY_DEBUG в эскиз, перед MySensors.h

После включения отладки подключите свой узел или шлюз к USB компьютера (также как вы загружаете эскиз). В среде IDE Arduino выберите нужный порт в меню «Инструменты», затем откройте «Монитор порта», чтобы просмотреть отладочные сообщения. Примечание: по умолчанию скорость обмена для MySensors равна 115200

Сенсорный узел будет выводить сообщения отладки при отправке и получении данных по радиосети. Это очень полезная информация для диагностики проблемы в вашей сборке.

В итоге:

  • Скомпилируйте и загрузите эскиз с указанным выше флагом отладки в MyConfig.h.
  • Не отключайте датчик от компьютера и включите Serial Monitor в Arduino IDE. Инструменты> Монитор порта.
  • Установите скорость в 115200 бод.

Формат отладочного сообщения

Отладочные сообщения будут выглядеть следующим образом:

Вы можете использовать наш онлайн-анализатор логов для интерпретации содержимого.

Последовательный протокол, используемый между шлюзом и контроллером, представляет собой простой список значений, разделенных точкой с запятой. Последняя часть каждой «команды» — это область данных. Все команды заканчиваются символом новой строки. Последовательные команды имеют следующий формат (см. Документацию по протоколу Serial Protocol для получения дополнительной информации):

0; 0; 3; 0; 9 означает: узел 0, датчик 0, внутреннее сообщение (3), подтверждение (0), сообщение лога (9). Это означает, что шлюз выводит эту информацию как лог, полученный от узла.

Транспортные сообщения (TSM и TSF) описаны здесь.

Сообщения библиотеки MySensors (MCO) описаны здесь

Вот как интерпретировать буквенно-цифровые коды в конце отправленных / полученных сообщений. Например: s = 31, c = 1, t = 16, pt = 1, l = 1, sg = 0: 1

S = идентификатор датчика
C = тип сообщения 0-4: презентация, данные, запрос, системные или поток. См. Ссылку
T = тип значения: S_VALUE во время презентации или V_VALUE во время данных / запроса
Pt = тип данных: string, byte, int и т. Д. См. Ссылку
L = длина сообщения
Sg = подписанное или неподписанное сообщение: 0 = false или 1 = true

Очистка EEPROM

Ваши датчики имеют небольшую статическую память (EEPROM). Она будет содержать информацию об уникальном идентификаторе вашего сенсора и информацию о маршрутизации. В редких случаях вам может потребоваться очистить эту память до заводского значения (по умолчанию).

Чтобы очистить память EEPROM, загрузите следующий эскиз в датчик или шлюз (и подождите 20 секунд).

Дополнительные советы по устранению неполадок

Вы можете получить больше советов по устранению неполадок здесь или просмотрев следующий видеоролик.

Share