Оглавление:
- Запасы
- Шаг 1: питание схемы и пи
- Шаг 2: MPU6050
- Шаг 3: GPS-навигатор Adafruit Ultimate Breakout
- Шаг 4: ЖК-дисплей 16x2
- Шаг 5: сервопривод, светодиоды, кнопка и переключатель
- Шаг 6: Полная схема
- Шаг 7: Код
- Шаг 8: База данных
- Шаг 9: Дело
Видео: Отслеживание для небольших магазинов: 9 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Это система, предназначенная для небольших магазинов, которую предполагается установить на электронные велосипеды или электросамокаты для доставки на короткие расстояния, например, в пекарню, которая хочет доставлять выпечку.
Что означает «Отслеживание и отслеживание»?
Отслеживание и отслеживание - это система, используемая перевозчиками или курьерскими компаниями для регистрации движения посылок или предметов во время транспортировки. В каждом месте обработки товары идентифицируются, а данные передаются в центральную систему обработки. Эти данные затем используются для предоставления отправителям статуса / обновления местоположения товаров.
Система, которую мы создадим, также покажет пройденный маршрут и количество полученных ударов и ударов. Эта инструкция также предполагает, что у вас есть базовые знания о Raspberry Pi, Python и MySQL.
примечание: это было сделано для школьного проекта, поэтому из-за нехватки времени есть много возможностей для улучшения
Запасы
-Raspberry Pi 4 модель B
-Raspberry PI T-cobbler
-4x 3,7 В литий-ионных аккумулятора
-2x двойной держатель батареи
Понижающий понижающий преобразователь постоянного тока 5 В
-2 больших оранжевых светодиода
-переключатель включения / выключения
-кнопка
-adafruit Ultimate GPS v3
-mpu6050
-16x2 жк-дисплей
-серводвигатель
Шаг 1: питание схемы и пи
Когда дело доходит до питания схемы pi от батареи, у вас есть несколько вариантов, как это сделать.
Вы можете использовать внешний аккумулятор и питать пи через USB, возможно, вы устанавливаете устройство на электронный велосипед или электросамокат с USB-портом, возможно, у вас есть телефонная батарея на 5 В, ожидающая использования, или вы можете использовать 2 комплекты батарей 3,7 В параллельно с понижающим преобразователем, как показано на фотографиях
Все в порядке, если оно может обеспечивать постоянное напряжение 5 В и иметь срок службы, которым вы довольны.
Шаг 2: MPU6050
Введение Модуль датчика MPU6050 представляет собой интегрированное 6-осевое устройство слежения за движением.
- Он оснащен 3-осевым гироскопом, 3-осевым акселерометром, цифровым процессором движения и датчиком температуры - все в одной микросхеме.
- Различные параметры могут быть найдены путем считывания значений из адресов определенных регистров с использованием связи I2C. Показания гироскопа и акселерометра по осям X, Y и Z доступны в форме дополнения до двух.
- Показания гироскопа выражаются в градусах в секунду (дпс); Показания акселерометра выражены в единицах g.
Включение I2C
При использовании MPU6050 с Raspberry Pi мы должны убедиться, что протокол I2C на Raspberry Pi включен. Для этого откройте терминал Pi через замазку или другое программное обеспечение и выполните следующие действия:
- введите "sudo raspi-config"
- Выберите конфигурации взаимодействия
- В опции «Интерфейс» выберите «I2C».
- Включить конфигурацию I2C
- Выберите Да, когда появится запрос на перезагрузку.
Теперь мы можем тестировать / сканировать любое устройство I2C, подключенное к нашей плате Raspberry Pi, установив инструменты i2c. Мы можем получить инструменты i2c, используя менеджер пакетов apt. Используйте следующую команду в терминале 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)
в то время как True:
print ("Ускорение: X:%. 2f, Y:%.2f, Z:%.2f м / с ^ 2"% (mpu.acceleration))
print ("Гироскоп X:%. 2f, Y:%.2f, Z:%.2f градусов / с"% (mpu.gyro))
print ("Температура:%.2f C"% mpu.температура)
Распечатать("")
время сна (1)
когда теперь нам нужно ускорение по оси X / Y / Z, мы можем использовать следующее:
AccelX = mpu.acceleration [0] AccelY = mpu.acceleration [1] AccelZ = mpu.acceleration [2]
объединив это с простым оператором if в постоянном цикле, мы можем подсчитать количество ударов за поездку
Шаг 3: GPS-навигатор Adafruit Ultimate Breakout
Вступление
Этот прорыв построен на чипсете MTK3339, серьезном высококачественном модуле GPS, который может отслеживать до 22 спутников на 66 каналах, имеет отличный высокочувствительный приемник (отслеживание -165 дБ!) И встроенную антенну.. Он может выполнять до 10 обновлений местоположения в секунду для высокоскоростной и высокочувствительной регистрации или отслеживания. Энергопотребление невероятно низкое, всего 20 мА во время навигации.
Плата поставляется с: стабилизатором 3,3 В со сверхнизким падением напряжения, поэтому вы можете подключить его к входу 3,3-5 В постоянного тока, безопасные входы уровня 5 В, светодиод мигает примерно с частотой 1 Гц во время поиска спутников и мигает каждые 15 секунд, когда требуется исправление. найдено для экономии энергии.
Тестирование GPS с помощью Arduino
Если у вас есть доступ к Arduino, рекомендуется протестировать модуль с ним.
Подключите VIN к + 5V Подключите GND к земле Подключите GPS RX (данные в GPS) к цифровому 0 Подключите GPS TX (данные от GPS) к цифровому 1
Просто запустите пустой код Arduino и откройте последовательный монитор на 9600 бод. Если вы получаете данные GPS, ваш модуль GPS работает. Примечание: если ваш модуль не исправлен, попробуйте вынести его из окна или на террасу.
Заставить это работать
Начало установки библиотеки adafruit gps с помощью команды «sudo pip3 install adafruit-circuitpython-gps».
Теперь мы можем использовать следующий код Python, чтобы увидеть, сможем ли мы заставить его работать:
import timeimport board import busioimport adafruit_gpsimport serial 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')
в то время как True:
gps.update (), а не gps.has_fix:
print (gps.nmea_sentence) print ('В ожидании исправления…') gps.update () time.sleep (1) continue
print ('=' * 40) # Распечатать разделительную линию. print ('Широта: {0:.6f} градусов'.format (gps.latitude)) print (' Долгота: {0:.6f} градусов'.format (gps.longitude)) print ("Исправить качество: {}". format (gps.fix_quality))
# Некоторые атрибуты помимо широты, долготы и отметки времени являются необязательными # и могут отсутствовать. Перед использованием проверьте, нет ли они Нет! Если gps.satellites не Нет:
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))
время сна (1)
Шаг 4: ЖК-дисплей 16x2
Вступление
ЖК-модули очень часто используются в большинстве встраиваемых проектов, причина в их низкой цене, доступности и удобстве для программистов. Большинство из нас сталкивались бы с этими дисплеями в повседневной жизни, будь то на PCO или на калькуляторах. ЖК-дисплей 16 × 2 назван так потому, что; он имеет 16 столбцов и 2 строки. Доступно множество комбинаций, таких как 8 × 1, 8 × 2, 10 × 2, 16 × 1 и т. Д., Но наиболее используемой является ЖК-дисплей 16 × 2. Таким образом, в нем будет всего (16 × 2 = 32) 32 символа, и каждый символ будет состоять из 5 × 8 пикселей.
Установка smbus
Шина системного управления (SMBus) является более или менее производной от шины I2C. Стандарт был разработан Intel и в настоящее время поддерживается форумом SBS. Основное применение SMBus - мониторинг критических параметров на материнских платах ПК и во встроенных системах. Например, существует множество ИС для контроля напряжения питания, контроля температуры и контроля / управления вентиляторами с интерфейсом SMBus.
Библиотека, которую мы будем использовать, также требует установки smbus. Чтобы установить smbus на rpi, используйте команду «sudo apt install python3-smbus».
Заставить это работать
Сначала установите библиотеку RPLCD с помощью команды «sudo pip3 install RPLCD».
Теперь мы тестируем ЖК-дисплей, отображая IP, используя следующий код:
из RPLCD.i2c import CharLCDimport socket
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
ЖК-дисплей = CharLCD ('PCF8574', 0x27)
lcd.write_string ('IP-адрес: / r / n' + str (get_ip_address ()))
Шаг 5: сервопривод, светодиоды, кнопка и переключатель
Вступление
Серводвигатель - это поворотный привод или двигатель, который позволяет точно контролировать угловое положение, ускорение и скорость, чего нет у обычного двигателя. Он использует обычный двигатель и соединяет его с датчиком обратной связи по положению. Контроллер - самая сложная часть серводвигателя, поскольку он специально разработан для этой цели.
Короткое обозначение светодиода на светодиод. Электронное полупроводниковое устройство, излучающее свет при прохождении через него электрического тока. Они значительно эффективнее ламп накаливания и редко перегорают. Светодиоды используются во многих приложениях, таких как видеодисплеи с плоским экраном, и все чаще в качестве общих источников света.
Кнопка или просто кнопка - это простой механизм переключения для управления каким-либо аспектом машины или процесса. Кнопки обычно изготавливаются из твердого материала, обычно из пластика или металла.
Переключатель включения / выключения / включения имеет 3 положения, среднее из которых - выключенное состояние. Эти типы в основном используются для простого управления двигателем, когда у вас есть прямое, выключенное и обратное состояние.
Заставляем его работать: сервопривод
Сервопривод использует сигнал ШИМ, чтобы определить, под каким углом он должен быть, к счастью для нас, GPIO имеет эту встроенную функцию. Поэтому мы можем просто использовать следующий код для управления сервоприводом: import RPi. GPIO as GPIOimport time
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 (дежурный_цикл)
в то время как True:
duty_cycle = float (input ("Enter Duty Cycle (Left = 5 to Right = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)
Как заставить работать: светодиод и переключатель
Благодаря тому, как мы подключили светодиоды и переключатель, нам не нужно контролировать или считывать светодиоды и переключаться сам. Мы просто отправляем импульсы на кнопку, которая, в свою очередь, направляет сигнал на нужный светодиод.
Заставляем его работать: кнопка
Для кнопки мы создадим наш собственный простой класс, таким образом, мы легко увидим, когда она нажата, без необходимости добавлять к нему обнаружение события каждый раз, когда мы его используем. Мы создадим файл classbutton.py, используя следующий код:
из RPi import GPIOclass Button:
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 defolved (self):
ingedrukt = GPIO.input (self.pin) return not 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: Полная схема
Теперь, когда мы просмотрели все компоненты, пришло время объединить их все.
В то время как на фотографиях показано, что компоненты показывают все, что находится на самой макетной плате, лучше, чтобы ЖК-дисплей, adafruit GPS и кнопка были подключены с помощью проводов типа мама-папа. Только t-cobbler и mpu6050 находятся на макете. Когда дело доходит до светодиодов и переключателя используйте более длинные провода, чтобы дотянуться до поворотников и рулевого управления.
Шаг 7: Код
Чтобы этот инструктивный материал был чистым, я предоставил репозиторий github как с внутренними, так и с внешними файлами. Просто поместите файлы в папку внешнего интерфейса в папку / var / www / html, а файлы из внутренней папки в папку в / home / [имя пользователя] / [имя папки] папка
Шаг 8: База данных
Из-за того, как эта система настроена, существует простой интернет-магазин, настроенный с использованием списка продуктов в базе данных, кроме того, у нас есть все точки и заказы, сохраненные здесь. Скрипт создания можно найти в репозитории github, связанном в следующий шаг
Шаг 9: Дело
Как только мы узнаем, как работает электроника, мы можем поместить их в коробку. Вы можете проявить некоторую свободу творчества: прежде чем строить ее, просто возьмите картонную коробку, которая вам больше не нужна, например, пустую коробку из-под хлопьев, и разрежьте ее, заклейте скотчем. Измерьте и нарисуйте корпус на листе бумаги и сделайте его из более прочного материала, такого как дерево, или, если это не ваше дело, распечатайте его на 3D-принтере. Просто убедитесь, что вся электроника помещается внутри и у вас есть отверстия для кнопки, провод, идущий к переключателю, светодиоды и ЖК-дисплей. После того, как вы сделали свой случай, остается просто найти способ установить его на свой велосипед или скутер
Рекомендуемые:
QeMotion - отслеживание движения для любой гарнитуры !: 5 шагов (с изображениями)
QeMotion - отслеживание движения для каждой гарнитуры !: Обзор: это устройство позволяет использовать движение головы для запуска событий практически в любой видеоигре. Он работает, отслеживая движение вашей головы (или гарнитуры в этом отношении) и нажимая на клавиатуру для определенных движений. Итак, ваш комп
Маркетинг в социальных сетях для небольших академических групп: 4 шага
Маркетинг в социальных сетях для небольших академических групп: в нашем университете есть небольшие группы на территории кампуса - академические журналы, общежития колледжей, рестораны на кампусе, студенческие группы и т. Д. - которые также заинтересованы в использовании социальных сетей для помощи общаться со своими людьми и сообществами. Это
POS-СИСТЕМА ДЛЯ МАГАЗИНОВ, ПРОДУКТОВ И СЕРВИСНЫХ ЦЕНТРОВ ОТ EXCEL с использованием штрих-кодов: 7 шагов
POS-СИСТЕМА ДЛЯ МАГАЗИНОВ, ПРОДУКТОВ И СЕРВИСНЫХ ЦЕНТРОВ ОТ EXCEL с использованием штрих-кодов: в этом блоге я представляю вам, как создать простую POS-систему (точки продаж) для небольших продуктовых магазинов и сервисных центров. С помощью этого метода вы можете управлять следующими объектами без специального программного обеспечения и дорогостоящего оборудования. v Проблема
Дизайн домашней фотолаборатории для небольших помещений: 7 шагов (с изображениями)
Домашний дизайн темной комнаты для небольших помещений: 360-градусный вид моего переделанного шкафа - Сферическое изображение - РИКО ТЕТАХи, я хотел бы начать с того, что этот дизайн темной комнаты подойдет не всем. Ваш шкаф может быть больше, меньше, или вы можете использовать пространство ванной комнаты. Д
Батарейный блок с кнопочными элементами для экспериментов или небольших приложений: 5 шагов
Аккумулятор с кнопочными элементами для экспериментов или небольших приложений .: Всем привет! Давайте узнаем, как сделать аккумуляторную батарею! Действительно просто, легко и дешево. Они отлично подходят для экспериментов и тестов или небольших приложений, требующих 3,0–4,5 В. (Извините, если кто-то еще опубликовал это до меня, по всей видимости