Пиротехнический радиопульт
- Платформы: Iskra Neo, Iskra Mini
- Языки программирования: Arduino (C++)
- Тэги: своими руками, пиротехника, 8 марта, фейерверк, Arduino.
Что это?
Хотите, чтобы ваш подарок запомнился надолго? Запустите салют в честь виновника торжества. Если, после покупки самого подарка, денег на масштабное пиротехническое шоу не хватает — сделаем своё, скромное, с фонтанчиками и Arduino. Для этого соберём пульт дистанционного управления пиротехникой.
Что нам понадобится?
Проект будет состоять из 3 составляющих:
- Стартер — беспроводной пульт управления.
- Пиротехнический пульт — основной блок управления.
- Запал — воспламеняется при подаче электричества.
Для изготовления стартера нам понадобятся:
- Резистор 10 кОм (1 шт.)
- Малогабаритная батарейка на 12 вольт
- Подарочная коробка
Для изготовления пиротехнического пульта нам понадобятся:
- Металлические винты М3×8 (4 шт.)
- Влагозащищенный корпус
- Нажимной разъём (2 pin)
- Переключатель (ON-OFF)
Для изготовления запала нам понадобятся:
- Многожильный монтажный провод (2 шт. разного цвета)
- Нихромовая нить. Мы достали из из паяльника
- Огнепроводной шнур. Мы отрезали от фейерверка
Как собрать?
Сборка стартера
- Используя руководство по плате Iskra Mini, прошейте её скетчем, приведённым ниже.
- Возьмите провод от витой пары длиной около 15 см, скрутите из него спираль и припаяйте к пину
ANT
беспроводного передатчика. - Используя монтажные провода, припаяйте беспроводной передатчик на 433 МГц к плате Iskra Mini:
- пин
DATA
передатчика — к12
пину платы Iskra Mini. - пин
VCC
— к пину5V
. - пин
GND
— к пинуGND
.
- Соберите схему делителя напряжения, где один резистор — это фоторезистор, а второй — резистор на 10 кОм, и подключите к платформе Iskra Mini:
- общий пин фоторезистора и резистора — к аналоговому пину
A0
. - пин резистора — к пину
5V
. - пин фоторезистора — к пину
GND
.
- Разрежьте пополам провода «мама-папа». Одни концы проводов припаяйте к батарейке на 12 вольт, а вторые — к пинам
Vin
иGND
платы Iskra Mini. Таким образом мы сможем включать/отключать питание от платформы. - Установите конструкцию в коробку для подарка.
- Замаскируйте все элементы схемы, кроме фоторезистора.
Сборка пиротехнического пульта
- Прошейте плату Iskra Neo скетчем, приведённым ниже.
- Закрепите макетную плату на Troyka Shield. Установите шилд на платформу Iskra Neo.
- Возьмите провод от витой пары длиной около 15 см, скрутите из него спираль и припаяйте к пину
ANT
беспроводного приёмника. - Установите приёмник на Breadboard Mini и подключите его с помощью проводов «папа-папа» к плате Iskra Neo:
- пин
DATA
приёмника — к11
пину платы Iskra Neo. - пин
VCC
— к пину5V
. - пин
GND
— к пинуGND
.
- Сделайте рельсы питания
Vin
и землиGND
на макетной плате. Для этого соедините плату Iskra Neo и Breadboard Mini двумя проводами «папа-папа», где:- оранжевый — к питанию;
- чёрный — к земле.
- Установите полученную конструкцию в герметичный корпус, используя мегапластину от #структора.
- Вставьте аккумуляторные батареи в батарейный отсек и подключите их к рельсам питания
Vin
и землиGND
макетной платы, через переключатель (ON-OFF). - Так как микроконтроллер не может напрямую управлять мощной нагрузкой, будем подключать запалы к платформе Iskra Neo через силовой ключ. Закрепите MOSFET с помощью нейлоновых винтов к детали #структора (крепление Troyka 4×4 шипа) и подключите, используя 3-проводной шлейф, к
6
пину Troyka Shield. - Установите в герметичный корпус нажимной разъём (2 pin) и соедините следующим образом:
- Один контакт нажимного разъёма подключите к рельсе питания
Vin
. - Второй — через клеммник к плюсу силового ключа.
- Минус силового ключа — к рельсе земли
GND
.
- Установите MOSFET в бокс и закройте корпус.
Сборка запала
- Возьмите 2 провода и залудите их с обеих сторон.
- Извлеките из паяльника нагревательный элемент с нихромовой нитью.
- Отрежьте 30–40 мм нихромовой нити и намотайте её на кусок огнепроводного шнура длиной около 15 мм. Закрепите с двух сторон проводами.
- Готовый запал примотайте малярным скотчем к фитилю фейерверка.
- Подключите второй конец запала в нажимной разъём пиротехнического пульта.
Для нагрева нихромовой нити нужно много энергии. Если у вас много фейерверков, используйте мощный аккумулятор.
Алгоритм
Алгоритм передатчика
- Сразу после подачи питания считываем значения с датчика уровня освещённости.
- Если значения сенсора превышает заданный порог, передаём сигнал с передатчика для дальнейшей активации фейерверка.
- Повторяем цикл.
Алгоритм приёмника
- После подключения питания проверяем есть ли принятые данные с приёмника.
- Если нет, ждём.
- Проверяем нам ли адресовано сообщение.
- Если нет, возвращаемся в начало цикла.
- Проверяем содержит ли принятое сообщение код запуска фонтана.
- Если да, поджигаем запалы.
Исходный код
Код стартера
- fireworkTransmitter.ino
// библиотека для работы с приёмником и передатчиком на 433 МГц #include <VirtualWire.h> // даём разумное имя для пина, к которому подключен передатчик #define TRANSNMIT_PIN 12 // даём разумное имя для пина, к которому подключен фоторезистор #define LIGHT_PIN A0 // символ первого и последнего байта посылки #define FIRST_BYTE "<" #define LAST_BYTE ">" // код запуска фейерверка #define KEY_TNT "2560" void setup(void) { // устанавливаем номер пина, к которому подключён передатчик vw_set_tx_pin(TRANSNMIT_PIN); // устанавливаем скорость передачи vw_setup(2000); } void loop(void) { // считываем значения с датчика уровня освещённости int sensorLight = analogRead(LIGHT_PIN); // если значения сенсора превышает порог if (sensorLight < 1000) { // посылаем сигнал с передатчика sendData(); } } // функция отправки данных с передатчика void sendData() { // буфер для хранения текстового сообщения char strMsg[12] = FIRST_BYTE; // добавляем к буферу код запуска фейерверка strcat(strMsg, KEY_TNT); // добавляем к буферу символ конца посылки strcat(strMsg, LAST_BYTE); // передаём сообщение и его длину vw_send((uint8_t *)strMsg, strlen(strMsg)); // ждем пока передача будет окончена vw_wait_tx(); }
Код для пиротехнического пульта
- fireworkReceiver.ino
// библиотека для работы с приёмником и передатчиком на 433 МГц #include <VirtualWire.h> // даём разумное имя для пина к которому подключен приёмник на 433 МГц #define RECEIVER_PIN 11 // даём разумное имя для пина к которому подключен силовой ключ #define MOSFET_PIN 6 // символ первого и последнего байта посылки #define FIRST_BYTE '<' #define LAST_BYTE '>' // код запуска фейерверка #define KEY_TNT 2560 void setup() { // настраиваем пин силового ключа в режим выхода pinMode(MOSFET_PIN, OUTPUT); // устанавливаем номер пина, к которому подключён приёмник vw_set_rx_pin(RECEIVER_PIN); // устанавливаем скорость передачи vw_setup(2000); // ожидаем входящее сообщение vw_rx_start(); } void loop() { // буфер для хранения текста сообщения uint8_t buf[VW_MAX_MESSAGE_LEN]; // длина сообщения uint8_t buflen = VW_MAX_MESSAGE_LEN; // переменная для хранения индекса принятого сообщения int i = 1; // переменная для хранения полученного кода int key = 0; // если принято сообщение if (vw_get_message(buf, &buflen)) { // если сообщение адресовано не нам, выходим if (buf[0] != FIRST_BYTE || buf[buflen-1]!= LAST_BYTE) { return; } // поскольку передача идет посимвольно, // преобразовываем набор символов в число while (buf[i] != LAST_BYTE) { key *= 10; key += buf[i] - '0'; i++; } // если полученный в сообщении код совпадает с кодом запуска if (key == KEY_TNT) { // поджигаем запалы startFireShow(); } } } // функция, реализующая поджёг запалов void startFireShow() { // подаём на силовой ключ высокий уровень digitalWrite(MOSFET_PIN, HIGH); // ждём 10 секунд delay(10000); // подаём на силовой ключ низкий уровень digitalWrite(MOSFET_PIN, LOW); }
Демонстрация работы устройства
Что дальше?
В качестве приёмника и передатчика можно использовать любые другие беспроводные модули и запускать фонтан по звонку, SMS или Ethernet. Также в роли стартера можно использовать любой пульт от бытовой техники, установив в пиротехнический пульт вместо модуля беспроводной связи ИК-приёмник (Troyka-модуль).