Índice:
- Suprimentos
- Etapa 1: conexões
- Etapa 2: Criação do programa
- Etapa 3: adicionar código
- Etapa 4: Adicionando USART
- Etapa 5: executando o código
- Etapa 6: mudar a sensibilidade
- Etapa 7: mude o que quiser
Vídeo: Botão de aplauso: 7 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Um parente me perguntou uma vez se eu poderia criar um interruptor que reage a bater palmas. Então, encomendei algumas coisas para criar um projeto e decidi fazer um instrutível para que todos pudessem ter um switch incrível como esse.
O microcontrolador é o cérebro desse projeto. Um sensor de som é conectado ao microcontrolador, o sensor está enviando dados analógicos quando o som é detectado. O microcontrolador é programado para detectar grandes diferenças de som. Quando uma diferença alta o suficiente é detectada, o que significa um aplauso, o microcontrolador envia um sinal para o relé. O relé liga e a luz acende. Ao bater palmas pela segunda vez, a luz apaga-se novamente.
Suprimentos
Coisas físicas:
- 1x ATmega328P Xplained Mini com cabo para programação
- 1x módulo de relé 5v de 1 canal (KY-019 ou similar)
- 1 módulo sensor de som (KY-038 ou similar)
- 1x breadboard
- 6x fio de jumper Macho-Macho
- 1x soquete de luz com cabo (ou qualquer outro dispositivo que você deseja ligar)
- 1 lâmpada
- 1 resistor * (eu uso 220 Ohm)
- 1x LED *
Software (download):
- AtmelStudio 7.0 (https://www.microchip.com/mplab/avr-support/atmel-studio-7)
- Putty (www.putty.org) *
* Para fins de teste
Etapa 1: conexões
Conecte todos os fios conforme mostrado na imagem.
Etapa 2: Criação do programa
Eu gosto de codificar em C, então este projeto foi escrito em C.
Se você ainda não baixou e instalou o software necessário, baixe e instale-o agora.
Agora siga estas próximas etapas:
- Abra o AtmelStudio.
- Clique em "Arquivo" -> "Novo" -> "Projeto".
- Clique em "Projeto executável GCC C". Dê ao seu projeto um nome e um local para armazenar. Clique OK".
- Procure o ATmega328P. Clique em "ATmega328P" -> "Ok".
- Clique no Gerenciador de Soluções em "main.c" para abrir o programa principal.
Etapa 3: adicionar código
Exclua o código já presente em main.c
Copie e cole o seguinte código em main.c
# define F_CPU 16000000
#include #include #include #include "usart.h" #define MINIMALVALUE 5 void InitADC (); uint16_t ReadADC (uint8_t ADCchannel); double val1, val2; int main (void) {// Inicializar o USART USART_init (9600); USART_putstr ("# USART init / n"); // Inicialize o ADC InitADC (); USART_putstr ("# ADC init / n"); // Pino PC1 da saída PORTC, a entrada restante. DDRC = 0b00000010; // define os valores iniciais para PORTC baixo. PORTC = 0b00000000; while (1) {// lendo o valor do potenciômetro // lê o valor e armazena em val1 val1 = ReadADC (0); _delay_ms (1); // lê o próximo valor e armazena em val2 val2 = ReadADC (0); char str [10]; // o ReadADC () retorna o valor em inteiros. Se quisermos depurar ou ver o valor na massa, // o valor precisa ser convertido em caracteres para que o USART possa imprimi-lo. itoa (val1, str, 10); USART_putstr (str); USART_putstr ("\ n"); // se os 2 valores têm uma certa diferença. Um som é detectado e muda uma porta. // MINIMALVALUE pode ser alterado, aumentando o tornará menos sensível. Diminuir o tornará mais sensível se (val1-val2> MINIMALVALUE || val2-val1> MINIMALVALUE) {PORTC ^ = 0b00000010; // LUZ ACESA UC _delay_ms (200); }}} void InitADC () {// Selecione Vref = AVcc ADMUX | = (1 << REFS0); // definir pré-chamada para 128 e ativar ADC ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN); } uint16_t ReadADC (uint8_t ADCchannel) {// selecione o canal ADC com máscara de segurança ADMUX = (ADMUX & 0xF0) | (ADCchannel & 0x0F); // modo de conversão única ADCSRA | = (1 << ADSC); // espera até que a conversão ADC seja concluída while (ADCSRA & (1 << ADSC)); return ADC; }
Etapa 4: Adicionando USART
O USART é um protocolo de comunicação serial que pode ser usado no microcontrolador. Eu o uso no microcontrolador para ver os dados analógicos do sensor.
O USART já está programado corretamente, contendo um arquivo de cabeçalho (.h) e fonte (.c). Baixe os 2 arquivos e adicione-os ao seu programa no AtmelStudio.
Clique com o botão direito no nome do projeto no Solution Explorer. Clique em "Adicionar" -> "Item Existente …" e selecione os 2 arquivos baixados.
Etapa 5: executando o código
Conecte o microcontrolador ao computador. Procure no seu computador por "gerenciador de dispositivos" e abra-o. Procure por "Portas (COM e LPT)" e lembre-se da porta COM em que o microcontrolador está ligado.
Abra o PuTTY e clique em "Serial" digite a porta COM que você encontrou do microcontrolador e clique em "Abrir". Um terminal aparece, deixe por enquanto.
Volte ao AtmelStudio para selecionar a ferramenta certa para programar o microcontrolador.
- Clique na ferramenta de martelo.
- Selecione o depurador / programador "mEDBG * ATML".
- Selecione a interface "debugWIRE".
- Clique em "iniciar sem depuração".
O programa irá construir e escrever.
Quando o programa for executado corretamente, você verá valores inteiros em puTTY. Usando uma chave de fenda, posso alterar o valor visto em puTTY girando o parafuso no sensor. Meu sensor fornece valores de 0 a 1000 ao girar o parafuso até o fim. Estou girando o parafuso para 100 (10%) do valor total. Eu descobri que isso funciona para mim.
Etapa 6: mudar a sensibilidade
Para ajustar a sensibilidade quando a luz acende, você pode usar 2 opções, mas escolha uma, não as duas:
- Troque o parafuso do sensor;
- Altere o valor do código.
Eu uso a opção 2. Aumentar o MINIMALVALUE o tornará menos sensível, enquanto diminuir o tornará mais sensível.
#define VALOR MÍNIMO 5
Etapa 7: mude o que quiser
AVISO: Cuidado ao alternar tensões mais altas
Quando estiver satisfeito com a sensibilidade do sensor, você pode alterar o circuito. Mude o circuito como na imagem acima. Agora você pode mudar o que quiser!
Recomendado:
Interruptor de luzes de aplauso de mão: 4 etapas
Interruptor de luzes de palmas: com bastante frequência, você precisa dar alguns passos no escuro antes de alcançar o interruptor de luz. Agora, com uma mão batendo palmas, você pode acender as luzes, sem esforço
Interruptor LED de aplauso duplo: 3 etapas
Chave de luz LED de batida dupla: O que ela faz Usando recursos da Abid, criei uma chave de luz LED de batida dupla, usando um Arduino Leonardo, uma placa de ensaio, alguns cabos, um microfone simples e um LED. Quando você bate palmas duas vezes, o led acende. Bata palmas duas vezes novamente, e a luz LED irá tur
Microcontrolador AVR. Alterne os LEDs usando um botão de pressão. Botão Debouncing: 4 etapas
Microcontrolador AVR. Alterne os LEDs usando uma chave de botão. Push Button Debouncing: Nesta seção, aprenderemos como fazer o código do programa C para ATMega328PU para alternar o status dos três LEDs de acordo com a entrada de uma chave de botão. Além disso, exploramos uma solução para o problema de ‘Switch Bounce’. Como de costume, nós teremos
DIY -- Carro elétrico automatizado aplauso -- Sem Arduino: 3 etapas
DIY || Carro elétrico automatizado aplauso || Sem o Arduino: aqui, vou mostrar a você como fazer um carro controlado pelo Clap sem usar o Arduino, mas usando o IC 4017. É um carro cujo movimento para frente e para trás pode ser controlado por um Clap. Este projeto é baseado no Clap ON - Clap OFF Circuit que é renderizado
Botão de aplauso Bluetooth: 3 etapas (com imagens)
Interruptor de aplauso Bluetooth: Esta é uma maneira barata de reutilizar os antigos spakers bluetooth. Este é um dispositivo DIY que é capaz de ligar ou desligar as luzes ou qualquer coisa na voltagem da cidade batendo palmas em um software instalado no celular