A seguir, será apresentado um projeto pessoal bem sucedido de uma lavadora de roupas com diversos recursos.
Para quem está iniciando na eletrônica, é uma excelente oportunidade para lidar com dispositivos eletro-mecanicos.
A unidade central de processamento foi o microcontrolador 8051, tendo sido o firmware criado em C. A lógica de operação do programa foi baseada no conceito de máquina de estados, onde cada etapa do ciclo de lavagem representa um valor da variável de controle.
Segue abaixo um trecho do programa que ilustra esse conceito:
cpp code
void CicloBasicoDePreLavagem ( void )
{
switch ( Etapa )
{
case ETAPA_ENXAGUAR :
{ /* Rotinas */ }
case ETAPA_ESVAZIAR_ANTES_ENX :
{ /* Rotinas */ }
case ETAPA_ENCHER_ENX :
{ /* Rotinas */ }
case ...
/*------------------------------------*/
/* Etapa ( Enxague ) */...
Aplicações envolvendo processamento de imagens tem sido cada vez mais comum no quotidiano.
Para inicar qualquer trabalho de reconhecimento e classificação de imagens, o primeiro passo é realizar a etapa de aprimoramento da imagem "image enhancement" para melhor facilitar a extração dos pontos de interesse.
Uma das bibliotecas gratuitas mais utilizadas é o OpenCv, cujos recursos permitem acelerar o desenvolvimento de soluções em processamento de imagens.
O programa abaixo foi baseado num exemplo disponibilizado gratuitamente no fórum QTcentre, no qual incluí algumas outras opções:
http://www.qtcentre.org/threads/43056-Qt-OpenCV-simple-example
Segue a tela:
Segue o projeto, baseado no OpenCV2.3 e QT 4.7.3:
http://speedy.sh/nJ8dB/WebCamReader.rar
Segue a tela da IDE:
Ao lidarmos com displays que não têm padrão de caracteres no tamanho desejado, precisamos inserir mapas de caracteres no código do programa. Como gerar a tabela inteira é uma tarefa um tanto proibitiva, o próximo passo é fazer uma busca na web por algum arquivo de bitmap disponível.
No entanto, depois de encontrá-lo e colocar o mapa no código, não raramente nos damos conta de que esses caracteres não foram criados na direção que o painel será posicionado, e teremos de fazer rotação de + / - 90 graus no mapa, o que significa:
Queremos converter isso...
...nisso
O programa abaixo realiza essa tarefa: Primeiro, definimos o arquivo que contém o código do mapa deve ser incluído, em seguida seleciona-o e, finalmente transpôe-se cada matriz de caracteres da seguinte forma:...
Precisei compilar o driver AX88772B para usar com minha placa ARM9, segui os passos abaixo, estou explicando da forma mais simples possível, pois a internet já tem muito artigo complicado e mirabolante!
1) Baixar o arquivo no site do fabricante do CHIP:
http://www.asix.com.tw/download.php?sub ... ItemID=105
Eu baixei o arquivo: Linux kernel 3.x/2.6.x Driver V4.11.0 de 08-08-2013.
2) extraia os arquivos para uma pasta do seu computador com LINUX.
Para compilar o driver para a sua placa, você deverá ter os arquivos fontes do kernel usado na sua placa, tem que ser a mesma versão, exemplo: se na sua placa roda o linux 3.0.8 você deverá ter o fonte do linux 3.0.8 na sua máquina.
3) Alterar o arquivo MakeFile pois ele vem configurado para compilar para o seu PC.
O original...
Será apresentado a seguir a implementação de uma rotina de varredura de teclado matricial, um pouco diferente as utilizadas regularmente, que traz alguns benefícios:
1) Permite combinação de várias teclas pressionadas na mesma linha: 8 (4 teclas), 32 (3 teclas), 48 (2 teclas), 16 (1 tecla).
2) Mais rápido, pois são realizadas 2 varreduras (de nibble), em vez de 16 varreduras de bits na abordagem clássica.
Segue abaixo a implementação:
cpp code
/* ********************************************************************** */
#define ROW_MASK 0x0F
#define COLUMN_MASK 0xF0
#define NO_KEY 0x00
/* ********************************************************************** */
unsigned int ScanKey ( void )
{
unsigned int ReadingKey ;
TRISx = COLUMN_MASK ; // Set high nible as Input and low nible as Output ( not tested )...
Projeto bacana:
http://retrobsd.org/index.php?sid=2988e ... cc74b71270
Resumo: BSD que roda no PIC32.
A diferença do PIC32 para a maioria dos ARMs está na MMU, que o PIC32 já tem e a maioria dos ARMs num tem, então esta versão antiga do BSD roda com os recursos de memória protegida.
Cada vez mais to achando interessante ficar de olho nos PIC32
Faz muito tempo que eu num uso PIC, mas sempre fico de olho para ver o que está acontecendo e este lançamento da Microchip eu achei bem interessante:
PIC32MZ - 330DMIPS 2MB FLASH 512KB RAM
E é barato, veja só o preço na mouser:
http://br.mouser.com/Semiconductors/Emb ... mz&FS=True
Dá pra fazer muita coisa só com este CHIP, sem adicionar nenhum tipo de memória externa.
Sei que os ARMs estão em quase tudo, mas não podemos fechar os olhos para os MIPS, eles são usados em muitas aplicações, e pelo jeito a Microchip agora entrou na briga no mundo dos 32bits. Eu num conheço nenhum ARM com estas características e com este tipo de encapsulamento , veja que eles tem esta versão com o encapsulamento TQFP-64!
TQFP64: http://br.mouser.com/ProductDetail/Micr...
Muitas dúvidas aparecem quando pensamos em começar o desenvolvimento com microcontroladores ARM, acredito que a principal seja sobre as ferramentas de desenvolvimento, pois sem ela não podemos fazer muita coisa.
Vou citar aqui no meu blog algumas ferramentas que eu já tive contato e fazer algumas comparações:
IDEs: ( IDE = Integrate Development Enviorement )
KEIL:
Site do fabricante: www.keil.com
Acredito que seja a mais conhecida e uma das mais usadas.
Esta IDE é fácil de usar e pode ser utilizada com o compilador da própria KEIL ( RVDS da ARM) e com o GCC.
Curiosidade: Antigamente, antes da Keil ser comprada pela ARM dava para usar também um compilador CARM agora este compilador CARM só pode ser usado se você tiver o Keil antigo, acho que até a versão 3.15 aceita o compilador CARM, depois disso só é possível suar o Keil com o RVDS e com o GCC.
Linguagens suportadas: C, C++, e Assembler.
Umas das vantagens do...
JTAG ( Ferramentas para depurar o programa ).
Vou simplificar para o que serve uma ferramenta JTAG:
O uso com JTAG agiliza o processo de desenvolvimento pois com um JTAG conectado ào microcontrolador podemos executar o nosso programa passo a passo, visualizar os valores na memória, verificar o valor das variáveis do programa.
Também Podemos usar o JTAG para Gravar o programa no microcontrolador.
Algums modelos:
JLINK da Segger: http://www.segger.com/jlink
A vantagem deste JTAG é que ele pode ser utilizado com várias IDEs eu já testei o JLINK com as seguintes IDEs: KEIL, IAR, ROWLEY e ele funcionou muito bem com todas elas.
KEIL ULINK2: http://www.keil.com/ulink2/
Este JTAG funciona muito bem, mas só funciona com o software da KEIL.
Eu já testei o ULINK2 com os seguintes microcontroladores:
ARM7: NXP LPC2148, LPC2368, LPC2478
CORTEX...
Ótimo livro em inglês sobre o microcontrolador LPC2368, LPC24xx: