Zur Längenmessung werden viele Werkzeuge verwendet. Eines der ersten Dinge, die mir in den Sinn kommen, sind Lineale. Unser Messgerät unterscheidet sich je nach Ort und Größe der Messung. Maßbänder werden im Baugewerbe und in der Architektur verwendet, und Messschieber werden für kleine Objekte verwendet, bei denen eine millimetergenaue Präzision erforderlich ist. Wenn außerdem ein Bereich vermessen werden soll, der sowohl große als auch präzise Messungen erfordert, kommen Entfernungsmesser zum Einsatz, die mit Laser- und Infrarotsystemen arbeiten. Auch im Gesundheitsbereich eingesetzte Ultraschallgeräte arbeiten nach der gleichen Logik, wandeln ihre Messwerte jedoch in visuelle Darstellungen um.
In unserem Projekt werden wir PicoBricks und einen Ultraschallsensor verwenden, um ein digitales Lineal vorzubereiten, das den Entfernungswert auf dem Gerät anzeigt OLED-Bildschirm wenn die Taste gedrückt wird. Ultraschallsensoren erfassen Entfernungen anhand der Rückkehrzeiten der von ihnen ausgesendeten Schallwellen.
Details und Algorithmus
Wenn das Programm startet, werden Anweisungen auf dem OLED-Bildschirm angezeigt. Nachdem der Benutzer die Taste gedrückt hat Taste, wird eine Messung durchgeführt. Die rote LED bleibt während der Messung eingeschaltet und erlischt dann. Der gemessene Wert wird zum Abstand von der Spitze des Sensors bis zur Rückseite der Box addiert. Der endgültig berechnete Wert wird auf dem OLED-Display angezeigt.
Komponenten
1X PicoBricks
1X HC-SR04 Ultraschallsensor
Überbrückungskabel
Einfache Verbindungskabel
Schaltplan
Sie können die Module von Picobricks ohne Verkabelung programmieren und betreiben. Wenn Sie die Module getrennt von der Platine verwenden möchten, sollten Sie die Modulverbindungen mit Grove-Kabeln herstellen.
Bauphasen des Projekts
Zur Vorbereitung des Projekts benötigen Sie doppelseitiges Schaumstoffband, ein Universalmesser und einen Abfallkarton von ca. 15 x 10 x 5 cm.
1) Schneiden Sie die Löcher für den Ultraschallsensor, den OLED-Bildschirm, das Tasten-LED-Modul usw. Summer, Batteriekasten, um die Kabel mit einem Universalmesser durchzuführen.
2) Hängen Sie alle Kabel in die Box und befestigen Sie die Rückseite der Module mit doppelseitigem Schaumstoffklebeband an der Box. Verbinden Sie die trig Pin des Ultraschallsensors an den GPIO14 Pin und die Echo Pin an die GPIO15 Stift. Sie sollten den VCC-Pin mit dem verbinden VBUS Pin auf dem Picoboard.
3) Nachdem Sie die Kabelverbindungen aller Module abgeschlossen haben, können Sie die 2-Batterie-Box in die Strombuchse des Picoboards stecken und den Schalter einschalten. Das war's mit dem digitalen Lineal-Projekt!
MicroBlocks-Codes der PicoBricks
Sie können auf die Microblocks-Codes des Projekts zugreifen, indem Sie das Bild auf die Registerkarte „Microblocks Run“ ziehen oder auf die Schaltfläche klicken.
Registerkarte „Mikroblöcke ausführen“.
MicroPython-Codes der PicoBricks
Vom Maschinenimport Pin, PWM, I2C
aus utime import schlaf
Von Picobricks importieren Sie SSD1306_I2C
Zeit importieren
# Definieren Sie die Bibliotheken
redLed = Pin(7, Pin.OUT)
button = Pin(10, Pin.IN, Pin.PULL_DOWN)
Summer = PWM(Pin(20, Pin.OUT))
Buzzer.freq(392)
Trigger = Pin(15, Pin.OUT)
echo = Pin(14, Pin.IN)
# Definieren Sie Eingangs- und Ausgangspins
BREITE = 128
HÖHE = 64
# OLED-Bildschirmeinstellungen
sda = machine.Pin(4)
scl = machine.Pin(5)
i2c = machine.I2C(0, sda=sda, scl=scl, freq=1000000)
# Initialisieren Sie die digitalen Pins 4 und 5 als AUSGANG für die OLED-Kommunikation
oled = SSD1306_I2C(128, 64, i2c)
Maß = 0
finalDistance = 0
def getDistance():
trigger.low()
utime.sleep_us(2)
trigger.high()
utime.sleep_us(5)
trigger.low()
while echo.value() == 0:
signaloff = utime.ticks_us()
while echo.value() == 1:
signalon = utime.ticks_us()
timepassed = signalon – signaloff
Distanz = (verstrichene Zeit * 0,0343) / 2
Rückweg
# Berechnen Sie die Entfernung
def getMeasure(pin):
globales Maß
globale finalDistance
redLed.value(1)
für i im Bereich(20):
messen += getDistance()
Schlaf(0,05)
redLed.value(0)
finalDistance = (Maß/20) + 1
oled.fill(0)
oled.show()
oled.text(">Digital Ruler<", 2, 5)
oled.text("Distance " + str(round(finalDistance)) + " cm", 0, 32)
oled.show()
# Drucken Sie den angegebenen Abstand zu den angegebenen X- und Y-Koordinaten auf dem OLED-Bildschirm
print(finalDistance)
Buzzer.duty_u16(4000)
Schlaf(0,05)
Buzzer.duty_u16(0)
Maß = 0
finalDistance = 0
# Den Summer ertönen lassen
button.irq(trigger=machine.Pin.IRQ_RISING, handler=getMeasure)
Arduino C-Codes der PicoBricks
#include
#include „ACROBOTIC_SSD1306.h“
#include
// Definiere die Bibliotheken
#define TRIGGER_PIN 15
#define ECHO_PIN 14
#define MAX_DISTANCE 400
NewPing-Sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
#define T_B 493
int Abstand = 0;
int total = 0;
void setup() {
pinMode(7, OUTPUT);
pinMode(20, OUTPUT);
pinMode(10, INPUT);
// Definiere Eingangs- und Ausgangspins
Wire.begin();
oled.init();
oled.clearDisplay();
}
void loop() {
Verzögerung(50);
if(digitalRead(10) == 1) {
int Maß = 0;
digitalWrite(7, HIGH);
Ton(20, T_B);
Verzögerung (500);
noTone(20);
for (int i = 0; i < 20; i++) {
Measure = sonar.ping_cm();
Gesamt = Gesamt + Maß;
Verzögerung(50);
}
Distanz = gesamt / 20 + 6; // Berechne die Entfernung
digitalWrite(7, LOW);
Verzögerung (1000);
oled.clearDisplay();
oled.setTextXY(2, 1);
oled.putString(">Digital Ruler<");
oled.setTextXY(5, 1);
oled.putString("Entfernung: ");
oled.setTextXY(5, 10);
String string_distance = String(distance);
oled.putString(string_distance);
oled.setTextXY(5, 12);
oled.putString("cm"); // Drucken Sie die berechnete Distanz auf dem OLED-Bildschirm aus
Maß = 0;
Abstand = 0;
gesamt = 0;
}
}
GitHub-Projektseite