O desenvolvimento de atividades didáticas de laboratório em casa tem sido adotado por cada vez mais universidades, colégios técnicos e cursos online. Inicialmente essa prática era comum em cursos voltados exclusivamente para o uso ou desenvolvimento de software, mas com a queda dos preços e popularização dos kits de desenvolvimento de hardware, estes tem se tornado cada vez mais comuns. O uso de arquiteturas de hardware abertas é particularmente atraente por permitir que professores e instrutores possam adotar equipamentos prontos e modificá-los conforme suas necessidades, além de permitir que o estudante compreenda melhor os componentes e o funcionamento do equipamento. É importante que os kits de desenvolvimento domésticos tenham baixo custo, escalabilidade e possua poucas restrições quanto à interação do usuário com o equipamento ou outros usuários, e foi pensando nisso que criamos o projeto PQDB (Pão de Queijo Development Board).
O objetivo foi criar uma placa de desenvolvimento didática de baixo custo, fácil fabricação (inclusive caseira) que atuasse como um shield para Arduino e placas compatíveis, tanto as de 5v quanto as de 3,3v. A placa desenvolvida deveria transformar a placa de processamento em um ambiente de desenvolvimento didático pronto para ensinar conceitos básicos e fundamentais de programação para sistemas embarcados em linguagem C, desde a utilização de periféricos até o estudo de diferentes arquiteturas de desenvolvimento, seguindo os conceitos abordados pelo livro Programação de Sistemas Embarcados (Elsevier), que tem o projeto da placa embutida nele. Para isso, foram selecionados os seguintes periféricos. Citados abaixo estão os conceitos que o estudante deve aprender:
- Led RGB
- Saídas digitais
- Composição de bits
- PWM
- Display de 7 segmentos
- Saídas digitais
- Multiplexação temporal
- LCD 16×2, compatível com HD44780
- Saídas digitais paralelas
- Protocolos de comunicação
- Teclado matricial
- Entradas digitais
- Varredura
- Debounce de teclas
- Potenciômetro/LDR(sensor de luminosidade)/LM35(sensor de temperatura)
- Elementos sensores diversos
- Conversores analógico-digital
- Buzzer
- Emissão de sons
- Controle de frequência
- PWM
- RTC DS1307
- Comunicação serial (I2C)
- Armazenamento de dados remotos
- Operação com relógios
- Periféricos internos
- Timer
- Conversores analógico-digital
- Interrupção
- Watchdog
Uma das propostas foi deixar a placa base compatível com circuitos de 5 ou 3,3 volts. Esta providência foi tomada para poder abranger o maior número de placas e permitir o uso da placa base sem restrições. Para evitar a queima de componentes, a placa base não deverá sofrer nenhuma avaria se for utilizado uma placa de processamento com tensões de 5 volts e não poderá causar nenhum dano às placas de processamento de 3,3 volts. As soluções encontradas foram:
- Alimentar todos os componentes externos da placa de desenvolvimento em 5 volts. A maioria dos componentes externos possui capacidade de operar em ambas as tensões fornecidas pela placa (5 e 3,3 volts). No entanto, alimentar os componentes em 3,3 volts e enviar sinais de controle em 5 volts poderia causar danos. O contrário, alimentar em 5 volts e enviar sinais de 3,3 volts não causa problemas físicos (queima);
- Utilizar circuitos digitais que, mesmo alimentado sem 5 volts, aceitem a tensão de 3,3 volts como nível alto;
- Os sinais digitais que sairão da placa de desenvolvimento serão todos em 3,3 volts, assim as placas de controle não serão afetadas. Mesmo as placas de controle alimentadas em 5 volts entendem o nível de 3,3 volts como alto. Os sinais digitais utilizarão um transistor para efetuar a mudança dos níveis de tensão para 3,3 volts;
- Os sinais analógicos devem possuir valores que poderão variar entre zero e 3,3 volts. Quando for utilizada uma placa de processamento de 5 volts, será perdido um pouco da faixa de conversão, não utilizando toda a escala do conversor. Isto significa uma perda de resolução do sinal, o que, para aplicações didáticas, não compromete o uso.
Com relação ao projeto do layout da placa, este foi planejado para ser possível de ser fabricado em face única. Isto permite a confecção caseira da placa de modo rápido e simples. Além disso, todos os traços possuem a espessura mínima de 15 mils (0,381mm), com isolação de 30 mils (0,762mm). Isto reduz a possibilidade de curtos ou problemas de corrosão na fabricação caseira da placa. Por esse motivo algumas providências tiveram que ser tomadas para garantir essas premissas:
1.O LCD faz a comunicação através de um barramento de 4 bits. Isto reduz a quantidade de trilhas necessárias e facilita o roteamento;
2.Os leds do display de 7 segmentos estão conectados de acordo com o posicionamento dos terminais físicos. Por isso a sequência dos segmentos na saída do 74HC595 é dada por ed0cgafb, e não por 0gfedcba;
3.O footprint utilizado para os diodos foi alongado de modo que houvesse mais espaço entre os seus terminais. Deste modo, criou-se um caminho livre embaixo dos diodos que permitiu a passagem de sinais do lado esquerdo para o lado direito da placa;
4.Dois resistores de zero ohms foram adicionados (R601 e R602). Eles funcionam como jumpers para conectar as trilhas em regiões onde não foi possível contornar os caminhos dos sinais;
5.O espaço entre os terminais dos componentes não foi utilizado para a passagem de trilhas visando simplificar a fabricação da placa e respeitar os espaçamentos definidos;
6.Por limitações de terminais disponíveis no barramento das placas compatíveis com o barramento do Arduino, foi utilizado um circuito de expansão de terminais que faz a conversão de serial para paralelo.
Para simplificar o projeto, depuração, fabricação e montagem da placa, a numeração dos componentes segue um padrão. Todos eles são identificados por um conjunto de letras mais três dígitos numéricos. As letras indicam o tipo de componente. O primeiro dígito representa de qual circuito o componente faz parte. Os dois últimos dígitos são números sequenciais para diferenciar os componentes dentro do mesmo circuito. Os circuitos foram divididos em:
1.Entradas analógicas e saída PWM;
2.Entradas digitais;
3.Entradas analógicas e saída PWM;
4.Display de 7 segmentos;
5.Display de LCD;
6.Led RGB;
7.Conversor serial-paralelo (74HC595);
8.Circuito do RTC DS1307;
9.Shield com footprint do Arduino.
Os componentes utilizados foram:
- 15 Resistores 1kΩ;
- 10 Resistores 10kΩ;
- 2 Resistores (jumpers) 0Ω;
- 1 capacitor 10nF;
- 1 cristal 32,768kHz;
- 1 74HC595;
- 1 placa de controle Arduino/Chipkit/Freedom;
- 28 terminais macho, divididos em 4 barras: 6, 6, 8 e 8 pinos cada;
- 1 Led RGB;
- 7 transistores BC337;
- 10 chaves microswitch, 2 ou 4 terminais;
- 1 buzzer;
- 10 diodos 1N4148 ou similar;
- 1 display LCD 16×2 JHD162A ou compatível;
- 1 display quádruplo 7 segmentos, KW4-361 ou compatível;
- 1 LDR 10kΩ;
- 2 potênciômetros 10kΩ;
A placa foi desenvolvida e testada com as diferentes placas de processamento propostas. Devido ao espaçamento dos componentes e espessura das trilhas, a placa se mostrou relativamente fácil de ser confeccionada artesanalmente. Além disso, a mesma foi adotada pelo livro Programação de Sistemas Embarcados, onde diversos exercícios foram propostos para ensinar desde linguagem C até o desenvolvimento de um sistema operacional embarcado. A documentação da placa foi disponibilizada em um repositório do GitHub sob a licença CERN OHL 1.2.
Apoie o projeto: catarse.me/pqdb













