UH-zongora - zenélés mikrokontrollerrel

Hasonló dokumentumok
Megjegyzés: A leírás abszolút kezdők számára készült elnézést azoktól, akik ezen a szinten már túlvannak!

MSP430 programozás Energia környezetben. Digitális szenzorok

Megszólal a Kütyü. Arduino bevezető hangszóró vezérlése 1 / 5 oldal

Bevezetés az elektronikába

MSP430 programozás Energia környezetben. Nem élhetek muzsikaszó nélkül

MSP430 programozás Energia környezetben. Kitekintés, további lehetőségek

Vegyes témakörök. A KAT120B kijelző vezérlése Arduinoval

MSP430 programozás Energia környezetben. LED kijelzok második rész

Multi-20 modul. Felhasználói dokumentáció 1.1. Készítette: Parrag László. Jóváhagyta: Rubin Informatikai Zrt.

Többfunkciós hobbirobot építése és vezérlése Arduino UNO mikrovezérlő kártya segítségével

OMRON FOTOELEKTROMOS KAPCSOLÓK E3NT

Bevezetés az Arduino mikrovezérlők programozásába

Bevezetés a mikrovezérlők programozásába: Fényérzékelés, fénymérés

Tarján Péter Nyíregyházi Egyetem. Szenzorok és ötletek Arduinós mérésekhez

1 csűrő 1 csűrő 2 magassági 2 magassági 3 gáz 3 gáz 4 oldalkormány 4 oldalkormány 5 Robot üzemmód 5 csűrő

Elektropneumatika. 3. előadás

MSP430 programozás Energia környezetben. Szervó motorok vezérlése

Bevezetés a mikrovezérlők programozásába: Léptetőmotorok vezérlése

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

LED DRIVER 6. 6 csatornás 12-24V-os LED meghajtó. (RDM Kompatibilis) Kezelési útmutató

Hobbi Elektronika. 1. Témakörök, célkitűzés, hozzávalók

Dinnyeválogató v2.0. Típus: Dinnyeválogató v2.0 Program: Dinnye2 Gyártási év: 2011 Sorozatszám:

Értékelés Összesen: 100 pont 100% = 100 pont A VIZSGAFELADAT MEGOLDÁSÁRA JAVASOLT %-OS EREDMÉNY: EBBEN A VIZSGARÉSZBEN A VIZSGAFELADAT ARÁNYA 35%.

T2-CNCUSB vezérlő család hardver segédlet

MSP430 programozás Energia környezetben. Hétszegmenses LED kijelzok

A tanulók gyűjtsenek saját tapasztalatot az adott szenzorral mérhető tartomány határairól.

Felhasználói útmutató

Bevezetés a mikrovezérlők programozásába: DC motorok vezérlése

Háromsugaras infrasorompó 8 választható frekvenciával HASZNÁLATI UTASÍTÁS

Bekötési rajz a Wheels WRS6 típusú ugrókódú távirányítós relémodulhoz

LPT_4DM_2a. Bekötési utasítás

UC300-5LPT. USB CNC mozgásvezérlő MACH3 programhoz. Használati utasítás. Plugin verzió: V1.024

Kétsugaras infrasorompó 8 választható frekvenciával HASZNÁLATI UTASÍTÁS

Beütésszám átlagmérő k

StP Műszaki Fejlesztő, Gyártó és Kereskedelmi Kft.

0 Általános műszer- és eszközismertető

RC tag mérési jegyz könyv

Hardver leírás Klasszikus kontroller v.3.2.2

Mérés 3 - Ellenörzö mérés - 5. Alakítsunk A-t meg D-t oda-vissza (A/D, D/A átlakító)

Feszültségszintek. a) Ha egy esemény bekövetkezik akkor az értéke 1 b) Ha nem következik be akkor az értéke 0

2000 Szentendre, Bükköspart 74 MeviMR 3XC magnetorezisztív járműérzékelő szenzor

MSP430 programozás Energia környezetben. Analóg jelek mérése

Bevezetés a mikrovezérlők programozásába: Ismerkedés az Arduino fejlesztői környezettel

Bevezetés a mikrovezérlők programozásába: WS2812 RGB LED-ek vezérlése

HSS60 ( ) típusú léptetőmotor meghajtó

MSP430 programozás Energia környezetben. LED kijelzok második rész

Algoritmus fogalma. Mi az algoritmus? HF: Al Khwarizmi. Egy adott probléma megoldásának leírása elemi lépések sorozatával

Lars & Ivan THA-21. Asztali Headamp A osztályú Erősítő Használati útmutató

Analóg elektronika - laboratóriumi gyakorlatok

A kvarc-oszcillátor nem csak a DRM vételre alkalmas, hanem más kísérletekhez is, pl. skálahitelesítéshez és egy kis AM adóval zeneátvitelre is.

AC-MFS. RFID kártyaolvasó és kódzár. Felhasználói leírás

TELTONIKA FMA110 BEÉPÍTÉSI ÚTMUTATÓ Gyors segédlet a nyomkövető eszköz járműbe építéséhez.

Mintavételes szabályozás mikrovezérlő segítségével

Mérési jegyzőkönyv UTP kábel mérés Bacsu Attila, Halász András, Bauer Patrik, Bartha András

A vezérlő alkalmas 1x16, 2x16, 2x20, 4x20 karakteres kijelzők meghajtására. Az 1. ábrán látható a modul bekötése.

MSP430 programozás Energia környezetben. Az első lépések

Programozó Meta riasztókhoz és Activepark parkolásérzékelőhöz

Arduino bevezető Szenzorhálózatok és alkalmazásaik

Mechanikai hullámok. Hullámhegyek és hullámvölgyek alakulnak ki.

Dr. Oniga István DIGITÁLIS TECHNIKA 8

Kártyaolvasók és belépőkártyák

E - F. frekvenciaváltó gépkönyv. Érvényes: júliustól

Négysugaras infrasorompó 8 választható frekvenciával HASZNÁLATI UTASÍTÁS

loop() Referencia:

folyadékok és gázok ºC ºC ºC Max +125 ºC Max +85 ºC 3.0 x fs 2,5 x fs (max 900 bar) FPM, EPDM, FPM spec.

Hullámok, hanghullámok

HSS86 ( ) típusú léptetőmotor meghajtó

Programozás és Digitális technika I. Pógár István eng.unideb.hu/pogari

7. Laboratóriumi gyakorlat KIS ELMOZDULÁSOK MÉRÉSE KAPACITÍV ÉS INDUKTÍV MÓDSZERREL

BESZERELÉSI UTASÍTÁS FC6.78 LOPÁSGÁTLÓ RIASZTÓBERENDEZÉS. A gépkocsi eredeti távkapcsolójával működtethető változat

Digitális multiméterek

CORONA E / FLYPPER TÖBBSUGARAS ELEKTRONIKUS VÍZMÉRŐ

RAY MECHANIKUS KOMPAKT HŐMENNYISÉGMÉRŐ. 4 Kompakt, mechanikus hőmennyiségmérő, számlázási adatok rögzítésére fűtési és kombinált rendszerekben

Bevezetés az elektronikába

WESAN WP E WOLTMAN ELEKTRONIKUS VÍZMÉRŐ

Járműipari környezetérzékelés

Analóg elektronika - laboratóriumi gyakorlatok

E3S-CT11 E3S-CT61 E3S-CR11 E3S-CR61 E3S-CD11 E3S-CD61 E3S-CD12 E3S-CD62

Szerelési kézikönyv. Daikin Altherma alacsony hőmérsékletű monoblokk opcionális doboza EK2CB07CAV3. Szerelési kézikönyv

OPTICON Telepítési útmutató BMS-20

KARAOKE HANGFAL SZETT

CAESAR CT-401-típ. autóriasztó + rablásgátló

RhT Léghőmérséklet és légnedvesség távadó

KÜLÖNLEGES SZENZOROK. Típus F10-C20/C30/C50 F10-C25/C35/C55. NPN nyitott kollektoros kimenetek (2 db) max. 50 ma terhelhetõség

DT1100 xx xx. Galvanikus leválasztó / tápegység. Kezelési útmutató

Beszerelés. ConCorde BC 803 tolatóradar Használati útmutató

Jelformáló áramkörök vizsgálata Billenő áramkörök vizsgálata (Időkeret: 5óra) Név:

RAY MECHANIKUS KOMPAKT HŐMENNYISÉGMÉRŐ

Négyszög - Háromszög Oszcillátor Mérése Mérési Útmutató

CORPORATION Hungary SUPER ELECTRONICS RADIO CONTROL SYSTEMS

Elektronika laboratóriumi mérőpanel elab panel NEM VÉGLEGES VÁLTOZAT! Óbudai Egyetem

Köszönjük, hogy a MELICONI termékét választotta!

Ismerkedés az MSP430 mikrovezérlőkkel

E3X-DA-N FOTOELEKTROMOS KAPCSOLÓ OMRON

ACNSEM2 Forgalom irányító lámpa vezérlés 2 lámpához

Bekötési diagramok. Csatlakozó típusok. 2: A.C. típus. 2 vezetékes (Emitter) 1 = L1 3 = N

Digitális ki-bemenetek kezelése, bitszintű műveletek

VSF-118 / 128 / 124 / U fejállomási aktív műholdas elosztók

SYS700-PLM Power Line Monitor modul DDC rendszerelemek, DIALOG-III család

programozható benzin/e85 átalakító elektronika

Átírás:

UH-zongora - zenélés mikrokontrollerrel Beszeda Imre: 61. Fizikatanári Ankét, Szeged, 2018.március 14-17, eszközkiállítás A hangszer alapja egy ú.n. mikrokontroller (Arduino), ami egy ultrahangos távolságmérő szenzorral (HC-SR04) érzékeli, hogy van-e előtte akadály (pl. tenyér). Ha igen, megméri a távolságát, és a távolságtól függő hangmagasságot szólaltat meg: 0-10cm között a C hangot, 10-15cm között a D hangot, és így tovább Az áramkör: Ha nem akarunk nagy hangerőt, akkor egy egyszerű piezo csipogó (piezobuzzer) is megteszi, ami közvetlenül kapcsolható a digitális kimenet és a GND közé, nincs szükség a tranzisztorra mint erősítőre. A szükséges eszközöket pl. az ebay-en érdemes beszerezni, mert kb tized annyiért megkapjuk, ingyenes szállítással, cserébe több hetes szállítási határidővel. Amire szükségünk lesz/lehet az alkatrész lista:

Nézzük részletesen: Mindenek előtt szükséges egy Arduino UNO vagy NANO alaplap (Arduino Uno board, ha pl ebay-en keressük): Ha Nano alaplapot veszünk, akkor eleve USB kábellel együtt érdemes megvenni, mert az áramellátása csak azon át oldható meg. Az Uno alaplap 9V-os elemről is működtethető, így önmagában is használható. Dugaszolós próbapanel (breadboard): A bal oldali a szemből nézet, a jobb oldali a hátoldalát mutatja ezen látszik, hogy mely lyukak vannak egymással összeköttetésben. Ettől kisebbek és nagyobbak is kaphatók, a célnak megfelelő pólusszámút érdemes venni. Kell néhány db 10-20cm hosszúságú Dupont jumper kábel (Dupont jumper cable), apa-apa és apa-anya végűek is:

A HC-SR04 jelű ultrahang szenzor (ultrasonic sound sensor): Valamilyen általános tranzisztor, viszonylag nagy terhelhetőségű, pl 2N2222 NPN tranzisztor: Az áramkör összerakása: 4 db, kb 20cm hosszúságú, apa-anya végű vezetékek anya-végeit rányomjuk az UHszenzor kivezetéseire, az ábrának megfelelő színekkel: piros = +5V, barna (esetleg fekete v. sötétkék) = GND (= föld, vagy nulla), sárga = Trig, narancssárga = Echo. A vezetékek másik végeit az alaplap megfelelő ki/bemeneteihez (pin-jeihez) csatlakoztatjuk: A pirosat a +5V-hoz, a barnát a GND-hez, a sárgát pl a digitális 8-hoz, a narancsot a 9-hez: Ezek együtt:

A hangot pl a digitális D2 lábon fogjuk kiküldeni, ekkor a piezo buzzer + lába jön ide, a másik lába a GND-hez. Ha inkább egy komolyabb hangszórót vagy pl 2.1-es hangfalat szeretnénk, amin nagyobb áram folyhat (az alaplap digitális lábai max 40mA árammal terhelhetők, folyamatos terhelésnél inkább csak 20mA), akkor egy tranzisztort kell közbeiktatni kapcsolóként, aminek a bázisára megy a jel, és ez vezérli (kapcsolgatja) az emitter (E)-kollektor (C) közötti áramot, ami a tranzisztor megfelelő választásával tetszőlegesen nagyra választható (pl. a 2N2222 kb 0,6A = 600mA áramot visel el). A tranzisztor a próbapanelon: és a hozzá érkező vezetékek: A vezetékek másik végei az alaplapon: És végül az összerakott teljes áramkör; a szürke (fehér) vezeték a hangszóró csatlakozóján keresztül megy a +3,3Vos csatlakozóhoz:

A jack-dugót egy régi hangkártyából forrasztottam ki, de nyilván meg lehet venni. Utána az egészet rárakjuk egy lapra, hogy hordozható legyen:

Mivel a távolságmérés a 0-45cm közötti tartományra lesz beállítva, ezért készítünk egy ilyen hosszúságú pálcát, 5-5cm-es osztásközzel: Ugyanez az eszköz NANO alaplappal elkészítve: A legvégén a magasságjelző pálcát beállítjuk az erre a célra készített furatba:

Ezek után meg kell írni a programot, ami előállít és kiküld egy négyszögimpulzust az UH-szenzor Trig lábára, figyeli az Echo (=visszahang) lábon a visszajövő (az akadályról visszavert) jelet és a hangsebességből kiszámolja a távolságot az UH-szenzortól, és a távolság értékétől függően kiküld a D2 digitális kimenetre egy adott frekvenciát. A programkód: A program gyakorlatilag egy C nyelvű kód. A // jelek utáni szöveget a fordító figyelmen kívül hagyja, itt magunk számára helyezhetünk el infókat, megjegyzéseket, hogy pl hetek múlva is emlékezzünk arra, hogy az adott sor vagy adott utasítás mit is csinál. (A program elején /* */ jelek közötti rész ugyanezt csinálja, csak itt több egymás utáni sor a megjegyzés.) A program utasításainak magyarázatát ld. a sorokhoz fűzött kommentekben! /* zenélés HC-SR04 jelű UH szenzorral: az UH-szenzor elé helyezzük a tenyerünket: a szenzor 10cm - 45cm között méri a távolságot és 5cm-es lépésközzel változtatja/szólaltatja meg a különböző magasságú hangokat: a távolságmérés elve: egy kiküldött ping jel visszaverődik a detektorral szemben levő akadályról, a szenzor veszi a visszavert jelet a hang 340m/s sebességgel terjed a levegőben; a szenzor méri az oda-vissza terjedési időt ezen adatokból meghatározható az objektum távolsága az áramkör: * a szenzor +V lábát rákapcsoljuk az Arduino +5V-ra, GND = föld, * a TRIG lábat pl. a digital pin 8 - hoz, az ECHO-t pedig a pin 9 - hez, * a piezo buzzer a GND és a digital pin2 közé megy. (Ha a buzzer helyett hangszórót akarunk, akkor azt egy tranzisztorral (pl 2N2222) kell kapcsolgatni, mert a digitális kimenet max 40mA áramot bír! Ekkor a bázist vezérli a pin2-re kimenő jel, az emitter a földön van, a hangszóró pedig a kollektor és a +5V közé.) */ //a 4-es oktáv hangjainak definiálása: #define C4 262 //1908,396946564885, pl a C4 hang 262Hz-et jelent (négyszögjel) #define D4 294 //1700 #define E4 330 //1515 #define F4 349 //1433 #define G4 392 //1276 #define A4 440 //1136 #define B4 494 //1012 #define C5 523 //956 // konstansok és változók definiálása: const int pingpin = 8; // a szenzorra kimenő jelet a 8-as digitális lábon fogjuk kiküldeni const int echopin = 9; // szenzor input - a visszajövő jel a 9-es lábra érkezik const int speakerpin = 2; // hangszóróra kimenő jelet a 2-es digitális lábon küldjük majd ki long duration, cm; // a duration a kimenő és visszajövő jelek közti idő-különbséget jelöli void setup() // itt azok a parancsok, beállítások vannak, amiket csak egyszer kell megmondani { pinmode(pingpin, OUTPUT); // itt a pingpin lábat beállítjuk kimenetre pinmode(echopin, INPUT); // az echopin lábat pedig bemenetre

} void loop() // az itt következő utasításokat folyamatosan ismételgeti a végtelenségig { // a program működése: // négyszögjel kiküldése, a visszatérés idejének mérése, ebből távolság kiszámítása, majd a hang megszólaltatása, // és ugyanezt ismételgetjük a LOOP-ban a végtelenségig (amíg áramellátás van) // 5 mikroszekundum hosszúságú négyszögjel (LOW HIGH - LOW) impulzusokat küldünk ki. // Hogy tiszta, egyértelmű HIGH jelünk legyen, ezért először egy rövid (2us-os) LOW kimenetet adunk: digitalwrite(pingpin, LOW); // a pingpin lábra LOW (=nulla) kimenetet adunk delaymicroseconds(2); // várunk 2 mikroszekundumot (eddig nem csinál semmit a program) digitalwrite(pingpin, HIGH); // a kimenetet HIGH-ra állítjuk delaymicroseconds(5); // és várunk 5 mikroszekundumot, majd digitalwrite(pingpin, LOW); // ismét nullára állítjuk a kimenetet, így kiment az 5us hosszúságú négyszögjel // a HIGH impulzus akadályig tartó oda-vissza időtartama adja a ping jel kiküldésétől a visszaérkezésig eltelt // időtartamot (microszekundum egységekben); a visszatérő impulzust az ECHO lábon fogadjuk: duration = pulsein(echopin, HIGH); // az időtartamot átszámítjuk távolságra: cm = duration / 29 / 2; // Ezek után a távolság függvényében különböző hangmagasságokat szólaltatunk meg 20ms ideig; a hangot a speakerpin nevű kimenetre küldjük. if (cm < 10) tone(speakerpin, C4, 20); // ha a mért távolság < 10cm, akkor a C4 hangot szólaltatjuk meg else if (cm < 15) tone(speakerpin, D4, 20); // ha a távolság 10-15cm közötti, akkor a D4 hangot else if (cm < 20) tone(speakerpin, E4, 20); // és így tovább else if (cm < 25) tone(speakerpin, F4, 20); else if (cm < 30) tone(speakerpin, G4, 20); else if (cm < 35) tone(speakerpin, A4, 20); else if (cm < 40) tone(speakerpin, B4, 20); else if (cm < 45) tone(speakerpin, C5, 20); } Megjegyzés: A leírás abszolút kezdők számára készült elnézést azoktól, akik ezen a szinten már túlvannak!