Сигнализация

S7782
Offline
Зарегистрирован: 01.02.2015

Здравствуйте!

Нужна помощь!

Есть проект сигнализации (для личного пользования) состоящей из приемника и двух передатчиков. При срабатывании датчика и передачи сигнала с 1 - го передатчика, передается  сигнал С-1, при срабатывании второго, передается сигнал С-2. При приеме необходима селекция этих сигналов, т.е.  при С-1 было звучание одной мелодии, а при С-2 другой.

Сигнал - 1:

// the setup function runs once when you press reset or power the board

void setup() {

  // initialize digital pin 13 as an output.

  pinMode(13, OUTPUT);

}

 

// the loop function runs over and over again forever

void loop()

{

  digitalWrite(13, HIGH);  

  delay(1000);             

  digitalWrite(13, LOW);   

  delay(500);             

  digitalWrite(13, HIGH);  

  delay(1000);             

  digitalWrite(13, LOW);   

  delay(500); 

  digitalWrite(13, HIGH);  

  delay(1000);              

  digitalWrite(13, LOW);   

  delay(600000);             

}

 

Сигнал-2:

 

// the setup function runs once when you press reset or power the board

void setup() {

  // initialize digital pin 13 as an output.

  pinMode(13, OUTPUT);

}

 

// the loop function runs over and over again forever

void loop()

{

  digitalWrite(13, HIGH);  

  delay(1000);             

  digitalWrite(13, LOW);   

  delay(500);             

  digitalWrite(13, HIGH);  

  delay(1000);             

  digitalWrite(13, LOW);   

  delay(500); 

  digitalWrite(13, HIGH);  

  delay(1000);             

  digitalWrite(13, LOW);   

  delay(500); 

  digitalWrite(13, HIGH);  

  delay(1000);             

  digitalWrite(13, LOW);   

  delay(500);             

  digitalWrite(13, HIGH);  

  delay(1000);             

  digitalWrite(13, LOW);   

  delay(600000);     

}

 

Мелодия 1:

void setup()  {

  pinMode(9, OUTPUT);   // устанавливаем 9 ногу как выход

  beep(50);

  beep(50);

  beep(50);

  delay(1000);

}

 

void loop()  {

  beep(650);

}

 

void beep(unsigned char delayms){

  analogWrite(9, 100);      // значение должно находится между 0 и 255

                           // поэкспериментируйте для получения хорошего тона

  delay(delayms);          // пауза delayms мс

  analogWrite(9, 0);       // 0 - выключаем пьезо

  delay(delayms);          // пауза delayms мс  

}

 

Мелодия 2:

 

void setup()  {

  pinMode(9, OUTPUT);   // устанавливаем 9 ногу как выход

  beep(50);

  beep(50);

  beep(50);

  delay(1000);

}

 

void loop()  {

  beep(650);

}

 

void beep(unsigned char delayms){

  analogWrite(9, 200);      // значение должно находится между 0 и 255

                           // поэкспериментируйте для получения хорошего тона

  delay(delayms);          // пауза delayms мс

  analogWrite(9, 0);       // 0 - выключаем пьезо

  delay(delayms);          // пауза delayms мс  

}

 

Заранее всем большое спасибо!!!

S7782
Offline
Зарегистрирован: 01.02.2015

П.С. У меня возникли сложности с написанием программы для приемника. Собственно в этом и есть просьба о помощи.

renoshnik
Offline
Зарегистрирован: 11.04.2013
S7782
Offline
Зарегистрирован: 01.02.2015

 

Сигнал - 1:

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop()
{
  digitalWrite(13, HIGH);  
  delay(1000);             
  digitalWrite(13, LOW);   
  delay(500);             
  digitalWrite(13, HIGH);  
  delay(1000);             
  digitalWrite(13, LOW);   
  delay(500); 
  digitalWrite(13, HIGH);  
  delay(1000);              
  digitalWrite(13, LOW);   
  delay(600000);             
}

Сигнал-2:

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop()
{
  digitalWrite(13, HIGH);  
  delay(1000);             
  digitalWrite(13, LOW);   
  delay(500);             
  digitalWrite(13, HIGH);  
  delay(1000);             
  digitalWrite(13, LOW);   
  delay(500); 
  digitalWrite(13, HIGH);  
  delay(1000);             
  digitalWrite(13, LOW);   
  delay(500); 
  digitalWrite(13, HIGH);  
  delay(1000);             
  digitalWrite(13, LOW);   
  delay(500);             
  digitalWrite(13, HIGH);  
  delay(1000);             
  digitalWrite(13, LOW);   
  delay(600000);     
}
Мелодия 1:
void setup()  {
  pinMode(9, OUTPUT);   // устанавливаем 9 ногу как выход
  beep(50);
  beep(50);
  beep(50);
  delay(1000);
}
void loop()  {
  beep(650);
}
void beep(unsigned char delayms){
  analogWrite(9, 100);      // значение должно находится между 0 и 255
                           // поэкспериментируйте для получения хорошего тона
  delay(delayms);          // пауза delayms мс
  analogWrite(9, 0);       // 0 - выключаем пьезо
  delay(delayms);          // пауза delayms мс  
}
Мелодия 2:
void setup()  {
  pinMode(9, OUTPUT);   // устанавливаем 9 ногу как выход
  beep(50);
  beep(50);
  beep(50);
  delay(1000);
}
void loop()  {
  beep(650);
}
void beep(unsigned char delayms){
  analogWrite(9, 200);      // значение должно находится между 0 и 255
                           // поэкспериментируйте для получения хорошего тона
  delay(delayms);          // пауза delayms мс
  analogWrite(9, 0);       // 0 - выключаем пьезо
  delay(delayms);          // пауза delayms мс  
}

 

com
Offline
Зарегистрирован: 06.09.2013

а сколько ардуин-то вообще и как они связаны?

S7782
Offline
Зарегистрирован: 01.02.2015

3 штуки: по одной на передатчиках и 1 на приемнике, связаны, соответственно по радиоканалу приемник и передатчик 433 МГц http://www.ebay.com/itm/433Mhz-RF-transmitter-and-receiver-kit-for-Arduino-ARM-WL-MCU-Raspberry-pi-Good-/171284863309?pt=LH_DefaultDomain_0&hash=item27e15f994d

Araris
Offline
Зарегистрирован: 09.11.2012

S7782 пишет:

П.С. У меня возникли сложности с написанием программы для приемника. Собственно в этом и есть просьба о помощи.

В вышеприведенном коде я вижу лишь мигание светодиодом и издавание звуков. А где скетч для приемника, с написанием которого возникли сложности ? Скетч передатчика тоже весьма уместен, с ним, я так понимаю, нет проблем ?

S7782
Offline
Зарегистрирован: 01.02.2015

Передатчик 1 

// the setup function runs once when you press reset or power the board
04 void setup() {
05   // initialize digital pin 13 as an output.
06   pinMode(13, OUTPUT);
07 }
08 // the loop function runs over and over again forever
09 void loop()
10 {
11   digitalWrite(13, HIGH); 
12   delay(1000);            
13   digitalWrite(13, LOW);  
14   delay(500);            
15   digitalWrite(13, HIGH); 
16   delay(1000);            
17   digitalWrite(13, LOW);  
18   delay(500);
19   digitalWrite(13, HIGH); 
20   delay(1000);             
21   digitalWrite(13, LOW);  
22   delay(600000);            
23 }

Передатчик 2

27 // the setup function runs once when you press reset or power the board
28 void setup() {
29   // initialize digital pin 13 as an output.
30   pinMode(13, OUTPUT);
31 }
32 // the loop function runs over and over again forever
33 void loop()
34 {
35   digitalWrite(13, HIGH); 
36   delay(1000);            
37   digitalWrite(13, LOW);  
38   delay(500);            
39   digitalWrite(13, HIGH); 
40   delay(1000);            
41   digitalWrite(13, LOW);  
42   delay(500);
43   digitalWrite(13, HIGH); 
44   delay(1000);            
45   digitalWrite(13, LOW);  
46   delay(500);
47   digitalWrite(13, HIGH); 
48   delay(1000);            
49   digitalWrite(13, LOW);  
50   delay(500);            
51   digitalWrite(13, HIGH); 
52   delay(1000);            
53   digitalWrite(13, LOW);  
54   delay(600000);    
55 }

Они были выложены свместе со скетчем приемника, с ними проблем нет.

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

com
Offline
Зарегистрирован: 06.09.2013

ёп! мигание светодиодом и издавание звуков - это и есть передача? а мы-то тут голову ломаем.....

Araris
Offline
Зарегистрирован: 09.11.2012

S7782, не могли бы Вы пояснить, что и каким образом передают скетчи "Передатчик 1" и "Передатчик 2" ?

S7782
Offline
Зарегистрирован: 01.02.2015

Передают определенный сигнал (видно из текста скетча), в передатчике 1 он одного вида (сигнал - 1 сек., пауза 0,5 сек., и так три раза подряд), в передатчике 2, другого (аналогично первому, но 5 раз). В том то и вопрос, мне нужно чтобы приемник их отличал один от другого и давал ответную реакцию в виде разных звуковых сигналов, в зависимости от того какой передатчик его передает. 

S7782
Offline
Зарегистрирован: 01.02.2015

com пишет:

ёп! мигание светодиодом и издавание звуков - это и есть передача? а мы-то тут голову ломаем.....

 

В общем да. Сигнал передатчика состоит из нескольких повторяющихся импульсов. Ответная реакция приемника - звуки. И все.

com
Offline
Зарегистрирован: 06.09.2013

я может сейчас крамольную мысль выскажу, но не могу сдержаться - а другого способа, кроме как моргнуть 5 раз, не предусмотрено, чтобы отличить второй передатчик от первого?

почему-то вспомнилось

— Значит так. Для деревенского ролика нужен дед, коза, завалинка. Игорь Владимирович приобнимет деда и скажет: «Не горюй, Иван Митрофаныч, поднимем село!»
— А обязательно, чтобы звали Иван Митрофанович?
— Да, а козу — Зойка! Здесь мелочей не бывает!

ruselec
Offline
Зарегистрирован: 05.02.2015

Используйте для ваших модулей библиотеку VirtualWire http://www.airspayce.com/mikem/arduino/VirtualWire/VirtualWire-1.27.zip

Статья на Хабре http://habrahabr.ru/post/182068/?utm_source=dlvr.it&utm_medium=twitter

Araris
Offline
Зарегистрирован: 09.11.2012

Ааа, то есть светодиод - это как бы передатчик, а приемник.., впрочем, неважно. Вам необходима VirtualWire, там в примерах и передатчик, и приемник есть.

S7782
Offline
Зарегистрирован: 01.02.2015

com пишет:

я может сейчас крамольную мысль выскажу, но не могу сдержаться - а другого способа, кроме как моргнуть 5 раз, не предусмотрено, чтобы отличить второй передатчик от первого?

почему-то вспомнилось

— Значит так. Для деревенского ролика нужен дед, коза, завалинка. Игорь Владимирович приобнимет деда и скажет: «Не горюй, Иван Митрофаныч, поднимем село!»
— А обязательно, чтобы звали Иван Митрофанович?
— Да, а козу — Зойка! Здесь мелочей не бывает!

Чесно говоря не стал заморачиваться, да и указанный скетч это как основа. Вот подскажите, разберусь, а там может чего и поинтереснее придумаю. 

S7782
Offline
Зарегистрирован: 01.02.2015

Araris пишет:

Ааа, то есть светодиод - это как бы передатчик, а приемник.., впрочем, неважно. Вам необходима VirtualWire, там в примерах и передатчик, и приемник есть.

Нет, нет. К указанному как светодиод выводу подключен передатчик. 

S7782
Offline
Зарегистрирован: 01.02.2015
// transmitter.pde
//
// Simple example of how to use VirtualWire to transmit messages
// Implements a simplex (one-way) transmitter with an TX-C1 module
#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);   // Debugging only
    Serial.println("setup");
    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);      // Bits per sec
}

void loop()
{
    const char *msg = "hello";

    digitalWrite(13, true); // Flash a light to show transmitting
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(13, false);
    delay(200);
}

Выдает ошибку

Arduino: 1.0.6 (Windows 7), Board: "Arduino Uno"
sketch_feb07a.ino: In function 'void setup()':
sketch_feb07a:12: error: 'vw_set_ptt_inverted' was not declared in this scope
sketch_feb07a:13: error: 'vw_setup' was not declared in this scope
sketch_feb07a.ino: In function 'void loop()':
sketch_feb07a:21: error: 'vw_send' was not declared in this scope
sketch_feb07a:22: error: 'vw_wait_tx' was not declared in this scope
 
Как ее исправить?
SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

передал 1 "SOS" - приняли, декодировали ( действие_1 )передал 2 "OSO" - приняли, декодировали ( действие_2 ).... в чём вопрос-то ?

ruselec
Offline
Зарегистрирован: 05.02.2015

библиотеку закиньте в папку libraries в корне Arduino и перезапустите Arduino.

S7782
Offline
Зарегистрирован: 01.02.2015

ruselec сделал как Вы сказали. Все ок!

Araris
Offline
Зарегистрирован: 09.11.2012

S7782 пишет:

К указанному как светодиод выводу подключен передатчик. 

Именно это я имел ввиду. Разберетесь с библиотекой, тогда все получится с сигнализацией, благо информации о готовых проектах с VirtualWire предостаточно.

 

S7782
Offline
Зарегистрирован: 01.02.2015

Всем участникам большое спасибо за помощь!!!