Sadržaj:

Praćenje i praćenje za male trgovine: 9 koraka (sa slikama)
Praćenje i praćenje za male trgovine: 9 koraka (sa slikama)

Video: Praćenje i praćenje za male trgovine: 9 koraka (sa slikama)

Video: Praćenje i praćenje za male trgovine: 9 koraka (sa slikama)
Video: Я вернул его домой. Немецкая овчарка по имени Дом 2024, Novembar
Anonim
Praćenje i praćenje za male trgovine
Praćenje i praćenje za male trgovine

Ovo je sistem koji je napravljen za male trgovine koje bi trebalo montirati na e-bicikle ili e-skutere za kratke isporuke, na primjer pekara koja želi isporučivati peciva.

Šta znači Track and Trace?

Praćenje i praćenje je sistem koji koriste prevoznici ili kurirske kompanije za evidentiranje kretanja paketa ili predmeta tokom transporta. Na svakom mjestu obrade roba se identificira i podaci prenose u centralni sistem obrade. Ti se podaci zatim koriste za davanje otpremnika statusa/ažuriranja lokacije robe.

Sistem koji ćemo napraviti takođe će pokazati pređeni put i količinu primljenih udara i udaraca. Ove instrukcije takođe pretpostavljaju da imate osnovno znanje o malini pi, pythonu i mysqlu.

Napomena: ovo je napravljeno za školski projekat, pa zbog vremenskog ograničenja postoji mnogo prostora za poboljšanja

Supplies

-Raspberry Pi 4 model B

-PI T-postolar od maline

-4x 3, 7V Li-ion baterije

-2x dvostruki držač baterije

-DC Buck Step-down pretvarač 5v

-2x velike narandžaste LED diode

-prekidač za uključivanje/isključivanje/uključivanje

-dugme

-adafruit ultimate gps v3

-mpu6050

-16x2 LCD ekran

-servo motor

Korak 1: Napajanje kruga i Pi

Napajanje strujnog kola i Pi
Napajanje strujnog kola i Pi
Napajanje strujnog kola i Pi
Napajanje strujnog kola i Pi

Što se tiče napajanja kruga pi baterijom, imate nekoliko mogućnosti kako to učiniti.

Mogli biste upotrijebiti powerbank i napajati pi preko USB-a, možda uređaj montirate na e-bicikl ili e-skuter koji ima USB priključak, možda imate bateriju od 5 V telefona koja čeka oko upotrebe ili biste mogli upotrijebiti 2 setovi baterija od 3,7 V paralelno sa stepenastim pretvaračem kao što je prikazano na slikama

Sve je u redu sve dok može osigurati stalnih 5 V i imati životni vijek kojim ste zadovoljni.

Korak 2: MPU6050

MPU6050
MPU6050

Uvod MPU6050 senzorski modul je integrirani 6-osni uređaj za praćenje kretanja.

  • Ima troosni žiroskop, troosni akcelerometar, digitalni procesor pokreta i temperaturni senzor, sve u jednom IC-u.
  • Čitanjem vrijednosti s adresa određenih registara pomoću I2C komunikacije mogu se pronaći različiti parametri. Očitavanje žiroskopa i akcelerometra duž osi X, Y i Z dostupno je u obliku komplementa 2.
  • Očitavanja žiroskopa su u jedinicama stepeni u sekundi (dps); Očitanja akcelerometra su u g jedinici.

Omogućavanje I2C

Kada koristite MPU6050 s Raspberry Pi -om, trebali bismo osigurati da je I2C protokol na Raspberry Pi -u uključen. Da biste to učinili, otvorite pi -jev terminal putem kita ili drugog softvera i učinite sljedeće:

  1. upišite "sudo raspi-config"
  2. Odaberite Interfacing Configurations
  3. U opciji Interfacing odaberite "I2C"
  4. Omogući I2C konfiguraciju
  5. Odaberite Da kada se traži ponovno pokretanje.

Sada možemo testirati/skenirati bilo koji I2C uređaj spojen na našu Raspberry Pi ploču instaliranjem i2c alata. I2c alate možemo nabaviti pomoću apt menadžera paketa. Koristite sljedeću naredbu u terminalu Raspberry Pi.

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

Sada povežite bilo koji uređaj zasnovan na I2C na port za korisnički način rada i skenirajte taj port pomoću sljedeće naredbe, "sudo i2cdetect -y 1"

Tada će odgovoriti s adresom uređaja.

Ako nije vraćena adresa, provjerite je li MPU6050 pravilno spojen i pokušajte ponovo

Učiniti to uspješnim

sada kada smo sigurni da je i2c omogućen i da pi može doseći MPU6050, instalirat ćemo biblioteku pomoću naredbe "sudo pip3 install adafruit-circuitpython-mpu6050".

ako napravimo python testnu datoteku i upotrijebimo sljedeći kod, možemo vidjeti radi li:

vreme uvoza

tabla za uvoz

import busi

oimport adafruit_mpu6050

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

mpu = adafruit_mpu6050. MPU6050 (i2c)

dok je True:

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

print ("Žiroskop X: %. 2f, Y: %.2f, Z: %.2f stepeni/s" %(mpu.giro))

print ("Temperatura: %.2f C" % mpu.temperatura)

print ("")

time.sleep (1)

kada sada želimo ubrzanje na osi X/Y/Z, možemo koristiti sljedeće:

accelX = mpu.acceleration [0] accelelY = mpu.acceleration [1] accelelZ = mpu.acceleration [2]

kombinujući ovo sa jednostavnom if naredbom u konstantnoj petlji možemo izbrojati količinu šokova na putovanju

Korak 3: Adafruit Ultimate Breakout GPS

Adafruit Ultimate Breakout GPS
Adafruit Ultimate Breakout GPS

Uvod

Izbijanje je izgrađeno oko MTK3339 čipseta, besmislenog, visokokvalitetnog GPS modula koji može pratiti do 22 satelita na 66 kanala, ima odličan prijemnik visoke osjetljivosti (-165 dB praćenje!) I ugrađenu antenu. Može napraviti do 10 ažuriranja lokacije u sekundi za velike brzine, visoko osjetljivo bilježenje ili praćenje. Potrošnja energije je nevjerojatno niska, samo 20 mA tokom navigacije.

Ploča dolazi sa: regulatorom od 3,3 V s iznimno niskim ispadanjem, tako da ga možete napajati sa 3,3-5 VDC ulaza, sigurnim ulazima na nivou 5 V, LED treperi na oko 1 Hz dok traži satelite i trepće svakih 15 sekundi kada se popravi utvrđeno je da štedi energiju.

Testiranje GPS -a s arduinom

Ako imate pristup arduinu, bilo bi dobro isprobati modul s njim.

Spojite VIN na +5VPovežite GND na GroundConnect GPS RX (podaci u GPS) na Digital 0Connect GPS TX (podaci iz GPS -a) na Digital 1

Jednostavno pokrenite prazan arduino kôd i otvorite serijski monitor na 9600 bauda. Ako dobijete gps podatke, vaš gps modul radi. Napomena: ako vaš modul ne dobije popravak, pokušajte ga staviti kroz prozor ili na terasu

Učiniti to uspješnim

Počnite instalirati adafruit gps biblioteku pomoću naredbe "sudo pip3 install adafruit-circuitpython-gps".

Sada možemo upotrijebiti sljedeći python kod da vidimo možemo li uspjeti:

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 ') gps.send_command (b'PMTK220, 1000')

dok je True:

gps.update () dok nije gps.has_fix:

print (gps.nmea_sentence) print ('Čeka se popravljanje …') gps.update () time.sleep (1) nastavi

print ('=' * 40) # Odštampaj separator line.print ('Geografska širina: {0:.6f} stepeni'. format (gps.latitude)) print ('Dužina: {0:.6f} stepeni'.format (gps.longitude)) print ("Kvalitet popravka: {}". format (gps.fix_quality))

# Neki atributi izvan zemljopisne širine, dužine i vremenske oznake su izborni# i možda neće biti prisutni. Prije pokušaja upotrebe provjerite jesu li ništa! Ako gps.satellites nije Ništa:

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

ako gps.altitude_m nije Nijedan:

print ("Nadmorska visina: {} metara".format (gps.altitude_m))

ako gps.speed_knots nije Ništa:

print ("Brzina: {} čvorova".format (gps.speed_knots))

ako gps.track_angle_deg nije Nijedan:

print ("Ugao staze: {} stepeni".format (gps.track_angle_deg))

ako gps.horizontal_dilution nije Nijedan:

print ("Horizontalno razrjeđivanje: {}". format (gps.horizontal_dilution))

ako gps.height_geoid nije Ništa:

print ("Geografski ID visine: {} metara".format (gps.height_geoid))

time.sleep (1)

Korak 4: LCD ekran veličine 16x2

LCD ekran veličine 16x2
LCD ekran veličine 16x2

Uvod

LCD moduli se vrlo često koriste u većini ugrađenih projekata, razlog za to je njihova jeftina cijena, dostupnost i prilagođenost programerima. Većina nas bi se susrela s ovim ekranima u svakodnevnom životu, bilo u PCO -ima ili na kalkulatorima. 16 × 2 LCD je tako nazvan jer; ima 16 kolona i 2 reda. Dostupno je mnogo kombinacija poput, 8 × 1, 8 × 2, 10 × 2, 16 × 1 itd., Ali najčešće se koristi 16 × 2 LCD. Dakle, on će imati (16 × 2 = 32) ukupno 32 znaka i svaki će znak biti napravljen od 5 × 8 piksela.

Instaliranje smbusa

Sabirnica za upravljanje sistemom (SMBus) je manje -više izvedenica sabirnice I2C. Standard je razvio Intel, a sada ga održava SBS Forum. Glavna primjena SMBus -a je praćenje kritičnih parametara na matičnim pločama računara i u ugrađenim sistemima. Na primjer, na raspolaganju je mnogo monitora napona napajanja, monitora temperature i ventilatora/upravljačkih IC ventilatora sa SMBus interfejsom.

Biblioteka koju ćemo koristiti zahtijeva i instaliranje smbusa. Da biste instalirali smbus na rpi, koristite naredbu "sudo apt install python3-smbus".

Učiniti to uspješnim

prvo instalirajte RPLCD biblioteku pomoću naredbe "sudo pip3 install RPLCD".

sada testiramo lcd prikazivanjem ip -a pomoću sljedećeg koda:

iz RPLCD.i2c uvezite CharLCDimport utičnicu

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 adresa: / r / n'+str (get_ip_address ()))

Korak 5: Servo, LED, dugme i prekidač

Servo, LED, dugme i prekidač
Servo, LED, dugme i prekidač

Uvod

Servo motor je rotacijski pokretač ili motor koji omogućuje preciznu kontrolu u smislu kutnog položaja, ubrzanja i brzine, sposobnosti koje obični motor nema. Koristi običan motor i upari ga sa senzorom za povratnu informaciju o položaju. Regulator je najsofisticiraniji dio servo motora, jer je posebno dizajniran za tu svrhu.

LED kratica za diodu koja emitira svjetlo. Elektronički poluvodički uređaj koji emitira svjetlost pri prolasku električne struje. Oni su znatno efikasniji od sijalica sa žarnom niti i rijetko izgore. LED diode se koriste u mnogim aplikacijama, poput video ekrana s ravnim ekranom, a sve više i kao opći izvori svjetlosti.

Tipka ili jednostavno dugme je jednostavan mehanizam za prebacivanje za upravljanje nekim aspektom mašine ili procesa. Dugmad su obično izrađena od tvrdog materijala, obično plastike ili metala.

Prekidač za uključivanje/isključivanje/uključivanje ima 3 položaja gdje je srednji u isključenom stanju. Ovi tipovi se uglavnom koriste za jednostavnu kontrolu motora gdje imate stanje naprijed, isključeno i unatrag.

Omogućavanje rada: servo

Servo koristi PWM signal kako bi odredio pod kojim kutom treba biti srećom za nas GPIO ima ugrađenu ovu značajku. Stoga možemo jednostavno koristiti sljedeći kod za kontrolu servo: uvoz RPi. GPIO kao GPIOimport vrijeme

servo_pin = 18duty_cycle = 7.5

Način rada GPIO.set (GPIO. BCM)

GPIO.setup (servo_pin, GPIO. OUT)

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

dok je True:

duty_cycle = float (input ("Unesite radni ciklus (slijeva = 5 na desno = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)

Omogućavanje rada: LED dioda i prekidač

Zbog načina na koji smo ožičili LED diode i prekidač ne moramo kontrolirati niti čitati LED diode i sami se prebacivati. Jednostavno šaljemo impulse gumbu koji će zauzvrat usmjeriti signal na LED koji želimo.

Omogućavanje rada: dugme

Za dugme ćemo napraviti našu vlastitu jednostavnu klasu na ovaj način koji lako vidimo kada se pritisne bez potrebe dodavanja detekcije događaja svaki put kada ga koristimo. Napravit ćemo datoteku classbutton.py koristeći sljedeći kod:

iz RPi import GPIOclass dugme:

def _init _ (self, pin, bouncetime = 200): self.pin = pin self.bouncetime = bouncetime GPIO.setmode (GPIO. BCM) GPIO.setup (pin, GPIO. IN, GPIO. PUD_UP)@nekretnina def pritisnuta (self):

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

Korak 6: Potpuni krug

Puni krug
Puni krug
Puni krug
Puni krug

Sada kada smo pregledali sve komponente vrijeme je da ih sve spojimo.

Dok slike prikazuju komponente koje prikazuju sve na samoj ploči, bolje je da LCD, adafruit GPS i dugme budu povezani ženskim i muškim žicama. Na tlu imaju samo t-cobbler i mpu6050. Kada su u pitanju LED dioda i prekidač upotrijebite duže žice kako biste bili sigurni da možete doći do žmigavaca i upravljača.

Korak 7: Kôd

Da bi ovo uputstvo bilo čisto, obezbijedio sam github spremište i sa pozadinskim i sa prednjim datotekama. Jednostavno stavite datoteke u prednju fasciklu u/var/www/html fasciklu i datoteke u pozadinskoj fascikli u fascikli u/home/ folder [korisničko ime]/[ime fascikle]

Korak 8: Baza podataka

Baza podataka
Baza podataka

Zbog načina na koji je ovaj sistem postavljen, postoji jednostavna web trgovina postavljena pomoću popisa proizvoda u bazi podataka, osim toga ovdje imamo spremljene sve tačke i narudžbe. Stvorite skriptu možete pronaći na github spremištu povezanom u sljedeći korak

Korak 9: Slučaj

Slučaj
Slučaj

Nakon što saznamo da elektronika funkcionira, možemo ih strpati u kutiju. Možete uzeti malo kreativnosti s ovim. Prije nego što je izgradite, jednostavno zgrabite kartonsku kutiju koja vam više ne treba, na primjer praznu kutiju za žitarice, i izrežite je, zalijepite je. i presavijte ga dok ne dobijete nešto što vam se sviđa. Izmjerite i nacrtajte kućište na komadu papira i napravite ga od čvršćeg materijala poput drveta, ili ako to nije vaša stvar, odštampajte ga 3D. Samo pazite da sva elektronika stane unutra i imate rupe za dugme, žicu koja ide do prekidača, LED diode i LCD. Nakon što ste napravili futrolu, samo je potrebno pronaći način da je montirate na bicikl ili skuter

Preporučuje se: