(Handwasch-)Timer mit berührungslosem Schalter - Heise
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
ch.0320.068-073.qxp 28.05.20 10:41 Seite 68 Projekt (Handwasch-)Timer mit berührungslosem Schalter Mindestens 30 Sekunden lang soll man laut Empfehlungen der Virologen die Hände waschen, 4-Digits um die Covid-19-Erreger zu beseitigen. Maker 7-Segment-LED messen diese Zeit elektronisch und starten den Timer berührungslos. Ein Arduino Uno mit Multifunction-Shield hilft dabei. S4: Reset von Heinz Behling Expansions-Port Schieberegister für 7-Segment-Display Buzzer 4 LEDs Jumper J1 Steckplatz für Spindeltrimmer Temperatursensor DS1820 (optional) Jumper J2 3 Taster Steckplatz Jumper für für 4 IR-Sensor I/O-Pins SFH506 (Servos) (optional) 68 | Make: 3/2020 © Copyright by Maker Media GmbH Persönliches PDF für Rebecca Husemann aus 30625 Hannover
ch.0320.068-073.qxp 28.05.20 10:41 Seite 69 Projekt W as gibt es da nicht alles für Hilfsmittel, um die Handwaschzeit zu stoppen: Zweifaches Singen von „Happy Birthday“ Kurzinfo zum Beispiel wird oft genannt, ist aber selten »Arduino als Kurzzeit-Timer ausreichend genau, denn viele trällern das Liedchen in einem Affenzahn herunter und »Multifunction-Shield als Anzeige erreichen so rekordverdächtige, aber leider »Linienverfolger-Sensor als berührungsloser Schalter auch virenfreundlich kurze Zeiten. Ein Maker, der was auf sich hält, erledigt das elektro- nisch exakt mit einem Arduino und lässt sich Checkliste Material den Wasch-Countdown auf einem Leucht- Zeitaufwand: Elektronik dioden-Display anzeigen. Und damit die ein bis zwei Stunden » Arduino Uno oder kompatibles Board Übertragungsgefahr noch weiter verringert » Multifunction-Shield wird, startet er den Timer berührungslos Kosten: etwa 20 Euro » Infrarot Line Tracking Sensor TCRT5000 durch einfaches Annähern der Hand. » Steckernetzteil 9V, 1000mA, 5,5mm- Klingt vielleicht aufwendig, ist es aber Hohlstecker Löten: nicht. Denn ein Arduino zusammen mit dem » Schaltlitze 0,14mm2 Litze an Kontaktstifte löten in der Make 2/18 vorgestellten Multifuncti- » Isolierband on-Shield 1 enthält nahezu alles, was benö- tigt wird: eine Leuchtdioden-Anzeige für den Lasercut-Gehäuse Zeit-Countdown und einen Beeper zur akus- » Plexiglas 3mm tischen Anzeige beim Ablauf der Zeit. Das Mehr zum Thema » 5 Schrauben M3 x 16 mit Muttern Shield hat zwar auch drei Taster, von denen » Eine genaue Beschreibung des » 1 Schraube M3 x 10 mit Mutter man einen als Startschalter für die Zeitmes- Shields gibt es im Artikel „Multi- sung verwenden könnte. Dann aber bestün- Function-Shield für Arduino“ in 3D-Druck-Gehäuse de die Gefahr, dass beim empfohlenen Hän- Make 2/18 ab Seite 74. » Filament PLA, ca. 26m dewaschen zum Beispiel nach dem Einkauf » Eine weitere Anwendung des La- » 4 Schrauben M3 x 12 mit Muttern sercut-Gehäuses gibt es im Artikel die Krankheitserreger auf der Tasteroberflä- „3D-Drucker-Vitrine“ in Make 3/18 che geparkt und demnächst wieder auf die ab Seite 114. eigenen oder andere Hände übertragen wer- Alles zum Artikel den. Deshalb verwenden wir diese Taster im Web unter nur, um die voreingestellte Zeit von 30s än- dern und so später den Handwasch-Timer make-magazin.de/xeys auch als Zeitnehmer zum Beispiel in der Küche einsetzen zu können. Dazu später mehr bei der Erklärung der Software. 1 Das Multifunction-Shield erleichtert den Aufbau des Timers erheblich. 2 Dieser Linienverfolger-Sensor dient als berührungsloser Startschalter. © Copyright by Maker Media GmbH Persönliches PDF für Rebecca Husemann aus 30625 Hannover Make: 3/2020 | 69
ch.0320.068-073.qxp 28.05.20 10:41 Seite 70 Projekt Als berührungsloser Schalter dient hier ein eigentlich als Linienverfolger in Robotern ein- 2 gesetztes Sensormodul . Das ist eine Reflex- Lichtschranke, die ein Signal ausgibt, sobald ein Gegenstand oder eben auch eine Hand in einigen Zentimetern Abstand den von einer Infrarot-LED ausgesendeten Lichtstrahl auf den neben der LED angeordneten IR-Sensor zurückwirft. So hat kein Virus eine Chance, sich auf dem Timer einzunisten. Solche Sensoren gibt es fertig aufgebaut für unter 2 Euro. Diese Bauanleitung ist für das Modell geschrieben, das man bei den über den Kurzinfo-Link er- reichbaren Bezugsquellen bekommt. Andere Module können in der Anschlussbelegung und den Maßen abweichen. Als weitere Zutaten fehlt dann noch neben einem Netzteil ein geeignetes Programm, das wir Ihnen ebenfalls über den Kurzinfo-Link zum Download bereitstellen, sowie – falls ge- wünscht – ein Gehäuse. Die Elektronik funk- tioniert zwar auch ohne. Da es beim Hände- waschen aber immer feucht zugeht, ist eine 3 Die Oberseite der USB-Buchse muss isoliert werden. schützende Hülle ratsam. Falls Sie da nicht selbst etwas konstruieren oder improvisieren möchten, stellen wir Ihnen die Druck- bezie- hungsweise CAD-Dateien für ein 3D-Druck-/ oder Lasercut-Gehäuse zur Verfügung. Aufbau Arduino und Shield werden lediglich zusam- mengesteckt. Dabei muss man aber eine Kleinigkeit beachten. Die Anschluss-Pins der LED-Anzeige ragen spitz und ziemlich lang nach unten aus dem Shield heraus. Unglück- licherweise berühren sie nach dem Zusam- menstecken die Metallabschirmung der Ar- duino-USB-Buchse und verursachen einen Kurzschluss. Deshalb müssen Sie zuvor die Buchse an der Oberseite mit einem Stück Iso- 4 Diese Pins der LEDs müssen gekürzt werden, sonst gibt es einen Kurzschluss. 3 lier- oder Klarsichtklebestreifen ( Pfeil) ab- kleben. Außerdem kürzen Sie mit einem fei- nen Seitenschneider die oberen Pins der LED-Anzeige . 4 An die drei Kontakte des Sensors löten Sie jeweils 10cm Schaltlitze. Wenn Sie es ganz bequem haben wollen, befestigen Sie am anderen Ende einen 3-poligen Stecker 2 oder verwenden ein entsprechendes Kabel- stück aus der Restekiste. Notwendig ist der Stecker aber nicht, man kann die Schaltlitzen auch an der Steckerleiste des Shields anlö- ten. Alternativ können Sie auch drei Female- female-Jumperkabel verwenden. Die drei Kabel vom Sensor werden mit der Stiftleiste 5 (nicht verwechseln mit A5) des 5 Shields verbunden . Damit ist die Elektro- nik schon fertig. Software 5 Der Anschluss des Sensors 6 Die Abstandsscheiben zwischen Rückwand Die Software ist ebenfalls über den Kurzinfo- an das Shield und Arduino sind ebenfalls aus Plexiglas. Link erhältlich. Entpacken Sie das überspielte 70 | Make: 3/2020 © Copyright by Maker Media GmbH Persönliches PDF für Rebecca Husemann aus 30625 Hannover
ch.0320.068-073.qxp 28.05.20 10:41 Seite 71 Projekt Listing 1 Listing 2 14 const uint8_t Led4 = 10; 54 pinMode(Led4,OUTPUT); 15 const uint8_t Led3 = 11; 55 pinMode(Led3,OUTPUT); 16 const uint8_t Led2 = 12; 56 pinMode(Led2,OUTPUT); 17 const uint8_t Led1 = 13; 57 pinMode(Led1,OUTPUT); 18 const uint8_t BuzzerPin = 3; 58 pinMode(BuzzerPin,OUTPUT); 19 const uint8_t SensorPin = 5; 59 pinMode(Select, INPUT); // I/O-Pins als Eingang 20 const uint8_t Select = A1; 60 pinMode(Minus, INPUT); 21 const uint8_t Minus = A2; 61 pinMode(Plus, INPUT); 22 const uint8_t Plus = A3; 62 pinMode(SensorPin,INPUT); 23 int val = 0; 63 24 int Zeit = 30; 64 digitalWrite(BuzzerPin,HIGH); 25 int Veraenderung = 0; ZIP-Archiv. Klicken Sie sich durch bis zum timer kann ja auch als Küchentimer benutzt Software-Verzeichnis. Darin finden Sie die werden. Listing 3 Datei Handwaschtimer.ino, die Sie in der Ar- In den Zeilen 54 bis 62 (Listing 2) werden duino-IDE laden müssen. Falls Sie noch nicht die gerade definierten Pins nun entspre- 177 DisplayValue = Zeit; mit diesem Programm gearbeitet haben, fin- chend ihrer Verwendung als Ein- bezie- 178 val = digitalRead(SensorPin); 179 if (val == HIGH) den Sie die Download-Adresse dazu sowie hungsweise Ausgang festgelegt. Zeile 64 180 { einen Link zu einer Anleitung ebenfalls über sorgt für Ruhe beim Programmstart, indem 181 digitalWrite(BuzzerPin,HIGH); den Kurzinfo-Link. sie den Beeper abschaltet. 182 } Schließen Sie dann den Arduino per USB- Die eigentliche Zeitschleife geschieht in 183 else 184 { Kabel an den PC an. Wählen Sie unter Werk- den Zeilen 177 bis 197: Zu Beginn wird der 185 digitalWrite(BuzzerPin,LOW); zeuge als Board den Arduino Uno und den Wert der zu stoppenden Sekundenzeit aus 186 delay(100); richtigen Port, in der Regel der mit der der Variablen Zeit in die Variable Display- 187 digitalWrite(BuzzerPin,HIGH); 188 for(int i=Zeit;i>0;i=i-1) höchsten Nummer. Laden Sie dann das Pro- Value übertragen. Jeder Zahlenwert, der in 189 { gramm auf den Arduino per Klick auf den DisplayValue steht, wird sofort auf dem Dis- 190 DisplayValue = i; Rechtspfeil in der Symbolleiste der Arduino- play angezeigt. 191 delay(1000); IDE. Kurze Zeit später ist das erledigt und das Zeile 178 liest den Wert vom Sensorein- 192 } 193 DisplayValue = 0; Programm startet bereits in Ihrem Hand- gang aus. Hat der Sensor nicht geschaltet, 194 digitalWrite(BuzzerPin,LOW); waschtimer. Sie erkennen das daran, dass dann liegt der Sensor-Pin auf HIGH. Dement- 195 delay(2000); eine 30 im Display erscheint. sprechend wäre die Bedingung in Zeile 179 196 digitalWrite(BuzzerPin,HIGH); 197 } Nun müssen Sie noch den Sensor justie- erfüllt, in Zeile 180 würde der Beeper abge- ren. Drehen Sie den Knopf des Potenziome- schaltet (bleiben) und das Spiel beginnt von ters so weit, dass die rote LED auf dem Sen- vorn. sor gerade nicht leuchtet. Achten Sie dabei darauf, dass sich nichts vor der Lichtschranke befindet. Bei korrekter Einstellung leuchtet die Sensor-LED auf, sobald Sie Ihre Hand ei- nige Zentimeter davor bewegen. Programmablauf Die Timer-Software ist recht einfach aufge- baut. Auf die Teile zur Ansteuerung des Dis- plays gehen wir hier nicht ein. Das wurde im Artikel in der Make 2/18 bereits beschrieben. Zunächst erledigt das Programm einige Vorarbeiten, insbesondere die Festlegung der benutzen Anschluss-Pins (siehe Listing 1). Die Zeilen 14 bis 17 sind die Anschlüsse der LEDs auf dem Shield, der Beeper hängt am Arduino-Anschluss 3, der Näherungs- sensor an 5 (Zeilen 18 und 19). Die Zeilen 20 bis 22 legen die Anschlüsse der Shield-Tas- ter fest. Dann folgen drei Variablen: val wird verwendet, um den Sensor auszulesen, Zeit ist die voreingestellte Zeit von 30 Se- kunden und Veraenderung wird später be- nutzt, um eine andere Zeit einstellen zu 7 Achten Sie darauf, dass die Kanten des Shields parallel zu den Gehäusekanten verlaufen. können. Sie erinnern sich: Der Handwasch- Sonst passen später die Taster nicht. © Copyright by Maker Media GmbH Persönliches PDF für Rebecca Husemann aus 30625 Hannover Make: 3/2020 | 71
ch.0320.068-073.qxp 28.05.20 10:41 Seite 72 Projekt 8 Solange das Gehäuse noch nicht verschraubt ist, sichern Sie 9 So setzen Sie Muttern und Schrauben es mit Gummiringen. in die Seitenwände ein. Andernfalls liegt am Sensor-Pin ein LOW den ändern. Mit dem linken Taster wählen an. In diesem Fall lassen die Zeilen 185 und Sie, ob die Einer-, Zehner-, Hunderter- und 187 den Beeper für 100ms ertönen. Danach die Tausenderstelle der angezeigten Stopp- beginnt eine Schleife, die die Hilfsvariable i zeit geändert werden soll. Im Programm ge- vom Wert der zu stoppenden Zeit (30s) in Ei- schieht dies in den Programmzeilen 76 bis nerschritten herunterzählt (i=i-1) und dabei 89 (Listing 4). Der Wert der Variablen Ver- jeweils die noch verbleibende Restzeit ins aenderung wird entsprechend der gewähl- Display schreibt (Zeile 190). In jedem Schlei- ten Stelle gesetzt, kann also die Werte 0, 1, fendurchgang wird eine Sekunde gewartet 10, 100 und 1000 annehmen. Sie müssen (Zeile 191). die Zeit also immer in Sekunden angeben. Ist die Zeit abgelaufen, wird im Display So erreichen Sie eine maximale Stoppzeit eine 0 angezeigt (Zeile 193), der Beeper 2 Se- von 9999 Sekunden, das sind fast 3 Stun- kunden lang eingeschaltet (Zeile 194 und den. In der Küche dürfte das wohl für nahe- 196). Danach beginnt das Spiel wieder am zu alle Gerichte reichen. Anfang mit einer 30 im Display und der Darauf folgt dann in einer switch Timer wartet auf Annäherung. (Veraenderung)-Fallunterscheidung (Zeile 91) je nach Wert in Veraenderung der je- Einstellung der Zeit weils notwendige Programmcode. Am Bei- spiel der Einer-Stelle sprechen wir das hier + 0 Die Stifte für die Taster müssen Sie unbedingt Mit den drei Tastern des Shields können Sie einmal durch (Listing 5: Die entsprechen- vor dem Aufsetzen der Frontplatte einsetzen. die vorgegebene Stoppzeit von 30 Sekun- den Programmteile für die 10er-, 100er- und die 1000er-Stellen sind genauso aufgebaut und werden daher nicht erklärt.). Es beginnt in Zeile 100: case 1: ist der Beginn des Fal- Listing 4 les Veraenderung = 1. Zeile 101 bis 104 76 if (!digitalRead(Select)) //Taster gedrueckt ist, dann... schalten die entsprechenden LEDs ein be- 77 { ziehungsweise aus. Danach wird der Minus- 78 if (Veraenderung == 0) Taster (das ist der mittlere der drei) abge- 79 { fragt (Zeile 105). Ist er gedrückt, wird der 80 Veraenderung = 1; 81 } Wert der Variablen Zeit um 1 verringert 82 else (Zeile 107). Dann folgt dasselbe für den 83 { Plus-Taster (Zeilen 109 bis 112). 84 Veraenderung = Veraenderung * 10; 85 if (Veraenderung > 1000) Wichtig ist die break-Anweisung am 86 Veraenderung = 0; Ende jeder case-Routine. Sie kennzeichnet 87 } das Ende des jeweiligen Falls. Ohne sie 88 delay(100); würden auch die folgenden Programmzei- 89 } len ausgeführt. 72 | Make: 3/2020 © Copyright by Maker Media GmbH Persönliches PDF für Rebecca Husemann aus 30625 Hannover
ch.0320.068-073.qxp 28.05.20 10:41 Seite 73 Projekt Gehäuse Listing 5 Hier beschreiben wir kurz den Einbau des Timers in ein Lasercut-Gehäuse. Die 3D- 100 case 1: Druck-Variante ist so einfach aufgebaut, dass 101 digitalWrite(Led1,LOW); 102 digitalWrite(Led2,HIGH); sie keiner Erklärung bedarf. Wenn Sie die bei- 103 digitalWrite(Led3,HIGH); den gedruckten Teile vor sich haben, müssen 104 digitalWrite(Led4,HIGH); Sie lediglich die Elektronik hineinstecken und 105 if (!digitalRead(Minus)) 106 { die Rückwand anschrauben – fertig. 107 Zeit = Zeit - Veraenderung; Beim Lasergehäuse, das wir aus 3mm-Ple- 108 } xiglas geschnitten haben, stecken Sie zu- 109 if (!digitalRead(Plus)) nächst drei M3 x 1 6-Schrauben von unten 110 { 111 Zeit = Zeit + Veraenderung; durch die Rückwand und legen je drei Ab- 112 } standsscheiben (ebenfalls aus Plexiglas) auf 113 if (Zeit < 0) die Schraubengewinde . 6 114 115 Zeit = 0; DisplayValue = Zeit; Darauf legen Sie dann den Arduino und 116 delay(200); schrauben ihn mit Muttern fest. Stecken Sie 117 break; 7 dann das Shield darauf . Schrauben Sie den Sensor mit einer M3x12-Schraube und Mutter an den Tasten- halter. Stecken Sie nun die vier Wände und den Tasterhalter zusammen und setzen Sie Entfernen Sie die Gummiringe und ste- Damit ist Ihr Handwasch-Timer fertig. Sie das auf die Rückwand und sichern Sie das cken Sie die Stifte für die Taster in die Öff- müssen ihn nur noch in der Nähe des Wasch- 8 labile Gebilde mit Gummibändern . In die nungen des Tasterhalters (lange Stiftseite beckens platzieren, das Netzteil einstecken Schlitze der beiden Seitenwände legen Sie zum Shield). Legen Sie die Vorderseite auf und sich ihm mit der Hand nähern. Schon eine Mutter ein und stecken durch die Rück- und schrauben Sie sie analog der Rückwand wäscht eine Hand die andere, virenfeindlich wand je eine Schraube. Ziehen Sie die Schrau- 0 fest . Bitte auch diese Schrauben nicht zu und lang genug. Viel Spaß damit und blei- 9 ben an, aber nur handfest . fest anziehen. ben Sie gesund. —hgb © Copyright by Maker Media GmbH Persönliches PDF für Rebecca Husemann aus 30625 Hannover Make: 3/2020 | 73
Sie können auch lesen