Радиоуправляемый выключатель своими руками. Часть 2 — Тестирование и подготовка

от автора

Этот пост — продолжение серии рассказов о том, как можно сделать своими руками выключатель полезной нагрузки.

В первой части была описана «железячная» составляющая: особенности ее проектирования и производства.

Сегодняшний пост описывает шаги по подготовке среды разработки Arduino и полное тестирование изготовленного модуля.

Для работы с изготовленным модулем потребуется любой ISP-программатор. Я буду использовать имеющийся USBtinyISP, вы можете использовать такой же или любой другой (например, сделать ArduinoISP из имеющейся платы ардуино).

Напомню, что по финалу предыдущего поста мы получили полностью собранное устройство — все компоненты находятся на своих местах.

Теперь необходимо проверить ее работоспособность.

Проверка МК

Проще всего это сделать следующим образом: подключить программатор и считать значения фьюзов.

Поскольку пост ориентирован на новичков, то буду использовать наглядные инструменты и покажу, как это сделать максимально просто: будем использовать графическую оболочку Avrdude-GUI.

  1. Скачиваем пакет Avrdude-GUI по ссылке.
  2. Распаковываем полученный архив в какую-нибудь папку.
  3. Запускаем avrdude-GUI.

После этих нехитрых действий появится окно типа:

Теперь необходимо сделать минимальные настройки: выбрать используемый программатор (поле Programmer), используемый порт (Port), указать используемый МК (Device).

Теперь подключаем программатор к компьютеру, а сам программатор — к нашей плате.

В секции «Fuse» нажимаем кнопку «Read». Если все сделано правильно — в соответствующих полях появятся значения фьюзов:

Если что-то пошло не так

Наиболее вероятны следующие ошибки:

1. Где-то непропай (или наоборот, «сопля»). Тогда в результате попытки считать фьюзы появится сообщение о такой ошибке:

Для исправления ситуации отключайте плату от программатора и очень придирчиво проверяйте качество пайки:

  • тонкой иглой проверяйте, насколько хорошо припаяны все ноги МК,
  • через увеличительное стекло отсматривайте подозрительные места,
  • прозванивайте тестером цепи от разъема ISP до МК,
  • проверяйте цепи питания.

2. Неверно выбран тип МК. Сообщение об ошибке будет выглядеть примерно так:

В моем случае как раз такая ошибка и возникла. Произошло это из-за того, что я использовал ATmega168p, а в программе выбрал ATmega168.
Чипы эти максимально близки, но у них разная сигнатура, о чем система заботливо сообщила. При этом программа подсказывает и решение проблемы — проверить правильно выбранный чип или отключить проверку сигнатуры (добавив ключ "-F" в поле «Command Line Option»).

Я воспользовался именно вторым решением (в данном случае это абсолютно нормально).

Правильнее было бы, конечно, открыть файл avdude.conf и добавить там информацию о ATmega168p, но оставим это на моей совести.

С помощью этой же оболочки можно и записать необходимые фьюзы.

В нашем случае требуется обеспечить работу МК от внутреннего осциллятора на частоте 8МГц. Для этого можете использовать для ATmega168p те значения, что приведены выше на скриншоте.

Фьюзы «объясняют» МК, в каком режиме он должен работать. О том, какие значения необоходимо прописывать (или понять значения приведенных выше) можно с помощью «калькулятора фьюзов AVR», который доступен, например, по этой ссылке.

Теперь можно приступать к следующему этапу: проверка возможности программирования МК и тестирование остальной «периферии» на плате.

Подготовка среды разработки

Для этого следует сделать еще один подготовительный шаг: необходимо для среды Arduino создать соответствующую «плату». Делается это следующим образом: нужно открыть текстовым редактором файл boards.txt, который находится внутри папки \ARDUINO\hardware\arduino, где «ARDUINO» — корневая папка, в которой находится среда разработки.

В этот файл необходимо добавить следующие строчки:

##############################################################  s168po8.name=Sensor168p (int8MHz, 1.8V)  s168po8.upload.protocol=arduino s168po8.upload.maximum_size=14336 s168po8.upload.speed=19200  s168po8.bootloader.low_fuses=0xe2 s168po8.bootloader.high_fuses=0xde s168po8.bootloader.extended_fuses=0x00 s168po8.bootloader.path=atmega s168po8.bootloader.file=ATmegaBOOT_168_pro_8MHz.hex s168po8.bootloader.unlock_bits=0x3F s168po8.bootloader.lock_bits=0x0F  s168po8.build.mcu=atmega168p s168po8.build.f_cpu=8000000L s168po8.build.core=arduino s168po8.build.variant=standard  ############################################################## 

В первой строке указывается «имя платы», которое вы потом будете выбирать в среде программирования (можете указать любое, какое вам нравится).
Особенное внимание обратите на параметры, которые описывают фьюзы, тип МК и частоту, на которой будет работать устройство.

После этих несложных манипуляций можно запускать среду Arduino и убедиться в том, что «новая плата» появилась в списке доступных (в меню «Сервис — Плата» надо выбрать нашу: Sensor168p (int8MHz, 1.8V)).

Тест кнопок и реле

Напомню, что по схемотехнике ключи для управления реле подключены к цифровым пинам D3 и D4, а кнопки — к аналоговым A1 и A0.

Сделаем простейший тест для проверки нормального функционирования кнопок и реле:

// реле int r1 = 3;  // D3 int r2 = 4;  // D4  // кнопки  int b1 = 15;  // A1 int b2 = 14;  // A0  void setup() {    // реле   pinMode(r1, OUTPUT);        pinMode(r2, OUTPUT);   // кнопки   pinMode(b1, INPUT);        pinMode(b2, INPUT);     // включим подтягивающие резисторы для кнопок   digitalWrite(b1, HIGH);     digitalWrite(b2, HIGH);     }  void loop() {   // если нажали кнопку b1 - включим реле r1   if (digitalRead(b1) == LOW) {     digitalWrite(r1, HIGH);   }   else {     digitalWrite(r1, LOW);   }      // если нажали кнопку b2 - включим реле r2   if (digitalRead(b2) == LOW) {     digitalWrite(r2, HIGH);   }   else {     digitalWrite(r2, LOW);   } } 

Загружаем этот тест в наше устройство.

Перед загрузкой не забываем выбрать используемый программатор в меню «Сервис» — «Программатор».

Поскольку используется программатор, то процедура чуть иная — надо в меню «Файл» выбирать пункт «Загрузить с помощью программатора» (или просто нажать комбинацию клавиш Ctrl+Shift+U).

Если все сделано правильно, то при замыкании кнопок будут щелкать соответствующие реле.

Вышеприведенный тестовый скетч не отрабатывает «дребезг» и нужен исключительно для быстрой проверки функционирования платы.

Если что-то пошло не так

Типичных проблем две:

  1. Что-то неправильно сделано в среде Arduino (тогда появляются сообщения о проблемах с загрузкой в МК).
  2. Проблемы в аппаратной части (при этом загрузка проходит успешно, но реле не щелкает).

В первом случае нужно проверить все шаги, что описаны раньше (работа с файлом boards.txt, правильно выбранная результирующая плата и программатор).

Во втором случае лучшими помощниками снова станут принципиальная схема, лупа, острая иголка и тестер.

После этого остается только проверить все ли в порядке с разъемом для подключения nRF24L01+.

Тест интерфейса для nRF24L01+

На этом этапе мы не будем писать код, а просто проверим электрические цепи: при подключенном программаторе (или источнике питания 5В) измеряем напряжение между 1 и 2 контактом разъема RF24 — должно быть 3.3В.

Теперь отключаем программатор (или источник питания) и прозваниваем все цепи разъема на предмет отсутствия замыкания между соседними и наличие соединения с соответствующими пинами МК (см.схему из предыдущего поста).

Проверка высоковольтной части

Поскольку наше устройство в последующем будет коммутировать высоковольтную нагрузку, следует очень придирчиво проверить эту часть:

  1. Очень придирчиво осмотрите плату (ту часть, где расположены реле и клеммники для подключения нагрузки), устраните все подозрительные места, пайка должна быть очень надежной. Не должно быть никаких «лишних» соединений.
  2. Прозвоните тестером все цепи, заодно определите, на каких контактах клеммника у вас нормально замкнутые (НЗ) и нормально разомкнутые (НР) контакты.

Результат

После всех проверок у вас на руках — полнофункциональный и полностью готовый к последующему программированию модуль. Ваша среда программирования так же подготовлена для дальнейших шагов.

Продолжение следует…

Полезные ссылки:

ссылка на оригинал статьи http://habrahabr.ru/post/212785/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *