Nähe, optischer Schalter mit Soundeffekt auf Arduino





Hallo, alle miteinander!



Heute ist ein Artikel über einen Näherungsschalter mit Soundeffekt, den ich vor 9 Jahren, genauer gesagt im Januar 2012, gemacht habe.



Seitdem arbeitet der Schalter seit 9 Jahren rund um die Uhr mit mir zusammen. Was am interessantesten ist, während all dieser Zeit hat es nicht versagt und nie aufgelegt, und es hatte auch nie falsch positive Ergebnisse. Im Allgemeinen hat es sich bewährt und ich kann es Ihnen zuversichtlich zur Selbstmontage empfehlen.

Wenn Sie an Details interessiert sind, dann bitte unter Katze.



Ich habe 7 Lampen im Korridor montiert.







Und um einen schönen visuellen Effekt zu erzielen, habe ich die Lampen nacheinander umgeschaltet. Dazu musste ich einen separaten Draht von jedem Beleuchtungspunkt zur Steuerplatine spannen.







Ich habe das Brett selbst im Raum zwischen Trockenbau und Decke versteckt, da dort mehr als genug Platz ist.







Ich habe den IR-Empfänger und die LED in die Buchse gesteckt. Um Fehlalarme zu vermeiden, müssen sie voneinander isoliert werden, dafür habe ich ein Schrumpfkambrikum verwendet. Um diesen optischen Sensor mit der Steuerplatine zu verbinden, verwende ich die in die Wand eingebetteten Drähte.







Damit sich das Design des Schalters nicht von anderen installierten dekorativen Überzügen im Innenraum unterscheidet, habe ich eine TV-Steckdose aus derselben Serie verwendet, aus der ich alle Innenseiten herausgeworfen und ein rundes Fenster aus lila Acryl in das Loch geklebt habe.







Alle Komponenten wurden auf einer Platine platziert, die auch Schraubverbindungen zum Anschließen der Drähte von den Lampen aufweist.







Ich habe dieses Board mit einem normalen Telefonladegerät mit Strom versorgt.







Die Basis des gesamten Geräts ist der Arduino Nano V.3-Controller. Sie können jedoch auch alle anderen Karten mit dem Atmega328-Mikrocontroller verwenden.







Eine IR-LED mit einem Fototransistor kann vom Hindernissensor genommen werden, es ist jedoch nicht erforderlich, sie zu löten, es reicht aus, die zusätzlichen Spuren zu schneiden und 3 Drähte an sie anzulöten. Wenn Sie diese Teile bereits zuvor irgendwo verlötet haben, sollten Sie sie vor der Verwendung zunächst auf ihre Funktionsfähigkeit überprüfen. Die Infrarot-LED muss über einen 120-Ohm-Strombegrenzungswiderstand an eine Spannung von 5 V angeschlossen werden und durch die Kamera des Telefons betrachtet werden. Sie sollte mit einem violetten Licht leuchten. Zum Testen des Fototransistors benötigen Sie einen Tester mit Durchgangstestfunktion. Wir versetzen den Tester in den Wählmodus und verbinden die Fototransistorkabel mit den Testsonden. Dann müssen Sie eine Fernbedienung von Haushaltsgeräten fest an sich ziehen und eine beliebige Taste drücken. Als Antwort ist ein intermittierendes Quietschen zu hören.







Vor 9 Jahren fand ich keine geeigneten Halbleiterrelais und musste sie selbst aus Funkkomponenten zusammenbauen. Im Moment ist es jedoch einfacher, ein 8-Kanal-Halbleiterrelaismodul wie im Bild zu kaufen, als Zeit mit der Suche nach diesen Komponenten zu verschwenden.







Der Schalter funktioniert wie folgt



Der Arduino gibt ein konstantes PWM-Signal vom D5-Ausgang mit einer Frequenz von ungefähr 977 Hz aus. Eine LED, die ein Signal im Infrarotbereich aussendet, ist über einen Strombegrenzungswiderstand von 82 Ohm mit diesem Ausgang verbunden. Der an den D2-Eingang angeschlossene Fototransistor erkennt das von der Hand reflektierte IR-Signal und prüft es auf Plausibilität. Wenn ein Signal aus 20 oder mehr aufeinanderfolgenden Perioden einer Frequenz von 977 Hz entspricht, schaltet der Controller nacheinander alle 7 Lampen ein und beginnt, über den PWM-Ausgang einen Soundeffekt abzuspielen D11. Das gleiche passiert, wenn Sie ausschalten.







Sounds spielen



Zur Wiedergabe von Soundeffekten wird das WAVE-Format ohne Komprimierung mit einer Frequenz von 16000 Hz und einer Tiefe von 8 Bit verwendet. Bei der Wiedergabe dieses Formats mit PWM wird jedoch ein unangenehmes Rauschen und Rauschen im Audiopfad beobachtet. Um die Wiedergabequalität zu verbessern, habe ich im Code eine lineare Interpolation verwendet. In diesem Fall erfolgt die Abtastung von Abtastwerten mit einer Frequenz von 62,5 kHz, und zwischen den ursprünglichen Abtastwerten werden 3 zusätzliche Abtastwerte eingefügt, die nach der Methode der linearen Interpolation berechnet werden. Dadurch wird das Quantisierungsrauschen am Ausgang reduziert, das Pfeifen verschwindet, die Klangqualität wird verbessert und zusätzliche RC-Filter sind für die Wiedergabe nicht erforderlich.







Anstelle eines Lautsprechers habe ich einen alten, kleinen Computerlautsprecher ohne eingebauten Verstärker verwendet.







Um Wave-Dateien in C-Code zu konvertieren, können Sie einen Online-Konverter verwenden .



Planen



Auf dem Diagramm habe ich Halbleiterrelais mit grauen Rechtecken markiert, und für diejenigen, die verwirrt werden möchten, können sie die Schaltung vollständig zusammenbauen, so wie ich es in der fernen Vergangenheit getan habe.







Komponenten für die Montage



1 - Arduino Nano V.3

2 - Hindernissensor

3 - 8-Kanal-Relaismodul

4 - Widerstände 82 Ohm und 1 kOhm

5 - Lautsprecher 0,5 - 3 W

6 - Jeder NPN-Transistor mit einem zulässigen Strom von mindestens 500 mA



Arduino Code



Alle Dateien in einem Archiv herunterladen

Dieses Mal habe ich beschlossen, alle verwendeten Bibliotheken zum Ordner mit der Skizze hinzuzufügen, und in der Skizze selbst habe ich ihre lokale Verwendung registriert. Jetzt hoffe ich, dass Neulinge weniger Fragen zu den Fehlern haben, auf die sie beim Kompilieren stoßen.



Der Code enthält mehrere Konstanten, die vor dem Flashen geändert werden können.



Die Konstante power_ir ist für den Betriebsabstand des Leistungsschalters verantwortlich und kann Werte von mindestens 20 bis maximal 200 annehmen. Der von Ihnen benötigte Wert kann experimentell bestimmt werden.



lamp_num - bestimmt die Anzahl der verwendeten Lampen. Die minimale Anzahl von Lampen darf nicht kleiner als 1 sein und die maximale Anzahl darf nicht mehr als 7

betragen . Wenn Sie den Code korrigieren, können Sie ihn auf 15 erhöhen . Lamp_delay ist die Verzögerung zwischen dem aufeinanderfolgenden Einschalten von Lampen, die in Millisekunden ausgedrückt wird und von 0 bis 4 beginnen kann. 294 967 295 ms. Obwohl ich nicht denke, dass so große Verzögerungen von irgendjemandem benötigt werden.



Video



Klicken Sie auf das Bild, um das Video anzuzeigen.





Fazit



Abschließend möchte ich hinzufügen, dass ich sehr überrascht bin, dass ein Mikrocontroller ohne WDT seit 9 Jahren nicht mehr aufgelegt hat. Aus dem gleichen Grund habe ich den Code nicht bearbeitet und WDT hinzugefügt, da Arduino mit altem Bootloader nicht damit arbeiten kann.



Danke fürs Lesen bis zum Ende!



Wenn Ihnen mein Artikel gefallen hat, unterstützen Sie ihn mit einem Like und einem Abonnement.



Wenn Sie Fragen haben, können Sie diese in den Kommentaren stellen.



All Articles