이 세션에서는 무선으로 장치를 제어하는 데 사용할 수있는 Raspberry Pi를 사용하여 RF 원격 제어 를 개발할 것 입니다. 이 RF 리모콘을 사용하여 장치를 켜고 끌 수 있습니다. 우리는 이전에 RF 제어 로봇, 손 제스처 제어 로봇 등과 같은 RF 모듈을 사용하여 많은 프로젝트를 개발했으며,이를 확인하여 RF 모듈의 작동을 이해합니다.
필수 구성 요소:
송신기 측:
- RF 송신기 (ASK 하이브리드 송신기)
- HT12E IC
- 4 푸시 버튼
- 750k 저항
- 9 볼트 배터리
수신기 측:
- 라즈베리 파이
- 16x2 LCD
- 10K POT
- 브레드 보드
- 1K 저항기 (5 개)
- 33K 저항
- HT12D IC
- RF 수신기 (ASK 하이브리드 수신기)
- LED (5 개)
- 10K 저항 (4 개)
- 와이어 연결
- 전원 공급
RF 모듈:
이것은 433Mhz 주파수에서 작동 하는 ASK 하이브리드 송신기 및 수신기 모듈입니다. 이 모듈에는 최상의 범위를위한 정확한 주파수 제어를 유지하기위한 수정 안정화 발진기가 있습니다. 이 모듈을 위해 외부에 하나의 안테나 만 필요합니다.
이 모듈은 장거리 RF 통신이 필요한 경우 매우 비용 효율적입니다. 이 모듈은이 주파수와 아날로그 기술에 많은 노이즈가 있기 때문에 PC 나 마이크로 컨트롤러의 UART 통신을 사용하여 데이터를 직접 전송하지 않습니다. 노이즈에서 데이터를 추출하는 인코더 및 디코더 IC의 도움으로이 모듈을 사용할 수 있습니다.
송신기의 범위는 최대 공급 전압에서 약 100 미터이고 5 볼트의 경우 송신기의 범위는 단일 코드 17cm 길이의 안테나로 구성된 간단한 와이어를 사용하여 약 50-60 미터입니다.
RF 송신기 특징:
- 주파수 범위: 433 Mhz
- 출력 전력: 4-16dBm
- 입력 공급: 3 ~ 12V dc
RF Tx의 핀 설명:
- GND-접지 공급
- 데이터 입력-이 핀은 인코더에서 직렬 데이터를받습니다.
- Vcc-+5 볼트가이 핀에 연결되어야합니다.
- 안테나-적절한 데이터 전송을 위해이 핀에 래핑 된 연결
RF 수신기 특징:
- 감도: -105dBm
- IF 주파수: 1MHz
- 저전력 소비
- 전류 3.5mA
- 공급 전압: 5V
RF Rx의 핀 설명:
- GND-접지
- 데이터 입력-이 핀은 출력 직렬 데이터를 디코더에 제공합니다.
- 데이터 입력-이 핀은 출력 직렬 데이터를 디코더에 제공합니다.
- Vcc-+5 볼트가이 핀에 연결되어야합니다.
- Vcc-+5 볼트가이 핀에 연결되어야합니다.
- GND-접지
- GND-접지
- 안테나-적절한 데이터 수신을 위해이 핀에 래핑 된 연결
작동 설명:
이 프로젝트의 작업은 매우 쉽습니다. 이 프로젝트에서 우리는 수신기쪽에있는 4 개의 LED를 제어하기 위해 송신기 쪽 (원격 역할)에있는 4 개의 버튼을 사용했습니다. 네 개의 버튼 중 하나를 누르면 Encoder IC가 신호를 인코딩하여 RF 송신기로 보내고 RF 송신기 는이를 환경에서 전송합니다. 이제 RF 수신기 는 전송 된 신호를 수신하고 디코더 IC HT12D를 사용하여 디코딩 한 다음 4 비트 출력을 Raspberry Pi로 보냅니다. 그런 다음 Raspberry Pi는 이러한 비트를 읽고 관련 작업을 수행하고 각 LED를 켭니다. 아무 키나 누를 때마다 부저음이 1 초간 울립니다. 16x2 LCD는 모든 LED의 '켜짐 또는 꺼짐'상태를 표시하는데도 사용됩니다.
이 프로젝트에서는 데모 용으로 4 개의 LED를 사용했으며 'RF Remote'에서 해당 버튼을 눌러 모든 작업을 트리거 할 수 있습니다. 마찬가지로 릴레이를 사용하여 LED 대신 AC 가전 제품을 연결하고 동일한 'RF Remote'를 사용하여 무선으로 해당 가전 제품을 제어 할 수 있습니다. 따라서이 동일한 회로는 Raspberry Pi를 사용 하는 RF 기반 홈 자동화 프로젝트 로 작동 할 수 있습니다. 우리는 이전에 Bluetooth, DTMF, GSM 등을 사용하여 제어되는 많은 홈 오토메이션 프로젝트를 개발했으며 여기에서 모든 홈 오토메이션 프로젝트를 확인할 수 있습니다.
회로 설명:
이 라즈베리 파이 RF 원격 제어의 회로는 라즈베리 파이 보드, 푸시 버튼 및 LCD, RF 쌍 및 인코더 / 디코더 IC를 포함하는 간단합니다. Raspberry Pi 는 LCD를 제어하고 입력을 읽고 입력에 따라 출력을 보냅니다. 여기에서는 Raspberry Pi 3를 사용했지만 모든 Raspberry 모델이 작동합니다. 회로는 두 부분으로 나뉘는데, 하나는 RF 수신기 회로이고 다른 하나는 RF 송신기 회로입니다. 두 회로는 아래 다이어그램에 나와 있습니다.
수신기 부분에서 LCD 핀 rs, en, d4, d5, d6, d7은 4 비트 모드에서 배선 Pi GPIO 핀 11, 10, 6, 5, 4, 1에 연결됩니다. RF 수신기는 RF 송신기로부터 신호를 수신하고 HT12D IC는이를 디코딩합니다. HT12D 디코더 IC의 D8, D9, D10, D11은 배선 PI GPIO 핀 25, 24, 23 및 22에 직접 연결됩니다. 출력 LED는 배선 PI GPIO 핀 26, 27, 28 및 29에 연결됩니다. 경고음에도 부저가 사용됩니다. 배선시 키를 눌렀습니다.Pi GPIO 0.
RF 송신기 회로에는 HT12E 인코더 IC와 4 개의 LED를 제어하는 4 개의 푸시 버튼이 포함되어 있습니다. 인코더 및 디코더 IC에서 모든 주소 라인은 접지에 연결됩니다.
Raspberry Pi에 wirePi 라이브러리 설치:
Python에서와 마찬가지로 RPi.GPIO를 IO 헤더 파일로 가져와 Raspberry Pi의 GPIO 핀을 사용합니다. 여기서 C 언어로 C 프로그램에서 GPIO 핀을 사용 하려면 wirePi 라이브러리 를 사용해야합니다. 아래 명령을 하나씩 사용하여 설치할 수 있으며 터미널 또는 Putty와 같은 일부 SSH 클라이언트 (Windows를 사용하는 경우)에서이 명령을 실행할 수 있습니다. Raspberry Pi 시작하기 자습서를 통해 Raspberry Pi 처리 및 구성에 대해 자세히 알아보십시오.
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git: //git.drogon.net/wiringPi cd wirePi git pull origin cd wirePi./build
wirePi 라이브러리 설치를 테스트하고 아래 명령을 사용하십시오.
gpio -v gpio readall
프로그래밍 설명:
먼저 헤더 파일을 포함하고 LCD에 대한 핀을 정의한 다음 입력 및 LED 표시를 받기 위해 일부 변수와 핀을 초기화합니다.
#포함
그런 다음 void setup () 함수 에서 사용 된 모든 GPIO 핀에 방향을 제공 합니다.
void setup () {if (wiringPiSetup () == -1) {clear (); print ("시작할 수 없음"); setCursor (0,1); print ("wiringPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT); pinMode (led3, OUTPUT); pinMode (led4, OUTPUT);……………….
코드에서 우리는 digitalRead 함수를 사용 하여 Decoder의 출력을 읽고 digitalWrite 를 사용하여 출력을 LED 또는 장치로 보냅니다.
…………….. while (1) {setCursor (0,0); print ("D1 D2 D3 D4"); if (digitalRead (d1) == 0) {flag1 ++; setCursor (0,1); if (flag1 % 2 == 1) {print ("ON"); digitalWrite (led1, HIGH); }……………..
이 프로젝트에서 사용 된 몇 가지 더 많은 기능이 있습니다.
기능 공극 lcdcmd는 LCD와 명령 전송에 사용되는 공극 기록 LCD에 데이터를 전송하기 위해 사용되는 기능.
void clear () 함수 는 LCD를 지우는 데 사용되며 void setCursor 는 커서 위치를 설정 하고 LCD에 문자열을 보내기위한 void print 를 사용합니다.
void begin 함수 는 4 비트 모드에서 LCD를 초기화 하고 부저음을 울리기 위해 void buzzer () 를 사용합니다.
아래에서이 라즈베리 RF 원격 제어에 대한 전체 코드 를 확인하십시오.