|
인터넷, 컴퓨터, 모바일 통신의 등장과 정보통신 기술의 발달에 따라 전에 없었든
다양한 통신방법이 등장하게 되어 아마추어무선국들도 컴퓨터를 무전기와 연결하여 새로운 통신장치와
접속하다 보니 전에 없이 무선국 시설들이 복잡하게 되었습니다.
또한 무전기도 점차 진화를 거듭하여 하나의 무전기에서 HF는 물론 VHF, UHF 대역까지 카버할 수 있어
이에 대응할 안테나도 많아져, 무전기를 선택하고 전원을 공급하고, 안테나를 연결 하는 등 On-Air를 위해
여러 무선기기들을 Switching하고, Connecting해야 할 일도 많아 졌습니다.
이런 변화에 맞추어 여러 종류의 무전기 전원과 안테나, 그리고 외부로 연결되는 모든
안테나와 컴퓨터 들을 Smart Controller에 집중화 사켜두고 제어 Pannel에 있는 토글 스윗치를
조작 하여 무전기 전원은 물론, 외부안테나 까지 동시에 접속시켜 On-Air를 할 수 있는
새로운 개념의 다 기능 아마추어무선국용 Smart Controller를 공개하고,
제작방법에 대한 기술공유를 하고자 합니다.
1, 중요한 기능 및 특징
o Hardware가 매우 간편함으로 만능기판을 이용하여 누구든지 쉽게 제작할 수 있습니다.
o 사용한 부품은 인터넷 혹은 시중의 전자부품 판매점에서 쉽게 구입할 수 있으며, 보편적 인 부품이므로
가격이 매우 저렴합니다.
o 아마추어무선국에서 Controller라고 한다면 일반적으로 안테나를 생각할 수 있는데, 여기 서는 안테나
선택, 무전기 선택, 무전기 전원 공급, 컴퓨터 전원, Timer를 이용한 스케줄 교신 운용 등을 Local에서
직접 Control할 수 있을 뿐만 아니라,
o 휴대폰과 WiFi 인터넷을 이용하여 위에서 열거한 모든 기능을 원격지에서 Local에서의 환경과 꼭 같이
원격제어가 가능합니다.
o 무전기 RF출력과 안테나 RF 신호 Switching을 위해 사용하는 릴레이는 일반 릴레이도 사용할 수 있으며,
동축 케이블용 Latching Relay도 사용할 수 있습니다.
o 현재는 Arduino Nano를 이용하여 10개 정도의 한정된 Port를 활용하는 관계로 4대의 무 전기와 4대의
안테나를 Switching 할 수 있도록 하였으나, 사용자의 필요에 따라 6대 혹은 10 대 그 이상의 Device로
확장할 수 있는 충분한 여지가 있습니다.
o 모든 주요 기능을 Software로 Cording하여 두었으므로 Open Source 환경으로 공개된 Program에
따라 학생들의 Software 교육 또는 아마추어 동호인들이 다양한 무선기기를 제어하기 위한 수단으로도
이용 할 수 있습니다.
o Arduino는 Open Source환경으로 모든 프로그램을 공개하고 있으며, 누구든지 만능기판 으로 조립한
장치에 Software를 탑재하여 손쉽게 직접 제작할 수 있도록 하였습니다.
o 휴대폰과 인터넷을 이용한 원격제어용 App은 Blynk에서 제공하는 Tool을 사용하여 만들었으며, Tool을
사용하는 방법을 잘 숙지하면, 아무리 복잡한 기능의 App이라도 10분 이내의 짧은 시간 내에 자신이 필요로
하는 휴대폰용 App을 만들 수 있습니다.
o 휴대폰으로 제작하는 App의 Design, 색상, 기능들은 본인이 필요로 하는 환경으로 수 시 변경이 가능하며,
앞으로도 다양한 기능으로 확장할 수도 있습니다.
o 휴대폰에서 자신이 필요로 하는 위젯은 Bynk Web Site에서 유료로 On-Line구매할 수 있으므로 본인이
소개하는 기능 외에도 각자 개인들의 필요에 따라 다양한 위젯을 구매하 여 개별적으로 상이한 여러
아마추어 무선국들의 다양한 무선국 환경을 지원할 수 있습니다.
o Smart Controller는 표준화된 간단한 Hardware에 의해 개인이 필요로 하는 여러 기능을 Software로
구현하여 동호인들 간에 서로 공유할 수 있으며, 개별화, 차별화, 다 양화 하는 새로운 기능으로 확장성 있는
환경을 구현하고 있습니다.
2. 전체 모습 및 구성
Smart Controller의 사용방법은 매우 간단합니다. 위 사진에서와 같이 먼저 1-4까지의
무전기 중에서 사용하고자 하는 무전기를 선택하고, 다음으로 1-4까지의 안테나 중에서 하나를 선택
한 후, 오른쪽에 있는 전원 스윗치를 넣으면, 해당 무전기에 전원이 공급되고,
안테나가 연결되어 마이크로 바로 On-Air 가 가능합니다.
전체 모습은 Relay가 주 부품이며, 그 외 ESP-8266 NodeMcu 와 Arduino NANO 가 있습니다.
스윗치는 토글 스윗치이며, 선택된 무전기와 안테나를 Arduino에서 Software적으로
확인하여 해당 Relay를 Arduino에서 Control합니다,
Smart Controller의 무선국 제어 Pannel입니다. 4대의 무전기 중 하나를 선택해서
토글 스윗치로 ON하고, 이 무전기에 연결할 4개의 안테아 중 하나를 선택해서 ON한 다음,
오른쪽 Power Switch를 ON하면 Relay에서 Selecting되고 선택된 무전기에
전원까지 공급되어 즉시 마이크를 잡고 On-Air를 할 수 있습니다.
휴대폰으로 Smart Controller를 제어하는 버턴을 옮겨와서 무전기와 안테나를
스윗칭할 수 있습니다. 이 화면은 사용자가 Design, 기능 , 글자 크기 및 색상 등을 임의로 바꿀 수 있으며,
제어하는 Device의 숫자도 조절할 수 있어 사용자의 개성에 따라 다양하게 구성할 수 있습니다.
버턴 터치로 무전기와 안테나를 선택하면 위와 같이 색상이 바뀝니다.
3. System Hardware
전체 시스템은 4대의 무전기와 4대의 안테나를 선택할 수 있는 Switching System으로,
아래와 같이 12개의 Relay와 Arduino, NodeMcu, 무전기와 안테나를 선택하는 토글 스윗치 및
제어 Software로 구성되어 있습니다.
그중 무전기를 제어하는 Relay는 8개인데, 4개는 전원제어용, 다른 4개는 무전기 출력
RF Relay로서 전원부와 무전기 출력 RF Switching Relay는 연동되어 작동하며, 나머지 4개는
안테나 Switching 그리고 Arduino 전원과 컴퓨터 Power Relay가 있습니다.
전체 회로는 아주 Simple하며, 만능기판으로도 제작할 수 있습니다.
Arduino, NodeMcu, 그리고 Switching Diode, Relay Module로 구성되어 있습니다,
무전기와 안테나가 Arduino NANO에 의해 제어 Software로 Switching
되는데, 아래와 같이 고주파 Relay 또는 동축케이블 Latching Relay를 사용할 수 있습니다.
무전기를 선택하면 선택된 무전기에 전원도 같이 공급되는데,
DC Switching의 경우는 SSR(반도체 릴레이)을 사용할 수도 있고 Relay도 사용할 수 있는데,
어느 것을 사용하든 충분한 규격을 이용해야 합니다. 100W출력의 경우
SSR은 50V 40A 정도이면 충분합니다.
4. System Software
Arduino Project의 대부분은 Hardware를 Software로 제어하는
것에 초점이 맞추어져 있어 Hardware의 상식을 어느 정도 갖추어야 합니다.
먼저 Arduino 시작을 위해서는 컴퓨터와 USB로 연결하여 Web환경에서
Arduino Program을 작성하고 컴파일한 후, Upload까지의 전 과정을 지원하는 Software가 Arduino
IDE인데, Aeduino 홈페이지 https://www.arduino.cc 에서 Down 받을 수 있습니다
Arduino IDE는 출력 모니터가 없는 Arduino NANO의 화면 모니터 역할을 하며,
USB로 컴퓨터와 연결되어 Windows 환경에서 여기에 공개된 Software를 컴파일, Upload하는
기능을 담당하는 매우 중요한 역할을 합니다.
Smart Controller의 주된 제어기능은 Arduino NANO에 탑재되며,
NodeMcu ESP8266은 휴대폰과 인터넷을 이용하여 Smart Controller의
원격제어 기능을 담당합니다.
Arduino에서 사용하는 Software를 흔히 "스케치"라고도 하는데,
이는 그림을 "스케치"하는 정도로 매우 쉽게 접근할 수 있고 배울수 있다는 뜻으로
초등학교의 Software Cording 교육으로 많이 활용하는 컴퓨터 언어닙니다.
실제로 본인도 3년 전 초등학교 5학년 손자와 함께 국립부산과학관에서 실시한
방과 후 교육 프로그램에 교통지원을 위한 청강생으로 참여하여, 교실에는 들어가지 못하고 교실의 창문뒤에
서서 생전 처음으로 Arduino를 알게 되었고,, 그 후 Arduino에 관한 손자의 다양한 질문공세를 해결하기
위해 혼자서 인터넷과 책을 보면서 Youtube 강의를 듣고 공부하게 되었습니다.
가. Relay Module 및 토글스윗치의 변수 설정
#define TrcvRelay1 2 // 무전기 1-4 전원, RF 출력단자
#define TrcvRelay2 3 // 무전기 전원과 무전기 RF출력 렐레이는 같이 연결 됨
#define TrcvRelay3 4
#define TrcvRelay4 5
#define LthRelay1 6 // 안테나 1-4 RF 출력 단자
#define LthRelay2 7
#define LthRelay3 8
#define LthRelay4 9
#define PowerRelay 10 // 전원공급 및 Start
#define ComputerRelay 11 // Remote 용 Computer Start & Stop
#define LightRelay 12 // 조명용 전등, 필요할 경우에 설치 함.
#define AntSw1 A0 // A0 ~ A3 까지는 안테나 선택 스윗치 연결
#define AntSw2 A1
#define AntSw3 A2
#define AntSw4 A3
#define TrcvSw5 A4 // A4 ~ A7 까지는 무전기 선택 스윗치 연결
#define TrcvSw6 A5
#define TrcvSw7 A6
#define TrcvSw8 A7
나. Arduino NANO의 입, 출력 Mode 설정
pinMode(LthRelay1, OUTPUT); // 1-4 안테나 RF 릴레이 출력 설정
pinMode(LthRelay2, OUTPUT);
pinMode(LthRelay3, OUTPUT);
pinMode(LthRelay4, OUTPUT);
pinMode(TrcvRelay1, OUTPUT); // 1-4 무전기 전원, RF 출력 설정
pinMode(TrcvRelay2, OUTPUT);
pinMode(TrcvRelay3, OUTPUT);
pinMode(TrcvRelay4, OUTPUT);
pinMode(PowerRelay, OUTPUT); // 기타 제어
pinMode(ComputerRelay, OUTPUT);
pinMode(LightRelay, OUTPUT);
pinMode(AntSw1, INPUT); // 1-4 안테나 선택 입력 설정
pinMode(AntSw2, INPUT);
pinMode(AntSw3, INPUT);
pinMode(AntSw4, INPUT);
pinMode(TrcvSw5, INPUT); // 1-4 무전기 선택 입력 설정
pinMode(TrcvSw6, INPUT);
pinMode(TrcvSw7, INPUT);
pinMode(TrcvSw8, INPUT);
다. 무전기, 안테나 선택 토글 스윗치의 선택에 따른 입력 변수 설정
int valAnt1; // 안테나 선택 스윗치 변수
int valAnt2;
int valAnt3;
int valAnt4;
int valTrcv5; // 무전기 선택 스윗치 변수
int valTrcv6;
int valTrcv7;
int valTrcv8;
valAnt1 = digitalRead(AntSw1); // 안테나 스윗치1-4 신호를 감지 한 변수.
valAnt2 = digitalRead(AntSw2);
valAnt3 = digitalRead(AntSw3);
valAnt4 = digitalRead(AntSw4);
valTrcv5 = digitalRead(TrcvSw5); // 무전기 스윗치 5-8 신호를 감지한 변수
valTrcv6 = digitalRead(TrcvSw6);
valTrcv7 = analogRead(TrcvSw7);
valTrcv8 = analogRead(TrcvSw8)
라. Relay Module의 동작 명령어 함수
/*
Latching Relay와 일반릴레이를 사용할 수 있음.
일반릴레이를 사용하는 경우는 아래 명령어 함수 중 “ // ” 함수를 제거하고
사용하며, 일반 릴레이의 경우는 이대로 사용할 수 있음.
*/
if(valAnt1 == HIGH) // 안테나 1 선택
{
// digitalWrite(LthRelay1, LOW); // 첫번째 안테나 래칭 릴레이 동작 신호출력
// delay(1000); // 1초동안 신호가 출력되도록 함
digitalWrite(LthRelay1, LOW);
delay (15);
valAnt2 = LOW;
valAnt3 = LOW;
valAnt4 = LOW;
}
무전기의 Relay가 2대 이상 동시에 작동한다 든지, 안테나의 Relay가 2대 이상 동시에 작동하는 에러가
없도록 Software에서 사전에 예방하고 있으며, 본 Program애서는 Loop 함수를 사용하지 않기 때문에,
마지막으로 Switching하는 전원 스윗치 또는 휴대폰의 버턴 조작이후에는 어떤 조작이나 신호에도 반응을
하지 않기 때문에 안전성을 유지할 수 있습니다.
{
digitalWrite(TrcvRelay1, LOW);
delay(15);
valTrcv6 = LOW;
valTrcv7 = LOW;
valTrcv8 = LOW;
}
토글 스윛치가 이중으로 동작하는 것을 방지하기 위해 위와 같이 Relay를 동작시키는 함수 하나 하나에
다른 토글 스윗치의 입력 값을 무효화 하는 명령어들을 넣어 4개의 스윗치 또는 휴대폰의 버턴이 눌려져도
제일 순서가 빠른 하나의 스윗치만 작동하도록 하였으며, 기타 Relay동작 에러를 방지하기 위해 프로그램
실행 전에 초기화 명령어로 전체 Relay동작을 정리하여 에러를 방지하고 있습니다.
그리고 더욱 중요한 안정화 조치로 Arduino 스케치에서 Loop 함수를 제거하여 전체 프로그램은 전원이
Arduino에 공급되는 순간 한번 만 작동하도록 하여 동작이후 Arduino에 인입되는 RFI, 전기잡음, 기타
스윗치 입력 신호에는 전혀 반응을 하지 못하도록 하여 안정성을 유지하도록 하였습니다.
마. 휴대폰을 이용한 원격제어 App
Smart Controller에서 휴대폰을 이용하여 원격제어를 할 수 있는 수단은 Blynk를
이용했는데, Blynk는 iOS 또는 Android 앱을 기반으로 인터넷을 통해 Arduino 또는 Raspberry
Pi같은 Hardware를 제어할 수 있는 플렛폼입니다.
Blynk는 디지털 대시보드로서 위젯을 가져오고 배치하여 Smart Controller을
제어하는 그래픽 인터페이스를 휴대폰에 구축할 수 있는데, 채 10분도 걸리지 않습니다.
Blynk를 사용하기 위해서는 휴대폰에 먼저 Blynk App을 Down 받아야 하며,
본인이 사용하는 e-Mail과 Passward를 입력하고 Sign Up을 누르면 곧 바로
사용할 수 있는데, 계정 생성 후 첫 계정 생성 후에는
2,000 Energy가 공급되어 사용할 수 있습니다.
Smart Controller에는 총 10개의 버턴이 있고 그 중 1개는 Timer로
구성되어 있습니다. 10개의 버턴 중 4개는 무전기 선택 용, 또 4개는 안테나 선택을 위한 버턴으로
구성되어 있으며, 나머지 2개 중 하나는 Arduino NANO 전원 제어용,
나머지는 컴퓨터 전원을 켜고 꺼는 용도의 버턴입니다.
무전기와 안테나의 선택 버턴은 NodeMcu의 Digital 출력 Port와 동기가
되어 동작하는데, 이는 또 Local 조작을 위한 토글 스윗치와 꼭 같이 작동합니다.
그리고 Timer는 시작 시각과 마침 시각을 초 단위 까지 설정할 수 있는데,
이는 스케줄 교신에 매우 유용하게 사용할 수 있습니다. Timer에서는 이를 어떤 Device에
적용할 것인가와, 신호 Level을 Start 할 때 출력 할 것인가를 설정해야 합니다.
Timer 기능은 휴대폰에서만 설정이 가능한데, 스케줄 교신이나
시각을 정하여 미리 약속한 교신일 경우에는 휴대폰에서 사용할 무전기와 안테나를 먼저 선택하고
Arduino의 전원 ON시각을 설정해 두면 설정된 시각에 무전기와 안테나가 자동으로
선택되고 전원이 들어와 수신상태로 되고, 마이크만 잡으면 버로 교신을 할 수 있습니다.
이는 Remote Control 무선국을 운영하는 경우에는 대단히 편리한 기능입니다.
5. 제작 후기
Arduino NANO와 NodeMcu는 모두가 생소하고 사용해 본 경험이
많지 않을 것으로 생각하며, 또한 Arduino의 Programming작업도 많은
시행착오가 있을 것으로 예상됩니다.
그러나 가격대비 성능을 높이고, Hardware를 표준화하고 간단하게 하여
값싸게 제작할 수 있는 방법은 이 방법뿐이라고 생각하고 많은 시간을 투자하고
연구하다 보니까 본인 같이 늙은 사람도 제작할 수 있었습니다.
전문가의 시각에 따라서는 여기서 공개한 Smart Controller의 Software가 많이
서툴러 보이고 보완해야 할 점이 많다고 생각 됩니다 만, 지금을 시발점으로 해서 많은 동호인들이
서로 머리를 맞대고 그동안 쌓은 지식과 경험을 공유하여 함께 개선해 나간다면
이제까지 상상도 못했던 더욱 기발한 기능과 성능이 탑재된
Smart Controller가 탄생될 수 있다고 봅니다.
어찌되었든 여기서 공개한 Smart Controller는 Hardware가 간단하여 누
구든지 제작할 수 있고, Software만 개선해 나간다면 더욱 발전해 나갈수 있다는 확장성이 있다는
점에서 커더란 특징이 있다고 생각됩니다.
여기서 제시한 내용보다 더욱 상세한 자료는 나중에 우리 카페에 올려 두겠으며,
Software 부분도 File 형태로 Up-Load해 두겠습니다.
2019. 6. 1
## 많은 분들이 따라서 만들 수 있도록 자세한 제작 방법과 본인이 사용하는 Software를
Arduino File 형태로 올려 둘 예정입니다. Arduino Web Editor인 IDE를 사용해서
바로 불러 올 수 있도록 할 예정인데, IDE를 사용하는 방법은 인터넷에 많은 내용들이
있으니 참고 하시기 바랍니다. ##