Съдържание:

Проследяване и проследяване за малки магазини: 9 стъпки (със снимки)
Проследяване и проследяване за малки магазини: 9 стъпки (със снимки)

Видео: Проследяване и проследяване за малки магазини: 9 стъпки (със снимки)

Видео: Проследяване и проследяване за малки магазини: 9 стъпки (със снимки)
Видео: 5 Яки Трика за iPhone, които НЕ ЗНАЕТЕ! 2024, Ноември
Anonim
Проследяване и проследяване за малки магазини
Проследяване и проследяване за малки магазини

Това е система, която е създадена за малки магазини, които се предполага да се монтират на електронни велосипеди или електронни скутери за доставки на къси разстояния, например пекарна, която иска да доставя сладкиши.

Какво означава Track and Trace?

Проследяване е система, използвана от превозвачи или куриерски компании за записване на движението на колети или пратки по време на транспортиране. На всяко място за обработка стоките се идентифицират и данните се предават към централната система за обработка. След това тези данни се използват за предоставяне на състояние/актуализация на местоположението на стоката на изпращачите.

Системата, която ще направим, също ще покаже изминатия маршрут и размера на получените удари и удари. Тези инструкции също предполагат, че имате основни познания за малинов pi, python и mysql.

забележка: това е направено за училищен проект, поради което поради ограниченото време има много място за подобрения

Консумативи

-Maslin Pi 4 модел B

-Малина PI T-обущар

-4x 3, 7V литиево-йонни батерии

-2x двоен държач на батерията

-DC Buck Стъпкав конвертор 5v

-2x големи оранжеви светодиоди

-включване/изключване/включване

-бутон

-adafruit ultimate gps v3

-mpu6050

-16x2 LCD дисплей

-серво мотор

Стъпка 1: Захранване на веригата и Pi

Захранване на веригата и Pi
Захранване на веригата и Pi
Захранване на веригата и Pi
Захранване на веригата и Pi

Що се отнася до захранването на веригата pi с батерия, имате няколко опции как да го направите.

Можете да използвате powerbank и да захранвате pi чрез USB, може би монтирате устройството на e-bike или e-scooter, който има USB порт, може би имате 5V батерия на телефона, чакаща да бъде използвана, или можете да използвате 2 комплекти от 3.7V батерии паралелно с понижаващ преобразувател, както е показано на снимките

Всичко е наред, стига да може да осигури непрекъснато 5V и да има цял живот, от който сте доволни.

Стъпка 2: MPU6050

MPU6050
MPU6050

Въведение MPU6050 сензорният модул е интегрирано 6-осно устройство за проследяване на движение.

  • Той разполага с 3-осен жироскоп, 3-осен акселерометър, цифров процесор за движение и температурен сензор, всичко в една IC.
  • Различни параметри могат да бъдат намерени чрез четене на стойности от адреси на определени регистри, използвайки I2C комуникация. Четенето на жироскоп и акселерометър по осите X, Y и Z са достъпни под формата на 2 за допълване.
  • Показанията на жироскопа са в единица в градуси в секунда (dps); Показанията на акселерометъра са в g единица.

Активиране на I2C

Когато използвате MPU6050 с Raspberry Pi, трябва да се уверим, че протоколът I2C на Raspberry Pi е включен. За да направите това, отворете терминала на pi чрез шпакловка или друг софтуер и направете следното:

  1. въведете "sudo raspi-config"
  2. Изберете Interfacing Configurations
  3. В опцията Interfacing изберете „I2C“
  4. Активирайте I2C конфигурацията
  5. Изберете Да, когато поиска да рестартирате.

Сега можем да тестваме/сканираме за всяко I2C устройство, свързано към нашата платка Raspberry Pi, като инсталираме i2c инструменти. Можем да получим i2c инструменти, като използваме apt package manager. Използвайте следната команда в терминала Raspberry Pi.

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

Сега свържете всяко устройство, базирано на I2C, към порта за потребителски режим и сканирайте този порт, като използвате следната команда, "sudo i2cdetect -y 1"

Тогава той ще отговори с адреса на устройството.

Ако не е върнат адрес, уверете се, че MPU6050 е правилно свързан и опитайте отново

Правейки работа

сега, когато сме сигурни, че i2c е активиран и pi може да достигне MPU6050, ще инсталираме библиотека с помощта на командата "sudo pip3 install adafruit-circuitpython-mpu6050".

ако направим тестов файл на python и използваме следния код, можем да видим дали работи:

време за импортиране

борда за внос

внос на бизнес

oimport adafruit_mpu6050

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

mpu = adafruit_mpu6050. MPU6050 (i2c)

докато е вярно:

печат ("Ускорение: X: %. 2f, Y: %.2f, Z: %.2f m/s^2" %(mpu. ускорение))

печат ("Жироскоп X: %. 2f, Y: %.2f, Z: %.2f градуса/s" %(mpu.gyro))

печат ("Температура: %.2f C" % mpu.температура)

print ("")

time.sleep (1)

когато сега искаме ускорението по оста X/Y/Z, можем да използваме следното:

ускорениеX = mpu.акселерация [0] ускорениеY = mpu.ускорение [1] ускорениеZ = mpu.ускорение [2]

комбинирайки това с просто изявление if в постоянен цикъл, можем да преброим количеството шокове при пътуване

Стъпка 3: Adafruit Ultimate Breakout GPS

Adafruit Ultimate Breakout GPS
Adafruit Ultimate Breakout GPS

Въведение

Пробивът е изграден около чипсета MTK3339, безсмислен, висококачествен GPS модул, който може да проследява до 22 спътника по 66 канала, има отличен приемник с висока чувствителност (-165 dB проследяване!) И вградена антена. Той може да прави до 10 актуализации на местоположение в секунда за висока скорост, високочувствително регистриране или проследяване. Консумацията на енергия е изключително ниска, само 20 mA по време на навигация.

Платката се доставя с: ултра-нисък отпадащ 3.3V регулатор, така че можете да го захранвате с 3.3-5VDC вход, 5V ниво на безопасни входове, светодиодът мига на около 1Hz, докато търси сателити и мига веднъж на всеки 15 секунди, когато е поправено установено, че пести енергия.

Тестване на gps с arduino

Ако имате достъп до arduino, добра идея е да тествате модула с него.

Свържете VIN към +5V Свържете GND към GroundConnect GPS RX (данни в GPS) към Digital 0Connect GPS TX (данни от GPS) към Digital 1

Просто стартирайте празен код на arduino и отворете серийния монитор на 9600 бода. Ако получите данни за GPS, вашият GPS модул работи.

Правейки работа

Започнете да инсталирате библиотеката на adafruit gps, като използвате командата "sudo pip3 install adafruit-circuitpython-gps".

Сега можем да използваме следния код на python, за да видим дали можем да го накараме да работи:

време за импортиране борд за импортиране busioimport adafruit_gpsimport сериен 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')

докато е вярно:

gps.update (), а не gps.has_fix:

print (gps.nmea_sentence) print ('Изчакване за поправка …') gps.update () time.sleep (1) продължи

print ('=' * 40) # Отпечатайте разделител line.print ('Latitude: {0:.6f} градуса'. format (gps.latitude)) print ('Longitude: {0:.6f} градуса'. (gps.longitude)) print ("Качество на поправка: {}". формат (gps.fix_quality))

# Някои атрибути извън географската ширина, дължина и времевата отметка са незадължителни# и може да не присъстват. Проверете дали не са, преди да опитате да използвате! Ако gps.satellites не е None:

print ("# сателити: {}". формат (gps.satellites))

ако gps.altitude_m не е None:

print ("Надморска височина: {} метра".format (gps.altitude_m))

ако gps.speed_knots не е None:

print ("Скорост: {} възела".format (gps.speed_knots))

ако gps.track_angle_deg не е None:

print ("ъгъл на проследяване: {} градуса".format (gps.track_angle_deg))

ако gps.horizontal_dilution не е None:

print ("Хоризонтално разреждане: {}". формат (gps.horizontal_dilution))

ако gps.height_geoid не е None:

print ("Географски идентификатор на височина: {} метра".format (gps.height_geoid))

time.sleep (1)

Стъпка 4: 16x2 LCD

16x2 LCD
16x2 LCD

Въведение

LCD модулите са много често използвани в повечето вградени проекти, като причината е ниската им цена, наличността и удобството на програмистите. Повечето от нас биха се сблъскали с тези дисплеи в ежедневието си, било то в PCO или калкулатори. 16 × 2 LCD е кръстен така, защото; има 16 колони и 2 реда. Налични са много комбинации като, 8 × 1, 8 × 2, 10 × 2, 16 × 1 и т.н., но най -използваната е 16 × 2 LCD. Така че, той ще има (16 × 2 = 32) общо 32 знака и всеки знак ще бъде направен от 5 × 8 пикселни точки.

Инсталиране на smbus

Шината за управление на системата (SMBus) е горе -долу производна на I2C шината. Стандартът е разработен от Intel и сега се поддържа от SBS Forum. Основното приложение на SMBus е да наблюдава критични параметри на дънните платки на компютри и във вградените системи. Например има много монитори за захранващо напрежение, температурен монитор и контролни/контролни интегрални схеми на вентилатора с интерфейс SMBus.

Библиотеката, която ще използваме, също изисква инсталиране на smbus. За да инсталирате smbus на rpi, използвайте командата "sudo apt install python3-smbus".

Правейки работа

първо инсталирайте библиотеката RPLCD с помощта на командата "sudo pip3 install RPLCD".

сега тестваме lcd, като показваме ip, използвайки следния код:

от 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_address

lcd = CharLCD ('PCF8574', 0x27)

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

Стъпка 5: Серво, светодиоди, бутон и превключвател

Серво, светодиоди, бутон и превключвател
Серво, светодиоди, бутон и превключвател

Въведение

Сервомоторът е въртящ се задвижващ механизъм или двигател, който позволява прецизен контрол по отношение на ъгловото положение, ускорението и скоростта, възможности, които обикновеният двигател няма. Той използва обикновен двигател и го свързва със сензор за обратна връзка за позицията. Контролерът е най -сложната част от серво мотора, тъй като е специално проектиран за целта.

LED кратък за светодиод. Електронно полупроводниково устройство, което излъчва светлина, когато през него преминава електрически ток. Те са значително по -ефективни от крушките с нажежаема жичка и рядко изгарят. Светодиодите се използват в много приложения, като например видео дисплеи с плосък екран, и все повече като общи източници на светлина.

Бутонът или просто бутонът е прост механизъм за превключване, който контролира някои аспекти на машина или процес. Бутоните обикновено са изработени от твърд материал, обикновено пластмаса или метал.

Превключвателят за включване/изключване/включване има 3 позиции, където средното е в състояние на изключване, тези видове се използват най -вече за просто управление на двигателя, когато имате състояние напред, изключване и заден ход.

За да работи: серво

Сервото използва PWM сигнал, за да определи под какъв ъгъл трябва да бъде за щастие за нас GPIO има вградена тази функция. Следователно можем просто да използваме следния код за управление на серво: импортиране на RPi. GPIO като 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 (input ("Enter Duty Cycle (Left = 5 to Right = 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 натиснат (self):

ingedrukt = GPIO.input (self.pin) връщане не 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)

Стъпка 6: Пълният кръг

Пълната схема
Пълната схема
Пълният кръг
Пълният кръг

Сега, когато разгледахме всички компоненти, е време да ги комбинираме.

Докато снимките показват, че компонентите показват всичко на самата платка, по-добре е да имате LCD, adafruit GPS и бутон, свързани с женски към мъжки проводници. използвайте по -дълги проводници, за да сте сигурни, че можете да достигнете до мигачите и кормилната лента.

Стъпка 7: Кодът

За да поддържам тази инструкция чиста, осигурих хранилище на github както с бекенд, така и с интерфейсни файлове. Просто поставете файловете във външната папка в/var/www/html папката и файловете в задната папка в папка в/home/ [потребителско име]/[име на папка] папка

Стъпка 8: Базата данни

Базата данни
Базата данни

Поради начина, по който е създадена тази система, има прост уеб магазин, настроен с помощта на списък с продукти в база данни, освен това тук имаме всички точки и поръчки, запазени тук. Следваща стъпка

Стъпка 9: Делото

Случаят
Случаят

След като разберем, че електрониката работи, можем да я поставим в кутия. Можете да си дадете творческа свобода с това. Преди да я конструирате, просто вземете картонена кутия, от която вече нямате нужда, като празна кутия за зърнени култури например и я изрежете, залепете и го сгънете, докато имате нещо, което харесвате. Измерете и нарисувайте кутията си върху лист хартия и я направете от по -здрав материал като дърво, или ако това не е вашето нещо, го отпечатайте 3D. Просто се уверете, че цялата електроника се побира вътре и имате дупки за бутона, проводника към превключвателя, светодиодите и LCD.

Препоръчано: