Es war schon etwas schwerer einen Ultraschallsensor zu finden, der sich mit der 3V Batterieversorgung am Calliope begnügt. Nach einer Fehlbestellung (3,3V geht zwar an USB, aber nicht mit Batterie!) konnte wir auf AliExpress den HC-SR04 in einer 3V Version finden. Die lange Wartezeit hat dann der Preis mit 4,50€ für 5 Stück wieder wett gemacht. Da waren sogar die Seeed-Grove-Kabel teurer!?!
Anschluss an den Calliope Mini
Der Anschluss ist eigentlich sehr einfach. Man verbindet ein Seeed-Grove Kabel wie im Bild dargestellt:
- rot an VCC
- weiss an Trig
- gelb an Echo
- schwarz an GND
Der Stecker passt dann direkt in den Port A1 des Calliopes. Alternativ kann man auch eine Verbindung zur Pin-Leiste des Calliopes mit Dupont o.ä. erstellen. Das ermöglicht dann sogar den Anschluss mehrere Ultraschallsensoren, da der HC-SR04 neben der Stromversorgung nur zwei Digital-IO-Pins benötigt.
Programmierung des Ultraschallsensors HC-SR04 mit OpenRoberta
In OpenRoberta ist zwar bereits ein Ultraschallsensor-Block enthalten, aber leider konnten wir ihn nicht zum laufen bringen, da die Implementierung scheinbar nur die Pulsweite auf dem Echo-Pin misst. Der HC-SR04 erfordert aber vor jeder Messung einen Impuls auf den Trig-Pin. Man kann dies zwar noch relativ einfach in OpenRoberta nachbauen: Zuerst zieht man einen Ausgang (C17) für eine kurze Zeit (hier 30ms) hoch und misst dann die Pulszeit auf dem Eingang (C16). Das Ergebnis muss man dann noch durch 58 teilen, um den Abstand in Zentimeter zu erhalten.
Aber so ein eigener Block ist doch irgendwie noch schon schöner: Ultrasonic HC-SR04. In der Roboterkonfiguration können die verwendeten Pins trig und echo sowie der Umrechnungsfaktor eingestellt werden. Man kann auch mehrere Sensoren einfügen und später auslesen, wenn man unterschiedliche Pins verwendet.
Das Auslesen des Wertes erfolgt über den vorhandenen Block „gib Abstand“ aus dem Experten-Werkzeugmenü. Im oben dargestellten Beispiel wird der Wert ausgelesen, gerundet und auf dem Bildschirm des Calliopes angezeigt. Laut Dokumentation kann der HC-SR04 zwar alle 20ms eine neue Messung durchführen, aber wir warten dann mit 1,5 Sekunden doch lieber etwas länger.