라즈베리파이(송신) ---> 아두이노 프로 미니로(수신) 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 활용' 카테고리의 다른 글
Raspberry pi FFMpeg 설치 (2) | 2017.07.05 |
---|---|
Raspberry pi 와 Arduino Pro Mini - RF 433 통신하기 (4) | 2017.02.03 |
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 |
Raspberry Pi Zero 출시 (0) | 2015.11.26 |
날씨 예보문 가져오기 (0) | 2015.10.21 |
라즈베리파이 공식 7인치 LCD (DSI) 멀티 터치 사용하기 (5) | 2015.09.23 |
Raspberry Pi DSI Display Multi Touch (0) | 2015.09.22 |
유튜브 다운로드 (0) | 2015.09.01 |
너무 신기하네요. 이러면 올려주신 텔레그램강좌와 조합하면 텔레그램으로 아두이노도 어느정도 컨트롤 할 수 있게 되는건가요?
가능합니다.
라즈베리파이에 텔레그램 봇을 개발 하고
메시지 수신 받으면 라즈베리파이에서 아두이노로 RF 통신을 보내는 방식으로 하면 컨트롤도 할수 있죠
비밀댓글입니다
저같은 경우는
센서와 rf 송신기를 아두이노 프로 미니 같은 작은 칩을 이용해서 사용합니다
아두이노에서 주기적으로 센서값을 읽어와서 값을 rf 송신기로 보내는 역할을 하고
라즈베리에서 rf 를 수신하여 데이터를 처리 하도록 하면 됩니다
다만, 저 같은 경우는 라즈베리파이에서 rf 수신기가 작동을 안하더군요..