Радиомаяк с индикацией поля

Радиомаяк малой мощьности с реле сигнализирующем о нахождении в поле действия и малым энергопотреблением

Создаем свой блок. Вопросы, помощь знатоков.
Ответить
Gosha23
Рядовой
Сообщения: 1
Зарегистрирован: 15.11.2018{, 13:29}
Репутация: 0
Имя: Егор

Радиомаяк с индикацией поля

#1

Сообщение Gosha23 » 15.11.2018{, 14:47}

Пытаюсь разработать на основе Ардуино приёмник и передатчик с постоянным сигналом о нахождении его в радиусе действия, как только передатчик выходит из радиуса так срабатывает сигнализация в моем случае реле. Заряда маленькой батарейки (пока предположительно 3В) находящейся в передатчике должно хватать на четыре месяца, по сему думаю надо организовать пакетную передачу кода- в определённый интервал времени с данными о самом передатчике ( типа- передатчик №1),- приёмник получает сигнал от своего передатчика и дальше находится в режиме ожидания. Как только передатчик выпал из поля действия сети так срабатывает реле сигнализирующем о его уходе. В основе лежит модули на 433Мгц.

Отправлено спустя 11 минут 7 секунд:
За основу думаю взять скетч от работавший на моей ардуине радиоглушилки на 433Мгц
СпойлерПоказать

void setup() {
pinMode(8, OUTPUT);
}

void loop() {
digitalWrite(8, HIGH);
delayMicroseconds(500);
digitalWrite(8, LOW);
delayMicroseconds(500);
}

Отправлено спустя 10 минут 19 секунд:
А эта у меня не работала

#include <VirtualWire.h>
#include <dht11.h>

dht11 DHT;
#define DHT11_PIN 4

const int transmit_pin = 12;
const int receive_pin = 11;

void setup(void)
{
vw_set_tx_pin(transmit_pin);
vw_set_rx_pin(receive_pin);
vw_set_ptt_inverted(true); // Необходимо для DR3100
vw_setup(2000); // Устанавливаем скорость передачи (бит/с)
}

int getWeather(String type) {
DHT.read(DHT11_PIN); // READ DATA

if (type == "temp") {
return (int)DHT.temperature;
}

if (type == "hum") {
return (int)DHT.humidity;
}
}

void loop(void)
{
char msg[255];
String strMsg;

String temp = (String)getWeather("temp");
String hum = (String)getWeather("hum");

strMsg = "DHT11,DHT1101,1,"+temp+","+hum+",0,DHT11";
strMsg.toCharArray(msg, 100);

vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Ждем пока передача будет окончена
delay(2000);
}

Отправлено спустя 2 минуты 7 секунд:
Приёмник
#include <VirtualWire.h>

const int transmit_pin = 12;
const int receive_pin = 11;

char data[100];

char mode[4];
char addres[10];
char value1[14];
char value2[14];
char value3[14];
char value4[4];
char modecontrol[4];

int i;

void setup()
{
Serial.begin(9600);

// Initialise the IO and ISR
vw_set_tx_pin(transmit_pin);
vw_set_rx_pin(receive_pin);
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
vw_rx_start(); // Начинаем мониторинг эфира
}

void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN]; // Буфер для сообщения
uint8_t buflen = VW_MAX_MESSAGE_LEN; // Длина буфера

if (vw_get_message(buf, &buflen)) // Если принято сообщение
{

for (i = 0; i < buflen; i++)
{
data=buf;
}

sscanf(data, "%[^','],%[^','],%[^','],%[^','],%[^','],%[^','],%s", &mode, &addres, &value1, &value2, &value3, &value4, &modecontrol);

Serial.print(mode);
Serial.print(",");
Serial.print(addres);
Serial.print(",");
Serial.print(value1);
Serial.print(",");
Serial.print(value2);
Serial.print(",");
Serial.print(value3);
Serial.print(",");
Serial.print(value4);
Serial.print(",");
Serial.print(modecontrol);
Serial.println();

}
}

Отправлено спустя 31 минуту 45 секунд:
Вот еще один скотч передатчика

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
mySwitch.enableTransmit(2);
}

void loop() {
mySwitch.send(B0100, 4);
delay(1000);
mySwitch.send(B1000, 4);
delay(1000);
}

Отправлено спустя 3 минуты 40 секунд:
Скетч приемника
#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
pinMode( 3, OUTPUT );
mySwitch.enableReceive(0);
}

void loop() {
if( mySwitch.available() ){
int value = mySwitch.getReceivedValue();

if( value == B1000 )
digitalWrite( 3, HIGH );
else if( value == B0100 )
digitalWrite( 3, LOW );

mySwitch.resetAvailable();
}
}

Отправлено спустя 2 минуты 27 секунд:

Описано в http://robotclass.ru/tutorials/arduino-radio-433mhz/

Ответить

Вернуться в «Разработка пользовательских блоков»