- Materiaal vereist
- Werking van een geluidssensor
- Schakelschema geluidssensor
- Muzikale waterfontein schakelschema
- Programmeren van Arduino Nano voor Dancing Fountain
Er zijn verschillende waterfonteinen die onvoorwaardelijk water besprenkelen met een aantal interessante lichteffecten. Dus ik dwaalde rond het ontwerpen van een innovatieve waterfontein die kan reageren op externe muziek en water kan besprenkelen, afhankelijk van de muziekbeats. Klinkt het niet interessant?
Het basisidee van deze Arduino-waterfontein is om een input te nemen van een externe geluidsbron zoals mobiel, iPod, pc enz., Het geluid te samplen en het op te splitsen in verschillende spanningsbereiken, en vervolgens de uitgang te gebruiken om verschillende relais in te schakelen. We gebruikten eerst een op een condensatormicrofoon gebaseerde geluidssensormodule om op de geluidsbron uit te voeren om de geluiden in verschillende spanningsbereiken te splitsen. Vervolgens wordt de spanning naar de op-amp gevoerd om het geluidsniveau met een bepaalde limiet te vergelijken. Het hogere spanningsbereik komt overeen met een relaisschakelaar AAN die een muzikale waterfontein bevat die werkt op de beats en ritmes van het nummer. Dus hier bouwen we deze muzikale fontein met Arduino en geluidssensor.
Materiaal vereist
- Arduino Nano
- Geluidssensormodule
- 12V relaismodule
- DC-pomp
- Leds
- Draden aansluiten
- Vero-bord of Breadboard
Werking van een geluidssensor
De geluidssensormodule is een eenvoudig elektronisch bord op basis van een elektretmicrofoon dat wordt gebruikt om extern geluid uit de omgeving te detecteren. Het is gebaseerd op de LM393-eindversterker en een electret-microfoon en kan worden gebruikt om te detecteren of er geluid is buiten de ingestelde drempelwaarde. De module-uitgang is een digitaal signaal dat aangeeft dat het geluid groter of kleiner is dan de drempel.
Met de potentiometer kan de gevoeligheid van de sensormodule worden aangepast. De output van de module is HOOG / LAAG wanneer de geluidsbron lager / hoger is dan de drempel die is ingesteld door de potentiometer. Dezelfde geluidssensormodule kan ook worden gebruikt om het geluidsniveau in decibel te meten.
Schakelschema geluidssensor
Zoals we weten, is het basisinvoerapparaat in een geluidssensormodule de microfoon die de geluidssignalen omzet in elektrische signalen. Maar omdat de elektrische signaaluitvoer van de geluidssensor zo klein is dat het erg moeilijk te analyseren is, hebben we een NPN-transistorversterkerschakeling gebruikt die het zal versterken en het uitgangssignaal naar de niet-inverterende ingang van de Op- amp. Hier wordt LM393 OPAMP gebruikt als een comparator die het elektrische signaal van de microfoon vergelijkt met het referentiesignaal afkomstig van het spanningsdelercircuit. Als het ingangssignaal groter is dan het referentiesignaal, zal de uitgang van de OPAMP hoog zijn en vice versa.
U kunt secties van Op-amp-circuits volgen voor meer informatie over de werking ervan.
Muzikale waterfontein schakelschema
Zoals te zien is in het bovenstaande schakelschema van de muzikale fontein, wordt de geluidssensor gevoed met 3,3 V voeding van Arduino Nano en is de uitgangspen van de geluidssensormodule verbonden met de analoge ingangspen (A6) van Nano. U kunt elke analoge pin gebruiken, maar zorg ervoor dat u deze in het programma wijzigt. De relaismodule en de DC-pomp worden gevoed door een externe 12VDC-voeding, zoals weergegeven in de afbeelding. Het ingangssignaal van de relaismodule is verbonden met digitale uitgangspen D10 van Nano. Voor het lichteffect heb ik twee verschillende kleuren LED gekozen en deze aangesloten op twee digitale uitgangspennen (D12, D11) van Nano.
Hier is de pomp zo aangesloten dat wanneer een HOGE puls wordt gegeven aan de ingang van de relaismodule, het COM-contact van het relais wordt verbonden met het NO-contact en de stroom een gesloten circuitpad krijgt om over de pomp te stromen naar activeer de waterstroom. Anders blijft de pomp UIT. De HIGH / LOW-pulsen worden gegenereerd door Arduino Nano, afhankelijk van de geluidsinvoer.
Na het solderen van het complete circuit op perfboard, ziet het er als volgt uit:
Hier gebruikten we een plastic doos als fonteincontainer en mini 5v-pomp om als fontein te fungeren, we gebruikten deze pomp eerder in een brandbestrijdingsrobot:
Programmeren van Arduino Nano voor Dancing Fountain
Het volledige programma van dit Arduino-waterfonteinproject staat onderaan de pagina. Maar hier leg ik dat slechts in delen uit voor een beter begrip:
Het eerste deel van het programma is het declareren van de benodigde variabelen voor het toewijzen van pincodes die we gaan gebruiken in de volgende programmablokken. Definieer vervolgens een constante REF met een waarde die de referentiewaarde is voor de geluidssensormodule. De toegewezen waarde 700 is de bytes-equivalente waarde van het elektrische uitgangssignaal van de geluidssensor.
int sensor = A6; int redled = 12; int greenled = 11; int pomp = 10; # definiëren REF 700
In de ongeldige setup- functie hebben we de pinMode- functie gebruikt om de INPUT / OUTPUT-gegevensrichting van de pinnen toe te wijzen. Hier wordt de sensor als INGANG genomen en worden alle andere apparaten als UITGANG gebruikt.
leegte setup () { pinMode (sensor, INPUT); pinMode (redled, OUTPUT); pinMode (groen, OUTPUT); pinMode (pomp, OUTPUT); }
Binnen de oneindige lus wordt de analogRead- functie aangeroepen die de analoge waarde-invoer van de sensorpin uitleest en deze opslaat in een variabele sensor_value .
int sensor_value = analogRead (sensor);
In het laatste deel wordt een if-else- lus gebruikt om het analoge ingangssignaal te vergelijken met de referentiewaarde. Als het groter is dan de referentie, krijgen alle uitgangspennen een HOGE output zodat alle LED's en de pomp worden geactiveerd, anders blijft alles UIT. Hier hebben we ook een vertraging van 70 milliseconden gegeven om de AAN / UIT-tijd van het relais te onderscheiden.
if (sensor_value> REF) { digitalWrite (greenled, HIGH); digitalWrite (redled, HIGH); digitalWrite (pomp, HIGH); vertraging (70); } else { digitalWrite (greenled, LOW); digitalWrite (redled, LOW); digitalWrite (pomp, LOW); vertraging (70); }
Dit is hoe deze Arduino gestuurde waterfontein werkt, volledige code met een werkende video wordt hieronder gegeven.