Управление нагрузкой через LPD радиостанции
- Войдите на сайт для отправки комментариев
Представляю небольшой проект по управлению нагрузкой через LPD радиостанции.
Аппаратная часть состоит из:
1. Arduino UNO;
2. DTMF декодер на чипе MT8870;
3. 3 реле с управлением 5В.
4. 2 рации Baofeng UV-5R. Настроены на одну частоту, включен режим DTS.
Соединение компонентов (без цепей питания):
|
Вывод Arduino UNO |
Вывод декодера MT8870 |
Принимающая рация |
Реле1 |
Реле2 |
Реле3 |
|
2 |
Q1 |
|
|
|
|
|
3 |
Q2 |
|
|
|
|
|
4 |
Q3 |
|
|
|
|
|
5 |
Q4 |
|
|
|
|
|
6 |
|
SPK |
|
|
|
|
7 |
|
PPT |
|
|
|
|
8 |
|
|
IN |
|
|
|
9 |
|
|
|
IN |
|
|
10 |
|
|
|
|
IN |
|
A0 |
EST |
|
|
|
|
|
A1 |
STQ |
|
|
|
|
Реле, декодер собраны на шилде, который надевается на UNO. Питание – 9В через разъем UNO. Дополнительно на шилде смонтирован 5В стабилизатор, чтобы не нагружать стаб на UNO.
Принцип работы:
Код настроен на включение/выключение 1-го реле кнопками «стрелка вверх»/ «стрелка вниз», 2-е реле – «2»/«3», 3-е реле – «5»/«6» на передающей рации. Кнопка «EXIT» отключает все реле одновременно.
При нажатии како-либо из упомянутых кнопок на передающей рации с нажатой кнопкой PPT, принимающая рация получает согнал, декодирует DTMF код и производит включение/выключение нужного реле. После окончания передачи сигнала, принимающая рация входит в режим передачи и передает короткий тональный код (настраивается в самой рации). Передающая рация принимает сигнал, который является подтверждением выполнения команды.
Таким образом реализована обратная связь – вы всегда будете знать – прошел сигнал или нет. Это особо актуально для LPD раций, дистанций работы которых в условиях городской застройки может быть разной.
Небольшое видео по работе первого прототипа здесь https://youtu.be/QcEQt00XMGs
Код:
void setup() { // put your setup code here, to run once: pinMode (2,INPUT); //Q1 pinMode (3,INPUT); //Q2 pinMode (4,INPUT); //Q3 pinMode (5,INPUT); //Q4 pinMode (6,INPUT); //MONI pinMode (7,OUTPUT); //TRANSMIT pinMode (A1,INPUT); //STQ pinMode (A0,INPUT); //EST pinMode (8,OUTPUT); //RElAY 1 pinMode (9,OUTPUT); //RELAY 2 pinMode (10,OUTPUT);//RELAY 3 pinMode (13,OUTPUT); digitalWrite (2, LOW); digitalWrite (3, LOW); digitalWrite (4, LOW); digitalWrite (5, LOW); digitalWrite (6, LOW); digitalWrite (7, LOW); digitalWrite (8, HIGH); digitalWrite (9, HIGH); digitalWrite (10, HIGH); digitalWrite (13, LOW); Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: CHECK: byte MONI=digitalRead(6); //int TONE=analogRead(A1); byte EST=digitalRead(A0); //Serial.println(MONI); //Serial.println(EST); //Serial.println('X'); //delay(50); if(MONI==HIGH && EST==LOW) { delay(20); //byte DTMF1=digitalRead(2); //byte DTMF2=digitalRead(3); //byte DTMF3=digitalRead(4); //byte DTMF4=digitalRead(5); byte DTMFbyte; bitWrite (DTMFbyte,0,digitalRead(2)); // bitWrite (DTMFbyte,1,digitalRead(3)); // bitWrite (DTMFbyte,2,digitalRead(4)); // bitWrite (DTMFbyte,3,digitalRead(5)); //Запись числа в переменную DTMFbyte bitWrite (DTMFbyte,4,0); // bitWrite (DTMFbyte,5,0); // bitWrite (DTMFbyte,6,0); // //word DTMFdec=1000*DTMF4+100*DTMF3+10*DTMF2+DTMF1; //Serial.println(DTMFdec,DEC); Serial.println(DTMFbyte); Serial.println(EST); switch (DTMFbyte) { case 14: digitalWrite (8, LOW); goto TRANSMIT; break; case 15: digitalWrite (8, HIGH); goto TRANSMIT; break; case 2: digitalWrite (9, LOW); goto TRANSMIT; break; case 3: digitalWrite (9, HIGH); goto TRANSMIT; break; case 5: digitalWrite (10, LOW); goto TRANSMIT; break; case 6: digitalWrite (10, HIGH); goto TRANSMIT; break; case 0: digitalWrite (8, HIGH); digitalWrite (9, HIGH); digitalWrite (10, HIGH); goto TRANSMIT; break; default: goto CHECK; break; } } else { goto CHECK; } TRANSMIT: byte MONI_1=digitalRead(6); byte EST_1=digitalRead(A0); Serial.println(MONI_1); if(MONI_1==LOW && EST_1==HIGH) { delay(50); digitalWrite (7, HIGH); delay(600); digitalWrite (7, LOW); goto CHECK; } else { goto TRANSMIT; } }Делаю что-то подобное. Как реализовали нажатие кнопки ?
Предположу, что через разъем тангенты (pin 7 arduino).
Очень смешно. Что бы включить передачу, нужно замкнуть два пина разьема гарнитуры на 1 кОм, в разомкнутом состоянии должно быть почти 2 кОм. Иначе передача не активиуется. Резисторов тут не видно.
ЗЫ. Разобрался, тут совсем другой каленкор. Используется DTMF совместимая рация.
Но все равно пином 7 он что-то блинкает.
Да там же рация грубо говоря цыфровая. Можно управлять напрямую с контроллера. На станции без DTMF такое не прокатит.