라즈베리파이(송신) ---> 아두이노 프로 미니로(수신) RF 통신을 이용하여 LED 를 켜보자
1. 준비물
- 라즈베리파이( 2 또는 3) 1개
- 아두이노 프로 미니 1개
- Usb to TTL(아두이노 프로 미니에 프로그램 업로드 하기 위해 사용) 1개
https://goo.gl/TJTMGo (Usb To TTL + 아두이노 프로 미니 묶음 판매)
- RF 433 Emmiter 1개
- RF 433 Receiver 1개
https://goo.gl/4KMIdi (5쌍 묶음 판매)
- LED 1개
2. 회로 구성 하기.
2.1 라즈베리파이 회로 구성
RF 송신모듈에 각각 위와 같이 연결합니다.
Raspberry pi |
RF Emitter |
5V |
Vcc |
GPIO 21 |
Data |
GND |
GND |
2.2 아두이노 프로 미니 회로 구성하기
Arduino Pro Mini |
RF Receiver |
Vcc |
Vcc |
PIN 2 |
Data |
GND |
GND |
다음 경로로 이동
cd /home/pi/433Utils/RPi_utils
codesend.cpp 파일을 열어
int PIN =0;
위 코드를
int PIN = 21;
로 변경
또는 아래와 같이 소스 작성 후 컴파일
rftest.cpp
/* Code Send */ #include "RCSwitch.h" #include#include int main(int argc, char *argv[]) { // This pin is not the first pin on the RPi GPIO header! // Consult https://projects.drogon.net/raspberry-pi/wiringpi/pins/ // for more information. int PIN = 21; // Parse the firt parameter to this command as an integer int code = atoi(argv[1]); if (wiringPiSetup () == -1) return 1; printf("sending code[%i]\n", code); RCSwitch mySwitch = RCSwitch(); mySwitch.enableTransmit(PIN); mySwitch.send(code, 24); return 0; }
위 코드를 컴파일 시에는 다음과 같이 진행한다.
RCSwitch 라이브러리를 포함시켜야 한다.
#include "RCSwitch.h" #include#include RCSwitch mySwitch = RCSwitch(); void setup() { Serial.begin(9600); pinMode(LED_BUILTIN, OUTPUT); mySwitch.enableReceive(0); // Receiver on inerrupt 0 => that is pin #2 } void loop() { if (mySwitch.available()) { int value = mySwitch.getReceivedValue(); if (value == 0) { Serial.print("Unknown encoding"); } else { Serial.print("Received "); Serial.print( mySwitch.getReceivedValue() ); Serial.print(" / "); Serial.print( mySwitch.getReceivedBitlength() ); Serial.print("bit "); Serial.print("Protocol: "); Serial.println( mySwitch.getReceivedProtocol() ); switch(value):{ case 1001:{ digitalWrite(LED_BUILTIN, HIGH); }break; case 1002:{ digitalWrite(LED_BUILTIN, LOW); }break; } } mySwitch.resetAvailable(); } }
아두이노에 프로그램을 컴파일 -> 업로드 하고
툴 -> 시리얼 모니터를 선택하여 시리얼 모니터 창이 보이도록 한다.
라즈베리파이에서 컴파일 해둔 rftest 를 시험해보자.
sudo rftest 12345
RF 송신기로 12345 라는 값을 보내면
아두이노의 시리얼 모니터로 12345 라는 값을 받았다는 메시지가 보이면 성공이다.
RF 송신기로 1001 을 보내면 아두이노에 연결된 LED 가 켜지고
1002 를 보내면 연결된 LED 가 꺼진다.
위 예제를 이용하면 라즈베리 파이 1대와
아주 값싼 아두이노 프로 미니를 원격으로 컨트롤 할 수 있다.
릴레이를 컨트롤 하면 원격으로 조정 할수 있는 멀티탭도 만들수 있다.
테스트 해본 결과 집 내부 가장 끝 방에서 끝방까지 (콘크리트 벽 2, 나무 방문 2개) RF 안테나 없이 송수신이 되는것을 확인 하였다.
'강좌 > RaspberryPI 활용' 카테고리의 다른 글
Raspbian 에 python 3.8 Selenium 및 chromedriver 설치 (0) | 2019.12.16 |
---|---|
pi hole 암호 변경 (0) | 2019.03.14 |
Raspberry pi - Raspbian stretch python 3.7 설치 (0) | 2018.09.10 |
Raspberry pi FFMpeg 설치 (2) | 2017.07.05 |
Raspberry pi touch screen 깨우기 (0) | 2017.01.25 |
Raspberry pi - Python 3.5 설치 하기 (12) | 2016.10.11 |
Telegram CLI 시작 프로그램 등록하기 (18) | 2016.07.25 |
라즈베리파이 FrameBuffer 스트리밍 (0) | 2016.01.13 |