The Annoy-O-Bug:Um Chilrear Light-Up Throwie
Componentes e suprimentos
| PCB fabricado sob encomenda do OSH Park | | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| Bateria de célula tipo moeda CR2032 | | × | 1 | |
| | × | 1 | |
| Microchip Technology ATtiny85 | | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
Aplicativos e serviços online
Sobre este projeto
Pequeno o suficiente para deslizar em uma lata de hortelã, mas alto o suficiente para ser ouvido em uma casa por apenas alguns dólares a unidade. Uma bela combinação para uma boa pegadinha! Vamos mergulhar!
Etapa um:o circuito
Você pode comprar a placa de circuito impresso do OSH Park usando o link na seção de peças deste build. Você não precisa usar um ATtiny ou minha própria placa de circuito impresso. Este circuito levaria um total geral de cerca de 20 minutos para montar em qualquer placa de ensaio. Se você quiser que o circuito seja minúsculo, no entanto, eu escolheria a opção de placa de circuito impresso. Se o breadboard ou o perfboarding interessar a você, a versão do breadboard é mostrada acima. Troque o ATtiny85 por qualquer microcontrolador.
Etapa dois:montar o PCB
Deve ser um PCB bastante fácil de preencher com componentes. Lembre-se de que a campainha e o LED são componentes polarizados. O cabo mais longo da campainha deve passar pelo bloco redondo e o cabo mais curto deve passar pelo bloco quadrado. O cabo mais longo do LED deve passar pelo orifício oposto ao retângulo branco. A única parte complicada disso é soldar o conector da bateria. Certifique-se de soldar todos os componentes da frente primeiro. Você pode então soldar o pino de aterramento do conector da bateria em sua almofada a o orifício no centro da tomada DIP.
Também incluí um retângulo de silkscreen branco no PCB, caso você queira escrever uma pequena mensagem para o seu prankee :). Se você gostaria de personalizar o PCB, basta duplicar meu design circuits.io:https://circuits.io/circuits/2677013-annoying-circuit.
Etapa três:o software
// Código produzido por Alex Wulff:http://www.AlexWulff.com #define BUZZ 0 #define LED 1 #define BEEP_DELAY 30 # define LIGHT_DELAY 200 #define INITIAL 5000 // O valor está em milissegundos. // 10.000 ms produz um tempo de sequência total de 46,5 segundos // 20.000 ms produz um tempo de sequência total de 91,5 segundos // 30.000 ms produz um tempo de sequência total de 136,5 segundos // Você obtém o padrão. Cada 10 segundos produz outros 45 // segundos de tempo total na sequência. void setup () {// Inicializa os pinos de saída pinMode (BUZZ, OUTPUT); pinMode (LED, SAÍDA); // Pisca a luz para certificar-se de que o dispositivo está funcionando para (int i =0; i <5; i ++) {digitalWrite (LED, HIGH); atraso (LIGHT_DELAY); digitalWrite (LED, BAIXO); atraso (LIGHT_DELAY); }} void loop () {// Iterar 50 vezes, diminuindo o atraso do loop por um fator de 1 / i cada vez para (int i =1; i <50; i ++) {digitalWrite (BUZZ, HIGH); digitalWrite (LED, ALTO); atraso (BEEP_DELAY); digitalWrite (BUZZ, LOW); digitalWrite (LED, BAIXO); atraso (INICIAL / i); }}
Acima está um pequeno programa de amostra que exibe alguns dos recursos deste dispositivo. É também o programa em execução no vídeo mostrado na parte superior. O tempo entre cada bipe subseqüente fica progressivamente menor, o que pode ser realmente irritante! Você pode alterar a escala de tempo neste esboço alterando INITIAL para algo muito maior. É até possível fazer isso ao longo de uma semana, ficando cada vez mais rápido a cada dia!
Você também pode escrever um programa realmente simples que apenas emite um bipe e pisca aleatoriamente, ou pode fazer com que a campainha toque uma pequena melodia em sincronia com o LED. As possibilidades são infinitas!
Eu produzi uma simulação de circuitos do Autodesk que permite que você experimente seu esboço em um circuito virtual sem precisar conectar nada. Experimente aqui:https://circuits.io/circuits/4778452-the-annoy-o-bug-a-chirping-light-up-throwie/.
Etapa quatro:programação do ATtiny85
Você pode programar seu ATtiny usando um Arduino Uno (ou praticamente qualquer dispositivo baseado em ATmega) e um capacitor de 10uF. As instruções podem ser encontradas aqui:https://www.hackster.io/arjun/programming-attiny85-with-arduino-uno-afb829.
Apenas tome cuidado ao remover seu ATtiny do soquete DIP. Às vezes, é útil usar um alicate para puxá-lo em vez de tentar extraí-lo com os dedos.
Etapa cinco:posicionamento
Colocar este dispositivo é metade da diversão. Dependendo de onde você compra suas peças, esses bebês podem custar menos de US $ 5; é relativamente barato fazer muitos deles. Eles são pequenos o suficiente para serem colocados em vasos de plantas, pequenas caixas, travesseiros, lâmpadas internas, escrivaninhas e em qualquer outro lugar que você possa imaginar! Se você usar um cronômetro de watchdog para colocar o ATtiny em hibernação, esse circuito pode funcionar por mais de um ano com uma bateria de célula tipo moeda.
É isso aí! Se precisar de ajuda para criar um programa específico ou montar o circuito, basta comentar abaixo. Terei todo o gosto em ajudar.
Para ver mais de meus projetos, acesse www.AlexWulff.com e https://www.hackster.io/AlexWulff.
Pequeno Aviso:Devido à natureza deste projeto, é possível que alguns interpretem os sons que ele produz como uma possível ameaça explosiva. Portanto, não os coloque em áreas públicas onde você possa ter problemas!
Código
Circuito irritante Arduino
// Código produzido por Alex Wulff:http://www.AlexWulff.com#define BUZZ 0 # define LED 1 # define INITIAL 5000 // 10.000 ms produz um tempo de sequência total de 46,5 segundos // 20.000 ms produz um tempo de sequência total de 91,5 segundos // 30.000 ms produz um tempo de sequência total de 136,5 segundos // Você obtém o padrão. Cada 10 segundos rende outros 45 // segundos de tempo total no sequence.void setup () {// coloque seu código de configuração aqui, para rodar uma vez:pinMode (BUZZ, OUTPUT); pinMode (LED, SAÍDA); // Pisca a luz para certificar-se de que o dispositivo está funcionando para (int i =0; i <5; i ++) {digitalWrite (LED, HIGH); atraso (200); digitalWrite (LED, BAIXO); atraso (200); }} void loop () {for (int i =1; i <50; i ++) {digitalWrite (BUZZ, HIGH); digitalWrite (LED, ALTO); atraso (30); digitalWrite (0, BAIXO); digitalWrite (LED, BAIXO); atraso (INICIAL / i); }}