INHOUDSOPGAWE:

Track & trace vir klein winkels: 9 stappe (met foto's)
Track & trace vir klein winkels: 9 stappe (met foto's)

Video: Track & trace vir klein winkels: 9 stappe (met foto's)

Video: Track & trace vir klein winkels: 9 stappe (met foto's)
Video: ЯРКИЕ ТАПОЧКИ-СЛЕДКИ СПИЦАМИ. Без швов на подошве. МК для начинающих. 2024, November
Anonim
Track & trace vir klein winkels
Track & trace vir klein winkels

Dit is 'n stelsel wat ontwerp is vir klein winkels wat veronderstel is om op e-bikes of e-bromponies te ry vir aflewerings op kort afstand, byvoorbeeld 'n bakkery wat gebak wil aflewer.

Wat beteken Track and Trace?

Track and trace is 'n stelsel wat deur draers of koerierondernemings gebruik word om die vervoer van pakkies of items tydens vervoer op te teken. Op elke verwerkingsplek word die goedere geïdentifiseer en data na die sentrale verwerkingstelsel oorgedra. Hierdie data word dan gebruik om die versenders die status/opdatering van die goedere se ligging te gee.

Die stelsel wat ons maak, sal ook die roete en die hoeveelheid skokke en stote wat ontvang word, toon. Hierdie instruksies veronderstel ook dat u basiese kennis het van 'n framboos -pi, luislang en mysql.

let wel: dit is gemaak vir 'n skoolprojek, en as gevolg van die tydsbeperking is daar baie ruimte vir verbetering

Voorrade

-Raspberry Pi 4 model B

-Raspberry PI T-skoenmaker

-4x3, 7V Li-ion batterye

-2x dubbele batteryhouer

-DC Buck Step-down Converter 5v

-2x groot oranje LED's

-aan/af/aan skakelaar

-knoppie

-adafruit ultimate gps v3

-mpu6050

-16x2 lcd -skerm

-servomotor

Stap 1: Skakel die kring en Pi aan

Skakel die stroombaan en Pi aan
Skakel die stroombaan en Pi aan
Skakel die stroombaan en Pi aan
Skakel die stroombaan en Pi aan

As u die kring -pi met 'n battery wil aandryf, het u 'n paar opsies om dit te doen.

U kan 'n powerbank gebruik en die pi via USB aanskakel, miskien monteer u die toestel op 'n e-fiets of 'n scooter met 'n USB-poort, miskien het u 'n 5V-telefoonbattery wat wag om gebruik te word, of u kan 2 gebruik stelle 3,7V batterye parallel met 'n afwaartse omskakelaar, soos op die foto's getoon

Alles is goed, solank dit 'n deurlopende 5V kan lewer en 'n leeftyd het waarmee u tevrede is.

Stap 2: Die MPU6050

Die MPU6050
Die MPU6050

InleidingMPU6050 sensormodule is 'n geïntegreerde 6-as bewegingsopsporingstoestel.

  • Dit het 'n 3-as-gyroscoop, 'n 3-as-versnellingsmeter, digitale bewegingsverwerker en 'n temperatuursensor, alles in 'n enkele IC.
  • Verskeie parameters kan gevind word deur waardes van adresse van sekere registers met behulp van I2C -kommunikasie te lees. Gyroscoop- en versnellingsmeterlesing langs X-, Y- en Z -as is beskikbaar in 2 se komplementvorm.
  • Gyroscooplesings is in grade per sekonde (dps) eenheid; Versnellingsmeterlesings is in g -eenheid.

I2C aktiveer

As u 'n MPU6050 met 'n Raspberry Pi gebruik, moet ons verseker dat die I2C -protokol op die Raspberry Pi aangeskakel is. Om dit te doen, maak die pi se terminaal deur stopverf of ander sagteware oop en doen die volgende:

  1. tik "sudo raspi-config" in
  2. Kies Interfacing Configurations
  3. In die koppelvlak -opsie, kies "I2C"
  4. Aktiveer I2C -opset
  5. Kies Ja as dit gevra word om te herlaai.

Nou kan ons toets/skandeer vir enige I2C -toestel wat aan ons Raspberry Pi -bord gekoppel is deur i2c -instrumente te installeer. Ons kan i2c -instrumente kry deur die geskikte pakketbestuurder te gebruik. Gebruik die volgende opdrag in die Raspberry Pi -terminale.

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

Koppel nou enige I2C-gebaseerde toestel aan die gebruikersmoduspoort en skandeer die poort met die volgende opdrag, "sudo i2cdetect -y 1"

Dan reageer dit met die adres van die toestel.

As geen adres teruggestuur word nie, maak seker dat die MPU6050 behoorlik gekoppel is en probeer weer

Dit laat werk

noudat ons seker is dat i2c aangeskakel is en die pi die MPU6050 kan bereik, gaan ons 'n biblioteek installeer met die opdrag "sudo pip3 install adafruit-circuitpython-mpu6050".

As ons 'n python -toetslêer maak en die volgende kode gebruik, kan ons sien of dit werk:

invoer tyd

invoerbord

bus invoer

oimport adafruit_mpu6050

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

mpu = adafruit_mpu6050. MPU6050 (i2c)

terwyl dit waar is:

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

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

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

druk ("")

tyd. slaap (1)

As ons nou die versnelling in die X/Y/Z-as wil hê, kan ons die volgende gebruik:

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

As ons dit kombineer met 'n eenvoudige as -verklaring in 'n konstante lus, kan ons die hoeveelheid skokke op 'n rit tel

Stap 3: Die Adafruit Ultimate Breakout GPS

Die Adafruit Ultimate Breakout GPS
Die Adafruit Ultimate Breakout GPS

Inleiding

Die uitbreek is gebou rondom die MTK3339-skyfiestel, 'n no-nonsense GPS-module van hoë gehalte wat tot 22 satelliete op 66 kanale kan opspoor, 'n uitstekende ontvanger met 'n hoë sensitiwiteit (-165 dB-dop!) En 'n ingeboude antenna. Dit kan tot 10 plek -opdaterings per sekonde doen vir hoë spoed, hoë sensitiwiteit aanmelding of opsporing. Die kragverbruik is ongelooflik laag, slegs 20 mA tydens navigasie.

Die bord bevat: 'n ultra-lae uitval 3.3V-reguleerder, sodat u dit kan aanvoer met 3.3-5VDC in, 5V-vlak veilige insette. gevind dat dit krag bespaar.

Toets die gps met arduino

As u toegang tot 'n arduino het, is dit 'n goeie idee om die module daarmee te toets.

Koppel VIN aan +5V Koppel GND aan Ground Connect GPS RX (data into GPS) to Digital 0 Connect GPS TX (data out of GPS) to Digital 1

Voer 'n leë arduino -kode uit en maak die seriële monitor op 9600 baud oop. As u GPS -data kry, werk u GPS -module.

Dit laat werk

Begin met die installering van die adafruit gps-biblioteek met die opdrag "sudo pip3 install adafruit-circuitpython-gps".

Nou kan ons die volgende python -kode gebruik om te sien of ons dit kan laat werk:

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

terwyl dit waar is:

gps.update () terwyl dit nie gps.has_fix is nie:

print (gps.nmea_sentence) print ('Wag vir oplossing …') gps.update () time.sleep (1) gaan voort

print ('=' * 40) # Druk 'n skeiding line.print ('Latitude: {0:.6f} degrees'.format (gps.latitude)) print (' Longitude: {0:.6f} degrees'.format (gps.longitude)) druk ("Fix quality: {}". format (gps.fix_quality))

# Sommige eienskappe buite breedtegraad, lengte- en tydstempel is opsioneel# en is moontlik nie teenwoordig nie. Kontroleer of dit geen is voordat u dit probeer gebruik nie! As gps.satellites nie Geen is nie:

druk ("# satelliete: {}". formaat (gps.satelliete))

as gps.altitude_m nie Geen is nie:

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

as gps.speed_knots nie Geen is nie:

print ("Spoed: {} knope".formaat (gps.speed_knots))

as gps.track_angle_deg nie Geen is nie:

print ("Spoorhoek: {} grade".formaat (gps.track_angle_deg))

as gps.horizontaal_verdunning nie Geen is nie:

print ("Horisontale verdunning: {}". formaat (gps.horizontaal_verdunning))

as gps.height_geoid nie Geen is nie:

print ("Hoogte geografiese ID: {} meter".formaat (gps.height_geoid))

tyd. slaap (1)

Stap 4: Die 16x2 LCD

Die 16x2 LCD
Die 16x2 LCD

Inleiding

LCD -modules word baie algemeen gebruik in die meeste ingebedde projekte, die rede hiervoor is die goedkoop prys, beskikbaarheid en programmeerdervriendelik. Die meeste van ons sou hierdie skerms in ons daaglikse lewe teëgekom het, hetsy by PCO's of sakrekenaars. 16 × 2 LCD word so genoem; dit het 16 kolomme en 2 rye. Daar is baie kombinasies beskikbaar, soos 8 × 1, 8 × 2, 10 × 2, 16 × 1, ens. Maar die 16 x 2 LCD -skerm wat die meeste gebruik word. Dit bevat dus (16 × 2 = 32) altesaam 32 karakters en elke karakter bestaan uit 5 × 8 pixelpunte.

Installeer smbus

Die System Management Bus (SMBus) is min of meer 'n afgeleide van die I2C -bus. Die standaard is ontwikkel deur Intel en word nou gehandhaaf deur die SBS Forum. Die hooftoepassing van die SMBus is om kritieke parameters op PC -moederborde en in ingebedde stelsels te monitor. Daar is byvoorbeeld baie voedingsspanningsmonitors, temperatuurmonitors en waaiermonitors/-beheer -IC's met 'n SMBus -koppelvlak beskikbaar.

Die biblioteek wat ons sal gebruik, vereis dat smbus ook geïnstalleer word. Om smbus op die rpi te installeer, gebruik die opdrag "sudo apt install python3-smbus".

Dit laat werk

Installeer eers die RPLCD -biblioteek met die opdrag "sudo pip3 install RPLCD".

nou toets ons die lcd deur die ip te vertoon met die volgende kode:

vanaf RPLCD.i2c voer CharLCDimport -aansluiting in

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 skakelaar

Servo, LED's, knoppie en skakelaar
Servo, LED's, knoppie en skakelaar

Inleiding

'N Servomotor is 'n roterende aandrywer of motor wat presiese beheer moontlik maak ten opsigte van hoekposisie, versnelling en snelheid, die vermoëns wat 'n gewone motor nie het nie. Dit maak gebruik van 'n gewone motor en koppel dit met 'n sensor vir terugvoer oor posisies. Die kontroleerder is die mees gesofistikeerde deel van die servomotor, aangesien dit spesifiek vir die doel ontwerp is.

LED kort vir liguitstralende diode. 'N Elektroniese halfgeleierapparaat wat lig uitstraal wanneer 'n elektriese stroom daardeur beweeg. Hulle is aansienlik meer doeltreffend as gloeilampe, en brand selde uit. LED's word in baie toepassings gebruik, soos platskermvideo-uitstallings, en toenemend as algemene ligbronne.

'N Drukknop of 'n eenvoudige knoppie is 'n eenvoudige skakelmeganisme om 'n aspek van 'n masjien of 'n proses te beheer. Knoppies is gewoonlik gemaak van harde materiaal, gewoonlik plastiek of metaal.

'N Aan/uit/aan -skakelaar het 3 posisies waar die middelste een af is, hierdie tipes word meestal gebruik vir 'n eenvoudige motorbeheer waar u 'n voor-, af- en agteruit -toestand het.

Dit laat werk: die servo

Die servo gebruik 'n PWM -sein om te bepaal in watter hoek dit moet wees, maar vir ons het GPIO hierdie funksie ingebou. Daarom kan ons eenvoudig die volgende kode gebruik om die servo te beheer: voer RPi. GPIO in as GPIO

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)

terwyl dit waar is:

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

Dit laat werk: die LED en skakelaar

As gevolg van die manier waarop ons die LED's en die skakelaar bedraad het, hoef ons nie die LED's te beheer of te lees en self te skakel nie. Ons stuur eenvoudig pulse na die knoppieheks, wat op sy beurt die sein na die LED sal stuur wat ons wil hê.

Dit laat werk: die knoppie

Vir die knoppie maak ons ons eie eenvoudige klas op hierdie manier wat ons maklik kan sien wanneer dit ingedruk word, sonder om 'n gebeurtenisopsporing daarby te hoef te voeg elke keer as ons dit gebruik. Ons maak die lêer classbutton.py met behulp van die volgende kode:

vanaf RPi -invoer GPIOklas -knoppie:

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

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

Stap 6: Die volledige kring

Die volledige kring
Die volledige kring
Die volledige kring
Die volledige kring

Noudat ons al die komponente nagegaan het, is dit tyd om hulle almal te kombineer.

Terwyl die foto's toon, toon die komponente alles op die broodbord, maar dit is beter om die lcd, adafruit GPS en die knoppie aan te sluit met behulp van wyfie- en manlike drade. Slegs die t-skoenmaker en die mpu6050 op 'n broodbord. As dit by die LED's en die skakelaar kom Gebruik langer drade om seker te maak dat u die blinkerstawe en stuurstang kan bereik.

Stap 7: Die kode

Om hierdie instruksies skoon te hou, het ek 'n github -bewaarplek met die backend- en frontend -lêers voorsien. Plaas die lêers eenvoudig in die frontend -lêergids in die/var/www/html -lêer en die lêers in die backend -lêer in 'n map in die/home/ [gebruikersnaam]/[vouernaam] gids

Stap 8: Die databasis

Die databasis
Die databasis

As gevolg van die manier waarop hierdie stelsel opgestel is, is daar 'n eenvoudige webwinkel met 'n lys produkte in 'n databasis, en ons het ook al die punte en bestellings wat hier gestoor word. volgende stap

Stap 9: Die saak

Die geval
Die geval

As ons eers weet wat die elektroniese werk is, kan ons dit in 'n boks stop. U kan kreatiewe vryheid hiermee neem. Voordat u dit bou, gryp u eenvoudig 'n kartondoos wat u nie meer nodig het nie, soos 'n leë graanboks, en sny dit vas, plak dit vas en vou dit totdat jy iets het waarvan jy hou. Meet en teken jou kas op 'n stuk papier en maak dit van 'n meer robuuste materiaal soos hout, of as dit nie jou ding is nie, druk dit uit. Maak seker dat al die elektronika daarin pas en jy het gate vir die knoppie, die draad na die skakelaar, die LED's en die LCD. Sodra jy jou saak gemaak het, is dit net 'n kwessie om 'n manier te vind om dit op jou fiets of bromponie te monteer.

Aanbeveel: