Innholdsfortegnelse:

Spor og spor for små butikker: 9 trinn (med bilder)
Spor og spor for små butikker: 9 trinn (med bilder)

Video: Spor og spor for små butikker: 9 trinn (med bilder)

Video: Spor og spor for små butikker: 9 trinn (med bilder)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Desember
Anonim
Spor for små butikker
Spor for små butikker

Dette er et system som er laget for små butikker som skal monteres på e-sykler eller e-scootere for kortdistanseleveranser, for eksempel et bakeri som ønsker å levere bakverk.

Hva betyr Track and Trace?

Spor og spor er et system som brukes av transportører eller budfirmaer for å registrere flytting av pakker eller varer under transport. På hvert behandlingssted identifiseres varene og dataoverføring til det sentrale behandlingssystemet. Disse dataene brukes deretter til å gi status/oppdatering av vareplasseringen til avsenderne.

Systemet vi vil lage viser også ruten som er tatt og mengden støt og støt som mottas. Denne instruksen forutsetter også at du har grunnleggende kunnskap om bringebær pi, python og mysql.

Merk: dette ble laget for et skoleprosjekt, og på grunn av tidsbegrensningen er det mye rom for forbedringer

Rekvisita

-Raspberry Pi 4 modell B

-Raspberry PI T-skomaker

-4x 3, 7V Li-ion batterier

-2x dobbel batteriholder

-DC Buck Step-down Converter 5v

-2x store oransje LED -er

-bryter på/av/på

-knapp

-adafruit ultimate gps v3

-mpu6050

-16x2 lcd -skjerm

-Servo motor

Trinn 1: Slå på kretsen og Pi

Drar kretsen og Pi
Drar kretsen og Pi
Drar kretsen og Pi
Drar kretsen og Pi

Når det gjelder å drive kretsen pi med et batteri, har du noen alternativer for hvordan du gjør det.

Du kan bruke en powerbank og slå på pi via USB, kanskje du monterer enheten på en e-sykkel eller e-scooter som har en USB-port, kanskje du har et 5V telefonbatteri som ligger og venter på å bli brukt, eller du kan bruke 2 sett med 3,7V batterier parallelt med en nedtrappingskonverter som vist på bildene

Alt er fint så lenge det kan gi en kontinuerlig 5V og har en levetid du er fornøyd med.

Trinn 2: MPU6050

MPU6050
MPU6050

Introduksjon MPU6050 sensormodul er en integrert 6-akset bevegelsessporingsenhet.

  • Den har et 3-akset gyroskop, 3-akset akselerometer, digital bevegelsesprosessor og en temperatursensor, alt i en enkelt IC.
  • Ulike parametere kan bli funnet ved å lese verdier fra adresser til visse registre ved bruk av I2C -kommunikasjon. Gyroskop- og akselerometeravlesning langs X-, Y- og Z -akser er tilgjengelige i 2s komplementform.
  • Gyroskopavlesninger er i grader per sekund (dps) enhet; Akselerometeravlesninger er i g -enhet.

Aktivering av I2C

Når du bruker en MPU6050 med en Raspberry Pi, bør vi sikre at I2C -protokollen på Raspberry Pi er slått på. For å gjøre dette, åpne pi -terminalen gjennom kitt eller annen programvare og gjør følgende:

  1. skriv inn "sudo raspi-config"
  2. Velg Grensesnittkonfigurasjoner
  3. I grensesnittalternativet, velg "I2C"
  4. Aktiver I2C -konfigurasjon
  5. Velg Ja når den ber om å starte på nytt.

Nå kan vi teste/skanne etter hvilken som helst I2C -enhet som er koblet til Raspberry Pi -kortet ved å installere i2c -verktøy. Vi kan få i2c -verktøy ved å bruke apt -pakkebehandling. Bruk følgende kommando i Raspberry Pi -terminalen.

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

Koble nå en hvilken som helst I2C-basert enhet til brukermodusporten og skann den porten med følgende kommando, "sudo i2cdetect -y 1"

Deretter vil den svare med enhetsadressen.

Hvis ingen adresse returneres, må du kontrollere at MPU6050 er riktig tilkoblet og prøve igjen

Få det til å fungere

nå som vi er sikre på at i2c er aktivert og pi kan nå MPU6050, skal vi installere et bibliotek ved hjelp av kommandoen "sudo pip3 install adafruit-circuitpython-mpu6050".

hvis vi lager en python -testfil og bruker følgende kode, kan vi se om den fungerer:

importtid

importbord

importer busi

oimport adafruit_mpu6050

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

mpu = adafruit_mpu6050. MPU6050 (i2c)

mens det er sant:

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

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

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

skrive ut("")

time.sleep (1)

når vi nå ønsker akselerasjonen i X/Y/Z-aksen kan vi bruke følgende:

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

ved å kombinere dette med en enkel if -setning i en konstant sløyfe, kan vi telle mengden sjokk på en tur

Trinn 3: Adafruit Ultimate Breakout GPS

Adafruit Ultimate Breakout GPS
Adafruit Ultimate Breakout GPS

Introduksjon

Utbruddet er bygget rundt MTK3339-brikkesettet, en no-nonsense GPS-modul av høy kvalitet som kan spore opptil 22 satellitter på 66 kanaler, har en utmerket mottaker med høy følsomhet (-165 dB-sporing!) Og en innebygd antenne. Den kan gjøre opptil 10 posisjonsoppdateringer i sekundet for høyhastighet, høy følsomhet logging eller sporing. Strømforbruket er utrolig lavt, bare 20 mA under navigering.

Brettet leveres med: en 3.3V regulator med ekstremt lavt frafall, slik at du kan drive den med 3,3-5VDC inn, 5V trygge innganger, LED-en blinker på omtrent 1Hz mens den søker etter satellitter og blinker hvert 15. sekund når en løsning er funnet å spare strøm.

Tester gps med arduino

Hvis du har tilgang til en arduino, er det en god idé å teste modulen med den.

Koble VIN til +5V Koble GND til GroundConnect GPS RX (data into GPS) to Digital 0Connect GPS TX (data out from GPS) to Digital 1

Bare kjør en tom arduino -kode og åpne den serielle skjermen på 9600 baud. Hvis du får GPS -data, fungerer GPS -modulen din. Merk: Hvis modulen din ikke får en løsning, kan du prøve å sette den ut av et vindu eller ute på en terrasse

Få det til å fungere

Start med å installere adafruit gps-biblioteket ved å bruke kommandoen "sudo pip3 install adafruit-circuitpython-gps".

Nå kan vi bruke følgende pythonkode for å se om vi kan få den til å fungere:

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

mens det er sant:

gps.update () mens ikke gps.has_fix:

print (gps.nmea_sentence) print ('Waiting for fix …') gps.update () time.sleep (1) fortsett

print ('=' * 40) # Skriv ut en separator line.print ('Latitude: {0:.6f} degrees'.format (gps.latitude)) print (' Longitude: {0:.6f} degrees'.format (gps.longitude)) print ("Fix quality: {}". format (gps.fix_quality))

# Noen attributter utover breddegrad, lengdegrad og tidsstempel er valgfrie# og er kanskje ikke tilstede. Sjekk om de er Ingen før du prøver å bruke! Hvis gps.satellites ikke er Ingen:

print ("# satellitter: {}". format (gps.satellitter))

hvis gps.altitude_m ikke er Ingen:

print ("Høyde: {} meter".format (gps.altitude_m))

hvis gps.speed_knots ikke er Ingen:

print ("Hastighet: {} knop".format (gps.speed_knots))

hvis gps.track_angle_deg ikke er Ingen:

print ("Sporvinkel: {} grader".format (gps.track_angle_deg))

hvis gps.horizontal_dilution ikke er Ingen:

print ("Horisontal fortynning: {}". format (gps.horizontal_dilution))

hvis gps.height_geoid ikke er Ingen:

print ("Geo ID for høyde: {} meter".format (gps.height_geoid))

time.sleep (1)

Trinn 4: 16x2 LCD -skjermen

16x2 LCD
16x2 LCD

Introduksjon

LCD -moduler er veldig ofte brukt i de fleste innebygde prosjekter, grunnen er den billige prisen, tilgjengeligheten og programmeringsvennlige. De fleste av oss ville ha støtt på disse skjermene i vårt daglige liv, enten på PCO eller kalkulatorer. 16 × 2 LCD heter det fordi; den har 16 kolonner og 2 rader. Det er mange tilgjengelige kombinasjoner som, 8 × 1, 8 × 2, 10 × 2, 16 × 1, etc., men den mest brukte er 16 × 2 LCD -skjermen. Så det vil ha (16 × 2 = 32) totalt 32 tegn, og hvert tegn vil være laget av 5 × 8 Pixel Dots.

Installerer smbus

System Management Bus (SMBus) er mer eller mindre et derivat av I2C -bussen. Standarden er utviklet av Intel og opprettholdes nå av SBS Forum. Hovedapplikasjonen til SMBus er å overvåke kritiske parametere på PC -hovedkort og i innebygde systemer. For eksempel er det mye forsyningsspenningsmonitor, temperaturmonitor og vifteovervåking/kontroll -ICer med et SMBus -grensesnitt tilgjengelig.

Biblioteket vi vil bruke krever også at smbus installeres. For å installere smbus på rpi bruker du kommandoen "sudo apt install python3-smbus".

Få det til å fungere

installer først RPLCD -biblioteket med kommandoen "sudo pip3 install RPLCD".

nå tester vi lcd ved å vise ip ved hjelp av følgende kode:

fra RPLCD.i2c import CharLCDimport -kontakt

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 () returner ip_address

lcd = CharLCD ('PCF8574', 0x27)

lcd.write_string ('IP -adresse: / r / n'+str (get_ip_address ()))

Trinn 5: Servo, lysdioder, knapp og bryter

Servo, lysdioder, knapp og bryter
Servo, lysdioder, knapp og bryter

Introduksjon

En servomotor er en roterende aktuator eller motor som gir mulighet for presis kontroll når det gjelder vinkelposisjon, akselerasjon og hastighet, evner som en vanlig motor ikke har. Den bruker en vanlig motor og kobler den med en sensor for tilbakemelding om posisjon. Kontrolleren er den mest sofistikerte delen av servomotoren, siden den er spesielt designet for formålet.

LED kort for lysdioder. En elektronisk halvleder som avgir lys når en elektrisk strøm passerer gjennom den. De er betydelig mer effektive enn glødepærer, og brenner sjelden ut. Lysdioder brukes i mange applikasjoner, for eksempel flatskjermvideoer, og i økende grad som generelle lyskilder.

En trykknapp eller bare en knapp er en enkel brytermekanisme for å kontrollere et aspekt av en maskin eller en prosess. Knapper er vanligvis laget av hardt materiale, vanligvis plast eller metall.

En av/på/på -bryter har 3 posisjoner der den midterste er av -tilstanden. Disse typene brukes mest til enkel motorstyring der du har en forover-, av- og bakover -tilstand.

Få det til å fungere: servoen

Servoen bruker et PWM -signal for å bestemme hvilken vinkel den må ha for oss heldigvis GPIO har denne funksjonen innebygd. Derfor kan vi ganske enkelt bruke følgende kode for å kontrollere servoen: importer RPi. GPIO som GPIOimporttid

servo_pin = 18 duty_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)

mens det er sant:

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

Få det til å fungere: LED og bryter

På grunn av måten vi koblet leddene og bryteren på, trenger vi ikke å kontrollere eller lese lysdiodene og bytte seg selv. Vi sender ganske enkelt pulser til knappheksen, som igjen vil sende signalet til ledningen vi ønsker.

Få det til å fungere: knappen

For knappen skal vi lage vår egen enkle klasse på denne måten kan vi lett se når den trykkes uten å måtte legge til en hendelsesdeteksjon til den hver gang vi bruker den. Vi lager filen classbutton.py ved å bruke følgende kode:

fra RPi import GPIOklasse -knapp:

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

ingedrukt = GPIO.input (self.pin) return ikke 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)

Trinn 6: Full Circuit

Hele kretsen
Hele kretsen
Hele kretsen
Hele kretsen

Nå som vi har gått over alle komponentene, er det på tide å kombinere dem alle.

Mens bildene viser at komponentene viser alt på selve brødbrettet, er det bedre å ha lcd, adafruit GPS og knapp tilkoblet ved bruk av hunn til mannlige ledninger Bare ha t-skomakeren og mpu6050 på et brødbrett. Når det kommer til LED-en og bryteren bruk lengre ledninger for å sikre at du kan nå blinklysene og rattet.

Trinn 7: Koden

For å holde denne instruerbare rene, har jeg gitt et github -arkiv med både backend- og frontend -filer. Bare legg filene i frontend -mappen i/var/www/html -mappen og filene i backend -mappen i en mappe i/home/ [brukernavn]/[mappenavn] mappe

Trinn 8: Databasen

Databasen
Databasen

På grunn av måten dette systemet er satt opp på, er det en enkel nettbutikk som er satt opp ved hjelp av en liste over produkter i en database, og vi har også lagret alle punkter og bestillinger her. neste steg

Trinn 9: Saken

Saken
Saken

Når vi kjenner elektronikkarbeidet, kan vi stappe dem i en eske. Du kan ta litt kreativ frihet med dette. Før du bygger det, ta bare en pappeske du ikke trenger lenger, for eksempel en tom korneske, og klipp den, tape den og brett den til du har noe du liker. Mål og tegn saken på et stykke papir og lag den av et mer solid materiale som tre, eller hvis det ikke er din ting 3d -utskrift. Bare sørg for at all elektronikken passer inn og du har hull for knappen, ledningen til bryteren, lysdioden og lcd. Når du har gjort saken din, er det bare å finne en måte å montere den på sykkelen eller scooteren din

Anbefalt: