Сигнализация
- Войдите на сайт для отправки комментариев
Здравствуйте!
Нужна помощь!
Есть проект сигнализации (для личного пользования) состоящей из приемника и двух передатчиков. При срабатывании датчика и передачи сигнала с 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 мс
}
Заранее всем большое спасибо!!!
П.С. У меня возникли сложности с написанием программы для приемника. Собственно в этом и есть просьба о помощи.
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Сигнал - 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 мс }а сколько ардуин-то вообще и как они связаны?
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
П.С. У меня возникли сложности с написанием программы для приемника. Собственно в этом и есть просьба о помощи.
В вышеприведенном коде я вижу лишь мигание светодиодом и издавание звуков. А где скетч для приемника, с написанием которого возникли сложности ? Скетч передатчика тоже весьма уместен, с ним, я так понимаю, нет проблем ?
Передатчик 1
// the setup function runs once when you press reset or power the board04voidsetup() {05// initialize digital pin 13 as an output.06pinMode(13, OUTPUT);07}08// the loop function runs over and over again forever09voidloop()10{11digitalWrite(13, HIGH);12delay(1000);13digitalWrite(13, LOW);14delay(500);15digitalWrite(13, HIGH);16delay(1000);17digitalWrite(13, LOW);18delay(500);19digitalWrite(13, HIGH);20delay(1000);21digitalWrite(13, LOW);22delay(600000);23}Передатчик 2
27// the setup function runs once when you press reset or power the board28voidsetup() {29// initialize digital pin 13 as an output.30pinMode(13, OUTPUT);31}32// the loop function runs over and over again forever33voidloop()34{35digitalWrite(13, HIGH);36delay(1000);37digitalWrite(13, LOW);38delay(500);39digitalWrite(13, HIGH);40delay(1000);41digitalWrite(13, LOW);42delay(500);43digitalWrite(13, HIGH);44delay(1000);45digitalWrite(13, LOW);46delay(500);47digitalWrite(13, HIGH);48delay(1000);49digitalWrite(13, LOW);50delay(500);51digitalWrite(13, HIGH);52delay(1000);53digitalWrite(13, LOW);54delay(600000);55}Они были выложены свместе со скетчем приемника, с ними проблем нет.
По поводу скетча для приемника, его нет, т.к. я не знаю, чего в него написать. В этом собственно и есть суть моего вопроса.
ёп! мигание светодиодом и издавание звуков - это и есть передача? а мы-то тут голову ломаем.....
S7782, не могли бы Вы пояснить, что и каким образом передают скетчи "Передатчик 1" и "Передатчик 2" ?
Передают определенный сигнал (видно из текста скетча), в передатчике 1 он одного вида (сигнал - 1 сек., пауза 0,5 сек., и так три раза подряд), в передатчике 2, другого (аналогично первому, но 5 раз). В том то и вопрос, мне нужно чтобы приемник их отличал один от другого и давал ответную реакцию в виде разных звуковых сигналов, в зависимости от того какой передатчик его передает.
ёп! мигание светодиодом и издавание звуков - это и есть передача? а мы-то тут голову ломаем.....
В общем да. Сигнал передатчика состоит из нескольких повторяющихся импульсов. Ответная реакция приемника - звуки. И все.
я может сейчас крамольную мысль выскажу, но не могу сдержаться - а другого способа, кроме как моргнуть 5 раз, не предусмотрено, чтобы отличить второй передатчик от первого?
почему-то вспомнилось
— Значит так. Для деревенского ролика нужен дед, коза, завалинка. Игорь Владимирович приобнимет деда и скажет: «Не горюй, Иван Митрофаныч, поднимем село!»
— А обязательно, чтобы звали Иван Митрофанович?
— Да, а козу — Зойка! Здесь мелочей не бывает!
Используйте для ваших модулей библиотеку VirtualWire http://www.airspayce.com/mikem/arduino/VirtualWire/VirtualWire-1.27.zip
Статья на Хабре http://habrahabr.ru/post/182068/?utm_source=dlvr.it&utm_medium=twitter
Ааа, то есть светодиод - это как бы передатчик, а приемник.., впрочем, неважно. Вам необходима VirtualWire, там в примерах и передатчик, и приемник есть.
я может сейчас крамольную мысль выскажу, но не могу сдержаться - а другого способа, кроме как моргнуть 5 раз, не предусмотрено, чтобы отличить второй передатчик от первого?
почему-то вспомнилось
— Значит так. Для деревенского ролика нужен дед, коза, завалинка. Игорь Владимирович приобнимет деда и скажет: «Не горюй, Иван Митрофаныч, поднимем село!»
— А обязательно, чтобы звали Иван Митрофанович?
— Да, а козу — Зойка! Здесь мелочей не бывает!
Чесно говоря не стал заморачиваться, да и указанный скетч это как основа. Вот подскажите, разберусь, а там может чего и поинтереснее придумаю.
Ааа, то есть светодиод - это как бы передатчик, а приемник.., впрочем, неважно. Вам необходима VirtualWire, там в примерах и передатчик, и приемник есть.
Нет, нет. К указанному как светодиод выводу подключен передатчик.
// 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); }Выдает ошибку
передал 1 "SOS" - приняли, декодировали ( действие_1 ), передал 2 "OSO" - приняли, декодировали ( действие_2 ).... в чём вопрос-то ?
библиотеку закиньте в папку libraries в корне Arduino и перезапустите Arduino.
ruselec сделал как Вы сказали. Все ок!
К указанному как светодиод выводу подключен передатчик.
Именно это я имел ввиду. Разберетесь с библиотекой, тогда все получится с сигнализацией, благо информации о готовых проектах с VirtualWire предостаточно.
Всем участникам большое спасибо за помощь!!!