- 필요한 구성 요소
- 사용 된 소프트웨어
- 433MHz RF 송신기 및 수신기 모듈
- 회로도
- CodeVision을 사용하여 Atmega 8 용 프로젝트 생성
- 코드 및 설명
- Atmega8에 코드 업로드
우리의 프로젝트를 무선으로 만들면 항상 멋지게 보이고 제어 할 수있는 범위가 확장됩니다. 단거리 무선 제어를 위해 일반 IR LED를 사용하는 것부터 전세계 HTTP 제어를위한 ESP8266까지 무선으로 무언가를 제어하는 방법이 많이 있습니다. 이 프로젝트에서는 433MHz RF 모듈과 AVR 마이크로 컨트롤러를 사용하여 무선 프로젝트 를 구축 하는 방법을 배웁니다.
이 프로젝트에서 우리는 다음을 수행합니다.
- 우리는 사용 ATMEGA8을 은 RF 송신기와 대한 ATMEGA8 는 RF 수신기 섹션.
- LED와 푸시 버튼을 Atmega8 마이크로 컨트롤러와 인터페이스합니다.
- 송신기 측에서는 푸시 버튼을 Atmega와 인터페이스하고 데이터를 전송합니다. 수신기 측에서는 데이터를 무선으로 수신하고 LED에 출력을 표시합니다.
- 인코더와 디코더 IC를 사용하여 4 비트 데이터를 전송합니다.
- 수신 주파수는 시중에서 구할 수있는 저렴한 RF TX-RX 모듈을 사용하여 433Mhz입니다.
필요한 구성 요소
- Atmega8 AVR 마이크로 컨트롤러 (2)
- USBASP 프로그래머
- 10 핀 FRC 케이블
- 브레드 보드 (2)
- LED (2)
- 푸시 버튼 (1)
- HT12D 및 HT12E 쌍
- RX-TX RF 모듈
- 저항기 (10k, 47k, 1M)
- 점퍼 와이어
- 5V 전원
사용 된 소프트웨어
우리는 CodeVisionAVR 소프트웨어를 사용하여 코드를 작성하고 SinaProg 소프트웨어를 사용하여 USBASP 프로그래머를 사용하여 코드를 Atmega8에 업로드합니다.
주어진 링크에서 이러한 소프트웨어를 다운로드 할 수 있습니다.
CodeVisionAVR :
SinaProg:
회로도와 코드로 들어가기 전에 인코더-디코더 IC를 사용하는 RF 모듈의 작동을 이해합시다.
433MHz RF 송신기 및 수신기 모듈
그것들은 우리가 프로젝트에서 사용하는 송신기 및 수신기 모듈입니다. 433MHz에서 사용할 수있는 가장 저렴한 모듈입니다. 이 모듈은 하나의 채널에서 직렬 데이터를 수신합니다.
우리는 모듈의 사양을 참조하면, 송신기의 정격 3.5-12V 입력 전압으로서 동작 하고, 전송 거리는 20-200 떨어져. 433MHz 주파수 에서 AM (Audio Modulation) 프로토콜로 전송 합니다. 10mW 전력 으로 4KB / S 의 속도로 데이터를 전송할 수 있습니다.
상단 이미지에서 송신기 모듈의 핀아웃을 볼 수 있습니다. 왼쪽에서 오른쪽으로 핀은 VCC, DATA 및 GND 입니다. 안테나를 추가하고 위의 이미지에 표시된 지점에 납땜 할 수도 있습니다.
들어 수신기 사양, 수신기는 점 보유 전류 5V DC 및 무부하 4mA의 입력으로한다. 수신 주파수는 433.92 MHz의 A의 -105DB의 감도.
위 이미지에서 수신기 모듈의 핀아웃을 볼 수 있습니다. 4 개의 핀은 왼쪽에서 오른쪽, VCC, DATA, DATA 및 GND 입니다. 중간 두 개의 핀은 내부적으로 연결되어 있습니다. 하나 또는 둘 다를 사용할 수 있습니다. 그러나 노이즈 커플 링을 낮추기 위해 둘 다 사용하는 것이 좋습니다.
또한 데이터 시트에 언급되지 않은 한 가지는 모듈 중간의 가변 인덕터 또는 POT 가 주파수 교정에 사용됩니다. 전송 된 데이터를 수신 할 수없는 경우 송수신 주파수가 일치하지 않을 가능성이 있습니다. 이것은 RF 회로이며 완벽한 전송 주파수 지점에서 송신기를 조정해야합니다. 또한 송신기와 마찬가지로이 모듈에는 안테나 포트도 있습니다. 더 긴 수신을 위해 와이어를 코일 형태로 납땜 할 수 있습니다.
전송 범위는 송신기에 공급되는 전압과 양쪽 안테나의 길이에 따라 달라집니다. 이 특정 프로젝트에서는 외부 안테나를 사용하지 않았고 송신기 측에서 5V를 사용했습니다. 우리는 5 미터 거리로 확인했고 완벽하게 작동했습니다.
RF 송신기 및 수신기 회로의 RF 쌍에 대해 자세히 알아보십시오. RF 쌍을 사용하는 다음 프로젝트를 확인하여 RF 작동에 대해 더 많이 이해할 수 있습니다.
- RF 제어 로봇
- IR-RF 컨버터 회로
- Raspberry Pi를 사용하는 RF 원격 제어 LED
- RF 제어 가전
회로도
RF 송신기 측의 회로도
- atmega8의 핀 D7-> Pin13 HT12E
- atmega8의 핀 D6-> Pin12 HT12E
- atmega8의 핀 D5-> Pin11 HT12E
- atmega8의 핀 D4-> Pin10 HT12E
- Atmega의 핀 B0에 대한 푸시 버튼.
- HT12E의 핀 15와 16 사이의 1M 옴 저항.
- HT12E의 17 번 핀을 RF 송신기 모듈의 데이터 핀에 연결합니다.
- HT12E의 핀 18을 5V로.
- HT12E의 GND 핀 1-9 및 핀 14 및 Atmega의 핀 8.
RF 수신기 측의 회로도
- atmega8의 핀 D7-> Pin13 HT12D
- atmega8의 핀 D6-> Pin12 HT12D
- atmega8의 핀 D5-> Pin11 HT12D
- atmega8의 핀 D4-> Pin10 HT12d
- Atmega의 핀 B0에 대한 LED.
- RF 수신기 모듈의 데이터 핀에 HT12D의 Pin14.
- HT12D의 pin15와 16 사이의 47Kohm 저항.
- HT12D의 GND 핀 1-9 및 Atmega의 핀 8.
- HT12D의 핀 17에 대한 LED.
- Atmega의 핀 7과 HT12D의 핀 18에 5V.
CodeVision을 사용하여 Atmega 8 용 프로젝트 생성
이러한 소프트웨어를 설치 한 후 아래 단계에 따라 프로젝트를 만들고 코드를 작성하십시오.
1 단계. CodeVision 열기 File-> New-> Project를 클릭합니다. 확인 대화 상자가 나타납니다. 예를 클릭하십시오.
2 단계. CodeWizard가 열립니다. 첫 번째 옵션 (예: AT90 )을 클릭하고 확인을 클릭합니다.
3 단계. 마이크로 컨트롤러 칩을 선택합니다. 여기서는 그림과 같이 Atmega8을 사용합니다.
4 단계: 포트를 클릭합니다. 에서는 송신부, 푸시 버튼 입력 우리는 4 개 데이터 라인 출력된다. 따라서 Atmega의 4 핀을 출력으로 초기화해야합니다. 포트 D를 클릭합니다. 비트 7, 6, 5 및 4를 클릭하여 밖으로 만듭니다.
5 단계: 프로그램-> 생성, 저장 및 종료를 클릭 합니다 . 이제 우리 작업의 절반 이상이 완료되었습니다.
6 단계:- 파일이 폴더에 남아 있도록 데스크톱에 새 폴더를 만듭니다. 그렇지 않으면 전체 데스크톱 창에 흩어져 있습니다. 원하는대로 폴더 이름을 지정하고 프로그램 파일을 저장할 때 동일한 이름을 사용하는 것이 좋습니다.
파일을 저장하기 위해 세 개의 대화 상자가 차례로 나타납니다. 첫 번째를 저장 한 후 표시되는 다른 두 개의 대화 상자에 대해서도 동일하게 수행하십시오.
이제 작업 공간은 다음과 같습니다.
대부분의 작업은 마법사의 도움으로 완료됩니다. 이제 우리는 송신기와 수신기 부분에 대해 몇 줄의 코드 만 작성하면됩니다.
동일한 단계에 따라 Receiver 부분에 대한 파일을 만듭니다. 수신기 부분에서는 Led 만 출력하므로 Port B0 비트를 출력합니다.
코드 및 설명
RF를 사용하여 무선으로 LED 를 토글하는 코드를 작성합니다. 송신기와 수신기 측의 Atmega에 대한 완전한 코드는이 기사의 끝에 제공됩니다.
RF 송신기 용 Atmega8 코드:
먼저 코드에서 지연을 사용하기 위해 delay.h 헤더 파일을 포함 합니다.
#포함
이제 while 루프를 찾을 코드의 마지막 줄로 오십시오 . 우리의 주요 코드는이 루프에있을 것입니다.
While 루프 에서는 버튼을 누르면 0x10 바이트를 PORTD로 보내고, 버튼을 누르지 않으면 0x20을 보냅니다. 모든 값을 사용하여 보낼 수 있습니다.
while (1) { if (PINB.0 == 1) { PORTD = 0x10; } if (PINB.0 == 0) { PORTD = 0x20; } } }
RF 수신기 용 Atmega 코드
먼저 RF 모듈에서 들어오는 문자를 저장하기 위해 void main 함수 위에 변수를 선언합니다.
#포함
이제 while 루프로 오십시오 . 이 루프에서 들어오는 바이트를 char 변수 바이트에 저장 하고 들어오는 바이트가 송신기 부분에 쓰는 것과 동일한 지 확인합니다. 바이트가 같으면 PortB.0을 높게 만들고 LED를 토글하기 위해 PORTB.0을 사용 하지 마십시오.
while (1) { 바이트 = PIND; if (PIND.7 == 0 && PIND.6 == 0 && PIND.5 == 0 && PIND.4 == 1) { PORTB.0 = ~ PORTB.0; 지연 _ms (1000); }}}
프로젝트 구축
코드가 완성되었습니다. 이제 우리는 프로젝트 를 빌드해야합니다 . 그림과 같이 프로젝트 빌드 아이콘을 클릭하십시오.
프로젝트 빌드 후 Debug-> Exe 폴더 에 HEX 파일이 생성되며, 이는 이전에 프로젝트를 저장하기 위해 만든 폴더에 있습니다. 이 HEX 파일을 사용하여 Sinaprog 소프트웨어를 사용하여 Atmega8 에 업로드합니다.
Atmega8에 코드 업로드
주어진 다이어그램에 따라 회로를 Atmega8 프로그램에 연결하십시오. FRC 케이블의 한쪽을 USBASP 프로그래머에 연결하고 다른 쪽은 아래 설명과 같이 마이크로 컨트롤러의 SPI 핀에 연결합니다.
- FRC 암 커넥터의 Pin1-> Pin 17, Atmega8의 MOSI
- atmega8의 Vcc에 연결된 핀 2, 즉 핀 7
- atmega8의 리셋에 연결된 핀 5, 즉 핀 1
- atmega8의 SCK에 연결된 핀 7, 즉 핀 19
- atmega8의 MISO에 연결된 핀 9, 즉 핀 18
- atmega8의 GND에 연결된 핀 8, 즉 핀 8
회로도에 따라 브레드 보드의 나머지 구성 요소를 연결하고 Sinaprog를 엽니 다 .
Sinaprog를 사용하여 위에서 생성 된 Hex 파일을 업로드 할 것이므로 파일을 열고 장치 드롭 다운 메뉴에서 Atmega8을 선택합니다. 그림과 같이 Debug-> Exe 폴더 에서 HEX 파일을 선택합니다.
이제 프로그램을 클릭하십시오.
완료되고 마이크로 컨트롤러가 프로그래밍되었습니다. 동일한 단계를 사용하여 수신기 측에서 다른 Atmega를 프로그래밍하십시오.
전체 코드 및 데모 비디오 가 아래에 제공됩니다.