Laboratórios Integrados II LECom (1 o ano) Projecto Ano Lectivo de 2004/05 1 Objectivos Com este projecto integrado pretende sedimentar-se os conhecimentos relativos a: Microprocessadores: arquitectura e diagrama de blocos dum sistema, princípio de funcionamento, conjunto de instruções dum micro-controlador, comunicação série entre hardware e software. Estruturas de dados lineares e algoritmos básicos, numa abordagem imperativa, e sua implementação em Assembly e Java. Diagramas de estados e uxogramas. 2 Organização e Funcionamento O projecto será desenvolvido em grupos de 4 alunos dentro e fora das aulas da disciplina (2 sessões semanais de 2 horas cada). Nos pontos de controlo (ver calendário abaixo) e no m do semestre, cada grupo apresentará à equipe docente e à turmapara discussão oral alargada o trabalho realizado e os resultados obtidos, devendo entregar um relatório técnico de desenvolvimento devidamente estruturado e fundamentado. Em cada aula estarão presentes dois docentes que irão esclarecendo questões especícas dentro da sua área de trabalho. 1
2.1 Calendarização O projecto deve ser executado ao longo de todo o semestre (o 2 o do 1 o ano), com 13 semanas, estando a entrega agendada para a última semana de aulas (30/Mai a 04/Jun). Para controlo da situação e avaliação intermédia, haverá 2 apresentações intercalares do projecto, aos docentes perante a turma em geral, nas semanas 7 (de 4 a 9 Abr) e 11 (de 02 a 07 Mai). Na terceira semana (7 a 12 de Mar) será pedido na aula um planeamento do projecto. Na semana 7 pretende-se uma apresentação da solução, algoritmos, uxogramas ou diagramas de estado, esquemas de hardware, diagramas de blocos. Cada grupo faz uma apresentação de 10-15 minutos à turma. Na semana 11 deverá ser apresentado um protótipo (com hardware e software) que implemente as funcionalidades básicas pedidas. Será efectuada uma apresentação (10-15 minutos) seguida de algumas questões. Deverá ser entregue um relatório preliminar que inclua: diagramas de blocos, diagramas de estados/uxogramas, algoritmos, programas Java e Assembly, esquemas. Relativamente às comunicações, deverá ser apresentado um esboço do protocolo a implementar. 2.2 Avaliação Existirão três pontos de avaliação, correspondentes às 3 apresentações do projecto: Apresentação 1 (semana 7) : 10% Apresentação 2 (semana 11) : 20% Apresentação nal (semana 14) : 55% Os restantes 15% serão atribuídos à avaliação contínua ao longo do projecto, incluindo a avaliação do planeamento do projecto. Em cada ponto de avaliação serão apreciados os resultados (o protótipo apresentado), a apresentação efectuada, o empenho e participação de cada elemento no projecto, o relatório, a criatividade e inovação, a aplicação das matérias leccionadas. 2
3 Enunciado Neste projecto pretende implementar-se o sistema de controlo duma máquina de venda automática de bebidas e outros produtos alimentares, designada a partir daqui apenas por posto de venda. O posto de venda a controlar possui espaço para vários tipos de produtos. Produtos com o mesmo preço serão colocados no mesmo tabuleiro circular que pode rodar sob controlo dum motor. Para fornecer produtos, existe uma portinha por tabuleiro. O posto de venda possui um botão, por tabuleiro, para fazer rodar esse tabuleiro. O posto de venda dispõe ainda de uma ranhura para introduzir moedas, um botão para pedir a devolução de troco e uma abertura para devolver o troco (ver gura 1). O sistema de controlo deve ser implementado com uma parte de software (programa em Java) e uma parte de hardware (onde deve constar um microcontrolador programado em assembly), que comunicam pela porta série. Apresenta-se agora uma descrição mais detalhada do sistema de controlo. O posto de venda aceita apenas 4 tipos de moedas (10 cêntimos, 20 cêntimos, 50 cêntimos e 1 euro) e dispõe de 8 tabuleiros para produtos. Em cada tabuleiro é possível colocar até 16 produtos. A cada tabuleiro está associado um motor que o faz rodar e permite assim os produtos passarem pela portinha de saída. Cada motor trabalha independentemente dos outros motores, sempre na mesma direcção. O motor associado ao tabuleiro X trabalha enquanto o utilizador premir o botão associado a esse tabuleiro. O controlo dos motores é feito externamente ao controlador a implementar, pelo posto de venda. A portinha associada ao tabuleiro X abre se (i) o utilizador dispuser de um saldo suciente para adquirir um produto do tipo colocado no tabuleiro X e (ii) o utilizador forçar a portinha desse tabuleiro. Associada a cada portinha existe um sensor que detecta se ela está a ser forçada a abrir, activando neste caso um sinal que funciona como sinal de selecção do produto desejado. Para simplicar o projecto, cabe ao utilizador vericar que existem produtos do tipo desejado e que existe um produto alinhado com a portinha antes de a abrir. 3
Botão para Rodar o Tabuleiro Janela para visualizar os produtos dum Tabuleiro 1... 2... 3... Portinha de Saída do Produto Ranhura para Inserir Moedas Nº do Tabuleiro 4... 5... 6... 7... 8... Botão para Devolver Troco Gaveta de Troco Figura 1: Painel frontal do posto de venda de produtos. Em dado momento, o saldo é igual ao valor total das moedas introduzidas até esse instante e não devolvidas sob a forma de troco ou dum produto. O troco é devolvido após o fornecimento dum produto X (valor_do_troco = saldo valor_do_produto_x) ou após premir o botão de devolução de troco (valor_do_troco = saldo). 4
3.1 Tarefas a Desenvolver No projecto a desenvolver, a parte de software deve realizar as seguintes tarefas, relativas à gestão do posto de venda: 1. Registar a colocação de produtos novos nos tabuleiros, por parte do operador/vendedor; 2. Permitir ao operador denir o preço dos produtos disponíveis em cada tabuleiro, com um valor que seja múltiplo de 10 cêntimos; 3. Actualizar o stock de produtos disponíveis quando um produto é vendido, o que implica comunicação com o hardware pela porta série RS- 232. No projecto a desenvolver, a parte de hardware vai realizar as seguintes tarefas básicas: (i) ler e escrever todos os sinais de ligação com o posto de venda e (ii) estabelecer a comunicação com o PC através da porta série RS-232. Com mais detalhe, o hardware deve: 1. Registar o total de moedas introduzidas (saldo); 2. Gerar o sinal de enable da abertura das portinhas, de acordo com (i) o tipo de produto seleccionado, (ii) o stock de produtos disponíveis (comunicação com o software para saber se existem produtos desse tipo) e (iii) o saldo actual; 3. Comunicar ao software que tipo de produto foi vendido; 4. Gerar os sinais de controlo necessários para devolver troco, de acordo com: (i) o pedido de devolução de troco, (ii) o saldo actual e (3) o produto fornecido (ou não). Para simplicar, considera-se que existem sempre moedas para fornecer troco e que o troco é feito com os mesmos 4 tipos de moedas (10 cêntimos, 20 cêntimos, 50 cêntimos e 1 euro). Na implementação da parte de hardware, assuma que as entradas (sinais de selecção, sensores de moedas) são gerados em interruptores e as saídas (sinais de enable da abertura das portinhas e sinais de troco) vão ligar a LEDs. Para que a corrente a fornecer a um LED seja de 10mA, dimensione a resistência a colocar em série/paralelo com cada LED. 5
4 Material Necessário Qt. Descrição 1 PC com Windows SW MPLab SW MindPicProg SW JDK/SDK da Sun SW BlueJ 1 Micro-Controlador PIC16F84A 1 Programador de PIC 1 Cabo Série 1 Cristal 8MHz 1 Regulador de tensão 7805 1 Driver RS-232 LT1181 1 Ficha RS-232 para Bread-Board 1 Bread-Board 1 CI Codicador 8:3 74LS148 1 CI Descodicador 3:8 74LS138 2 Conjunto de 8 interruptores agrupados 1 Botão de pressão 12 Leds Resistências 2 Condensadores 22pF 2 Condensadores 100nF 1 Diodo 1N4001 5 Bibliograa 1. Programação Orientada aos Objectos em Java 2, F. Mário Martins, Editora FCA, 2a edição, 2001. 2. Bibliograa das disciplinas de Métodos de Programação e Microprocessadores. 3. Microcontroladores PIC (livro on-line) www.mikroelektronika.co.yu/portuguese/product/books/picbook/00.htm 4. Datasheet do micro-controlador PIC16F84A. 5. Datasheet do Circuito Integrado LT1181. 6