Inhoudsopgave:

Track&trace voor kleine winkels: 9 stappen (met afbeeldingen)
Track&trace voor kleine winkels: 9 stappen (met afbeeldingen)

Video: Track&trace voor kleine winkels: 9 stappen (met afbeeldingen)

Video: Track&trace voor kleine winkels: 9 stappen (met afbeeldingen)
Video: Hoe ziet jouw poep eruit? 🚽💦 2024, November
Anonim
Track&trace voor kleine winkels
Track&trace voor kleine winkels

Dit is een systeem dat is gemaakt voor kleine winkels en dat op e-bikes of e-scooters moet worden gemonteerd voor leveringen op korte afstand, bijvoorbeeld een bakkerij die gebak wil bezorgen.

Wat betekent Track en Trace?

Track and trace is een systeem dat door vervoerders of koeriersbedrijven wordt gebruikt om de verplaatsing van pakketten of artikelen tijdens het transport te registreren. Op elke verwerkingslocatie worden de goederen geïdentificeerd en doorgegeven aan het centrale verwerkingssysteem. Deze gegevens worden vervolgens gebruikt om status/update van de goederenlocatie door te geven aan de verladers.

Het systeem dat we zullen maken, zal ook de afgelegde route en het aantal ontvangen schokken en stoten laten zien. Deze instructables gaan er ook van uit dat je een basiskennis hebt van een Raspberry Pi, Python en Mysql.

opmerking: dit is gemaakt voor een schoolproject, dus vanwege de tijdsdruk is er veel ruimte voor verbetering

Benodigdheden

-Raspberry Pi 4 model B

-Raspberry PI T-schoenmaker

-4x 3, 7V Li-ion batterijen

-2x dubbele batterijhouder

-DC Buck Step-down Converter 5v

-2x grote oranje led's

-aan/uit/aan schakelaar

-knop

-adafruit ultieme gps v3

-mpu6050

-16x2 lcd-scherm

-servomotor

Stap 1: Het circuit en Pi. van stroom voorzien

Het circuit en Pi. van stroom voorzien
Het circuit en Pi. van stroom voorzien
Het circuit en Pi. van stroom voorzien
Het circuit en Pi. van stroom voorzien

Als het gaat om het voeden van het circuit pi met een batterij, heb je een paar opties om dit te doen.

Je zou een powerbank kunnen gebruiken en de pi via USB van stroom kunnen voorzien, misschien monteer je het apparaat op een e-bike of e-scooter met een USB-poort, misschien heb je een 5V-telefoonbatterij rondslingeren die wacht om te worden gebruikt of je zou er 2 kunnen gebruiken sets van 3.7V-batterijen parallel met een step-down-converter zoals op de foto's:

Alles is in orde zolang het een continue 5V kan leveren en een levensduur heeft waar je blij mee bent.

Stap 2: De MPU6050

De MPU6050
De MPU6050

Inleiding MPU6050-sensormodule is een geïntegreerd 6-assig bewegingsvolgapparaat.

  • Het heeft een 3-assige gyroscoop, 3-assige versnellingsmeter, digitale bewegingsprocessor en een temperatuursensor, allemaal in één IC.
  • Verschillende parameters kunnen worden gevonden door waarden te lezen van adressen van bepaalde registers met behulp van I2C-communicatie. Gyroscoop- en versnellingsmeteraflezing langs de X-, Y- en Z-assen zijn beschikbaar in 2-complementvorm.
  • Gyroscoopmetingen zijn in graden per seconde (dps); De aflezingen van de versnellingsmeter zijn in g-eenheid.

I2C. inschakelen

Als we een MPU6050 met een Raspberry Pi gebruiken, moeten we ervoor zorgen dat het I2C-protocol op de Raspberry Pi is ingeschakeld. Open hiervoor de terminal van de pi via stopverf of andere software en doe het volgende:

  1. typ "sudo raspi-config" in
  2. Selecteer interfaceconfiguraties
  3. Selecteer in de interface-optie "I2C"
  4. I2C-configuratie inschakelen
  5. Selecteer Ja wanneer wordt gevraagd om opnieuw op te starten.

Nu kunnen we testen/scannen voor elk I2C-apparaat dat is aangesloten op ons Raspberry Pi-bord door i2c-tools te installeren. We kunnen i2c-tools krijgen door apt-pakketbeheerder te gebruiken. Gebruik de volgende opdracht in de Raspberry Pi-terminal.

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

Sluit nu elk op I2C gebaseerd apparaat aan op de gebruikersmoduspoort en scan die poort met de volgende opdracht, "sudo i2cdetect -y 1"

Dan zal het reageren met het apparaatadres.

Als er geen adres wordt geretourneerd, controleer dan of de MPU6050 correct is aangesloten en probeer het opnieuw

Het laten werken

nu we zeker weten dat i2c is ingeschakeld en de pi de MPU6050 kan bereiken, gaan we een bibliotheek installeren met de opdracht "sudo pip3 install adafruit-circuitpython-mpu6050".

als we een python-testbestand maken en de volgende code gebruiken, kunnen we zien of het werkt:

import tijd

bord importeren

import zaken

oimport adafruit_mpu6050

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

mpu = adafruit_mpu6050. MPU6050(i2c)

terwijl waar:

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

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

print("Temperatuur: %.2f C" % mpu.temperatuur)

afdrukken("")

tijd.slaap(1)

als we nu de versnelling in de X/Y/Z-as willen, kunnen we het volgende gebruiken:

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

door dit te combineren met een eenvoudige if-instructie in een constante lus, kunnen we het aantal schokken tijdens een reis tellen

Stap 3: De Adafruit Ultimate Breakout GPS

De Adafruit Ultimate Breakout-gps
De Adafruit Ultimate Breakout-gps

Invoering

De breakout is opgebouwd rond de MTK3339-chipset, een no-nonsense, hoogwaardige GPS-module die tot 22 satellieten op 66 kanalen kan volgen, een uitstekende hooggevoelige ontvanger heeft (-165 dB tracking!), en een ingebouwde antenne. Het kan tot 10 locatie-updates per seconde uitvoeren voor logging of tracking met hoge snelheid en hoge gevoeligheid. Het stroomverbruik is ongelooflijk laag, slechts 20 mA tijdens navigatie.

Het bord wordt geleverd met: een ultra-low drop-out 3.3V-regelaar, zodat je het kunt voeden met 3.3-5VDC in, 5V-niveau veilige ingangen. gevonden om stroom te besparen.

De gps testen met arduino

Als je toegang hebt tot een arduino, is het een goed idee om de module ermee te testen.

Sluit VIN aan op +5VVerbind GND met GroundVerbind GPS RX (gegevens naar GPS) naar Digital 0Verbind GPS TX (gegevens uit van GPS) naar Digitaal 1

Voer gewoon een lege arduino-code uit en open de seriële monitor op 9600 baud. Als je gps-gegevens krijgt, werkt je gps-module. Opmerking: als je module geen oplossing krijgt, probeer hem dan uit een raam of buiten op een terras te plaatsen

Het laten werken

Begin met het installeren van de adafruit gps-bibliotheek met behulp van de opdracht "sudo pip3 install adafruit-circuitpython-gps".

Nu kunnen we de volgende python-code gebruiken om te zien of we het kunnen laten werken:

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')

terwijl waar:

gps.update() terwijl niet gps.has_fix:

print(gps.nmea_sentence)print('Wachten op oplossing…')gps.update()time.sleep(1)vervolg

print('=' * 40) # Print een scheidingslijn.print('Breedtegraad: {0:.6f} graden'.format(gps.latitude))print('Longitude: {0:.6f} graden'.format (gps.lengtegraad))print("Kwaliteit repareren: {}".format(gps.fix_kwaliteit))

# Sommige attributen buiten de breedtegraad, lengtegraad en tijdstempel zijn optioneel# en zijn mogelijk niet aanwezig. Controleer of ze Geen zijn voordat u ze probeert te gebruiken!Als gps.satellites niet Geen is:

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

als gps.altitude_m niet Geen is:

print("Hoogte: {} meter".format(gps.altitude_m))

als gps.speed_knots niet Geen is:

print("Snelheid: {} knopen".format(gps.speed_knots))

als gps.track_angle_deg niet Geen is:

print("Track hoek: {} graden".format(gps.track_angle_deg))

als gps.horizontal_dilution niet Geen is:

print("Horizontale verdunning: {}".format(gps.horizontal_dilution))

als gps.height_geoid niet Geen is:

print("Geo-ID hoogte: {} meter".format(gps.height_geoid))

tijd.slaap(1)

Stap 4: Het 16x2 LCD-scherm

Het 16x2 LCD-scherm
Het 16x2 LCD-scherm

Invoering

LCD-modules worden zeer vaak gebruikt in de meeste embedded projecten, vanwege de lage prijs, beschikbaarheid en programmeervriendelijk. De meesten van ons zouden deze schermen in ons dagelijks leven zijn tegengekomen, hetzij bij PCO's of rekenmachines. 16 × 2 LCD-scherm wordt zo genoemd omdat; het heeft 16 kolommen en 2 rijen. Er zijn veel combinaties beschikbaar zoals 8×1, 8×2, 10×2, 16×1, etc. maar de meest gebruikte is de 16×2 LCD. Het zal dus in totaal (16×2=32) 32 karakters hebben en elk karakter zal bestaan uit 5×8 Pixel Dots.

Smbus installeren

De System Management Bus (SMBus) is min of meer een afgeleide van de I2C-bus. De standaard is ontwikkeld door Intel en wordt nu onderhouden door het SBS Forum. De belangrijkste toepassing van de SMBus is het bewaken van kritische parameters op pc-moederborden en in embedded systemen. Zo zijn er veel voedingsspanning monitor, temperatuur monitor en fan monitor/control IC's met een SMBus interface beschikbaar.

Voor de bibliotheek die we zullen gebruiken, moet ook smbus worden geïnstalleerd. Om smbus op de rpi te installeren, gebruikt u de opdracht "sudo apt install python3-smbus".

Het laten werken

installeer eerst de RPLCD-bibliotheek met behulp van de opdracht "sudo pip3 install RPLCD".

nu testen we het lcd-scherm door het ip weer te geven met behulp van de volgende code:

van 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-adres:\r\n'+str(get_ip_address()))

Stap 5: Servo, leds, knop en schakelaar

Servo, leds, knop en schakelaar
Servo, leds, knop en schakelaar

Invoering

Een servomotor is een roterende actuator of motor die een nauwkeurige regeling mogelijk maakt in termen van hoekpositie, versnelling en snelheid, mogelijkheden die een gewone motor niet heeft. Het maakt gebruik van een gewone motor en koppelt het aan een sensor voor positiefeedback. De controller is het meest geavanceerde onderdeel van de servomotor, omdat deze speciaal voor dit doel is ontworpen.

LED afkorting voor light-emitting diode. Een elektronisch halfgeleiderapparaat dat licht uitstraalt wanneer er een elektrische stroom doorheen gaat. Ze zijn aanzienlijk efficiënter dan gloeilampen en branden zelden door. LED's worden in veel toepassingen gebruikt, zoals flatscreen-videodisplays, en in toenemende mate als algemene lichtbronnen.

Een drukknop of gewoon een knop is een eenvoudig schakelmechanisme om een bepaald aspect van een machine of een proces te besturen. Knoppen zijn meestal gemaakt van hard materiaal, meestal plastic of metaal.

Een aan/uit/aan-schakelaar heeft 3 standen waarbij de middelste de uit-stand is. Deze typen worden meestal gebruikt voor eenvoudige motorbesturing waarbij u een vooruit-, uit- en achteruitstand heeft.

Het laten werken: de servo

De servo gebruikt een PWM-signaal om te bepalen in welke hoek hij moet staan, gelukkig voor ons GPIO heeft deze functie ingebouwd. Daarom kunnen we eenvoudig de volgende code gebruiken om de servo te besturen: import RPi. GPIO als GPIO importeer tijd

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)

terwijl waar:

duty_cycle = float(input("Enter Duty Cycle (Links = 5 naar Rechts = 10):"))pwm_servo. ChangeDutyCycle(duty_cycle)

Waardoor het werkt: de led en schakelaar

Door de manier waarop we de led's en de schakelaar hebben aangesloten, hoeven we de leds niet te bedienen of te lezen en zelf te schakelen. We sturen eenvoudig pulsen naar de knop die op zijn beurt het signaal naar de gewenste led stuurt.

Het laten werken: de knop

Voor de knop zullen we onze eigen eenvoudige klasse maken, zodat we gemakkelijk kunnen zien wanneer deze wordt ingedrukt zonder dat we er elke keer dat we hem gebruiken een gebeurtenisdetectie aan hoeven toe te voegen. We zullen het bestand classbutton.py maken met behulp van de volgende code:

van RPi import GPIOclass-knop:

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 ingedrukt(self):

verbruik = GPIO.input(self.pin) return not input

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)

Stap 6: Het volledige circuit

Het volledige circuit
Het volledige circuit
Het volledige circuit
Het volledige circuit

Nu we alle componenten hebben doorgenomen, is het tijd om ze allemaal te combineren.

Terwijl de foto's laten zien dat de componenten alles op het breadboard zelf laten zien, is het beter om het lcd, adafruit GPS en de knop aangesloten te hebben met behulp van vrouwelijke naar mannelijke draden. Gebruik alleen de t-cobbler en de mpu6050 op een breadboard. gebruik langere draden om ervoor te zorgen dat u de knipperlichten en het stuur kunt bereiken.

Stap 7: De code

Om deze instructable schoon te houden, heb ik een github-repository voorzien met zowel de backend- als de frontend-bestanden. Plaats de bestanden eenvoudig in de frontend-map in de map /var/www/html en de bestanden in de backend-map in een map in de /home/ [gebruikersnaam]/[mapnaam] map

Stap 8: De database

De databank
De databank

Vanwege de manier waarop dit systeem is opgezet, is er een eenvoudige webshop opgezet met behulp van een lijst met producten in een database, bovendien hebben we alle routepunten en bestellingen hier opgeslagen. Een maakscript is te vinden op de github-repository die is gekoppeld in de volgende stap

Stap 9: De zaak

De zaak
De zaak

Als we eenmaal weten hoe de elektronica werkt, kunnen we ze in een doos stoppen. Je kunt hiermee wat creatieve vrijheid nemen. Voordat je het gaat bouwen, pak je gewoon een kartonnen doos die je niet meer nodig hebt, zoals een lege ontbijtgranendoos bijvoorbeeld en knip het, plak het vast en vouw het totdat je iets hebt dat je leuk vindt. Meet en teken je koffer op een stuk papier en maak het van een steviger materiaal zoals hout, of als dat niet jouw ding is, 3D print het. Zorg ervoor dat alle elektronica erin past en je hebt gaten voor de knop, de draad die naar de schakelaar gaat, de led's en het lcd. Als je je koffer eenmaal hebt gemaakt, is het gewoon een kwestie van een manier vinden om hem op je fiets of scooter te monteren

Aanbevolen: