Алгоритм тестирования устройств

Если совсем не понятно, чем может быть вызвана проблема, то для начала надо её максимально локализовать. Определим, вызвана ли ошибка аппаратной или программной частью.

Сначала проверим аппаратную часть, где ошибки проявляются более явно. Если проблема не в железе — значит, она кроется где-то в программе.

Проверка плат и модулей

Вам надо проверить каждый компонент, который присутствует у вас в устройстве. Лучше всего начать с микроконтроллера.

  • Отключите все датчики и модули. Загрузите в микроконтроллер скетч blink (он находится в примерах).
  • Если у вас другая среда программирования, загрузите любой простой скетч, который покажет работоспособность платы. На данном этапе вы проверите микроконтроллер, среду программирования и способ загрузки.
  • Далее подключайте каждый модуль по отдельности и загружайте программу, которая проверяет только этот модуль. Лучше брать скетчи для проверки с вики-страницы модуля (раздел «документация» на странице товара). Эти скетчи создаются нашими разработчиками и точно работают.
  • Если какой-то модуль не заработал, проверьте его более внимательно. Осмотрите его на наличие внешних повреждений; проверьте, не греются ли компоненты.
  • Если все модули корректно работают по отдельности, переходите к проверке программной части.

Проверка кода программы

Существует много методов проверки кода, который пишут программисты. У микроконтроллеров всё сложнее. Например, в Arduino IDE вообще нет режима отладки. Приводим советы, которые помогут вам в отладке.

  • Пробуйте закомментировать разные куски в коде. Если ошибка пропала — значит, она где-то в последнем закомментированном кусочке.
  • Используйте вывод в монитор порта после каждой функции. Вывод информации в монитор порта иногда может заменить отладку.
  • Попробуйте сменить библиотеки модулей. Иногда ошибки происходят из-за сырого кода внутри библиотек.
  • Уберите delay() везде, где возможно. Эта команда полностью стопорит контроллер. Если у вас в коде есть функции, которые вызываются часто, то delay() приостановит их вызовы.
  • Если у вас выводится ошибка компиляции, скопируйте её и поищите в любом поисковике. Возможно, вы наткнётесь на готовое решение для аналогичного случая.