Spisu treści:

Clap-on Switch: 7 kroków (ze zdjęciami)
Clap-on Switch: 7 kroków (ze zdjęciami)

Wideo: Clap-on Switch: 7 kroków (ze zdjęciami)

Wideo: Clap-on Switch: 7 kroków (ze zdjęciami)
Wideo: Ups. 2024, Listopad
Anonim
Image
Image

Krewny zapytał mnie kiedyś, czy mógłbym stworzyć przełącznik, który reaguje na klaskanie w dłonie. Zamówiłem więc kilka rzeczy do stworzenia projektu i postanowiłem stworzyć instrukcję, aby każdy mógł mieć taki niesamowity przełącznik.

Mózgiem tego projektu jest mikrokontroler. Do mikrokontrolera podłączony jest czujnik dźwięku, który po wykryciu dźwięku wysyła dane analogowe. Mikrokontroler jest zaprogramowany do wykrywania dużych różnic w dźwięku. Gdy zostanie wykryta wystarczająco duża różnica, czyli klaśnięcie, mikrokontroler wysyła sygnał do przekaźnika. Przekaźnik włącza się i włącza się światło. Po drugim klaśnięciu światło ponownie się wyłączy.

Kieszonkowe dzieci

Rzeczy fizyczne:

  • 1x ATmega328P Xplained Mini z kablem do programowania
  • 1x moduł przekaźnika 5v 1-kanałowy (KY-019 lub podobny)
  • 1x Moduł czujnika dźwięku (KY-038 lub podobny)
  • 1x deska do krojenia chleba
  • 6x przewód połączeniowy męsko-męski
  • 1x gniazdo światła z przewodem (lub dowolne inne urządzenie, które chcesz włączyć)
  • 1x żarówka
  • 1x rezystor* (ja używam 220 Ohm)
  • 1x dioda LED*

Pobieranie oprogramowania):

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

* Do celów testowych

Krok 1: Połączenia

Tworzenie programu
Tworzenie programu

Podłącz wszystkie przewody, jak pokazano na obrazku.

Krok 2: Tworzenie programu

Tworzenie programu
Tworzenie programu
Tworzenie programu
Tworzenie programu

Lubię kodować w C, więc ten projekt jest napisany w C.

Jeśli jeszcze nie pobrałeś i nie zainstalowałeś potrzebnego oprogramowania, pobierz je i zainstaluj teraz.

Teraz wykonaj następujące kroki:

  1. Otwórz AtmelStudio.
  2. Kliknij „Plik” -> „Nowy” -> „Projekt”.
  3. Kliknij „Projekt wykonywalny GCC C”. Nadaj swojemu projektowi nazwę i lokalizację do zapisania. Kliknij OK".
  4. Wyszukaj ATmega328P. Kliknij „ATmega328P” -> „Ok”.
  5. Kliknij w Eksploratorze rozwiązań na „main.c”, aby otworzyć główny program.

Krok 3: Dodawanie kodu

Usuń kod już obecny w main.c

Skopiuj i wklej następujący kod w main.c

#zdefiniuj F_CPU 16000000

#include #include #include #include "usart.h" #define MINIMALVALUE 5 void InitADC(); uint16_t ReadADC(uint8_t ADCkanał); podwójna val1, val2; int main(void) { // Zainicjuj USART USART_init(9600); USART_putstr("#początek USART\n"); // Zainicjuj ADC InitADC(); USART_putstr("#ADC init\n"); // pin PC1 wyjścia PORTC, reszta wejścia. DDRC = 0b00000010; // ustaw początkowe wartości na PORTC niskie. PORTC = 0b00000000; while(1) { //odczyt wartości potencjometru //odczytaj wartość i zapisz w val1 val1=ReadADC(0); _opóźnienie_ms(1); // odczytaj następną wartość i zapisz w val2 val2=ReadADC(0); znak str[10]; // ReadADC() zwraca wartość w liczbach całkowitych. Jeśli chcemy debugować lub zobaczyć wartość na putty, // wartość musi zostać przekonwertowana na znaki, aby USART mógł ją wydrukować. itoa(val1, str, 10); USART_putstr(str); USART_putstr("\n"); // jeśli 2 wartości mają pewną różnicę. Wykryty zostaje dźwięk i przełącza port. // WARTOŚĆ MINIMALNĄ można zmienić, zwiększanie zmniejsza czułość. Zmniejszenie sprawi, że będzie bardziej czuły if(wart1-war2 > MINIMALVALUE || val2-val1 > MINIMALVALUE) { PORTC ^= 0b00000010; // ŚWIATŁO NA UC _delay_ms(200); } } } void InitADC() { // Wybierz Vref=AVcc ADMUX |= (1<<REFS0); //ustaw prescaller na 128 i włącz ADC ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADEN); } uint16_t ReadADC(uint8_t ADCchannel) { //wybierz kanał ADC z maską bezpieczeństwa ADMUX = (ADMUX & 0xF0) | (kanał ADC i 0x0F); //tryb pojedynczej konwersji ADCSRA |= (1<<ADSC); // poczekaj na zakończenie konwersji ADC while(ADCSRA & (1<<ADSC)); zwrot ADC; }

Krok 4: Dodawanie USART

Dodawanie USART
Dodawanie USART

USART to protokół komunikacji szeregowej, który może być używany z mikrokontrolerem. Używam go na mikrokontrolerze, aby zobaczyć dane analogowe z czujnika.

USART jest już poprawnie zaprogramowany, zawiera plik nagłówkowy(.h) i źródłowy(.c). Pobierz 2 pliki i dodaj je do swojego programu w AtmelStudio.

Kliknij prawym przyciskiem myszy nazwę projektu w Eksploratorze rozwiązań. Kliknij „Dodaj” -> „Istniejący element…” i wybierz 2 pobrane pliki.

Krok 5: Uruchamianie kodu

Uruchamianie kodu
Uruchamianie kodu
Uruchamianie kodu
Uruchamianie kodu

Podłącz mikrokontroler do komputera. Wyszukaj na komputerze „menedżer urządzeń” i otwórz go. Poszukaj „Porty (COM i LPT)” i zapamiętaj port COM, na którym jest włączony mikrokontroler.

Otwórz PuTTY i kliknij "Serial" wpisz port COM, który znalazłeś dla mikrokontrolera i kliknij "Otwórz". Pojawi się terminal, na razie go zostaw.

Wróć do AtmelStudio, aby wybrać odpowiednie narzędzie do programowania mikrokontrolera.

  1. Kliknij narzędzie młotkowe.
  2. Wybierz debuger/programator „mEDBG*ATML”.
  3. Wybierz interfejs "debugWIRE".
  4. Kliknij „rozpocznij bez debugowania”.

Program zbuduje i napisze.

Gdy program działa poprawnie, zobaczysz wartości całkowite w puTTY. Za pomocą śrubokręta mogę zmienić wartość widoczną w puTTY poprzez przekręcenie śruby na czujniku. Mój czujnik podaje wartości od 0 do 1000 przy przekręcaniu śruby do końca. Dokręcam śrubę do 100(10%) całkowitej wartości. Dowiedziałem się, że to działa dla mnie.

Krok 6: Zmień czułość

Aby dostosować czułość po włączeniu światła, możesz użyć 2 opcji, ale wybierz jedną, a nie obie:

  1. Zmień śrubę czujnika;
  2. Zmień wartość kodu.

Używam opcji 2. Zwiększenie MINIMALVALUE sprawi, że będzie on mniej czuły, a zmniejszenie sprawi, że będzie bardziej czuły.

#define MINIMALNA WARTOŚĆ 5

Krok 7: Zmień wszystko, co chcesz

Zmień wszystko, co chcesz!
Zmień wszystko, co chcesz!
Zmień wszystko, co chcesz!
Zmień wszystko, co chcesz!

OSTRZEŻENIE: Uważaj przy przełączaniu wyższych napięć

Kiedy jesteś zadowolony z czułości czujnika, możesz zmienić obwód. Zmień obwód jak na powyższym obrazku. Możesz teraz zmienić wszystko, co chcesz!

Zalecana: