Projekt 03: Entfernungs-Bat

1. Übersicht

Basierend auf einem Ultraschallsensor erkennt die Entfernungs-Bat die Entfernung von Hindernissen und zeigt diese in Echtzeit auf einem OLED an. Wenn die Entfernung weniger als 10 cm beträgt, gibt der Lautsprecher Alarm.

2. Komponenten

Img

Img

Img

micro:bit Board *1

micro:bit T-Typ Erweiterungsboard *1

micro USB Kabel *1

Img

Img

Img

Ultraschallsensor *1

OLED Modul *1

DuPont Kabel

Img

Img

Img

Breadboard *1

Jumper Kabel

Batteriehalter *1
(selbst bereitgestellte AA Batterien *2)

Img

Img

Bat Karte *1

OLED Karte *1

3. Komponentenwissen

Ultraschallsensor

Ultraschallwellen werden zurückgeworfen, wenn sie auf ein Hindernis treffen. Wir messen die Entfernung, indem wir das Zeitintervall zwischen dem Senden und Empfangen der Wellen berechnen. Da die Ausbreitungsgeschwindigkeit des Schalls in Luft konstant v=340m/s ist, berechnen wir die Entfernung zwischen Sensor und Hindernis: s=vt/2.

Img

Das HC-SR04 Ultraschallmodul integriert einen Sender und Empfänger. Der Sender wandelt elektrische Signale (elektrische Energie) in hochfrequente (für Menschen nicht hörbare) Schallwellen (mechanische Energie) um, während der Empfänger das Gegenteil macht.

Das Schaltbild des HC SR04:

Img

Pin-Belegung:

Img

Parameter:

  • Betriebsspannung: 5V

  • Betriebsstrom: 12mA

  • Minimale Messdistanz: 2cm

  • Maximale Messdistanz: 200cm

Arbeitsprinzip:

Ein High-Pegel-Puls von mindestens 10µs wird am Trig-Pin ausgegeben, und das Modul beginnt, Ultraschallwellen zu senden. Gleichzeitig wird der Echo-Pin auf High gezogen. Wenn das Modul eine Ultraschallwelle zurückerhält, weil es auf ein Hindernis trifft, wird der Echo-Pin auf Low gezogen. Die Dauer des High-Pegels am Echo-Pin ist die Gesamtzeit der Welle vom Senden bis zum Empfangen: s=vt/2.

Img

OLED Modul

OLED-Technologie zeichnet sich durch eine reiche Farbdarstellung, hohen Kontrast und weite Betrachtungswinkel aus und liefert klare und lebendige Bilder, besonders herausragend bei Schwarz.

Jeder Pixel des OLED-Displays strahlt selbst Licht aus, ohne Hintergrundbeleuchtung, daher ist der Stromverbrauch relativ gering. Mit kleiner Größe, hoher Auflösung und niedrigem Stromverbrauch ist das 0,9-Zoll OLED-Display sehr gut für tragbare Geräte geeignet.

Img

In diesem Projekt wird das OLED-Display-Modul mit dem SDA-Anschluss an Pin P20 und SCL an Pin P19 angeschlossen.

Parameter:

  • Betriebsspannung: DC 3,3V-5V

  • Betriebsstrom: 30mA

  • Schnittstelle: Pin-Anschlüsse mit 2,54mm Abstand

  • Kommunikationsmodus: I2C

  • Interner Treiberchip: SSD1306

  • Auflösung: 128*64

  • Betrachtungswinkel: größer als 150°

4. Schaltplan

Img

Beim Einsatz des OLED-Displays und Ultraschallsensors muss eine externe Stromversorgung angeschlossen und der DIP-Schalter auf ON gestellt werden.

Img

Img

5. Bibliothek importieren

Falls Sie die benötigten Bibliotheksdateien (oled_ssd1306) noch nicht hinzugefügt haben, importieren Sie diese bitte gemäß Wie Mu Bibliothek in Micro:bit importiert.

6. Programmablauf

Img

7. Testcode

Die Code-Datei befindet sich im Ordner Projekt 03:Entfernungs-Bat, Datei Project-03-Ranging-Bat.py.

Img

Vollständiger Code: Der Schwellenwert 10 in der Bedingung kann je nach tatsächlichen Gegebenheiten angepasst werden.

'''
Function: bat ranging
Compiling IDE: MU 1.2.0
Author: https://docs.keyestudio.com
'''
# import related libraries
from microbit import *
import ustruct
import machine
from time import sleep_us
import oled_ssd1306 as oled
import music

display.show(Image.HAPPY) # LED matrix displays a smile face
distance = 0              # set variable distance initial value to 0
lastEchoDuration = 0      # set variable lastEchoDuration initial value to 0

# initialize and clear oled
oled.initialize()
oled.clear_oled()

while True:
    # Ultrasonic sensor sends and receives signals
    pin1.write_digital(0)
    sleep_us(2)
    pin1.write_digital(1)
    sleep_us(15)
    pin1.write_digital(0)

    # measure the time interval between "when rising edge detected from the pin2" and "until the pin becomes low again"
    # unit is μs. Assign the interval to variable t.
    t = machine.time_pulse_us(pin2, 1, 35000)

    # a conditional statement, used to check whether the values of two variables t and lastechoduration satisfy specific conditions.
    # If both conditions are met, the block of code under the condition statement is executed.
    if (t <= 0 and lastEchoDuration >= 0):
        t = lastEchoDuration   # variable t = variable lastechoduration
    else:
        lastEchoDuration = t
    distance = int(t * 0.017)  # calculate distance
    oled.clear_oled()          # clear OLED
    oled.add_text(1, 0, str(distance) + 'cm')  # Display distance in the corresponding position of OLED
    sleep(200)
    if distance < 10:       # if distance < 10cm
        music.play("C4:4")  # speaker plays C4 tone
        sleep(200)          # delay 
        music.reset()       # no tone
        sleep(200)

8. Testergebnis

Klicken Sie auf „Flash“, um den Code auf das micro:bit Board zu laden.

Img

Nach dem Herunterladen des Codes auf das Board mit micro USB Kabel oder externer Stromversorgung einschalten (DIP-Schalter auf ON stellen) und den Reset-Knopf auf dem Board drücken.

Img

Das OLED zeigt die Entfernung zwischen Ultraschallsensor und Hindernis in Echtzeit an. Wenn der Abstandswert weniger als 10 cm beträgt, gibt der Lautsprecher auf dem micro:bit Board Alarm.

ACHTUNG: Wenn die Verkabelung korrekt ist, Sie aber keine Ergebnisse sehen, drücken Sie den Reset-Knopf auf der Rückseite des Boards.

Img