Índice:
- Suprimentos
- Etapa 1: Alimentação do circuito e Pi
- Etapa 2: O MPU6050
- Passo 3: O Adafruit Ultimate Breakout GPS
- Etapa 4: O LCD 16x2
- Etapa 5: Servo, Leds, Botão e Switch
- Etapa 6: O circuito completo
- Etapa 7: O Código
- Etapa 8: o banco de dados
- Etapa 9: o caso
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Este é um sistema feito para pequenas lojas que devem ser montadas em e-bikes ou e-scooters para entregas de curta distância, por exemplo, uma padaria que deseja entregar doces.
O que significa Track and Trace?
Track and trace é um sistema usado por transportadoras ou empresas de courier para registrar a movimentação de pacotes ou itens durante o transporte. Em cada local de processamento, as mercadorias são identificadas e os dados retransmitidos para o sistema de processamento central. Esses dados são então usados para fornecer status / atualização da localização das mercadorias aos remetentes.
O sistema que faremos também mostrará a rota percorrida e a quantidade de choques e solavancos recebidos. Este instructables também pressupõe que você tenha um conhecimento básico de raspberry pi, python e mysql.
nota: isso foi feito para um projeto escolar, portanto, devido à limitação de tempo, há muito espaço para melhorias
Suprimentos
-Raspberry Pi 4 modelo B
-Raspberry PI T-cobbler
-4x 3, baterias de íon-lítio de 7 V
-2x porta-bateria duplo
- Conversor Abaixador DC Buck 5v
-2x grandes leds laranja
- interruptor liga / desliga / liga
-botão
-adafruit ultimate gps v3
-mpu6050
Display lcd 16x2
- motor servo
Etapa 1: Alimentação do circuito e Pi
Quando se trata de alimentar o circuito pi com uma bateria, você tem algumas opções de como fazê-lo.
Você poderia usar um powerbank e alimentar o pi via USB, talvez esteja montando o dispositivo em uma e-bike ou e-scooter com porta USB, talvez você tenha uma bateria de telefone de 5 V esperando para ser usada ou você poderia usar 2 conjuntos de baterias de 3,7 V em paralelo com um conversor redutor, como mostrado nas fotos
Tudo está bem, desde que possa fornecer 5 V contínuos e tenha uma vida útil na qual você esteja feliz.
Etapa 2: O MPU6050
Introdução O módulo sensor MPU6050 é um dispositivo de rastreamento de movimento de 6 eixos integrado.
- Tem um giroscópio de 3 eixos, acelerômetro de 3 eixos, processador de movimento digital e um sensor de temperatura, tudo em um único IC.
- Vários parâmetros podem ser encontrados lendo valores de endereços de certos registros usando comunicação I2C. Leitura de giroscópio e acelerômetro ao longo dos eixos X, Y e Z estão disponíveis na forma de complemento de 2.
- As leituras do giroscópio são em unidades de graus por segundo (dps); As leituras do acelerômetro são em unidades g.
Habilitando I2C
Ao usar um MPU6050 com um Raspberry Pi, devemos garantir que o protocolo I2C no Raspberry Pi esteja ativado. Para fazer isso, abra o terminal do pi por meio de massa ou outro software e faça o seguinte:
- digite "sudo raspi-config"
- Selecione Configurações de Interface
- Na opção de interface, selecione "I2C"
- Habilitar configuração I2C
- Selecione Sim quando for solicitado a reinicializar.
Agora, podemos testar / escanear qualquer dispositivo I2C conectado à nossa placa Raspberry Pi instalando ferramentas i2c. Podemos obter ferramentas i2c usando o gerenciador de pacotes apt. Use o seguinte comando no terminal Raspberry Pi.
"sudo apt-get install -y i2c-tools"
Agora conecte qualquer dispositivo baseado em I2C à porta de modo de usuário e faça a varredura dessa porta usando o seguinte comando, "sudo i2cdetect -y 1"
Em seguida, ele responderá com o endereço do dispositivo.
Se nenhum endereço for retornado, certifique-se de que o MPU6050 está conectado corretamente e tente novamente
Fazendo funcionar
agora que temos certeza que o i2c está habilitado e o pi pode alcançar o MPU6050, vamos instalar uma biblioteca usando o comando "sudo pip3 install adafruit-circuitpython-mpu6050".
se fizermos um arquivo de teste Python e usarmos o seguinte código, podemos ver se está funcionando:
tempo de importação
placa de importação
importar busi
oimport adafruit_mpu6050
i2c = busio. I2C (placa. SCL, placa. SDA)
mpu = adafruit_mpu6050. MPU6050 (i2c)
enquanto verdadeiro:
print ("Aceleração: X:%. 2f, Y:%.2f, Z:%.2f m / s ^ 2"% (mpu.acceleration))
print ("Gyro X:%. 2f, Y:%.2f, Z:%.2f degrees / s"% (mpu.gyro))
print ("Temperatura:%.2f C"% mpu.temperatura)
imprimir("")
tempo.sono (1)
quando agora queremos a aceleração no eixo X / Y / Z, podemos usar o seguinte:
accelX = mpu.acceleration [0] accelY = mpu.acceleration [1] accelZ = mpu.acceleration [2]
combinando isso com uma instrução if simples em um loop constante, podemos contar a quantidade de choques em uma viagem
Passo 3: O Adafruit Ultimate Breakout GPS
Introdução
O breakout é construído em torno do chipset MTK3339, um módulo GPS prático e de alta qualidade que pode rastrear até 22 satélites em 66 canais, tem um excelente receptor de alta sensibilidade (-165 dB de rastreamento!) E uma antena embutida. Ele pode fazer até 10 atualizações de localização por segundo para alta velocidade, registro ou rastreamento de alta sensibilidade. O consumo de energia é incrivelmente baixo, apenas 20 mA durante a navegação.
A placa vem com: um regulador de queda ultrabaixa de 3,3 V para que você possa alimentá-la com 3,3-5 VCC, entradas seguras de nível 5 V, O LED pisca a cerca de 1 Hz enquanto está procurando por satélites e pisca uma vez a cada 15 segundos quando uma correção é encontrado para conservar energia.
Testando GPS com Arduino
Se você tiver acesso a um arduino, é uma boa ideia testar o módulo com ele.
Conecte o VIN ao + 5VConnect GND ao GroundConnect GPS RX (dados no GPS) ao Digital 0Connect GPS TX (dados de saída do GPS) ao Digital 1
Basta executar um código de arduino em branco e abrir o monitor serial em 9600 baud. Se você obtiver dados GPS, seu módulo GPS funcionará. Observação: se seu módulo não for corrigido, tente colocá-lo por uma janela ou em um terraço.
Fazendo funcionar
Comece a instalar a biblioteca adafruit gps usando o comando "sudo pip3 install adafruit-circuitpython-gps".
Agora podemos usar o seguinte código Python para ver se podemos fazer funcionar:
import timeimport board import busioimport adafruit_gpsimport serial uart = serial. Serial ("/ dev / ttyS0", baudrate = 9600, tempo limite = 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')
enquanto verdadeiro:
gps.update () embora não gps.has_fix:
print (gps.nmea_sentence) print ('Aguardando correção…') gps.update () time.sleep (1) continuar
print ('=' * 40) # Imprime um separador line.print ('Latitude: {0:.6f} graus'.format (gps.latitude)) print (' Longitude: {0:.6f} graus'.format (gps.longitude)) print ("Corrigir qualidade: {}". format (gps.fix_quality))
# Alguns atributos além de latitude, longitude e carimbo de data / hora são opcionais # e podem não estar presentes. Verifique se eles são Nenhum antes de tentar usar! Se gps.satellites não for Nenhum:
imprimir ("# satélites: {}". formato (gps.satellites))
se gps.altitude_m não for Nenhum:
print ("Altitude: {} metros".format (gps.altitude_m))
se gps.speed_knots não for Nenhum:
print ("Velocidade: {} nós".format (gps.speed_knots))
se gps.track_angle_deg não for Nenhum:
print ("Track angle: {} degrees".format (gps.track_angle_deg))
se gps.horizontal_dilution não for Nenhum:
print ("Diluição horizontal: {}". formato (gps.horizontal_dilution))
se gps.height_geoid não for Nenhum:
print ("ID geo de altura: {} metros".format (gps.height_geoid))
tempo.sono (1)
Etapa 4: O LCD 16x2
Introdução
Módulos LCD são muito comumente usados na maioria dos projetos embarcados, o motivo é seu preço barato, disponibilidade e programador amigável. A maioria de nós teria se deparado com esses monitores em nossa vida cotidiana, seja no PCO ou nas calculadoras.16 × 2 LCD é assim chamado porque; possui 16 colunas e 2 linhas. Existem várias combinações disponíveis, como 8 × 1, 8 × 2, 10 × 2, 16 × 1, etc., mas a mais usada é o LCD 16 × 2. Portanto, terá (16 × 2 = 32) 32 caracteres no total e cada personagem será composto de 5 × 8 Pixel Dots.
Instalando smbus
O System Management Bus (SMBus) é mais ou menos um derivado do barramento I2C. O padrão foi desenvolvido pela Intel e agora é mantido pelo SBS Forum. A principal aplicação do SMBus é monitorar parâmetros críticos em placas-mãe de PC e em sistemas embarcados. Por exemplo, há muitos monitores de tensão de alimentação, monitor de temperatura e ICs de monitor / controle de ventilador com uma interface SMBus disponível.
A biblioteca que usaremos requer que o smbus também seja instalado. Para instalar o smbus no rpi, use o comando "sudo apt install python3-smbus".
Fazendo funcionar
primeiro instale a biblioteca RPLCD usando o comando "sudo pip3 install RPLCD".
agora testamos o lcd exibindo o ip usando o seguinte código:
de 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
lcd = CharLCD ('PCF8574', 0x27)
lcd.write_string ('endereço IP: / r / n' + str (get_ip_address ()))
Etapa 5: Servo, Leds, Botão e Switch
Introdução
Um servo motor é um atuador rotativo ou motor que permite um controle preciso em termos de posição angular, aceleração e velocidade, capacidades que um motor normal não possui. Ele faz uso de um motor normal e o emparelha com um sensor para feedback de posição. O controlador é a parte mais sofisticada do servo motor, pois é projetado especificamente para essa finalidade.
LED abreviação de diodo emissor de luz. Dispositivo semicondutor eletrônico que emite luz quando uma corrente elétrica passa por ele. Eles são consideravelmente mais eficientes do que as lâmpadas incandescentes e raramente queimam. Os LEDs são usados em muitas aplicações, como monitores de vídeo de tela plana e, cada vez mais, como fontes gerais de luz.
Um botão ou simplesmente botão é um mecanismo de interruptor simples para controlar algum aspecto de uma máquina ou processo. Os botões são normalmente feitos de material rígido, geralmente plástico ou metal.
Um interruptor liga / desliga / liga tem 3 posições, onde o meio é o estado desligado; esses tipos são usados principalmente para controle de motor simples, onde você tem um estado para frente, desligado e reverso.
Fazendo funcionar: o servo
O servo usa um sinal PWM para determinar em que ângulo ele precisa estar, felizmente para nós GPIO tem esse recurso embutido. Portanto, podemos simplesmente usar o seguinte código para controlar o servo: 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 (duty_cycle)
enquanto verdadeiro:
duty_cycle = float (input ("Enter Duty Cycle (Left = 5 to Right = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)
Fazendo funcionar: o led e o switch
Devido à forma como conectamos os leds e o interruptor, não precisamos controlar ou ler os leds e trocar a si mesmo. Simplesmente enviamos pulsos para o botão que, por sua vez, direcionará o sinal para o led que desejamos.
Fazendo funcionar: o botão
Para o botão, faremos nossa própria classe simples desta maneira, facilmente veremos quando ele é pressionado, sem precisar adicionar uma detecção de evento a ele cada vez que o usarmos. Faremos o arquivo classbutton.py usando o seguinte código:
de 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 def pressionado (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)
Etapa 6: O circuito completo
Agora que examinamos todos os componentes, é hora de combiná-los.
Enquanto as imagens mostram os componentes mostram tudo na placa de ensaio em si, é melhor ter o lcd, GPS adafruit e botão conectado usando fios fêmea para macho. Apenas tenha o t-cobbler e o mpu6050 em uma placa de ensaio. use fios mais longos para ter certeza de que consegue alcançar as barras intermitentes e a barra de direção.
Etapa 7: O Código
Para manter esta instrução limpa, eu forneci um repositório github com os arquivos de backend e frontend. Basta colocar os arquivos na pasta frontend na pasta / var / www / html e os arquivos na pasta backend em uma pasta em / home / Pasta [nome de usuário] / [nome da pasta]
Etapa 8: o banco de dados
Devido à forma como este sistema é configurado, há uma loja online simples configurada usando uma lista de produtos em um banco de dados, além disso, temos todos os pontos de caminho e pedidos salvos aqui. Um script de criação pode ser encontrado no repositório github vinculado no Próxima Etapa
Etapa 9: o caso
Assim que conhecermos o funcionamento da eletrônica, podemos colocá-los em uma caixa. Você pode ter alguma liberdade criativa com isso. Antes de construí-lo, basta pegar uma caixa de papelão que você não precisa mais, como uma caixa de cereal vazia, por exemplo, e cortá-la, colá-la e dobre-a até ter algo de que goste. Meça e desenhe sua caixa em um pedaço de papel e faça-a de um material mais resistente como madeira ou, se não for sua opção, imprima-a em 3D. Apenas certifique-se de que todos os componentes eletrônicos cabem dentro e você tem orifícios para o botão, o fio que vai para o interruptor, os leds e o lcd. Depois de fazer sua capa, é só uma questão de encontrar uma maneira de montá-la em sua bicicleta ou scooter.
Recomendado:
Relógio de 7 segmentos - Edição para impressoras pequenas: 9 etapas (com imagens)
Relógio de 7 segmentos - Edição para impressoras pequenas: mais um relógio de 7 segmentos. Embora eu deva dizer que não parece tão louco quando vejo meu perfil do Instructables. Provavelmente fica mais irritante no momento em que você dá uma olhada no meu perfil do thingiverse. Então, por que eu me incomodei em fazer outro no
Dica da caneta para iPad - (Como transformar peças pequenas em um torno a jato), eu fiz isso na loja de tecnologia !: 7 etapas
Dica da caneta para iPad - (Como girar peças pequenas em um torno a jato), eu fiz isso na loja de tecnologia !: Faça esta ponteira de latão para segurar as pontas de borracha da caneta! Esta é a parte mais difícil de fazer sua própria caneta capacitiva! Eu precisava de uma ponta de latão para segurar a ponta de borracha da caneta sensível à pressão que estou desenvolvendo. Este instrutível irá mostrar a você meu
Rastreie a qualidade do ar usando Grafana e Raspberry Pi: 7 etapas
Rastreie a qualidade do ar usando Grafana e Raspberry Pi: Eu estava procurando um pequeno projeto IOT e um amigo recomendou que eu desse uma olhada neste tutorial: https: //dzone.com/articles/raspberry-pi-iot-sensor…I muito Recomendo seguir o tutorial para seguir na configuração de um Raspberry Pi para monitoramento
SISTEMA POS PARA LOJAS, MERCEARIAS E CENTROS DE ATENDIMENTO DA EXCEL com o uso de códigos de barras: 7 etapas
SISTEMA POS PARA LOJAS, MERCEARIAS E CENTROS DE SERVIÇO DO EXCEL Com o uso de códigos de barras: Estou apresentando com este blog como criar um sistema simples de POS (ponto de vendas) para pequenas lojas de mantimentos e centros de serviço. Com este método, você pode gerenciar as seguintes instalações sem software especial ou equipamentos caros. v Iss
Professional ART Tracing Lightbox GRÁTIS em menos de 15 minutos !!! ($ 100 em lojas): 3 etapas
Professional ART Tracing Lightbox GRÁTIS em menos de 15 minutos !!! (US $ 100 em lojas): Atenção a todos os artistas, arquitetos, fotógrafos e entusiastas de hobby: Você já achou difícil rastrear obras de arte, fotos ou outras mídias? Você já trabalhou em uma obra de arte e achou o papel vegetal inconveniente, ineficaz ou