понеділок, 14 серпня 2017 р.

Безконтактні свічки для квест кімнати


Нещодавно я закінчив стенд для квест-кімнати Idea Quest в Києві, кімната "Логово Відьми". Завдання було в тому, щоб дистанційно запалювати led-свічки, коли їх підносять і ставлять на підлогу у спеціальних місцях. На підлозі намальований малюнок і проходження квесту залежить від порядку розставлення свічок на указані місця. Нажаль не встиг зняти выдео квесту.

Це був для мене цікавий досвід, цікавий квест зроблений своїми руками, але нажаль дирекція квест кімнати IdeaQuest мене кинула з грошима - не заплатила зарплатню за робочий період. Не ходіть в IdeaQuest http://ideaquest.com.ua/

Довелось гарно попрацювати, щоб створити колебальні контури як в підлозі, так і в самих свічках. Ось приклад схеми для "бази" в підлозі:

1) Робиться Транзістор, який входить в режим автоколивань http://www.instructables.com/id/Wireless-electricity-transmission-circuit/


Тільки транзістор треба взяти TIP41C
Плюс треба обмежити струм цієї схеми, я робив за прикладом 
http://www.club155.ru/transistors-workpoint-cc

Дививсь, щоб струм був в межах 70 мА, цього було досить для яскравого світіння свтлодіоду в середині свічки. 

2) Для свічки достатньо намотати 10 вітків дроту 3-5 см в диаметрі, обов'язково випрямляти струм в свічці Шотткі-діодами.

3) Треба підібрати таку кількість вітків бази, щоб на світлодіоді в свічці було 5-6 В.

4) Программу для Ардуіно розшарюю:


5) Про інші деталі з задоволенням проконсультую по email sermountain ( at ) gmail . com

Банковський термінал для квест кімнати


Перероблений термінал для кімнати "Под Замком".
Всередині - Ардуіно, RFID, живлення, дісплей, магнітний замок і транзістор для його перемикання.
Важко вийняти начинку і вставити свою - майже ювелірна робота.
І ще досить складно зробити свою клавіатуру, бо його рідну ме варто використовувати, вона на рідній платі, з якою не варто мати справу.

Ось, як я зробив клавіатуру:


Дисплей попередньо довелось обрізати:



пʼятниця, 28 липня 2017 р.

A6 Mini GPS/GPRS modem

Мануал 

https://voron.ua/files/pdf/Modules/a6_a7_a6c_a20%20at%20instructions%20v1_03_1_.pdf

Підключення

A6 | Arduino Uno
Tx -> 2
Rx -> 3
G -> GND
VCC->5V

Програма для дзвінка


Програма для СМС

Програма для відправки даних на Thingspeak

середа, 26 липня 2017 р.

Сигналізація для вашого велосипеду на Bluetooth

Нижче повністю описано результат моєї праці по створенню вело-сигналізації, що працює через смартфон на платформі Arduino. Я вирішив створити її після того, як у мене вкрали велосипед. В результаті за 2 місяці вийшло ось, що. Я вирішив викласти всі матеріали у відкритий доступ для того, щоб будь-хто міг сам зробити собі сигналізацію найменшим коштом і захистити себе від крадіжок.

Найкращі сценарії її використання - це похід в магазин і парковка велосипеда на цепуру/трос біля магазину, а також - велопохід, коли ви наприклад, лишаєте велосипед на ніч біля намету, або можливо, наприклад, якщо ви лишаєте велосипед на сходах, приїхавши в гості до друзів. 

Сигналізація дає вам можливість дізнатись, що хтось зачіпає ваш велосипед, якщо ви його не бачите і вин знаходиться в зоні дії сигналізації. Тобто, наприклад, якщо хтось пиляє ваш ціпок, ви одразу дізнаєтесь про це і отримуєте час на швидку реакцію - добігти до вєла, при цьому грабіжник скоріш за все налякається звуком сирени і втече. 

Всі компоненти можна замовити через інтернет. Щоб зробити сигналізацію треба вміти паяти і вміти залити програму на мікроконтролер Arduino. 

Користуйтесь на здоров'я. Якщо треба, можете робити мені замовлення. Наступні версії сигналізації будуть краще і будуть мати більший радіус дії.

Фото вело сигналізації






Відео

Велосигналізація - функціональність

  • Використовує смартфон - додаток на Android
  • Має замок кнопку-ключ для ввімкнення, що унеможливлює включення/відключення сигналізації сторонньою особою
  • Має акумулятор
  • Без проблем кріпиться на раму велосипеду на кріплення для насосу/пляшки
  • Включається в режим сигналізації через ваш смартфон по Bluetooth і тримає з'єднання з ним поки ви знаходитесь в зоні дії Bluetooth
  • Спрацьовує при найменшому русі велосипеду після того, як ви включили сигналізацію
  • При спрацюванні включає гучну сирену і одночасно включається звук сирени на вашому смартфоні
  • Відображує рівень заряду акумулятору сигналізації на екрані смартфону і сигналізує, коли його треба зарядити

Слабкі сторони - що потребує покращення

  • Зона дії Bluetooth - 20-50 метрів. При виході з зони дії відображається повідомлення. При цьому сигналізація продовжує працювати. При поверненні в зону дії - при поверненні до велосипеду - треба підключитись до Bluetooth, щоб вимкнути сигналізацію. 
  • Корпус закритий, але пластмасовий - це потрібно для того, щоб не глушити сигнал Bluetooth
  • Для того, щоб зарядити акумулятор, треба знімати сигналізацію.
Недоліки буде виправлено в наступних версіях, де зв'язок буде через GPRS/GSM модуль і буде додано USB-вхід для підзарядження акумулятору сигналізації.

Компоненти

  • Arduino pro mini / Arduino nano
  • Bluetooth HC-06
  • Сенсор вібрації SW-420
  • Сирена HYD-4216 3-24VDC
  • 2 резистори по 10 кОм
  • Резистор 200 Ом
  • Світлодіод
  • Корпус 11х8х3 см 
  • Замок кнопка-перемикач з ключем KS-02P-101 ON-OFF
  • Монтажна макетна плата для пайки 4х5см
  • Тримач для акумулятора типу 18650
  • 2 акумулятора типу 16340 по 3.7В
Загальна вартість компонентів - 800-900 грн на липень 2017р.

Як зпаяти / з'єднати

  • Bluetooth -> Tx на 3 pin, Rx на 2 pin
  • Резисторний подільник -> 10кОм+10кОм -> один кінець на +5В, інший на GND, середня точка на A1 pin
  • Cвітлодіод -> + світлодіода на 200 Ом резистор і на 9 pin
  • Сирена -> 4 pin
  • Сенсор вібрації -> 6 pin
  • + Живлення від батареї йде на RAW вхід Arduino Pro Mini або на VIN вхід Arduino Nano
  • Ключ підключається в розрив живлення
Доцільно паяти на макетній платі, бо проводами виходить лажа.

Як залити програму на Arduino Pro Mini

Я підключав Arduino Pro Mini для заливки програми через Arduino Uno. Треба підключитись:

UNO | Pro Mini
RST -> DTR
TX -> TX
RX -> RX
5V -> 5V
GND -> GND

В UNO треба обережно вийняти мікросхему перед заливкою, а в Arduino IDE вибрати в меню плату Arduino Pro / Pro Mini

Додаток для Andriod

Акумулятори і їх зарядження

Можна ставити 1 акумулятор типу 18650, або - що краще - 2 акумулятори типу 16340 - так напруга буде вище, що треба для живлення Arduino. Заряджати акумулятори можна через плату на базі мікросхеми TP4056

Підключення до bluetooth 

При підключенні через аплікейшн bluetooth HC-06 буде мати назву типу BTHC06

Програма

вівторок, 20 червня 2017 р.

AD9850 DDS Signal Generator Module + Arduino


Як запустити генератор сигналу AD9850 DDS на Arduino через Serial, код нижче.

 
Під'єднуємо так:
Arduino               Генератор
+5V VCC
GND GND
A1 W_CLK
A2 FU_UD
A3 DATA
A4 RESET

Сигнал знімаємо з генератору - піни QOUT1, QOUT2 (прямокутний), ZOUT1 и ZOUT2 (сінусоїда)

 
long freq = 10000; // Оглашение переменных -- Частота
long reading=0;
#define W_CLK 15 // Пин A1 Arduino - подключен к CLK
#define FQ_UD 16 // Пин A2 Arduino - подключен к FQ (FU)
#define DATA 17  // Пин A3 Arduino - подключен к DATA
#define RESET 18 // Пин A4 Arduino - подключен к RST
#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
//---------------------------------------------------- 
void setup()
{
 Serial.begin(9600);
 pinMode(FQ_UD, OUTPUT);
 pinMode(W_CLK, OUTPUT);
 pinMode(DATA, OUTPUT);
 pinMode(RESET, OUTPUT);
 pulseHigh(RESET); // Отправка импульсов для запуска модуля генератора
 pulseHigh(W_CLK);
 pulseHigh(FQ_UD);
}
//-------------------------------------------------------
void tfr_byte(byte data){ // Функция побитной отправки байта
 for (int i=0; i<8; i++, data>>=1) { // данных в модуль генератора
  digitalWrite(DATA, data & 0x01);
  pulseHigh(W_CLK);}} // Подача импульса на CLK после каждого бита
//-------------------------------------------------------
void sendFrequency(double frequency) { // Преобразование и отправка
  int32_t freq = frequency * 4294967295/125000000;  // значения частоты
  for (int b=0; b<4; b++, freq>>=8) {tfr_byte(freq & 0xFF);}
  tfr_byte(0x000);   // Отправка завершательного контрольного байта
  pulseHigh(FQ_UD);}  // Обновление частоты генератора
//----------------------------------------------------

void loop()
{
 Serial.print("Freq: ");

 if (freq<1000){Serial.print(freq);
 Serial.println(" Hz");}

 if ((freq>=1000)&&(freq<1000000)){Serial.print(freq / 1000);
 Serial.println(" kHz");}

 if ((freq>=1000000)&&(freq<50000000)){Serial.print(freq / 1000000);
 Serial.println("MHz");}

 if (Serial.available()>0) {
  reading=Serial.parseInt();
  if (reading!=0) freq=reading;
 }
 
 if (freq<1) freq=1; // Ограничение значений частоты
 if (freq>40000000) freq=40000000;

 sendFrequency(freq);  // Вызов функции отправки частоты
 delay (200); // Пауза 200 мс
}