Inhaltsverzeichnis:

Track&Trace für kleine Geschäfte - Gunook
Track&Trace für kleine Geschäfte - Gunook

Video: Track&Trace für kleine Geschäfte - Gunook

Video: Track&Trace für kleine Geschäfte - Gunook
Video: Onlineshop: 10 Tipps für mehr Umsatz 1/3 [kleine Shops] 2024, November
Anonim
Track&Trace für kleine Geschäfte
Track&Trace für kleine Geschäfte

Dies ist ein System, das für kleine Geschäfte gedacht ist, die auf E-Bikes oder E-Scooter für Kurzstreckenlieferungen montiert werden sollen, zum Beispiel eine Bäckerei, die Gebäck liefern möchte.

Was bedeutet Track-and-Trace?

Track and Trace ist ein System, das von Spediteuren oder Kurierunternehmen verwendet wird, um die Bewegung von Paketen oder Artikeln während des Transports aufzuzeichnen. An jedem Verarbeitungsstandort wird die Ware identifiziert und an das zentrale Verarbeitungssystem übermittelt. Diese Daten werden dann verwendet, um den Versendern den Status/die Aktualisierung des Warenstandorts mitzuteilen.

Das System, das wir machen werden, zeigt auch die zurückgelegte Route und die Anzahl der erhaltenen Stöße und Unebenheiten an. Diese Anleitung setzt auch voraus, dass Sie über Grundkenntnisse über Himbeer-Pi, Python und MySQL verfügen.

Hinweis: Dies wurde für ein Schulprojekt erstellt, daher gibt es aus Zeitgründen viel Raum für Verbesserungen

Lieferungen

-Raspberry Pi 4 Modell B

-Himbeer PI T-Schuster

-4x 3,7V Li-Ion Akkus

-2x doppelter Batteriehalter

-DC-Abwärtswandler 5 V

-2x große orangefarbene LEDs

-Ein/Aus/Ein-Schalter

-Taste

-adafruit Ultimate GPS v3

-mpu6050

-16x2 LCD-Display

-Servomotor

Schritt 1: Stromversorgung der Schaltung und Pi

Stromversorgung der Schaltung und Pi
Stromversorgung der Schaltung und Pi
Stromversorgung der Schaltung und Pi
Stromversorgung der Schaltung und Pi

Wenn es darum geht, den Circuit Pi mit einer Batterie zu versorgen, haben Sie einige Möglichkeiten, wie dies zu tun ist.

Sie können eine Powerbank verwenden und den Pi über USB mit Strom versorgen, vielleicht montieren Sie das Gerät an einem E-Bike oder E-Scooter mit USB-Anschluss, vielleicht haben Sie einen 5-V-Telefonakku herumliegen, der darauf wartet, verwendet zu werden, oder Sie könnten 2. verwenden Sätze von 3,7V-Batterien parallel mit einem Abwärtswandler wie in den Bildern gezeigt

Alles ist in Ordnung, solange es kontinuierlich 5 V liefern kann und eine Lebensdauer hat, mit der Sie zufrieden sind.

Schritt 2: Die MPU6050

Die MPU6050
Die MPU6050

EinführungDas MPU6050-Sensormodul ist ein integriertes 6-Achsen-Bewegungsverfolgungsgerät.

  • Es verfügt über ein 3-Achsen-Gyroskop, einen 3-Achsen-Beschleunigungsmesser, einen digitalen Bewegungsprozessor und einen Temperatursensor, alles in einem einzigen IC.
  • Verschiedene Parameter können durch Lesen von Werten von Adressen bestimmter Register mit I2C-Kommunikation gefunden werden. Gyroskop- und Beschleunigungsmesserablesungen entlang der X-, Y- und Z-Achsen sind in 2er-Komplement-Form verfügbar.
  • Gyroskop-Messwerte sind in Grad pro Sekunde (dps) Einheit; Beschleunigungsmesser-Messwerte sind in g-Einheiten.

Aktivieren von I2C

Wenn Sie eine MPU6050 mit einem Raspberry Pi verwenden, sollten wir sicherstellen, dass das I2C-Protokoll auf dem Raspberry Pi eingeschaltet ist. Öffnen Sie dazu das Terminal des Pi durch Putty oder eine andere Software und gehen Sie wie folgt vor:

  1. tippe "sudo raspi-config" ein
  2. Wählen Sie Schnittstellenkonfigurationen
  3. Wählen Sie in der Schnittstellenoption "I2C"
  4. I2C-Konfiguration aktivieren
  5. Wählen Sie Ja, wenn Sie zum Neustart aufgefordert werden.

Jetzt können wir nach jedem I2C-Gerät testen/scannen, das an unser Raspberry Pi-Board angeschlossen ist, indem wir i2c-Tools installieren. Wir können i2c-Tools erhalten, indem wir den apt-Paketmanager verwenden. Verwenden Sie den folgenden Befehl im Raspberry Pi-Terminal.

"sudo apt-get install -y i2c-tools"

Verbinden Sie nun ein beliebiges I2C-basiertes Gerät mit dem Benutzermodus-Port und scannen Sie diesen Port mit dem folgenden Befehl:

"sudo i2cdetect -y 1"

Dann antwortet es mit der Geräteadresse.

Wenn keine Adresse zurückgegeben wird, vergewissern Sie sich, dass die MPU6050 richtig angeschlossen ist und versuchen Sie es erneut

Damit es funktioniert

Jetzt, da wir sicher sind, dass i2c aktiviert ist und der pi die MPU6050 erreichen kann, werden wir eine Bibliothek mit dem Befehl "sudo pip3 install adafruit-circuitpython-mpu6050" installieren.

Wenn wir eine Python-Testdatei erstellen und den folgenden Code verwenden, können wir sehen, ob er funktioniert:

Importzeit

Importbrett

Importgeschäft

oimport adafruit_mpu6050

i2c = busio. I2C(board. SCL, board. SDA)

mpu = adafruit_mpu6050. MPU6050(i2c)

während Wahr:

print("Beschleunigung: X:%.2f, Y: %.2f, Z: %.2f m/s^2" % (mpu.beschleunigung))

print("Gyro X:%.2f, Y: %.2f, Z: %.2f Grad/s" % (mpu.gyro))

print("Temperatur: %.2f C" % mpu.temperature)

drucken("")

Zeit. Schlaf(1)

Wenn wir jetzt die Beschleunigung in der X/Y/Z-Achse wollen, können wir Folgendes verwenden:

accelX = mpu.acceleration[0]accelY = mpu.acceleration[1] accelZ = mpu.acceleration[2]

kombiniert mit einer einfachen if-Anweisung in einer konstanten Schleife können wir die Anzahl der Stöße auf einer Fahrt zählen

Schritt 3: Das ultimative Breakout-GPS von Adafruit

Das ultimative Breakout-GPS von Adafruit
Das ultimative Breakout-GPS von Adafruit

Einführung

Der Breakout basiert auf dem MTK3339-Chipsatz, einem geradlinigen, hochwertigen GPS-Modul, das bis zu 22 Satelliten auf 66 Kanälen verfolgen kann, einen hervorragenden hochempfindlichen Empfänger (-165 dB Tracking!) und eine eingebaute Antenne hat. Es kann bis zu 10 Standortaktualisierungen pro Sekunde für schnelle, hochempfindliche Protokollierung oder Verfolgung durchführen. Der Stromverbrauch ist unglaublich niedrig, nur 20 mA während der Navigation.

Die Platine wird geliefert mit: einem 3,3-V-Regler mit extrem niedrigem Dropout, sodass Sie sie mit 3,3-5VDC in sicheren Eingängen mit 5V-Pegel betreiben können gefunden, um Strom zu sparen.

Testen des GPS mit arduino

Wenn Sie Zugang zu einem Arduino haben, ist es eine gute Idee, das Modul damit zu testen.

Verbinden Sie VIN mit +5VConnect GND to GroundConnect GPS RX (Daten in GPS) zu Digital 0Connect GPS TX (Daten aus GPS) zu Digital 1

Führen Sie einfach einen leeren Arduino-Code aus und öffnen Sie den seriellen Monitor auf 9600 Baud. Wenn Sie GPS-Daten erhalten, funktioniert Ihr GPS-Modul. Hinweis: Wenn Ihr Modul nicht repariert wird, versuchen Sie es aus einem Fenster oder draußen auf einer Terrasse

Damit es funktioniert

Beginnen Sie mit der Installation der adafruit gps-Bibliothek mit dem Befehl "sudo pip3 install adafruit-circuitpython-gps".

Jetzt können wir den folgenden Python-Code verwenden, um zu sehen, ob es funktioniert:

import timeimport board import busioimport adafruit_gpsimport serial uart = serial. Serial("/dev/ttyS0", baudrate=9600, timeout=10)

gps = adafruit_gps. GPS(uart, debug=False)gps.send_command(b'PMTK314, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0')gps.send_command(b'PMTK220, 1000')

während Wahr:

gps.update () während nicht gps.has_fix:

print(gps.nmea_sentence)print('Warten auf Fix…')gps.update()time.sleep(1)weiter

print('=' * 40) # Drucke ein Trennzeichen line.print('Latitude: {0:.6f} Degrees'.format(gps.latitude))print('Longitude: {0:.6f} Degrees'.format (gps.longitude))print("Fix-Qualität: {}".format(gps.fix_quality))

# Einige Attribute, die über Breitengrad, Längengrad und Zeitstempel hinausgehen, sind optional# und möglicherweise nicht vorhanden. Überprüfen Sie, ob sie None sind, bevor Sie versuchen, sie zu verwenden! Wenn gps.satellites nicht None ist:

print("# Satelliten: {}".format(gps.satellites))

wenn gps.altitude_m nicht None ist:

print("Höhe: {} Meter".format(gps.altitude_m))

wenn gps.speed_knots nicht None ist:

print("Geschwindigkeit: {} Knoten".format(gps.speed_knots))

wenn gps.track_angle_deg nicht None ist:

print("Spurwinkel: {} Grad".format(gps.track_angle_deg))

wenn gps.horizontal_dilution nicht None ist:

print("Horizontale Verdünnung: {}".format(gps.horizontal_dilution))

wenn gps.height_geoid nicht None ist:

print("Geo-ID der Höhe: {} Meter".format(gps.height_geoid))

Zeit. Schlaf(1)

Schritt 4: Das 16x2 LCD

Das 16x2 LCD
Das 16x2 LCD

Einführung

LCD-Module werden in den meisten Embedded-Projekten sehr häufig verwendet, der Grund dafür ist der günstige Preis, die Verfügbarkeit und die Programmierfreundlichkeit. Die meisten von uns wären in unserem täglichen Leben auf diese Displays gestoßen, entweder bei PCOs oder Taschenrechnern. 16×2 LCD wird so genannt, weil; es hat 16 Spalten und 2 Zeilen. Es gibt viele Kombinationen wie 8×1, 8×2, 10×2, 16×1 usw., aber die am häufigsten verwendete ist das 16×2 LCD. Es hat also insgesamt (16×2=32) 32 Zeichen und jedes Zeichen besteht aus 5×8 Pixel Dots.

smbus installieren

Der System Management Bus (SMBus) ist mehr oder weniger ein Derivat des I2C-Busses. Der Standard wurde von Intel entwickelt und wird jetzt vom SBS Forum gepflegt. Die Hauptanwendung des SMBus ist die Überwachung kritischer Parameter auf PC-Motherboards und in eingebetteten Systemen. Zum Beispiel gibt es viele ICs zur Überwachung der Versorgungsspannung, Temperatur und zur Überwachung/Steuerung von Lüftern mit einer SMBus-Schnittstelle.

Die von uns verwendete Bibliothek erfordert ebenfalls die Installation von smbus. Um smbus auf dem rpi zu installieren, verwenden Sie den Befehl "sudo apt install python3-smbus".

Damit es funktioniert

Installieren Sie zunächst die RPLCD-Bibliothek mit dem Befehl "sudo pip3 install RPLCD".

Jetzt testen wir das LCD, indem wir die IP mit dem folgenden Code anzeigen:

aus RPLCD.i2c import CharLCDimport Socket

def get_ip_address():

ip_address = '' s = socket.socket(socket. AF_INET, socket. SOCK_DGRAM) s.connect(("8.8.8.8", 80)) ip_address = s.getsockname()[0] s.close() return ip_address

lcd = CharLCD('PCF8574', 0x27)

lcd.write_string('IP-Adresse:\r\n'+str(get_ip_address()))

Schritt 5: Servo, LEDs, Taste und Schalter

Servo, LEDs, Taste und Schalter
Servo, LEDs, Taste und Schalter

Einführung

Ein Servomotor ist ein Drehantrieb oder Motor, der eine präzise Steuerung in Bezug auf Winkelposition, Beschleunigung und Geschwindigkeit ermöglicht, Fähigkeiten, die ein normaler Motor nicht hat. Es verwendet einen normalen Motor und kombiniert ihn mit einem Sensor zur Positionsrückmeldung. Der Controller ist der anspruchsvollste Teil des Servomotors, da er speziell für diesen Zweck entwickelt wurde.

LED kurz für Leuchtdiode. Ein elektronisches Halbleiterbauelement, das Licht emittiert, wenn ein elektrischer Strom durch es fließt. Sie sind wesentlich effizienter als Glühbirnen und brennen selten durch. LEDs werden in vielen Anwendungen, wie z. B. Flachbild-Videodisplays, und zunehmend auch als allgemeine Lichtquellen verwendet.

Ein Druckknopf oder einfach ein Knopf ist ein einfacher Schaltmechanismus, um einen bestimmten Aspekt einer Maschine oder eines Prozesses zu steuern. Knöpfe bestehen normalerweise aus hartem Material, normalerweise Kunststoff oder Metall.

Ein Ein/Aus/Ein-Schalter hat 3 Positionen, wobei die mittlere der Aus-Zustand ist. Diese Typen werden hauptsächlich für die einfache Motorsteuerung verwendet, bei der Sie einen Vorwärts-, Aus- und Rückwärtszustand haben.

Damit es funktioniert: das Servo

Das Servo verwendet ein PWM-Signal, um zu bestimmen, in welchem Winkel es zum Glück für uns sein muss GPIO hat diese Funktion eingebaut. Daher können wir einfach den folgenden Code verwenden, um das Servo zu steuern: RPi

servo_pin = 18duty_cycle = 7,5

GPIO.setmode(GPIO. BCM)

GPIO.setup(servo_pin, GPIO. OUT)

pwm_servo = GPIO. PWM(servo_pin, 50) pwm_servo.start(duty_cycle)

während Wahr:

duty_cycle = float(input("Enter Duty Cycle (Left = 5 to Right = 10):"))pwm_servo. ChangeDutyCycle(duty_cycle)

Damit es funktioniert: die LED und der Schalter

Aufgrund der Art und Weise, wie wir die LEDs und den Schalter verdrahtet haben, müssen wir die LEDs nicht steuern oder lesen und selbst schalten. Wir senden einfach Impulse an die Taste, die wiederum das Signal an die gewünschte LED weiterleitet.

Damit es funktioniert: der Button

Für die Schaltfläche werden wir unsere eigene einfache Klasse erstellen, auf die wir leicht sehen können, wann sie gedrückt wird, ohne jedes Mal eine Ereigniserkennung hinzufügen zu müssen, wenn wir sie verwenden. Wir erstellen die Datei classbutton.py mit dem folgenden Code:

aus RPi importieren GPIOclass Button:

def _init_(self, Pin, Bouncetime=200): self.pin = Pin self.bouncetime = Bouncetime GPIO.setmode(GPIO. BCM) GPIO.setup(pin, GPIO. IN, GPIO. PUD_UP)@property def gedrückt(self):

ingedrukt = GPIO.input(self.pin) Rückgabe nicht ingedrukt

def on_press(self, call_method):

GPIO.add_event_detect(self.pin, GPIO. FALLING, call_method, bouncetime=self.bouncetime)

def on_release(self, call_method):

GPIO.add_event_detect(self.pin, GPIO. RISING, call_method, bouncetime=self.bouncetime)

Schritt 6: Der volle Kreislauf

Der komplette Kreislauf
Der komplette Kreislauf
Der komplette Kreislauf
Der komplette Kreislauf

Nachdem wir nun alle Komponenten durchgegangen sind, ist es an der Zeit, sie alle zu kombinieren.

Während die Bilder zeigen, dass die Komponenten alles auf dem Steckbrett selbst zeigen, ist es besser, das LCD, das Adafruit-GPS und die Taste mit weiblichen zu männlichen Drähten verbunden zu haben Verwenden Sie längere Kabel, um sicherzustellen, dass Sie die Blinkerstangen und die Lenkstange erreichen.

Schritt 7: Der Code

Um dieses instructable sauber zu halten, habe ich ein Github-Repository mit den Backend- und Frontend-Dateien bereitgestellt. Legen Sie einfach die Dateien im Frontend-Ordner im Ordner /var/www/html und die Dateien im Backend-Ordner in einen Ordner im /home/ [Benutzername]/[Ordnername] Ordner

Schritt 8: Die Datenbank

Die Datenbank
Die Datenbank

Aufgrund der Art und Weise, wie dieses System eingerichtet ist, gibt es einen einfachen Webshop, der eine Liste von Produkten in einer Datenbank verwendet, außerdem haben wir alle Wegpunkte und Bestellungen hier gespeichert nächster Schritt

Schritt 9: Der Fall

Der Fall
Der Fall

Sobald wir die Elektronik kennen, können wir sie in eine Schachtel stopfen. Sie können sich damit etwas kreativer Freiheit nehmen. Bevor Sie es bauen, nehmen Sie einfach einen Karton, den Sie nicht mehr benötigen, wie zum Beispiel eine leere Müslischachtel, und schneiden Sie ihn zu, kleben Sie ihn ab und falten Sie es, bis Sie etwas haben, das Ihnen gefällt. Messen und zeichnen Sie Ihr Gehäuse auf ein Blatt Papier und machen Sie es aus einem robusteren Material wie Holz, oder wenn das nicht Ihr Ding ist, drucken Sie es in 3D. Stellen Sie einfach sicher, dass die gesamte Elektronik hineinpasst und Sie haben Löcher für den Knopf, das Kabel zum Schalter, die LEDs und das LCD. Sobald Sie Ihren Fall gemacht haben, müssen Sie nur noch eine Möglichkeit finden, ihn an Ihrem Fahrrad oder Roller zu montieren

Empfohlen: