Мазмуну:

Чакан дүкөндөр үчүн Track & Trace: 9 кадам (Сүрөттөр менен)
Чакан дүкөндөр үчүн Track & Trace: 9 кадам (Сүрөттөр менен)

Video: Чакан дүкөндөр үчүн Track & Trace: 9 кадам (Сүрөттөр менен)

Video: Чакан дүкөндөр үчүн Track & Trace: 9 кадам (Сүрөттөр менен)
Video: Женщина Маньяк. Её так и не поймали [Расследование] 2024, Июль
Anonim
Чакан дүкөндөр үчүн Track & Trace
Чакан дүкөндөр үчүн Track & Trace

Бул электрондук велосипеддерге же электрондук скутерлерге орнотулушу керек болгон чакан дүкөндөр үчүн жасалган система, мисалы, токоч жеткирүүнү каалаган наабайкана.

Track and Trace эмнени билдирет?

Track and trace - бул жүк ташуучулар же курьердик компаниялар ташуу учурунда посылкалардын же буюмдардын кыймылын жазуу үчүн колдонуучу система. Ар бир иштетүү жеринде товарлар идентификацияланып, борбордук иштетүү системасына маалымат өткөрүлөт. Бул маалыматтар андан кийин жүк жөнөтүүчүлөргө товарлардын жайгашуу статусун/жаңыртуусун берүү үчүн колдонулат.

Биз жасай турган система ошондой эле алынган маршрутту жана алынган соккулар менен бүдүрлөрдүн көлөмүн көрсөтөт.

Эскертүү: бул мектеп долбоору үчүн жасалган, ошондуктан убакыттын тардыгынан улам жакшыртуу үчүн көп мүмкүнчүлүктөр бар

Жабдуулар

-Raspberry Pi 4 модели В.

-Raspberry PI T-өтүкчү

-4x 3, 7V Li-ion батареялары

-2х кош батарея кармагыч

-DC Buck Step-Down Converter 5v

-2x чоң апельсин леддери

-күйгүзүү/өчүрүү/күйгүзүү

-баскыч

-adafruit ultimate gps v3

-mpu6050

-16x2 лкд дисплей

-сервистик мотор

1 -кадам: Районду жана Пиди кубаттоо

Районду жана Пиди кубаттоо
Районду жана Пиди кубаттоо
Районду жана Пиди кубаттоо
Районду жана Пиди кубаттоо

Батарея менен пи схемасын иштетүүгө келгенде, сизде муну кантип жасоо боюнча бир нече вариант бар.

Сиз кубат банкын колдонуп, пиди USB аркылуу кубаттап койсоңуз болот, балким сиз USB порту бар электрондук велосипедге же электрондук скутерге орнотуп жаткандырсыз, балким сизде 5В телефондун батарейкасы колдонулууну күтүп жатат же сиз 2 колдонсоңуз болот 3.7V батарейкаларынын топтомдору сүрөттөрдө көрсөтүлгөндөй конвертор менен бирге

Үзгүлтүксүз 5В камсыз кыла алса жана өмүр бою бактылуу болсоңуз, баары жакшы.

2 -кадам: MPU6050

MPU6050
MPU6050

MPU6050 сенсор модулу 6 огунун кыймылын көзөмөлдөөчү түзмөк.

  • Бул 3 октук гироскоп, 3 огу акселерометр, санарип кыймыл процессору жана температура сенсоруна ээ, бардыгы бир ICде.
  • I2C байланышын колдонуу менен кээ бир реестрлердин даректеринен маанилерди окуу аркылуу ар кандай параметрлерди табууга болот. Гироскоп жана акселерометрдин окулушу боюнча X, Y жана Z огу боюнча 2нин толуктоочу формасында болот.
  • Гироскоптун көрсөткүчтөрү секундасына градус (dps) бирдиги; Акселерометрдин көрсөткүчтөрү бирдикте.

I2C иштетүү

Raspberry Pi менен MPU6050 колдонууда биз Raspberry Piдеги I2C протоколунун күйгүзүлгөндүгүн камсыз кылышыбыз керек.

  1. "sudo raspi-config" териңиз
  2. Interfacing Configurations тандаңыз
  3. Интерфейс опциясында "I2C" тандаңыз
  4. I2C конфигурациясын иштетүү
  5. Кайра жүктөөнү сураганда Ооба тандаңыз.

Эми, i2c куралдарын орнотуу менен биздин Raspberry Pi тактасына туташкан I2C түзмөгүн сынап/сканерлей алабыз. Апп пакет менеджеринин жардамы менен i2c куралдарын ала алабыз. Raspberry Pi терминалында төмөнкү буйрукту колдонуңуз.

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

Эми I2C негизиндеги каалаган түзмөктү колдонуучу режиминдеги портко туташтырып, төмөнкү команданы колдонуу менен ошол портту сканерлеңиз, "sudo i2cdetect -y 1"

Андан кийин ал түзмөктүн дареги менен жооп берет.

Эгерде эч кандай дарек кайтарылбаса, MPU6050 туура туташып турганын текшерип, кайра аракет кылыңыз

Иштетүү

i2c иштетилгенине жана пи MPU6050ге жете ала турганына азыр биз "sudo pip3 install adafruit-circuitpython-mpu6050" буйругун колдонуп китепкана орнотобуз.

Эгерде биз python тест файлын түзсөк жана төмөнкү кодду колдонсок, анын иштеп жаткандыгын көрө алабыз:

импорттоо убактысы

импорт тактасы

busi импорттоо

609. Кыязы

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

mpu = adafruit_mpu6050. MPU6050 (i2c)

чын болсо:

басып чыгаруу ("Ылдамдануу: X: %. 2f, Y: %.2f, Z: %.2f m/s^2" %(mpu.acceleration))

басып чыгаруу ("Gyro X: %. 2f, Y: %.2f, Z: %.2f градус/с" %(mpu.gyro))

басып чыгаруу ("Температура: %.2f С" % mpu.temperature)

басып чыгаруу ("")

убакыт.уйку (1)

биз азыр X/Y/Z огунда ылдамдатууну кааласак, биз төмөнкүлөрдү колдоно алабыз:

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

муну үзгүлтүксүз циклдеги жөнөкөй if билдирүүсү менен айкалыштырып, биз сапардагы соккунун санын эсептей алабыз

3 -кадам: Adafruit Ultimate Breakout GPS

Adafruit Ultimate Breakout GPS
Adafruit Ultimate Breakout GPS

Киришүү

Үзүлүш MTK3339 чипсетинин айланасында курулган, 66 каналда 22 спутникке чейин байкоо жүргүзө ала турган, эч нерсеге жарабаган, жогорку сапаттагы GPS модулу, жогорку сезгичтикке ээ болгон кабыл алгычы (-165 дБ трекинг!), Жана антеннага орнотулган. Ал жогорку ылдамдыкта, жогорку сезгичтикке кирүү же байкоо үчүн секундасына 10го чейин жаңыртууларды жасай алат. Кубатты колдонуу укмуштай төмөн, навигация учурунда болгону 20 мА.

Такта менен келет: өтө төмөн 3.3V жөнгө салгыч, сиз аны 3.3-5VDC менен, 5В деңгээлдеги коопсуз киргизүүлөр менен кубаттай аласыз, LED болжол менен 1 Гцте жанып турат, ал спутниктерди издеп жатканда жана оңдоо болгондо 15 секундда бир ирет жарк этет. бийликти сактап калганы аныкталды.

GPSти arduino менен текшерүү

Эгерде сизде arduinoго кирүү мүмкүнчүлүгү болсо, аны менен модулду сыноо жакшы.

VINди +5Vга туташтырыңыз GNDге Groundга туташтырыңыз GPS RXти (GPSке берилиштерди) Санарипке 0 GPSке туташтырыңыз GPSтен маалыматтар) санарип 1ге

Жөн эле бош arduino кодун иштетип, 9600 baud боюнча сериялык мониторду ачыңыз. Эгерде сиз GPS маалыматын алсаңыз, сиздин GPS модулуңуз иштейт. Эскертүү: эгер сиздин модулуңуз оңдобосо, аны терезеден же сыртта террасага коюп көрүңүз

Иштетүү

"Sudo pip3 орнотуу adafruit-circuitpython-gps" буйругун колдонуу менен adafruit gps китепканасын орнотууну баштаңыз.

Эми биз төмөнкү питон кодун колдонуп, аны иштете аларыбызды көрө алабыз:

импорт убактысы импорт тактасы импорт busioimport adafruit_gpsimport serial uart = serial. Serial ("/dev/ttyS0", baudrate = 9600, таймут = 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')

чын болсо:

gps.has_fix эмес, gps.update ():

басып чыгаруу (gps.nmea_sentence) басып чыгаруу ('Оңдоо күтүлүүдө…') gps.update () убакыт.уйку (1) улантуу

басып чыгаруу ('=' * 40) # Бөлүүчү линияны басып чыгаруу.печать ('Кеңдик: {0:.6f} градус'.формат (gps.latitude)) басып чыгаруу ('Узундук: {0:.6f} градус'.формат) (gps.longitude)) басып чыгаруу ("Fix quality: {}". format (gps.fix_quality))

# Кеңдиктен, узундуктан жана убакыт белгисинен тышкары кээ бир атрибуттар милдеттүү эмес# жана жок болушу мүмкүн. Колдонууга аракет кылардан мурун алар жок экенин текшериңиз! Эгер gps.satellites None болбосо:

басып чыгаруу ("# спутниктер: {}". формат (gps.satellites))

эгер gps.altitude_m None болбосо:

басып чыгаруу ("Бийиктик: {} метр". формат (gps.altitude_m))

эгер gps.speed_knots None болбосо:

басып чыгаруу ("Ылдамдык: {} түйүндөр". формат (gps.speed_knots))

эгер gps.track_angle_deg None болбосо:

басып чыгаруу ("Трек бурчу: {} градус".формат (gps.track_angle_deg))

эгер gps.horizontal_dilution None эмес:

басып чыгаруу ("Горизонталдуу суюлтуу: {}". формат (gps.horizontal_dilution))

эгер gps.height_geoid None болбосо:

басып чыгаруу ("Бийиктик гео ID: {} метр".формат (gps.height_geoid))

убакыт.уйку (1)

4 -кадам: 16x2 ЖК

16x2 LCD
16x2 LCD

Киришүү

ЖК модулдары көбүнчө көпчүлүк камтылган долбоорлордо колдонулат, себеби анын арзан баасы, жеткиликтүүлүгү жана программистке ыңгайлуу болушу. Көбүбүз күнүмдүк жашообузда бул дисплейлерге кезигишмекпиз, же PCO же калкуляторлордо.16 × 2 ЖК ушундай аталып калган, анткени; анын 16 мамычасы жана 2 сабы бар. Айкалыштар көп, 8 × 1, 8 × 2, 10 × 2, 16 × 1, ж. Ошентип, ал (16 × 2 = 32) 32 белгиден турат жана ар бир символ 5 × 8 Пикселдик чекиттерден турат.

Smbus орнотулууда

System Management Bus (SMBus) аздыр -көптүр I2C автобустун туундусу. Стандарт Intel тарабынан иштелип чыккан жана азыр SBS Forum тарабынан сакталып турат. SMBusтун негизги тиркемеси - бул компьютердин аналык платаларындагы жана камтылган системалардагы маанилүү параметрлерди көзөмөлдөө. Мисалы, SMBus интерфейси бар көптөгөн чыңалуу монитору, температура монитору жана күйөрман монитор/контролдук ICлер бар.

Биз колдоно турган китепкана smbusты дагы орнотушу керек. Rbusта smbus орнотуу үчүн "sudo apt install python3-smbus" командасын колдонуңуз.

Иштетүү

биринчиден "sudo pip3 install RPLCD" буйругун колдонуп RPLCD китепканасын орнотуңуз.

Эми биз төмөнкү кодду колдонуп IPти көрсөтүү менен LCDди текшеребиз:

RPLCD.i2c импорттук 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 () ip_adress кайтуу

lcd = CharLCD ('PCF8574', 0x27)

lcd.write_string ('IP дареги: / r / n'+str (get_ip_address ()))

5 -кадам: Servo, Leds, Button and Switch

Servo, Leds, Button жана Switch
Servo, Leds, Button жана Switch

Киришүү

Серво мотору - бул кадимки мотордо жок болгон бурчтук абал, ылдамдык жана ылдамдык боюнча так башкарууга мүмкүндүк берүүчү кыймылдаткыч же кыймылдаткыч. Бул кадимки моторду колдонот жана аны позицияны кайтаруу үчүн сенсор менен жуптайт. Контроллер серво моторунун эң татаал бөлүгү, анткени ал атайын ушул максатта иштелип чыккан.

Жарык диод үчүн LED кыска. Электр жарым өткөргүч түзүлүш, ал аркылуу электр тогу өткөндө жарык чыгарат. Алар лампаларга караганда кыйла эффективдүү жана сейрек күйүп кетет. Жарык диоддор жалпак экрандуу дисплейлер сыяктуу көптөгөн тиркемелерде колдонулат жана барган сайын жалпы жарык булактары катары колдонулат.

Баскыч же жөн эле баскыч-бул машинанын же процесстин кайсы бир жагын көзөмөлдөө үчүн жөнөкөй которуу механизми. Баскычтар адатта катуу материалдан, көбүнчө пластиктен же металлдан жасалат.

Күйгүзүү/өчүрүү/күйгүзүү 3 позицияга ээ, мында ортоңку абал өчүк абал, бул типтер негизинен моторду жөнгө салуу үчүн колдонулат, анда сизде алдыга, өчүк жана артка абал бар.

Иштетүү: серво

Серво PWM сигналын колдонот, бул биз үчүн бактыга жараша кандай бурч болушу керектигин аныктоо үчүн GPIO бул функцияга ээ, ошондуктан биз жөн эле сервону көзөмөлдөө үчүн төмөнкү кодду колдоно алабыз: GPIO импорт убактысы катары RPi. GPIO.

servo_pin = 18duty_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)

чын болсо:

duty_cycle = float (киргизүү ("Милдеттүү циклге кирүү (Солго = 5тен Оңго = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)

Иштетүү: жетектөөчү жана которгуч

Улам биз зымдарды жана зымдарды өткөргүчтүн жардамы менен ледтерди көзөмөлдөп же окуп, өзүбүздү которуунун кажети жок. Биз жөн эле баскычтын бакшысына импульстарды жөнөтөбүз, бул болсо сигналды биз каалаган жолго алып барат.

Иштетүү: баскыч

Кнопка үчүн биз өзүбүздүн жөнөкөй классты ушундай кылабыз, ошондо биз аны колдонгон сайын, окуяны кошпостон, анын басылганын оңой көрө алабыз. Classbutton.py файлын төмөнкү кодду колдонуп жасайбыз:

RPi импорттук GPIOclass баскычынан:

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 басылган (өзүн өзү):

ingedrukt = GPIO.input (self.pin) кайтаруу ingedrukt эмес

def on_press (өзүнчө, call_method):

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

def on_release (өзүнчө, call_method):

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

6 -кадам: Толук микросхема

Толук Circuit
Толук Circuit
Толук Circuit
Толук Circuit

Эми биз бардык компоненттерди карап чыгып, алардын бардыгын бириктирүү убактысы келди.

Сүрөттөр компоненттердин бардыгын экранда көрсөтөт, ал эми экранда lcd, adafruit GPS жана баскычы бар. Эркек зымдарга ургаачы менен гана туташкан. Узун зымдарды колдонуп, жаркыроо тилкесине жана рулга жетиңиз.

7 -кадам: Кодекс

Бул нускамалуу тазалыкты сактоо үчүн мен backend жана frontend файлдары менен github репозиторийин камсыз кылдым. [username]/[foldername] папкасы

8 -кадам: Маалыматтар базасы

Маалыматтар базасы
Маалыматтар базасы

Бул системанын орнотулушунан улам, маалымат базасындагы продуктулардын тизмесин колдонуу менен орнотулган жөнөкөй веб -дүкөн бар, мындан тышкары бизде бул жерде сакталган бардык пункттар жана буйрутмалар бар. кийинки кадам

9 -кадам: Дело

Case
Case

Электрониканын ишин билгенден кийин биз аларды кутуга салып алабыз. Сиз муну менен чыгармачыл эркиндикке ээ боло аласыз. Аны курардан мурун, мисалы, бош эгин кутусуна окшоп кереги жок болгон картон кутучаны кармап алып, кесип алыңыз. жана сиз каалаган нерсеге ээ болгонго чейин бүктөп коюңуз. Капчыгыңызды кагазга түшүрүп, жыгач сыяктуу бышык материалдан жасаңыз, же бул сиздин принтериңиз болбосо, аны 3d кылып басып чыгарыңыз. Сизде баскычтын тешиктери бар, зым которгучка, LED жана lcd. Once сиз өзүңүздүн ишиңизди велосипедге же мотороллерге орнотуунун жолун табуу үчүн гана кылдыңыз.

Сунушталууда: