Устройство сигнализирующее при удалении от объекта - Своими руками
Своими руками

Устройство сигнализирующее при удалении от объекта

>

Предыстория изготовления этого устройства такова.
Автор этой самоделки каждый день ужинает в ресторане. При этом, у него при себе имеется рабочий портфель. Однажды он этот портфель забыл в ресторане. К счастью вернувшись он обнаружил его на месте, но задумался как сделать так, чтобы можно было избежать подобных ситуаций в дальнейшем.

В результате родился этот проект.
Инструменты и материалы:-Arduino Nano – 2 шт;-Светодиоды – 2 шт;-Макетные платы – 2 шт;-Резисторы 220 Ом – 2 шт;-Антенна – 2 шт;-Пьезодинамик – 1 шт;-Приемник 433 МГц – 1 шт;-Передатчик 433 МГц – 1 шт;
Шаг первый: принцип работы
Это устройство состоит из приемника и передатчика на основе микроконтроллеров Ардуино. При утере сигнала от передатчика, приемник оповещает пользователя (около 100 метров в идеале). Так же можно настроить устройство на оповещение при удалении от 3 до 100 метров.
Для устройства мастер использовал платы Arduino Nano. Одна плата Nano настроена как передатчик, а другая – как приемник. Передатчик ничего не делает, кроме как отсылает повторяющийся символьный сигнал «0». Второе Arduino Nano настроено на проверку полученного сигнала и мигание светодиода в качестве подтверждения. Если сигнал не получен после 3 попыток соединения, приемник будет воспроизводить повторяющийся тональный сигнал через небольшой динамик до тех пор, пока сигнал не будет снова получен от передатчика или пока приемник не будет выключен.
Передатчик / приемник работают на частоте 433 МГц. Расстояние передачи: от 3 метров (без антенны) до 100 метров (максимум) с антенной. В модуле передатчика и приемника есть обозначенное отверстие, для монтажа антенны.
Устройство сигнализирующее  при удалении от объектаШаг второй: сборка передатчика и загрузка кода передатчика
Передатчик собирается по нижеприведенной схеме.
Устройство сигнализирующее  при удалении от объектаКод можно скачать ниже.
Устройство сигнализирующее  при удалении от объекта Показать / Скрыть текст#include <VirtualWire.h>
const int ledPin = 9;
char *data;
void setup()
{
pinMode(ledPin,OUTPUT);
vw_set_ptt_inverted(true);
vw_set_tx_pin(12);
vw_setup(4000);
}
void loop()
{
data="0";
vw_send((uint8_t *)data, strlen(data));
vw_wait_tx();
digitalWrite(ledPin,HIGH);
delay(25);
digitalWrite(ledPin,LOW);
delay(500);
} Шаг третий: сборка приемника и загрузка кода приемника
Приемник 433 МГц собирается по схеме приведенной ниже.
Устройство сигнализирующее  при удалении от объектаКод для загрузки на Ардуино можно скачать ниже. Этот код оповещает, когда устройство не принимает сигнал.
Устройство сигнализирующее  при удалении от объекта Показать / Скрыть текст#include <VirtualWire.h>
const int buzzer = 8; //buzzer to arduino pin 8
void setup()
{
vw_set_ptt_inverted(true); // Required for DR3100
vw_set_rx_pin(12);
vw_setup(4000); // Bits per sec
Serial.begin(9600);
pinMode(9, OUTPUT);
vw_rx_start(); // Start the receiver PLL running
}
void loop()
{
int i = 0;
int chk1 = 0;
int chk4 = 0;
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
Serial.println();
if (vw_get_message(buf, &buflen)) // Non-blocking
{
for (i ; i < 2; i++ ) ///loop to check for a received signal
{
if (buf[0] == '0') int chk1 = 1;
else int chk1 = 0;
chk4 = chk4 + chk1;
}
{
delay(1000);
{
if (chk4 >= 1); //if at least 1 signal was received, flash LED

digitalWrite(9, HIGH);
delay(25);
digitalWrite(9, LOW);
}
}
} else // if no signal is received, produce audio tone
{
tone(buzzer, 1000); // Send 1KHz sound signal…
delay(1000); // …for 1 sec
noTone(buzzer); // Stop sound…
delay(1000); // …for 1sec
}
}
Или можно загрузить код, который оповещает, при нахождении в зоне приема сигнала.
Устройство сигнализирующее  при удалении от объекта Показать / Скрыть текст #include <VirtualWire.h>
const int buzzer = 8; //buzzer to arduino pin 8
void setup()
{
vw_set_ptt_inverted(true); // Required for DR3100
vw_set_rx_pin(12);
vw_setup(4000); // Bits per sec
Serial.begin(9600);
pinMode(9, OUTPUT);
vw_rx_start(); // Start the receiver PLL running
}
void loop()
{
int i = 0;
int chk1 = 0;
int chk4 = 0;
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
Serial.println();
if (vw_get_message(buf, &buflen)) // Non-blocking
{
for (i ; i < 2; i++ ) ///loop to check for a received signal
{
if (buf[0] == '0') int chk1 = 1;
else int chk1 = 0;
chk4 = chk4 + chk1;

if (chk4 < 1); //check to see if any signal is received, play audio tone
{
tone(buzzer, 1000); // Send 1KHz sound signal…
delay(1000); // …for 1 sec
noTone(buzzer); // Stop sound…
delay(1000); // …for 1sec
}
}
} else
{
delay(1000);
digitalWrite(9, HIGH);
delay(25);
digitalWrite(9, LOW);
}
}
После сборки на макетной плате мастер проводит тестирование. На первом видео тестирование устройства с кодом, сигнализирующим о потере сигнала.

На втором видео устройство подает сигнал в зоне действия передатчика.
Дальше нужно все собрать на монтажной плате и упаковать в корпус. Естественно необходимо добавить питание.

SitesReady

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

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.