Depois de pensarmos bastante sobre a estrutura básica do nosso projeto, decidimos que ficaria como no diagrama de blocos da figura abaixo
Também tivemos que definir os possíveis estados que o carrinho pode assumir, isso ajuda bastante na hora de construir os circuitos eletrônicos a serem utilizados.
Temos nosso cronograma listado na nesta planilha
Por fim, listamos os requisitos funcionais e não funcionais do nosso projeto.
Requisitos Funcionais:
- Identifica um produto adicionado ao carrinho
- Identifica que o produto foi adicionado pela diferença de peso
- Identifica a retirada do produto.
- Identifica que o produto foi adicionado pela diferença de peso
- Mantém uma lista de itens do carrinho.
- Permite consultar a lista de items no app.
- Permite ver os preços e total da compra no app.
- App identifica e relaciona carrinho ao comprador.
- Segue uma jaqueta identificadora portada pelo comprador.
- Se a distância for muito grande, se aproxima do comprador até uma distância adequada.
- App habilita o celular para ser usado como controle remoto para controlar o carrinho.
- Servidor:
- A gerência da loja pode atualizar esses dados.
- A gerência da loja pode atualizar esses dados.
- Recebe confirmação de compra finalizada quando usuário passa pela porta de saída (RFID)
- Comunica com o celular do comprador os dados da compra fechada
- App recebe dados da compra
- App processa o pagamento
- O carrinho não deve esbarrar em obstáculos
- Gerenciamento de lista de compras. (extra)
- Lê uma etiqueta RFID passiva
- Lê uma etiqueta RFID passiva
- Guardar a lista de itens, contendo preço e RFID.
Requisitos Não Funcionais:
- Capacidade de produtos é limitada à capacidade de transporte do chassi adquirido.
- O aplicativo deve ser desenvolvido em Swift.
- Raspberry Pi deve se conectar ao WiFi.
- Node-RED deve comunicar o servidor sobre produtos adicionados ou removidos no carrinho
- Recebe leitura do RFID e verifica alteração na célula de peso.
- Servidor deve comunicar o celular sobre itens adicionados ou removidos do carrinho
- Algoritmo de reconhecimento de imagens deve informar sobre o deslocamento que o carrinho deve realizar.
- Node-RED deve receber dados do algoritmo de reconhecimento de imagens e acionar o motor para realizar o deslocamento.
- Node-RED deve ler dados do sensor de linha constantemente e ajustar alinhamento do carrinho.
- Um carrinho não pode estar relacionado a dois usuários.
- Os status do carrinho podem ser como descritos no diagrama de estados.
Para outros detalhes baixe a versão documental do nosso projeto: