Turinys:

Mažų parduotuvių sekimas ir sekimas: 9 žingsniai (su paveikslėliais)
Mažų parduotuvių sekimas ir sekimas: 9 žingsniai (su paveikslėliais)

Video: Mažų parduotuvių sekimas ir sekimas: 9 žingsniai (su paveikslėliais)

Video: Mažų parduotuvių sekimas ir sekimas: 9 žingsniai (su paveikslėliais)
Video: MANE UŽPUOLĖ PIKTAS ŠUO |VLOG #3 2024, Lapkritis
Anonim
Mažų parduotuvių sekimas ir sekimas
Mažų parduotuvių sekimas ir sekimas

Tai yra sistema, skirta mažoms parduotuvėms, kurios turėtų būti montuojamos ant elektroninių dviračių ar motorolerių, kad būtų galima pristatyti trumpą atstumą, pavyzdžiui, kepykla, norinti pristatyti kepinius.

Ką reiškia „Track and Trace“?

Sekimas ir sekimas - tai sistema, kurią vežėjai ar kurjerių įmonės naudoja siuntų ar daiktų judėjimui gabenti registruoti. Kiekvienoje apdorojimo vietoje prekės identifikuojamos ir duomenys perduodami į centrinę apdorojimo sistemą. Tada šie duomenys naudojami siuntėjams suteikti prekių buvimo vietą/atnaujinimą.

Mūsų sukurta sistema taip pat parodys pasirinktą maršrutą ir gautų smūgių bei smūgių kiekį. Šiose instrukcijose taip pat daroma prielaida, kad turite pagrindinių žinių apie aviečių pi, python ir mysql.

pastaba: tai buvo sukurta mokyklos projektui, todėl dėl laiko apribojimų yra daug galimybių tobulėti

Prekės

-„Aviečių Pi 4“modelis B.

-Aviečių PI T-cobbler

-4x 3, 7V ličio jonų baterijos

-2x dvigubas akumuliatoriaus laikiklis

-Dc Buck sumažinimo keitiklis 5v

-2x dideli oranžiniai šviesos diodai

-įjungimo/išjungimo/įjungimo jungiklis

-mygtukas

-adafruit ultimate gps v3

-6050 eurų

-16x2 LCD ekranas

-servo variklis

1 žingsnis: įjunkite grandinę ir „Pi“

Maitinimas grandinėje ir Pi
Maitinimas grandinėje ir Pi
Maitinimas grandinėje ir Pi
Maitinimas grandinėje ir Pi

Kalbant apie maitinimą grandine pi su baterija, turite keletą galimybių, kaip tai padaryti.

Galite naudoti „Powerbank“ir maitinti „pi“per USB, galbūt įrenginį montuojate ant el. Dviračio ar motorolerio, turinčio USB prievadą, galbūt turite 5 V telefono bateriją, kuri laukia, kol bus naudojama, arba galite naudoti 2 3,7 V baterijų rinkiniai lygiagrečiai su žemesnio lygio keitikliu, kaip parodyta paveikslėliuose

Viskas yra gerai, jei gali užtikrinti nuolatinį 5 V įtampą ir visą gyvenimą esate patenkintas.

2 žingsnis: MPU6050

MPU6050
MPU6050

Įvadas MPU6050 jutiklio modulis yra integruotas 6 ašių judesio sekimo įrenginys.

  • Jame yra 3 ašių giroskopas, 3 ašių pagreičio matuoklis, skaitmeninis judesio procesorius ir temperatūros jutiklis.
  • Įvairius parametrus galima rasti skaitant reikšmes iš tam tikrų registrų adresų naudojant I2C ryšį. Giroskopo ir akselerometro rodmenys X, Y ir Z ašyse yra 2 papildymo forma.
  • Giroskopo rodmenys rodomi laipsniais per sekundę (dps); Akselerometro rodmenys pateikiami g vienetais.

Įgalinama I2C

Kai naudojate MPU6050 su „Raspberry Pi“, turėtume užtikrinti, kad „Raspberry Pi“I2C protokolas būtų įjungtas. Norėdami tai padaryti, atidarykite pi terminalą per glaistą ar kitą programinę įrangą ir atlikite šiuos veiksmus:

  1. įveskite „sudo raspi-config“
  2. Pasirinkite sąsajos konfigūracijas
  3. Sąsajos parinktyje pasirinkite „I2C“
  4. Įgalinti I2C konfigūraciją
  5. Pasirinkite Taip, kai prašoma paleisti iš naujo.

Dabar mes galime išbandyti/nuskaityti bet kurį I2C įrenginį, prijungtą prie mūsų „Raspberry Pi“plokštės, įdiegdami „i2c“įrankius. „I2c“įrankius galime gauti naudodami apt paketų tvarkyklę. Raspberry Pi terminale naudokite šią komandą.

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

Dabar prijunkite bet kurį I2C pagrįstą įrenginį prie vartotojo režimo prievado ir nuskaitykite tą prievadą naudodami šią komandą, "sudo i2cdetect -y 1"

Tada jis atsakys nurodydamas įrenginio adresą.

Jei adresas negrąžinamas, įsitikinkite, kad MPU6050 tinkamai prijungtas, ir bandykite dar kartą

Kad tai veiktų

Dabar, kai esame tikri, kad „i2c“yra įjungtas ir pi gali pasiekti MPU6050, ketiname įdiegti biblioteką naudodami komandą „sudo pip3 install adafruit-circuitpython-mpu6050“.

jei sudarysime „python“bandomąjį failą ir naudosime šį kodą, pamatysime, ar jis veikia:

importo laikas

importo lenta

importo verslas

oimportas adafruit_mpu6050

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

mpu = adafruit_mpu6050. MPU6050 (i2c)

nors tiesa:

spausdinti ("Pagreitis: X: %. 2f, Y: %.2f, Z: %.2f m/s^2" %(mpu.pagreitis))

spausdinti („Giroskopas X: %. 2f, Y: %.2f, Z: %.2f laipsniai/s“%(mpu.gyro))

spausdinti ("Temperatūra: %.2f C" % mpu.temperatūra)

spausdinti ("")

laikas. miegas (1)

kai dabar norime pagreičio X/Y/Z ašyje, galime naudoti:

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

derindami tai su paprastu, jei teiginiu nuolatinėje grandinėje, galime suskaičiuoti sukrėtimų kiekį kelionėje

3 žingsnis: „Adafruit Ultimate Breakout GPS“

„Adafruit Ultimate Breakout“GPS
„Adafruit Ultimate Breakout“GPS

Įvadas

Pertrauka yra sukurta aplink MTK3339 mikroschemų rinkinį, nesąmoningą, aukštos kokybės GPS modulį, galintį sekti iki 22 palydovų 66 kanaluose, turi puikų didelio jautrumo imtuvą (-165 dB sekimas!) Ir įmontuotą anteną. Jis gali atlikti iki 10 vietos atnaujinimų per sekundę, kad būtų galima greitai registruotis, stebėti didelį jautrumą. Energijos suvartojimas yra neįtikėtinai mažas, tik 20 mA navigacijos metu.

Plokštėje yra: itin žemas 3,3 V reguliatorius, kad galėtumėte jį maitinti naudodami 3,3–5 V nuolatinės srovės įvestį, 5 V lygio saugūs įėjimai, Šviesos diodas mirksi maždaug 1 Hz dažniu, kol jis ieško palydovų, ir mirksi kartą per 15 sekundžių, kai pataisoma nustatyta, kad taupo valdžią.

GPS testavimas naudojant arduino

Jei turite prieigą prie arduino, verta išbandyti modulį.

Prijunkite VIN prie +5 V Prijunkite GND prie „Ground“Prijunkite GPS RX (duomenys į GPS) prie skaitmeninio 0 Prijunkite GPS TX (duomenys iš GPS) prie „Digital 1“

Tiesiog paleiskite tuščią arduino kodą ir atidarykite nuoseklųjį monitorių 9600 baudų. Jei gausite GPS duomenis, jūsų GPS modulis veikia. Pastaba: jei jūsų modulis nepadeda pataisyti, pabandykite jį išleisti pro langą arba lauke terasoje

Kad tai veiktų

Pradėkite diegti „adafruit gps“biblioteką naudodami komandą „sudo pip3 install adafruit-circuitpython-gps“.

Dabar galime naudoti šį „python“kodą, kad sužinotume, ar galime tai padaryti:

importuoti laiko importavimo lentą importuoti versiją importuoti adafruit_gpsimport serijinis 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')

nors tiesa:

gps.update (), o ne gps.has_fix:

print (gps.nmea_sentence) print („Laukiama, kol bus ištaisyta …“) gps.update () time.sleep (1) tęsti

print ('=' * 40) # Atspausdinkite skiriamąją liniją.print ('Platuma: {0:.6f} laipsnių'.formatas (gps.latitude)) print (' Ilguma: {0:.6f} laipsnių'.format (gps.longitude)) print ("Fiksuota kokybė: {}". formatas (gps.fix_quality))

# Kai kurie atributai už platumos, ilgumos ir laiko žymos yra neprivalomi# ir gali nebūti. Prieš bandydami naudoti patikrinkite, ar jų nėra! Jei gps.satellites nėra Nėra:

spausdinti ("# palydovai: {}". formatas (gps.satellites))

jei gps.altitude_m nėra Nėra:

print ("Aukštis: {} metrai".formatas (gps.altitude_m))

jei gps.speed_knots nėra Nėra:

spausdinti („Greitis: {} mazgų“.formatas (gps.speed_knots))

jei gps.track_angle_deg nėra Nėra:

spausdinti („Kelio kampas: {} laipsniai“.formatas (gps.track_angle_deg))

jei gps.horizontal_dilution nėra Nėra:

spausdinti („Horizontalus skiedimas: {}“. formatas (gps.horizontal_dilution))

jei gps.height_geoid nėra Nėra:

spausdinti („Aukščio geo ID: {} metrai“.formatas (gps.height_geoid))

laikas. miegas (1)

4 žingsnis: 16x2 LCD

16x2 LCD ekranas
16x2 LCD ekranas

Įvadas

LCD moduliai yra labai dažnai naudojami daugelyje įterptųjų projektų, priežastis yra pigi kaina, prieinamumas ir patogus programuotojas. Daugelis iš mūsų kasdieniame gyvenime būtų susidūrę su šiais ekranais, naudodamiesi PCO arba skaičiuotuvu. 16 × 2 LCD yra pavadintas taip, nes; Jame yra 16 stulpelių ir 2 eilutės. Yra daug derinių, tokių kaip 8 × 1, 8 × 2, 10 × 2, 16 × 1 ir tt, tačiau dažniausiai naudojamas 16 × 2 skystųjų kristalų ekranas. Taigi, iš viso bus (16 × 2 = 32) 32 simboliai ir kiekvienas simbolis bus sudarytas iš 5 × 8 pikselių taškų.

„Smbus“diegimas

Sistemos valdymo magistralė (SMBus) yra daugiau ar mažiau išvestinė I2C magistralė. Standartą sukūrė „Intel“, o dabar jį prižiūri „SBS Forum“. Pagrindinė „SMBus“programa yra stebėti kritinius kompiuterio pagrindinių plokščių ir įterptųjų sistemų parametrus. Pavyzdžiui, yra daug maitinimo įtampos monitoriaus, temperatūros monitoriaus ir ventiliatoriaus monitoriaus/valdymo IC su SMBus sąsaja.

Bibliotekai, kurią naudosime, taip pat reikia įdiegti „smbus“. Norėdami įdiegti „smbus“į „rpi“, naudokite komandą „sudo apt install python3-smbus“.

Kad tai veiktų

pirmiausia įdiekite RPLCD biblioteką naudodami komandą „sudo pip3 install RPLCD“.

dabar mes išbandome LCD, rodydami IP naudodami šį kodą:

iš RPLCD.i2c importuokite „CharLCDimport“lizdą

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

5 žingsnis: Servo, šviesos diodai, mygtukas ir jungiklis

Servo, LED, mygtukas ir jungiklis
Servo, LED, mygtukas ir jungiklis

Įvadas

Servo variklis yra rotacinė pavara arba variklis, leidžiantis tiksliai valdyti kampinę padėtį, pagreitį ir greitį, galimybes, kurių neturi įprastas variklis. Jis naudoja įprastą variklį ir suporuoja jį su jutikliu, kad galėtų grįžti į padėtį. Valdiklis yra sudėtingiausia servo variklio dalis, nes jis yra specialiai sukurtas šiam tikslui.

LED trumpinys-šviesos diodas. Elektroninis puslaidininkinis įtaisas, skleidžiantis šviesą, kai pro jį praeina elektros srovė. Jie yra daug efektyvesni už kaitrines lemputes ir retai perdega. Šviesos diodai naudojami daugelyje programų, tokių kaip plokščiaekraniai vaizdo ekranai, ir vis dažniau naudojami kaip bendri šviesos šaltiniai.

Mygtukas arba tiesiog mygtukas yra paprastas jungiklio mechanizmas, valdantis tam tikrą mašinos ar proceso aspektą. Mygtukai paprastai gaminami iš kietos medžiagos, dažniausiai plastiko ar metalo.

Įjungimo/išjungimo/įjungimo jungiklis turi 3 padėtis, kai vidurinė yra išjungta būsena. Šie tipai dažniausiai naudojami paprastam variklio valdymui, kai turite būseną į priekį, išjungimą ir atgal.

Kad jis veiktų: servo

Servo naudoja PWM signalą, kad nustatytų, koks kampas turi būti mūsų laimei, GPIO turi šią funkciją. Todėl mes galime tiesiog naudoti šį kodą valdydami servo: importuoti RPi. GPI kaip GPIOimporto laikas

servo_pin = 18 pareigų ciklas = 7.5

GPIO.setmode (GPIO. BCM)

GPIO.setup (servo_pin, GPIO. OUT)

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

nors tiesa:

duty_cycle = float (įvestis ("Įveskite darbo ciklą (iš kairės = 5 į dešinę = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)

Kad jis veiktų: šviesos diodas ir jungiklis

Dėl to, kaip prijungėme šviesos diodus ir jungiklį, mums nereikia valdyti ar skaityti šviesos diodų ir patys perjungti. Mes tiesiog siunčiame impulsus mygtuko raganai, savo ruožtu nukreipdami signalą į norimą lemputę.

Kad jis veiktų: mygtukas

Dėl mygtuko mes padarysime savo paprastą klasę tokiu būdu, kad mes lengvai matytume, kada jis paspaudžiamas, nepridedant prie jo įvykio aptikimo kiekvieną kartą, kai jį naudojame. Mes padarysime failą classbutton.py naudodami šį kodą:

iš RPi importo GPIOclass mygtuko:

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

ingedrukt = GPIO.input (self.pin) grąža ne ingedrukt

def on_press (savarankiškai, call_method):

GPIO.add_event_detect (self.pin, GPIO. FALLING, call_method, bouncetime = self.bouncetime)

def on_release (savarankiškai, call_method):

GPIO.add_event_detect (self.pin, GPIO. RISING, call_method, bouncetime = self.bouncetime)

6 žingsnis: visa grandinė

Pilna grandinė
Pilna grandinė
Pilna grandinė
Pilna grandinė

Dabar, kai peržiūrėjome visus komponentus, laikas juos visus sujungti.

Nors nuotraukos rodo, kad komponentai rodo viską, kas yra pačioje duonos lentelėje, geriau, kad LCD, „adafruit“GPS ir mygtukas būtų prijungti naudojant laidus iš moterų ir vyrų. Tik „t-cobbler“ir „mpu6050“pritvirtinkite prie lentos. Kai kalbama apie LED ir jungiklį naudokite ilgesnius laidus, kad įsitikintumėte, jog galite pasiekti mirksėjimo strypus ir vairo juostą.

7 žingsnis: Kodas

Kad ši instrukcija būtų švari, aš pateikiau „github“saugyklą ir su galiniais, ir su priekiniais sąsajos failais. Tiesiog įdėkite failus į priekinės sistemos aplanką aplanke/var/www/html aplankas [vartotojo vardas]/[aplanko vardas]

8 žingsnis: duomenų bazė

Duomenų bazė
Duomenų bazė

Dėl šios sistemos nustatymo yra paprasta internetinė parduotuvė, sukurta naudojant duomenų bazės produktų sąrašą, be to, čia yra išsaugoti visi kelio taškai ir užsakymai. Sukūrimo scenarijų galima rasti „github“saugykloje, esančioje nuorodoje Kitas žingsnis

9 žingsnis: atvejis

Byla
Byla

Kai žinome elektronikos darbą, galime juos sudėti į dėžutę. Tai galite padaryti kūrybiškai. Prieš statydami, tiesiog paimkite kartoninę dėžę, kurios jums nebereikia, pavyzdžiui, tuščią javų dėžutę, ir supjaustykite, užklijuokite ir sulenkite, kol turėsite tai, kas jums patinka. Išmatuokite ir nupieškite dėklą ant popieriaus lapo ir padarykite jį iš tvirtesnės medžiagos, pvz., medžio, arba, jei tai ne jūsų dalykas, atspausdinkite 3D. Tiesiog įsitikinkite, kad visa elektronika telpa viduje ir jūs turite skyles mygtukui, vielai, einančiai prie jungiklio, šviesos diodams ir LCD. Kai padarysite savo dėklą, jums tereikia rasti būdą, kaip jį pritvirtinti prie dviračio ar paspirtuko

Rekomenduojamas: