반응형

아두이노는 자체로도 쓰임새가 많지만 와이파이, 블루투스, RF 등의 무선 모듈과 합쳐지면 그 쓰임새가 더욱 늘어난다. 여기저기 흩어져 있는 센서의 측정값 들을 모아 통합 저장할 수도 있으며 무선으로 원격 컨트롤을 가능하게 하기도 한다. 블루투스, 와이파이 등...  본 블로그에서는 무선 모듈에 대해서 많이 알아봤었는데 RF 모듈은 처음인 것 같다. 알리익스프레스를 뒤져보니 433Mhz 송수신 모듈이 5쌍에 3000원 정도 밖에 하지 않는다. 매우 저렴하다. 게다가 어떤 유튜버에 따르면 간단한 안테나를 만들어 달면 100여 미터 이상 까지도 통신이 된다고 한다. 저렴한 가격과 괜찮은 성능이다. 바로 구입해서 테스트 해 보았다.


433Mhz RF 무선 송수신 모듈이다. 좌측이 송신모듈, 우측이 수신모듈이다. 크기는 2~3CM 정도로 매우 작고 가벼워서 RC 비행기 같은데 넣어도 될 것 같다.


송신모듈이다. 핀의 구성은 위와 같으며 안테나 연결부도 위와 같다. VCC 에는 3.5 ~ 12V 까지 연결이 가능하다.


수신 모듈이다. 핀의 구성은 위와 같으며 안테나 연결부도 위와 같다. 가운데 두 개의 핀이 DATA 인데  어느것을 사용해도 상관이 없다.


■ 433Mhz RF 송수신 모듈 스펙


Transmitter module parameters

1.Product Model: MX-FS-03V

2.Launch distance :20-200 meters (different voltage, different results)

3.Operating voltage :3.5-12V

4.Dimensions: 19 * 19mm

5.Operating mode: AM

6.Transfer rate: 4KB / S

7.Transmitting power: 10mW

8.Transmitting frequency: 433M

9.An external antenna: 25cm ordinary multi-core or single-core line

10.Pinout from left to right: (DATA; VCC; GND)


Receiver module parameters

1.Product Model: MX-05V

2.Operating voltage: DC5V

3.Quiescent Current: 4MA

4.Receiving frequency: 433.92MHZ

5.Receiver sensitivity:-105DB

6.Size: 30 * 14 * 7mm

7.External antenna: 32CM single core wire, wound into a spiral


 

■ 연결


연결은 간단하다. 나의 경우 송신측은 아두이노 나노를 이용했고 수신측은 우노를 이용했다. 각각 아두이노 자체전원 5V 와 GND 에 전원을 연결했으며 송수신 모듈 모두 DATA 는 하나 밖에 없기 때문에 다음과 같이 연결하면 된다.


- 송신측 DATA : 아두이노 D12 에 연결

- 수신측 DATA : 아두이노 D11 에 연결


연결된 모습은 위와 같다. 송신측은 5V 보조 배터리 이용, 수신측은 PC 연결


 

■ 소스


소스는 송신측에서 문자열을 보내면 수신측에서 문자열을 받아서 시리얼 모니터에 출력하는 것을 목표로 했다. 먼저 RF 모듈을 쉽게 사용할 수 있게 해 주는 VirtuialWire 라이브러리를 다운로드 받아서 설치 해야 한다. 


- 다운로드 : http://www.resistorpark.com/arduino-virtualwire-library-download/

VirtualWire.zip


- 송신측 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <VirtualWire.h>
 
const int TX_DIO_Pin = 12// default 12
 
 
void setup()
{
  vw_set_tx_pin(TX_DIO_Pin); // Initialize TX pin
  vw_setup(2000); // Transfer speed : 2000 bits per sec
}
 
void loop()
{
  send("DOIYYOURSELF");
  delay(1000);
}
 
void send (char *message)
{
  vw_send((uint8_t *)message, strlen(message));
  vw_wait_tx(); // Wait until the whole message is gone
}
cs


- 수신측 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <VirtualWire.h>
 
byte message[VW_MAX_MESSAGE_LEN]; // a buffer to store the incoming messages
byte messageLength = VW_MAX_MESSAGE_LEN; // the size of the message
 
const int RX_DIO_Pin = 11// default 11
 
void setup()
{
  Serial.begin(9600);
  Serial.println("Ready to receive:");
  vw_set_rx_pin(RX_DIO_Pin); // Initialize RX pin
  vw_setup(2000); // Transfer speed : 2000 bits per sec
  vw_rx_start(); // Start the receiver
}
 
void loop()
{
  if (vw_get_message(message, &messageLength)) // Non-blocking
  {
    Serial.print("Received: ");
    for (int i = 0; i < messageLength; i++)
    {
      Serial.write(message[i]);
    }
    Serial.println();
  }
}
cs


- 실행결과


위와 같이 무선 RF 통신으로 'DOIYYOURSELF (DOITYOURSELF 의 오타 ^^; )' 라는 문자열이 제대로 전송되는 것을 알 수 있다. 하지만 이 모듈에는 문제점이 있다. 통신거리가 극히 짧은 것이다. 나의 경우 10CM 정도 떨어지면 송수신이 되지 않았다.


맨 위에서도 언급했듯이 안테나를 달면 송수신 거리를 길게 할 수 있다고 한다. 그래서 랜선을 잘라서 안테나를 만들어 주었다.


안테나 길이 구하는 공식은 '300/주파수' 인데 300/433=0.693m 이다. 이를 cm 으로 하면 69.3cm 이다. 그런데 이를 다시 4로 나누어 안테나 길이를 구하는데 17.3cm가 나온다. 안테나에 대한 구체적인 지식은 모르겠고 이 공식에 따라서 17.3cm로 랜선을 잘라서 모듈에 납땜해 주었다.


그런데 위의 모듈 상세스펙의 마지막 부분을 보면 송신측은 25cm, 수신측은 32cm의 권장 안테나 길이가 쓰여 있다. 뭐가 맞는지 모르겠지만 일단 인터넷의 의견을 따랐다. 나중에 스펙에 있는 다른 안테나 길이도 추가 테스트를 해 봐야 겠다.


안테나를 만들어 달고 결과적으로 아주 약간의 향상이 있었다. 10cm 통신거리에서 30cm 정도로 통신거리가 눈꼽만큼 늘어난 것이다. 그런데 이 정도로는 무선 RF 라는 장점은 하나도 없다. 적어도 10미터는 넘게 통신거리가 나와야 활용할 수 있을 듯 하다. 


안테나 다음으로 생각되는 것이 송신측 전압이다. 송신모듈의 경우 3.5V-12V 가 작동 전압인데 나는 아두이노 자체전원을 사용했다. 이것을 외부전원을 따로 주어 조금 더 강력한 전압과 전류가 되도록 하면 어떨까? 생각해 보았다. 9V 건전지가 적당할 것 같은데 일단 없어서 글을 접고 나중에 추가로 테스트를 해 보아야 겠다.


안테나 길이 관련 참조 자료


비슷한 모듈 같은데 165m 까지 통신이 된다.




과연 싸고 좋은 것은 없는 것인가? 오늘 실험은 실망이지만 다음 추가 테스트가 기대가 된다. 적당한 거리에서 통신이 잘 된다면 이 보다 더 저렴하고 쓸만한 아두이노 무선 통신은 없을 것 같다. ^^



■ 추가내용 (2017.10.30) : 각각 9V 알카라인 배터리를 이용해서 전원을 공급해 보았다. 결론은 위의 비디오 처럼 165m 까지 절대로 안나온다는 것이다. 그래도 기존보다 많이 늘어난 5~10m 까지 통신거리가 늘어났다. 집안 근거리 통신에는 그럭저럭 쓸 수 있을 듯 하다. 또는 분실방지 장치 같은데도 쓰일 수 있을 것 같다. 지갑과 가방에 각각 모듈을 넣고 신호가 끊기면 경보를 울리게 하는... 아무튼 비추 모듈이다. 통신거리가 너무 짧다. 


작동전압을 고려해서 송신측은 9V 배터리 전압을 직접 공급했으며 수신측은 아두이노의 5V 전원을 이용했다.



■ 추가내용 (2018.04.22) : 혹시 이 모듈의 통신거리가 잘 안나오는 분들은 아래 '아두이노초보

' 님의 댓글을 참고하면 좋은 결과가 있을지도 모르겠다.


반응형

+ Recent posts