Kazalo:

Sledenje in sledenje majhnim trgovinam: 9 korakov (s slikami)
Sledenje in sledenje majhnim trgovinam: 9 korakov (s slikami)

Video: Sledenje in sledenje majhnim trgovinam: 9 korakov (s slikami)

Video: Sledenje in sledenje majhnim trgovinam: 9 korakov (s slikami)
Video: The Truth About Day Trading Forex - Why Most People Fail 2024, December
Anonim
Sledenje za majhne trgovine
Sledenje za majhne trgovine

To je sistem, ki je namenjen majhnim trgovinam, ki naj bi se montirale na e-kolesa ali e-skuterje za dostavo na kratke razdalje, na primer pekarna, ki želi dostaviti pecivo.

Kaj pomeni sledenje in sledenje?

Sledenje je sistem, ki ga uporabljajo prevozniki ali kurirska podjetja za beleženje gibanja paketov ali predmetov med prevozom. Na vsakem mestu obdelave je blago identificirano in podatki poslani v centralni sistem obdelave. Ti podatki se nato uporabijo za pošiljanje statusa/posodobitve lokacije blaga pošiljateljem.

Sistem, ki ga bomo izdelali, bo prikazal tudi prehojeno pot in količino prejetih udarcev in udarcev. Ta navodila zahtevajo tudi osnovno znanje o malini pi, python in mysql.

opomba: to je bilo narejeno za šolski projekt, zato je zaradi časovne stiske veliko prostora za izboljšave

Zaloge

-Maslina Pi 4 model B

-Maslina PI T-čevljar

-4x 3, 7V Li-ion baterije

-2x dvojno držalo za baterijo

-DC Buck koračni pretvornik 5v

-2x velike oranžne LED diode

-stikalo za vklop/izklop/vklop

-gumb

-adafruit ultimate gps v3

-mpu6050

-16x2 LCD zaslon

-servo motor

1. korak: Napajanje vezja in Pi

Napajanje vezja in Pi
Napajanje vezja in Pi
Napajanje vezja in Pi
Napajanje vezja in Pi

Ko gre za napajanje vezja pi z baterijo, imate na voljo nekaj možnosti, kako to storiti.

Lahko uporabite powerbank in napajate pi preko USB-ja, morda napravo montirate na e-kolo ali e-skuter, ki ima vrata USB, morda imate 5V baterijo telefona, ki čaka na uporabo ali pa uporabite 2 kompleti 3,7 V baterij so vzporedno s pretvornikom za zniževanje, kot je prikazano na slikah

Vse je v redu, če lahko zagotavlja neprekinjenih 5 V in ima življenjsko dobo, s katero ste zadovoljni.

2. korak: MPU6050

MPU6050
MPU6050

Uvod Senzorski modul MPU6050 je integrirana 6-osna naprava za sledenje gibanju.

  • Ima 3-osni žiroskop, 3-osni merilnik pospeška, digitalni procesor gibanja in temperaturni senzor, vse v enem IC.
  • Različne parametre je mogoče najti z branjem vrednosti iz naslovov določenih registrov s komunikacijo I2C. Branje žiroskopa in merilnika pospeška vzdolž osi X, Y in Z sta na voljo v obliki komplementa 2.
  • Odčitki žiroskopa so v enotah v stopinjah na sekundo (dps); Odčitki merilnika pospeška so v g enoti.

Omogočanje I2C

Če uporabljate MPU6050 z Raspberry Pi, moramo zagotoviti, da je vklopljen protokol I2C na Raspberry Pi. Če želite to narediti, odprite terminal pi skozi kit ali drugo programsko opremo in naredite naslednje:

  1. vnesite "sudo raspi-config"
  2. Izberite Konfiguracije vmesnika
  3. V možnosti Interfacing izberite "I2C"
  4. Omogoči konfiguracijo I2C
  5. Izberite Da, ko zahteva ponovni zagon.

Zdaj lahko z namestitvijo orodij i2c preizkusimo/skeniramo katero koli napravo I2C, priključeno na našo ploščo Raspberry Pi. Orodja i2c lahko dobimo z uporabo apt managerja. V terminalu Raspberry Pi uporabite naslednji ukaz.

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

Zdaj priključite katero koli napravo, ki temelji na I2C, na vrata uporabniškega načina in skenirajte ta vrata z naslednjim ukazom, "sudo i2cdetect -y 1"

Nato se bo odzval z naslovom naprave.

Če naslov ni vrnjen, se prepričajte, da je MPU6050 pravilno priključen, in poskusite znova

Naj deluje

zdaj, ko smo prepričani, da je i2c omogočen in pi lahko doseže MPU6050, bomo namestili knjižnico z ukazom "sudo pip3 install adafruit-circuitpython-mpu6050".

če naredimo preskusno datoteko python in uporabimo naslednjo kodo, lahko vidimo, ali deluje:

čas uvoza

uvozna plošča

uvozno podjetje

oimport adafruit_mpu6050

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

mpu = adafruit_mpu6050. MPU6050 (i2c)

medtem ko je res:

print ("Pospešek: X: %. 2f, Y: %.2f, Z: %.2f m/s^2" %(mpu. pospešek))

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

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

print ("")

time.sleep (1)

ko želimo pospešek na osi X/Y/Z, lahko uporabimo naslednje:

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

če to združimo s preprosto izjavo if v konstantni zanki, lahko preštejemo količino šokov na potovanju

3. korak: Adafruit Ultimate Breakout GPS

Adafruit Ultimate Breakout GPS
Adafruit Ultimate Breakout GPS

Uvod

Preboj je zgrajen okoli nabora čipov MTK3339, brezhibnega, visokokakovostnega modula GPS, ki lahko spremlja do 22 satelitov na 66 kanalih, ima odličen visoko občutljiv sprejemnik (-165 dB sledenje!) In vgrajeno anteno. Lahko naredi do 10 posodobitev lokacije na sekundo za visoko hitrost, visoko občutljivost beleženja ali sledenja. Poraba energije je neverjetno nizka, med navigacijo le 20 mA.

Plošča ima: izredno nizek regulator napetosti 3,3 V, tako da ga lahko napajate z vhodi 3,3-5 V DC, 5 V na ravni varnih vhodov, LED utripa pri približno 1 Hz, medtem ko išče satelite, in utripa vsakih 15 sekund, ko je popravljen je bilo ugotovljeno, da varčuje z energijo.

Testiranje GPS -ja z arduinom

Če imate dostop do arduina, je dobro, da modul preizkusite z njim.

Priključite VIN na +5V Priključite GND na GroundConnect GPS RX (podatki v GPS) na Digital 0 Povežite GPS TX (podatki iz GPS) na Digital 1

Preprosto zaženite prazno kodo arduino in odprite serijski monitor na 9600 baud. Če dobite podatke GPS, vaš modul gps deluje. Opomba: če vaš modul ne dobi popravka, ga postavite skozi okno ali zunaj na terasi.

Naj deluje

Začnite nameščanje knjižnice adafruit gps z ukazom "sudo pip3 install adafruit-circuitpython-gps".

Sedaj lahko uporabimo naslednjo kodo python, da vidimo, ali nam lahko uspe:

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

medtem ko je res:

gps.update (), medtem ko ni gps.has_fix:

print (gps.nmea_sentence) print ('Čakanje na popravek …') gps.update () time.sleep (1) nadaljevanje

print ('=' * 40) # Natisnite ločilno vrstico.print ('Zemljepisna širina: {0:.6f} stopinj'. format (gps.latitude)) print ('Dolžina: {0:.6f} stopinj'.format (gps.longitude)) print ("Kakovost popravka: {}". format (gps.fix_quality))

# Nekateri atributi, ki presegajo zemljepisno širino, dolžino in časovni žig, so neobvezni# in morda niso prisotni. Preden poskusite uporabiti, preverite, ali so nič! Če gps.satellites ni nič:

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

če gps.altitude_m ni nič:

print ("Nadmorska višina: {} metrov".format (gps.altitude_m))

če gps.speed_knots ni None:

print ("Hitrost: {} vozlov".format (gps.speed_knots))

če gps.track_angle_deg ni nič:

print ("Kot proge: {} stopinj".format (gps.track_angle_deg))

če gps.horizontal_dilution ni nič:

print ("Horizontalna razredčitev: {}". format (gps.horizontal_dilution))

če gps.height_geoid ni nič:

print ("ID višine zemljevida: {} metrov".format (gps.height_geoid))

time.sleep (1)

4. korak: LCD zaslon 16x2

16x2 LCD
16x2 LCD

Uvod

Moduli LCD se zelo pogosto uporabljajo v večini vgrajenih projektov, razlog pa je njihova poceni cena, razpoložljivost in prijaznost programerjem. Večina od nas bi v vsakdanjem življenju naletela na te zaslone, bodisi pri PCO ali kalkulatorjih. 16 × 2 LCD je tako imenovan, ker; ima 16 stolpcev in 2 vrstici. Na voljo je veliko kombinacij, na primer 8 × 1, 8 × 2, 10 × 2, 16 × 1 itd., Vendar je najbolj uporabljena 16 × 2 LCD. Torej bo skupaj (16 × 2 = 32) 32 znakov in vsak znak bo sestavljen iz 5 × 8 pikslov.

Namestitev smbusa

Sistemsko vodilo (SMBus) je bolj ali manj izpeljanka vodila I2C. Standard je razvil Intel in ga zdaj vzdržuje forum SBS. Glavna aplikacija SMBus je spremljanje kritičnih parametrov na matičnih ploščah osebnih računalnikov in v vgrajenih sistemih. Na voljo je na primer veliko monitorjev napajalne napetosti, merilnika temperature in nadzornih/nadzornih IC ventilatorjev z vmesnikom SMBus.

Knjižnica, ki jo bomo uporabljali, zahteva tudi namestitev smbusa. Če želite namestiti smbus na rpi, uporabite ukaz "sudo apt install python3-smbus".

Naj deluje

najprej namestite knjižnico RPLCD z ukazom "sudo pip3 install RPLCD".

zdaj testiramo lcd s prikazom ip z naslednjo kodo:

iz RPLCD.i2c uvozite vtičnico CharLCDimport

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

5. korak: Servo, LED, gumb in stikalo

Servo, LED, gumb in stikalo
Servo, LED, gumb in stikalo

Uvod

Servo motor je rotacijski pogon ali motor, ki omogoča natančen nadzor glede na kotni položaj, pospešek in hitrost, zmogljivosti, ki jih običajni motor nima. Uporablja navaden motor in ga poveže s senzorjem za povratne informacije o položaju. Krmilnik je najbolj izpopolnjen del servo motorja, saj je posebej zasnovan za ta namen.

LED kratka za svetlečo diodo. Elektronska polprevodniška naprava, ki oddaja svetlobo, ko skozi njo prehaja električni tok. So bistveno učinkovitejše od žarnic z žarilno nitko in le redko izgorijo. LED se uporabljajo v številnih aplikacijah, kot so video zasloni z ravnim zaslonom in vse pogosteje kot splošni viri svetlobe.

Gumb ali preprosto gumb je preprost preklopni mehanizem za nadzor nekaterih vidikov stroja ali procesa. Gumbi so običajno izdelani iz trdega materiala, običajno iz plastike ali kovine.

Stikalo za vklop/izklop/vklop ima 3 položaje, kjer je srednji izklop, te vrste se večinoma uporabljajo za preprosto krmiljenje motorja, kjer imate stanje naprej, izklop in vzvratno.

Naj deluje: servo

Servo uporablja signal PWM, da ugotovi, pod kakšnim kotom mora biti na srečo. GPIO ima to funkcijo vgrajeno. Zato lahko preprosto uporabimo naslednjo kodo za nadzor servo: uvoz RPi. GPIO kot čas GPIOimporta.

servo_pin = 18duty_cycle = 7,5

Način GPIO.set (GPIO. BCM)

GPIO.setup (servo_pin, GPIO. OUT)

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

medtem ko je res:

duty_cycle = float (input ("Vnesite delovni cikel (levo = 5 proti desni = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)

Omogočanje delovanja: LED in stikalo

Zaradi načina, kako smo ožičili LED in stikalo, nam ni treba nadzorovati ali brati LED in se sam preklopiti. Enostavno pošljemo impulze gumbu, ki bo signal usmeril na želeno LED.

Omogočanje delovanja: gumb

Za gumb bomo naredili svoj preprost razred na ta način, da bomo zlahka videli, ko pritisnemo, ne da bi mu morali vsakič, ko ga uporabimo, dodati zaznavanje dogodkov. Datoteko classbutton.py bomo naredili z naslednjo kodo:

iz RPi uvoz GPIOclass Gumb:

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

ingedrukt = GPIO.input (self.pin) vrnitev ni 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: Celotno vezje

Celotno vezje
Celotno vezje
Celotno vezje
Celotno vezje

Zdaj, ko smo preučili vse komponente, je čas, da jih združimo.

Medtem ko slike prikazujejo, da komponente prikazujejo vse na sami plošči, je bolje, da LCD, adafruit GPS in gumb povežete z ženskimi in moškimi žicami. Samo t-cobbler in mpu6050 naj bosta na plošči. Ko gre za LED in stikalo. uporabite daljše žice, da zagotovite, da boste dosegli utripajoče palice in krmilno palico.

7. korak: Koda

Da bi ta navodila ostala čista, sem zagotovil skladišče github tako z zalednimi kot s prednjimi datotekami. Preprosto jih shranite v mapo v prednjem delu v mapi/var/www/html in datoteke v zaledni mapi v mapi v/home/ mapa [uporabniško ime]/[ime mape]

8. korak: Baza podatkov

Baza podatkov
Baza podatkov

Zaradi načina nastavitve tega sistema obstaja preprosta spletna trgovina, nastavljena s seznamom izdelkov v zbirki podatkov, poleg tega imamo tukaj shranjene vse točke in naročila. Ustvarjalni skript najdete v skladišču github, povezanem v naslednji korak

9. korak: Primer

Primer
Primer

Ko vemo, da elektronika deluje, jih lahko zložimo v škatlo. S tem si lahko vzamete nekaj ustvarjalne svobode. Preden jo sestavite, preprosto vzemite kartonsko škatlo, ki je ne potrebujete več, na primer prazno škatlo za žita, in jo razrežite, nalepite na trak. in ga zložite, dokler ne boste imeli nekaj, kar vam je všeč. Izmerite in narišite kovček na kos papirja in ga naredite iz trdnejšega materiala, kot je les, ali če to ni vaša stvar, ga natisnite 3D. Samo poskrbite, da bo vsa elektronika v notranjosti in imate luknje za gumb, žico do stikala, LED in lcd. Ko ste vzeli kovček, morate samo najti način, kako ga namestiti na kolo ali skuter

Priporočena: