Inhoudsopgave:

Clap-on-schakelaar: 7 stappen (met afbeeldingen)
Clap-on-schakelaar: 7 stappen (met afbeeldingen)

Video: Clap-on-schakelaar: 7 stappen (met afbeeldingen)

Video: Clap-on-schakelaar: 7 stappen (met afbeeldingen)
Video: Rijden op de geweldige nachttrein van Japan | Compartiment met 2 aparte bedden 2024, November
Anonim
Image
Image

Een familielid vroeg me een keer of ik een schakelaar kon maken die reageert op in je handen klappen. Dus ik heb wat spullen besteld om een project te maken en besloot een instructable te maken zodat iedereen zo'n geweldige switch zou kunnen hebben.

De microcontroller is het brein van dit project. Een geluidssensor is aangesloten op de microcontroller, de sensor verzendt analoge gegevens wanneer geluid wordt gedetecteerd. De microcontroller is geprogrammeerd om grote verschillen in geluid te detecteren. Wanneer een voldoende groot verschil wordt gedetecteerd, wat een klap betekent, stuurt de microcontroller een signaal naar het relais. Het relais schakelt en het licht gaat aan. Bij een tweede keer klappen gaat het licht weer uit.

Benodigdheden

Fysieke dingen:

  • 1x ATmega328P Xplained Mini met kabel voor programmeren
  • 1x 5v relaismodule 1-kanaals (KY-019 of vergelijkbaar)
  • 1x Geluidssensormodule (KY-038 of vergelijkbaar)
  • 1x Broodplank
  • 6x mannelijk-mannelijk doorverbindingsdraad
  • 1x lichtcontactdoos met snoer (of een ander apparaat dat je aan wilt zetten)
  • 1x gloeilamp
  • 1x weerstand* (ik gebruik 220 Ohm)
  • 1x LED*

Software download):

  • AtmelStudio 7.0(https://www.microchip.com/mplab/avr-support/atmel-studio-7)
  • Putty (www.putty.org)*

* Voor testdoeleinden

Stap 1: Aansluitingen

Het programma maken
Het programma maken

Sluit alle draden aan zoals weergegeven in de afbeelding.

Stap 2: Het programma maken

Het programma maken
Het programma maken
Het programma maken
Het programma maken

Ik codeer graag in C, dus dit project is geschreven in C.

Als u de benodigde software nog niet hebt gedownload en geïnstalleerd, download en installeer deze dan nu.

Volg nu deze volgende stappen:

  1. Atmel Studio openen.
  2. Klik op "Bestand" -> "Nieuw" -> "Project".
  3. Klik op "GCC C uitvoerbaar project". Geef uw project een naam en locatie om op te slaan. Klik OK".
  4. Zoek naar de ATmega328P. Klik op "ATmega328P" -> "Ok".
  5. Klik in de Solution Explorer op "main.c" om het hoofdprogramma te openen.

Stap 3: Code toevoegen

Verwijder de code die al aanwezig is in main.c

Kopieer en plak de volgende code in main.c

#define F_CPU 16000000

#include #include #include #include "usart.h" #define MINIMALVALUE 5 void InitADC(); uint16_t ReadADC(uint8_t ADC-kanaal); dubbele val1, val2; int main (void) { // Initialiseer de USART USART_init (9600); USART_putstr("#USART init\n"); // Initialiseer de ADC InitADC(); USART_putstr("#ADC init\n"); // PC1-pin van PORTC-uitgang, de rest-ingang. DDRC = 0b00000010; // stel de beginwaarden in op PORTC laag. PORTC = 0b00000000; while (1) {// potentiometerwaarde lezen // waarde lezen en opslaan in val1 val1 = ReadADC (0); _delay_ms(1); // lees volgende waarde en sla op in val2 val2=ReadADC(0); char str[10]; // de ReadADC() geeft de waarde terug in gehele getallen. Als we fouten willen opsporen of de waarde op stopverf willen zien, // moet de waarde worden geconverteerd naar tekens zodat de USART deze kan afdrukken. itoa(val1, str, 10); USART_putstr(str); USART_putstr("\n"); // als de 2 waarden een bepaald verschil hebben. Een geluid wordt gedetecteerd en schakelt een poort. // MINIMALVALUE kan worden gewijzigd, verhogen maakt het minder gevoelig. Verlagen maakt het gevoeliger if(val1-val2 > MINIMALVALUE || val2-val1 > MINIMALVALUE) { PORTC ^= 0b00000010; // LICHT OP UC _delay_ms (200); } } } void InitADC() {// Selecteer Vref=AVcc ADMUX |= (1<<REFS0); // stel prescaller in op 128 en schakel ADC ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADEN) in; } uint16_t ReadADC(uint8_t ADCchannel) {//selecteer ADC-kanaal met veiligheidsmasker ADMUX = (ADMUX & 0xF0) | (ADC-kanaal & 0x0F); // enkele conversiemodus ADCSRA |= (1<<ADSC); // wacht tot de ADC-conversie is voltooid while(ADCSRA & (1<<ADSC)); retour ADC; }

Stap 4: USART toevoegen

USART toevoegen
USART toevoegen

De USART is een serieel communicatieprotocol dat op de microcontroller kan worden gebruikt. Ik gebruik het op de microcontroller om analoge gegevens van de sensor te zien.

De USART is al correct geprogrammeerd en bevat een header(.h) en source(.c)-bestand. Download de 2 bestanden en voeg ze toe aan je programma in AtmelStudio.

Klik met de rechtermuisknop op de projectnaam in de Solution Explorer. Klik op "Toevoegen" -> "Bestaand item…" en selecteer de 2 gedownloade bestanden.

Stap 5: De code uitvoeren

De code uitvoeren
De code uitvoeren
De code uitvoeren
De code uitvoeren

Sluit de microcontroller aan op de computer. Zoek op uw computer naar "apparaatbeheer" en open het. Zoek naar "Poorten (COM & LPT)" en onthoud de COM-poort waarop de microcontroller staat.

Open PuTTY en klik op "Serial" typ de COM-poort die je van de microcontroller hebt gevonden en klik op "Open". Er verschijnt een terminal, laat het voor nu.

Ga terug naar AtmelStudio om de juiste tool te selecteren voor het programmeren van de microcontroller.

  1. Klik op het hamergereedschap.
  2. Selecteer de "mEDBG*ATML" debugger/programmeur.
  3. Selecteer interface "debugWIRE".
  4. Klik op "start zonder debuggen".

Het programma gaat bouwen en schrijven.

Als het programma correct draait, ziet u gehele waarden in puTTY. Met behulp van een schroevendraaier kan ik de waarde in puTTY veranderen door aan de schroef op de sensor te draaien. Mijn sensor geeft de waarden van 0 tot 1000 bij het volledig draaien van de schroef. Ik draai de schroef naar 100 (10%) van de totale waarde. Ik ben erachter gekomen dat dit voor mij werkt.

Stap 6: gevoeligheid wijzigen

Om de gevoeligheid aan te passen wanneer het licht aangaat, kun je 2 opties gebruiken, maar kies er één niet allebei:

  1. Sensorschroef vervangen;
  2. Wijzig codewaarde.

Ik gebruik optie 2. Het verhogen van de MINIMALE WAARDE maakt het minder gevoelig, het verlagen maakt het gevoeliger.

#define MINIMALWAARDE 5

Stap 7: Schakel alles wat je leuk vindt

Schakel alles wat je leuk vindt!
Schakel alles wat je leuk vindt!
Schakel alles wat je leuk vindt!
Schakel alles wat je leuk vindt!

WAARSCHUWING: Pas op bij het schakelen van hogere spanningen

Als je tevreden bent met de gevoeligheid van de sensor, kun je het circuit veranderen. Verander het circuit zoals de afbeelding hierboven. Je kunt nu alles wisselen wat je maar wilt!

Aanbevolen: