Mostrando postagens com marcador microcontrolador. Mostrar todas as postagens
Mostrando postagens com marcador microcontrolador. Mostrar todas as postagens

terça-feira, 9 de fevereiro de 2016

Arduino - Introdução: O que é para que serve.

Esse tipo de informação já foi publicado a exaustão em tudo quanto é site pela web, mas vou publicar a minha interpretação do assunto aqui, baseada nas aulas que tenho dado...

O Arduino é uma plataforma microcontrolada para computação física, provavelmente a que obteve o melhor êxito comercial no mundo.
Arduino Uno R3 da empresa Arduino.
Foi criada em 2005 no Instituto de Projetos Interativos de Ivrea, na Itália, visando ter baixo custo e uso simplificado, para ser facilmente utilizado por pessoas leigas nas áreas de programação e eletrônica.

Fisicamente o Arduino é uma placa de circuito eletrônico com um microcontrolador, alguns pouquíssimos componentes simples e, na maioria dos modelos mais comuns, um segundo circuito integrado para fazer a comunicação via porta USB.
Pouco maior que um cartão de crédito.
O microcontrolador, o componente central de plataformas microcontroladas, incluindo o Arduino, é um circuito integrado (um tipo de componente eletrônico) que tem diversas partes de um computador normal num único componente: Processador; Memória para armazenar programa e variáveis; Periféricos (controladores de comunicação, temporizadores, contadores etc.); E, principalmente, conversores analógicos e pinos de entrada e saída, onde são conectados os sensores e atuadores.
Microcontrolador - múltiplas funções em um único componente.
Outra característica do microcontrolador é que ele é bem menos poderoso do que um computador típico e normalmente é utilizado no controle de pequenos processos específicos como, por exemplo, controlar a iluminação do cômodo de uma casa, o "vidro elétrico" da janela de um carro, um aparelho de ar condicionado, uma máquina de lavar roupas etc., enquanto um computador típico é usado em diversas tarefas, geralmente simultâneas, como navegar na internet, editar um texto ou uma imagem, tocar música ou um vídeo etc.

A aplicação típica do Arduino é a computação física, que consiste em obter informações do mundo físico através de chaves e sensores (se um acesso está aberto ou fechado, qual a temperatura, a umidade ou luminosidade de um ambiente, o fluxo de água através de um cano etc.) e controlar essas características físicas através de atuadores (a trava de uma porta, um aquecedor, lâmpadas, um motor etc.).
Computação física - sensores e atuadores.
Apesar dessa orientação a computação física, o Arduino também é utilizado em atividades que vão de um computador comum, como tocar MP3, a funções de vídeo game, rodando jogos.

quinta-feira, 4 de dezembro de 2014

PSG Arduino Shield - Parte 2

Um pouco depois que fiz a primeira publicação sobre ligar o chip de som PSG no Arduino, ainda em março de 2014, levei o projeto adiante, passando a montagem do protótipo em protoboard para um módulo em placa padrão... Faltou publicar fotos do resultado.

Mas antes tarde do nunca, ai vão fotos da segunda etapa e de como o projeto ainda está (dezembro/2014) em termos de hardware (todas as fotos do andamento do projeto podem ser vistas no álbum que coloquei no Picasa):
O estágio de clock e seu esquema.

TOC usando placa padrão (sem fios "saltando").

Testando o estágio de clock depois de fazer as demais conexões.

Voilà!

Testando o 74HCT595.

Novo sucesso.

O circuito completo, já com o estágio de amplificação de áudio.

E o TOC se manteve até o final.

E uma geral da bagunça ao final de algumas horas.

terça-feira, 1 de abril de 2014

Arduino Severino - Fase 3

Em meados de 2011 montei quatro Arduinos do modelo Severino para usar em uma palestra na faculdade onde eu estudava. Neste álbum de fotos pode ser vista a bagunça enquanto eu confeccionava as placas. Foi a "fase 1" dos Severinos.

Em 2012, dei um melhor acabamento nas placas (serrar as placas no tamanho adequado, trocar alguns componentes, estanhar todas as trilhas etc), no que eu chamei de "fase 2". Pena que não fotografei nem fiz uma publicação aqui no blog para documentar.

No experimento de fazer meus próprios Arduinos, entre erros e acertos, cometi o engano de economizar comprando os microcontroladores AVR mais baratos que encontrei e acabei com alguns modelos difíceis de serem usados por não serem padrão no Arduino, especificamente do modelo Atmega88, que exige edições de arquivos de configuração do ambiente de desenvolvimento sempre que este é instalado ou atualizado.

Aproveitando que no ano passado eu comprei alguns microcontroladores Atmega328P-PU, usado na maioria dos Arduinos, resolvi atualizar as placas (atividade que já estava na lista de afazeres há tempos).

Usei um Arduino (um clone chinês do Duemilanove, da marca Aroboto Studio) para gravar o bootloader nos novos microcontroladores, seguindo as instruções do site do Arduino.

Para ter variedade de placas, com o objetivo de poder fazer testes, deixei um Severino com um Atmega8 (que foi usado nos primeiros modelos de Arduino) e bootloader do Arduino NG. Em outro Severino, com o Atmega328, coloquei o bootloader do Diecimila / Duemilanove e, no terceiro Severino, coloquei o bootloader do Arduino Uno, chamado de Optiboot:

Fiz o teste mais básico, carregando o sketch "blink" nos Severinos e, de cara, achei interessante observar os comportamentos extremos. Enquanto o Severino com Optiboot carrega a 112kbps e executa o sketch quase instantaneamente, o Severino com bootloader do NG, além de carregar a apenas 19,2kbps, tem uma pausa de alguns segundos antes de começar a execução do sketch.

Há também as diferenças de tamanho do bootloader, bem menor na versão Optiboot, deixando mais espaço para o sketch.

Apesar de haver versão não oficial do Optiboot para ser usado com Atmega8, preferi deixar a versão do Arduino NG, reduzindo a possibilidade de incompatibilidades não previstas e/ou pouco experimentadas (e pouco documentadas).

O quarto Arduino Severino, que já estava com Atmega328, ficou atrelado ao projeto da matriz de LEDs e foi para o professor Abner, em 2012.

segunda-feira, 10 de março de 2014

PSG Arduino Shield - Parte 1

Introdução:

Esse é um projeto que me veio a mente há pouco mais de 1 ano e ficou engavetado por diversos motivos e desvios de percurso. Retomado o que eu não deveria ter parado, foram dados os passos da segunda etapa: Montar o protótipo em protoboard (a primeira parte foi de pesquisa e elaboração de objetivos):
Eu poderia ter usado um protoboard maior e feito tudo em um só, mas quis usar o protoshield que eu fiz e, como não cabia tudo, usei mais dois bloquinhos de protoboard pra colocar o amplificador de áudio e o circuito de clock para o PSG. As fotos comentadas podem ser vistas neste álbum.

Mas, enfim, do que se trata isso? É basicamente um shield de Arduino para gerar áudio com o circuito integrado PSG (Programmable Sound Generator) AY-3-8912, típico de microcomputadores das décadas de 70 e 80, como MSX, ZX-Spectrum, ZX81, Apple II etc, e que pode ser usado para chiptune ou qualquer outra coisa que sua imaginação permitir.

Diversos projetos já foram feitos com esse intuito como o que está no site arduino.cc ou este do 986-Studio, entre diversos outros.

O mais promissor, mas que aparentemente morreu no parto, foi o MIDIarcAYde, que chegou a ter um shield completo com o PSG e conexão MIDI, mas não houve divulgação do código fonte, do esquemático do projeto, nem nada. Provavelmente foi um trabalho de conclusão de curso e ficou nisso mesmo. O vídeo linkado no blog do projeto, com a placa em funcionamento, é interessante.

Apesar de haverem poucas diferenças entre todos os projetos, tomei como base o desenvolvimento demonstrado no blog do DQ (partes um, dois, três, quatro e cinco), participante ativo do Garoa Hacker Clube (ele fez uma página no wiki do Garoa sobre o projeto dele).

Apesar de ser muito didático, o projeto do DQ peca, IMO, no mesmo ponto que os outros: Falta uma biblioteca de software pro acionamento do circuito / shield, que permita um uso menos técnico e mais criativo, com mais liberdade, pra quem efetivamente quer fazer música (o tal chiptune) com o circuito.

Software inicial:

A princípio, criar uma biblioteca (lib - de library) para facilitar o uso do PSG de forma semelhante a linguagem BASIC dos microcomputadores MSX, com funções equivalentes aos comandos SOUND e PLAY, este último, com os macro comandos de controle de notas, duração, volume etc.

A partir desse ponto, criar biblioteca de ruídos pré definidos (tiro, motor etc), acessíveis a partir de uma função simples.

Com isso disponível, programadores menos experientes podem colocar suas músicas no Arduino com programação básica, sem precisar conhecer os meandros de funcionamento do PSG.

Expandindo a usabilidade:

E se o PSG puder tocar músicas armazenadas em um cartão SD, selecionadas num shield com botões e LCD?

E se o PSG puder ser acessado a partir de uma conexão MIDI (como demonstrado no projeto MIDIarcAYde), pela USB (como fez o DQ), ou mesmo por TCP/IP, RS-485, I2C ou seja lá qual conexão estiver feita com o Arduino que hospeda o PSG shield?

E se mais de um Arduino, cada um com seu PSG shield, estiver tocando a mesma música, com mais canais de áudio e ruído, disponíveis simultaneamente?

Mas isso será assunto para as próximas publicações...

quinta-feira, 9 de maio de 2013

Hacking simples do Arduino Motor Shield.

Além do complexo de "última bolacha do pacote" (não ter conectores pass-through para a conexão de mais shields em cima), o Arduino Motor Shield que eu recebi (provavelmente todos?) veio sem as barras de terminais para conexão de módulos (ou blocos) de funções para os terminais de entrada analógica, apesar de ter as ilhas para soldá-los.

A solução é substituir as barras de terminais por barras fêmeas com terminais longos (para wire-up) e acrescentar as barras de terminais faltantes.

Com muito cuidado para não estragar a placa, removi as barras de terminais (dessa vez, sem destruí-los, como fiz no caso do I/O Expansion Shield), de forma que pude reaproveitá-los na própria placa. Bastou derreter a solda com o ferro e puxar cada um dos pinos (um de cada vez) com um alicate. O terminal aquecido sai inclusive da barra plástica. Depois de todos retirados, basta recolocar os pinos na barra.

A dica é deixar a solda derreter completamente antes de começar a puxar o terminal, para não estragar a ilha ou a metalização do furo. Com um ferro de 30W, a solda derrete em alguns poucos segundos.


Aqui, com as barras reaproveitadas, já soldadas de volta na placa:

O resultado, com todos os conectores:



segunda-feira, 8 de abril de 2013

Hacking simples no Arduino shield marca DFRobot modelo DFRduino I/O Expansion Shield v5.0

Como a absoluta maioria dos shields para Arduino, o DFRduino I/O Expansion Shield v5.0 tem seus defeitos e limitações de projeto.
Mesmo sendo um shield muito bem elaborado se comparado com outros shields para uso de blocos de funções, peca principalmente pela mania de ser "a última bolachinha do pacote", ou seja, não tem conectores pass-through, que permitem a conexão de mais shields em cima.

Apesar de suas múltiplas funções (conector para módulo zigbee / bluetooth bee, interface RS-485, terminais para I2C e conectores para módulos APC220, SD-Card R/W, servomotores hobby com conector de alimentação à parte, entrada e saída de alimentação e entradas analógicas), ele pode não ser o único shield no experimento caso, por exemplo, você queira usar apenas o módulo bluetooth bee nesse shield e usar mais algum outro shield em cima como, por exemplo, um protoshield (da Adafruit, da LadyAda, da Sparkfun ou o meu).

A solução é substituir as barras de pinos por um conjunto de conectores fêmea com terminais longos (para wire-up):

Como o objetivo é substituir os conectores e preservar a placa, optei por destruir a barra de pinos e não testar a minha habilidade de dessoldá-la inteira.

Para começar, com muito cuidado para não danificar a placa, cortei e removi o suporte plástico da barra de pinos:



Sem o suporte de plástico, ficou fácil remover os pinos:


Por fim, bastou remover o resto da solda dos furos com o sugador de solda:



O resultado final ficou bom, sem nenhum estrago na placa:


sábado, 16 de fevereiro de 2013

Arduino protoshield feito em casa - fase 2.

Quando montei os Arduinos Severinos para uma palestra na semana de tecnologia no CEFSA-FTT, em 2011, me empolguei e montei um protoshield vazio, com uma placa padrão.

Depois de algumas ideias, resolvi acrescentar blocos de protoboard sobre a placa e, com a experiência do display de LEDs (posts aqui e aqui) e seus inúmeros fios conectados ao Arduino, resolvi acrescentar bornes KRE, que possuem parafusos para prender os fios.
Depois de algumas mudanças de percurso (retirada do LED do Pin13, do botão de reset e de alguns bornes KRE extras de alimentação), o resultado final é esse:
  • 2 blocos de protoboard (total de 340 contatos);
  • Bornes KRE para todos os terminais do Arduino;
  • Blocos de conexão com +5Vcc, GND e +Vin;
  • +Vin selecionável por jumper entre o fornecido pelo Arduino ou por fonte externa;
  • +5Vcc do protoshield fornecido por regulador próprio;
  • Barra de terminais pass-through para uso de outros shields sobre o protoshield.

domingo, 28 de outubro de 2012

Decidindo tecnologia para os próximos projetos.

Estou entulhado de placas de desenvolvimento, teste, avaliação, debug etc para microcontroladores, quando não os próprios, avulsos.

São tecnologias diferentes, com capacidades de processamento e ferramentas de desenvolvimento diferentes, indo de PICs e AVRs de 8 bits e alguns poucos MHz e kiB de memória a ARMs de 32 bits e dezenas (ou centenas) de MHz e kiB de memória.

Inacreditavelmente, por mais que eu analise, o Arduino (com seus shields, bibliotecas, linguagem de programação semelhante a C++, baixo custo, cultura open-source e multiplataforma), se mostra a plataforma mais interessante, principalmente porque a IDE fraca (porém gratuita), já pode ser substituída pelo Eclipse, um ambiente integrado de desenvolvimento profissional (também gratuíto).

Acho realmente que os produtos da Renesas, ST, TI e Microchip vão receber alguma atenção real da minha parte somente no próximo ano. Vamos ver se consigo resolver todos os projetos atuais no limite dos Arduinos Mega, com seus 256kiB de memória e 70 pinos de E/S (foi difícil o último projeto com apenas 20 pinos de E/S do Arduino Severino).

quarta-feira, 17 de outubro de 2012

Continuando o display de LEDs controlado por Arduino...

Mais umas 40 horas de trabalho e liguei mais 192 LEDs no Arduino Severino, num total de 256 (4 blocos de 8x8, totalizando um display de 16x16). A ideia do projeto é, desde o início, ser expansível em módulos de 8x8 LEDs para linhas e colunas.

O resultado final pode ser visto nas fotos no Picasa Google Fotos e vídeos com a matriz de 16x16 em funcionamento podem ser vistos aqui e aqui.

Agora (em julho de 2015), organizei os vídeos desse projeto em uma playlist.

sábado, 29 de setembro de 2012

Fudebagem, quando dá certo, rox a lot!


Depois de umas 40 horas de trabalho (excesso de capricho, falta de prática, todo o material e ferramental bagunçado etc. etc. etc.), cheguei a uns 50% do projeto de uma matriz de LEDs controlada pelo Arduino (um Severino com um no-shield que eu construi no ano passado pra umas palestras na Faculdade Termomecânica).

A ideia é que a matriz possa ser expandida em largura e altura. Na prática, a largura não pode ser muito expandida porque os LEDs perdem o brilho (por ficarem pouco tempo energizados) ou a cintilação fica visível a olho nu (demasiadamente tempo desenergizados). Já a altura, fica limitada ao número de portas disponível no microcontrolador (poucas no Arduino típico, mas facilmente superável com Arduino Mega, PICs com mais I/Os etc).

Tanto a matriz como os módulos de acionamento (drivers?) permitem o acréscimo físico de mais módulos. Essa foi a ideia desde o início: Poder estender o projeto (sonhando com o projeto da Mercedes-Benz)...

Fotinhas no picasa Google Fotos.

Também fiz 2 vídeos curtinhos do bicho funfando, aqui e aqui (com o celular Android LG P698).

quarta-feira, 8 de agosto de 2012

Agradecimentos ao Alexandre "Tabajara".

Dois agracedimentos ao Taba:

1. Valeu pelos CIs de refresh de RAM (MC3242) usados em expansões de memória de 128KB de Apple II (padrão Saturn) e pelos soquetes de 64 pinos para VDPs de MSX 2/2+/t-R (V9938 / V9958);
2. E um muito obrigado por me avisar sobre o evento Hands-on M0 da STMicroeletronics. Muito legal conhecer microcontroladores ARM de 32 bits:
Grande abraço, meu caro!