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, Studeni
Anonim
Praćenje i praćenje za male trgovine
Praćenje i praćenje za male trgovine

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

Što znači Track and Trace?

Track and trace sustav je koji koriste prijevoznici ili kurirske tvrtke za bilježenje kretanja paketa ili predmeta tijekom prijevoza. Na svakom mjestu obrade roba se identificira i podaci prenose u središnji sustav obrade. Ti se podaci zatim koriste za davanje otpremnika statusa/ažuriranja lokacije robe.

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

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

Pribor

-Maslina Pi 4 model B

-Maslina PI T-postolar

-4x 3, 7V Li-ion baterije

-2x dvostruki držač baterije

-DC Buck Step-down pretvarač 5v

-2x velike narančaste LED diode

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

-dugme

-adafruit ultimate gps v3

-mpu6050

-16x2 LCD zaslon

-servo motor

Korak 1: Napajanje kruga i Pi

Napajanje kruga i Pi
Napajanje kruga i Pi
Napajanje kruga i Pi
Napajanje kruga 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 na upotrebu ili biste mogli upotrijebiti 2 setovi baterija od 3,7 V paralelno s 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 Senzorski modul MPU6050 integrirani je 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 2 komplementa.
  • Očitavanja žiroskopa su u jedinicama stupnjeva u sekundi (dps); Očitanja akcelerometra su u g jedinici.

Omogućavanje I2C

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

  1. upišite "sudo raspi-config"
  2. Odaberite Konfiguracije sučelja
  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. Alate i2c možemo nabaviti pomoću apt upravitelja paketa. Upotrijebite sljedeću naredbu u terminalu Raspberry Pi.

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

Sada spojite bilo koji uređaj temeljen na I2C na priključak 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 se ne vrati adresa, provjerite je li MPU6050 pravilno spojen i pokušajte ponovno

Učiniti to funkcionirati

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:

vrijeme uvoza

ploča za uvoz

uvoz busi

oimport adafruit_mpu6050

i2c = busio. I2C (ploča. SCL, ploča. SDA)

mpu = adafruit_mpu6050. MPU6050 (i2c)

dok je istina:

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

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

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

print ("")

vrijeme.spavanje (1)

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

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

kombinirajući to s 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 izvrstan prijemnik visoke osjetljivosti (-165 dB praćenje!) I ugrađenu antenu. Može napraviti do 10 ažuriranja lokacije u sekundi radi velike brzine, visoke osjetljivosti evidentiranja ili praćenja. Potrošnja energije je nevjerojatno niska, samo 20 mA tijekom navigacije.

Ploča dolazi s: regulatorom od 3,3 V s iznimno niskim ispadanjem, tako da ga možete napajati s 3,3-5 VDC ulaza, sigurnim ulazima na razini 5 V, LED treperi na otprilike 1 Hz dok traži satelite i trepće svakih 15 sekundi kad se popravi za očuvanje energije.

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 funkcionirati

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

Sada možemo upotrijebiti sljedeći python kôd da vidimo možemo li uspjeti:

import timeimport board import busioimport adafruit_gpsimport serijski 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')

dok je istina:

gps.update () dok nije gps.ha_fix:

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

print ('=' * 40) # Ispišite liniju za razdvajanje.print ('Geografska širina: {0:.6f} stupnjeva'. format (gps.latitude)) print ('Dužina: {0:.6f} stupnjeva'.format (gps.longitude)) print ("Kvaliteta 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.sateliti))

ako gps.altitude_m nije Ništa:

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 Ništa:

print ("Kut praćenja: {} stupnjeva".format (gps.track_angle_deg))

ako gps.horizontal_dilution nije Ništa:

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

ako gps.height_geoid nije Ništa:

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

vrijeme.spavanje (1)

Korak 4: LCD zaslon 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, a razlog tome je njihova jeftina cijena, dostupnost i prikladnost za programere. Većina nas naišla bi na ove zaslone u svakodnevnom životu, bilo u PCO -ima ili na kalkulatorima. 16 × 2 LCD je tako nazvan jer; ima 16 kolona i 2 reda. Dostupne su mnoge kombinacije poput, 8 × 1, 8 × 2, 10 × 2, 16 × 1 itd., Ali najčešće se koristi 16 × 2 LCD. Dakle, imati će (16 × 2 = 32) ukupno 32 znaka, a svaki će znak biti izrađen od 5 × 8 točaka piksela.

Instaliranje smbusa

Sabirnica za upravljanje sustavom (SMBus) manje -više je izvedenica sabirnice I2C. Standard je razvio Intel, a sada ga održava SBS Forum. Glavna primjena SMBusa je nadzor kritičnih parametara na matičnim pločama računala i u ugrađenim sustavima. Na primjer, na raspolaganju je mnogo monitora napona napajanja, monitora temperature i ventilatora/upravljačkih sklopova za nadzor ventilatora sa SMBus sučeljem.

Biblioteka koju ćemo koristiti zahtijeva i instaliranje smbusa. Za instaliranje smbusa na rpi upotrijebite naredbu "sudo apt install python3-smbus".

Učiniti to funkcionirati

prvo instalirajte RPLCD knjižnicu pomoću naredbe "sudo pip3 install RPLCD".

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

iz RPLCD.i2c uvoz CharLCDimport utičnice

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, gumb i prekidač

Servo, LED, gumb i prekidač
Servo, LED, gumb 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. Upravljač 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 učinkovitiji od žarulja sa žarnom niti i rijetko izgaraju. LED diode se koriste u mnogim aplikacijama, poput video zaslona s ravnim ekranom, a sve više i kao opći izvori svjetlosti.

Tipka ili jednostavno dugme jednostavan je prekidač za upravljanje nekim aspektom stroja ili procesa. Gumbi su obično izrađeni 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. Ove se vrste 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 jednostavno možemo upotrijebiti sljedeći kôd 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 istina:

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 ili čitati LED diode i sami se prebacivati. Jednostavno šaljemo impulse gumbu koji će zauzvrat usmjeriti signal na LED koji želimo.

Omogućavanje rada: gumb

Za gumb ć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 pomoću sljedećeg koda:

iz RPi uvoz GPIOclass tipka:

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) povrat 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: Cijeli krug

Puni krug
Puni krug
Puni krug
Puni krug

Sada kada smo prešli 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 gumb budu povezani ženskim i muškim žicama. Samo t-cobbler i mpu6050 postavite na ploču. Kad je riječ o LED diodama i prekidaču upotrijebite duže žice kako biste bili sigurni da možete doći do žmigavca i upravljača.

Korak 7: Kôd

Da bi ovaj instruktor bio čist, osigurao sam github spremište s pozadinskim i sučeljenim datotekama. Jednostavno stavite datoteke u prednju mapu u/var/www/html mapu i datoteke u pozadinskoj mapi u mapi u/home/ mapa [korisničko ime]/[ime mape]

Korak 8: Baza podataka

Baza podataka
Baza podataka

Zbog načina na koji je ovaj sustav postavljen, postoji jednostavna web trgovina postavljena pomoću popisa proizvoda u bazi podataka, osim toga ovdje imamo spremljene sve točke i narudžbe. Skripta za stvaranje može se pronaći u spremištu github povezanom u sljedeći korak

Korak 9: Slučaj

Slučaj
Slučaj

Kad 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 presavijajte 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, ispišite ga 3D. Samo provjerite da li sva elektronika staje unutra i imate rupe za gumb, žicu koja ide do prekidača, LED diode i LCD. Nakon što ste napravili kućište, samo je potrebno pronaći način da ga postavite na svoj bicikl ili skuter

Preporučeni: