Подключение радиомодуля HC-11 к ATmega16/Atmega32

В данной статье мы увидим как подключить модуль HC-11 к ATmega16/ATmega32 и приведем пример программы на языка C в Atmel Studio 6. Стоимость HC-11 в районе 3~4$ на Aliexpress, что совсем не дорого.

Рабочее напряжение модуля от 3.3В до 5.5В, но лучше подключить к 3.3В если необходимо интенсивно его использовать.

Подключается он просто, Vcc, GND…, вот только RXD и TXD нужно соединить наоборот: RXD модуля к TXD контроллера и TXD модуля к RXD контроллера. Так же подключаем второй к ПК.

Схема подключения радиомодуля HC-11 к ATmega16 /Atmega32
Схема подключения радиомодуля HC-11 к ATmega16

По умолчанию скорость HC-11 (HC-12) равна 9600. Если нужна другая скорость, подключаем SET к земле и меняем скорость. Как это сделать, смотрим на странице UART Радиомодуль HC-11 433МГц — передатчик/приемник.
Прошивку для ATmega16/ATmega32 написал на C в Atmel Studio 6. Для программирования контроллера использовал программатор STK500, а программу — AVR Studio 4. Ниже привёл пример прошивки.

Пример программы в Atmel Studio 6 для ATmega16/ATmega32

// ATmega16 - ATmega32 Example

#define F_CPU     11059200UL

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

#define BAUD_RATE 9600
#define UBRR      F_CPU/16/BAUD_RATE-1

char message[125] = "Hello! I am ATmega16!";
int n = 125;
int i = 0;

ISR(USART_UDRE_vect) {
    if(i == n) {
        UDR = 13;
        i++;
    } else if(i == n + 1) {
        UDR = 10;
        _delay_ms(1000);
        i = 0;
    } else {
        UDR = message[i++];
    }
}

int main(void) {
    n = strlen(message);
    
    /* USART init */
    /* Set baud rate */
    UBRRH = (char)(UBRR>>8);
    UBRRL = (char)(UBRR);
    
    UCSRA = 0;
    /* Enable receiver and transmitter 
       RXCIE:    RX Complete Interrupt               [Disable]
       TXCIE:    TX Complete Interrupt               [Disable]
       UDRIE:    USART Data Register Empty Interrupt [Enable]
    */
    UCSRB = (1<<RXEN) | (1<<TXEN) | (0<<RXCIE) | (0<<TXCIE) | (1<<UDRIE);
    
    /* Set frame format: 8data, 2stop bit 
       URSEL:       USART Mode Select [Synchronous Operation]
       USBS:        Stop Bit Select   [2-bit]
       UCSZ1,UCSZ0: Character Size    [8-bit]
    */
    UCSRC = (1<<URSEL) | (1<<USBS) | (1<<UCSZ1) | (1<<UCSZ0);
    
    sei();

    while(1) {
        
    }
}

После прошивки подключил модули, один к AVR другой к компьютеру, запустил Terminal v1.9b и вуаля, всё работает, микроконтроллер ATmega16/ATmega32 передаёт нам большой привет.

Результат

Terminal UART, Схема подключения радиомодуля HC-11 к ATmega16Если всё правильно сделать, то вы должны получить такой результат, какой мы видим на картинке.

Купить ATmega16A на Aliexpress


Купить HC-11 433MHz на AliExpress

Похожие записи

Добавить комментарий для ZacharyToips Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *