Translate

segunda-feira, 24 de fevereiro de 2014

tinyUSBboard - programável SEM conversor usb-serial adicional e também programador USBasp



Fiz dar certo, mas tenho que ir fazendo o reverso do que fiz para explicar.
Trata-se de um Atmega8 que pode ser programado diretamente na usb.
Somente montei parcialmente o circuito, baseado no site http://matrixstorm.com/avr/tinyusbboard/
O material é extenso, mas testei e fez o que prometeu de início.


Do circuito acima, retirei os switches e os leds, menos o da perna 15, que ficou sinalizando no início.

Montado o circuito e carregado o programa via usbasp e avrdudess, deixei o windows no wordpad e conectei o circuito: ele "digitou" sozinho depois de alguns segundos ligado (e olha que estranhei porque a primeira vez ele ativou e digitou no menu iniciar no espaço de digitação:


demonstrando que funcionou depois de várias tentativas.

Vou complementar esse material mais tarde, porque o projeto promete, mas é meio complicado, pois tenho que mexer na pasta hardware da IDE do arduino de uma versão mais antiga que a que estou usando.

Republicando também a tabela de pinagem do atmega8 disponível no site referido.

e o arquivo que deve ser colocado na pasta hardware (arduino 1.0.4)

-----------------------------------------------------------------------------------------------

Desta vez projetei um pouco mais e consegui desenvolver melhor o circuito final, ainda que errando um pouco. Segue o endereço http://fritzing.org/projects/tinyusbboard-on-solderable-breadboard e uma tela de amostra. Compartilhei o esquema no site do app. Maravilhoso esse aplicativo grátis, o Fritzing.


a placa padrão pode ser encontrada na loja física ou virtual Multcomercial (Santa Efigênia). Em Março/2014 encontrei por R$ 2,50 a und. Agora que aprendi a usar o Fritzing, ficou muito mais fácil. Observando que a parte cobreada apesar de estar sendo vista, é na parte de trás da placa, olhando na figura acima. Gastei uns dois dias aprendendo e montando o diagrama acima, mas valeu a pena. Mais uma vez, recomendo a utilização.


Final: com headers e o resto dos leds. Me obrigou a mudar um pouco o layout e o esquema.

-----------------------------------------------------------------------------------------------
Vai deixar informação difícil de encontrar e de entender assim lá na #¨$&*.
O cara explica as coisas todas espalhadas por vários sites. Até conseguir fazer funcionar, foi uma tarde inteira. Affffffff. Mas acabou dando certo. Dentro da expectativa. Vou dar tudo mastigadinho. O firmware que funcionou no meu Windows 8.1 com arduino IDE 1.0.5-r2. nem estava noticiado na página. Mas achei aqui. O firmware (.hex) somente deixei no meu google drive. Vai que amanhã desaparece do Github...
Algumas dicas: alterar o fuse para L=0x3F e H=0xC0; carregar o firmware_usbasploader094.hex com um programador USBAsp:
conecte o seu tinyUSBBoard; se der dispositivo desconhecido, problemas, que pode ser desde a montagem do circuito até problema na carga ou versão do firmware; eu tive de tudo - se tiver também, confira tudo, inclusive as mensagens de erro do avrdudess; baixe o arduino IDE do site do arduino; baixe a configuração do tipo de placa aqui (ou no google drive); descompactar para a pasta do arduino (na verdade, vai adicionar arquivos dentro do arduino/hardware); abra o programa a ser carregado no atmega8 e configure o ambiente: tipo de programador: usbasp, tipo de placa: tinyusbboard, atmega8, 16 Mhz....; deixe apertado o botão PROG do tinyUSBboard e aperte e solte o RESET dele; solte o botão PROG; se olhar no gerenciador de dispositivos, deve aparecer um libusb-win32 devices/USBasp; talvez tenha que mudar a porta serial no arduino IDE (o meu manteve como COM1); tudo certo, dê o upload no programa; para que ele comece a funcionar após o upload, aperte e solte o RESET e voilá ;). 
Não encontrei referência do driver USBasp nos meus posts anteriores. Caso não tenha, pegue aqui. Necessário para fazer upload pelo USBasp.
Próxima tarefa: fazer funcionar como um programador USBasp.

Uma coisa bacana: programei o atmega8 no próprio tinyUSBboard. Nem precisei ficar desconectando para dar carga, nem para testar. Espero conseguir fazer um programador tão com quanto esse. É o meu melhor programador de AVRs e inicialmente a minha intenção era montar programadores com o atmega8.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Deu certo!! Carreguei o firmware do site matrixstorm (aqui no google drive) fiz as ligações e funcionou (acredita que inverti o atmega8 para programar e fiquei quebrando a cabeça? então, não foi de primeira) !!!
Virou um programador USBasp funcionando para upar em um segundo atmega8. Divino esse circuito! Incríveis esse Stephan Baerwolf e outros que ajudaram no projeto vusb.
Tudo igual ao esquema acima. Adicionam-se as ligações do tinyUSBboard com o atmega8 montado no Shrimp minimal:
tinyUSBboard - descrição - atmega8
16 - rst - 1
17 - Mosi - 17
18 - Miso - 18
19 - Sck - 19
20 - VCC - 20 
(p/ VCC podem ser usados os pinos 8-8)
22 - GND - 22
(p/ GND podem ser usados os pinos 7-7)


Testado com sucesso no Arduino IDE e no AVRDudess

-----------------------------------------------------------------------------------------
Próximo estágio: fazer o mesmo com um atmega328p-pu. Um arduino auto-programável, se conseguir. E tem os arquivos no site do matrixstorm! 
Outro projeto poderia ser o circuito final do USBasp  que mencionei em um post anterior. Mas pensando melhor, este circuito do tinyUSBboard é muito mais simples e funcionou muito bem, tendo até outra utilidade (placa auto-programável). 
Dá vontade de tentar o One-chip arduino ver. 2.0. Só agora estou entendendo bem o conteúdo e termos usados.





terça-feira, 18 de fevereiro de 2014

POV com arduino


   O código mais simples para POV (Persistence Of View) foi o do Blog ilblogdidami.blogspot.com que continha um erro corrigido no código postado aqui. Thanks to Mr. Damiano for the almost perfect code.
   O esquema é muito simples: conectar 7 leds e seus respectivos resistores (utilizei os de 330 ohms) nas portas digitais 2 a 8 do arduino. Pino comun no GND e
   Desta vez usei um arduino pro mini (ching ling, lógico) mas que funciona muito bem. O esquema está no Fritzing (freeware) fácil, fácil.
   Caso utilize uma fonte com mais de 5 V, recomendo ligar nos pinos RAW (+) e GND(-) no caso do Arduino Pro Mini.
   O fonte para Arduino 1.5.5 r2 Beta e o esquema podem ser encontrados aqui.


-----------------------------------------


A partir disso, cosntrui a base giratória para testar. Um cooler velho, uma tampinha de pet, uma apoio de cpu sff, um header 90 graus, um parafuso, uma fonte 12 v e super bonder. Como não caprichei, ficou tudo meio fora de centro, girando um pouco excêntrico. Deu certo, mesmo a excentricidade tirando bastante a velocidade do cooler. Talvez num próximo projeto eu faça os cálculos de centro com mais perfeição.





Desculpe a qualidade, mas é uma câmera de 2003, que eu adoro.
-------------------------------------------------------------------------------------------------------
Fiz uma segunda versão - 28/Fev/2014

Base de HD a 7200 rpm (nunca vai girar nessa velocidade). Tks to Edilson pela dica e por fornece o primeiro HD.

Usei uma Nikon mais nova. O resultado é muito melhor, apesar da velocidade ser bemmmmm maior.

Usei um Samsung 80J de base. A haste do motor fica exposta e não precisa nem aumentar a altura. Se notarem, existe um CD de base no suporte. Incrivelmente o furo do CD é do tamanho exato da haste do HD. Bastou fazer 4 furos para os parafusos e encaixar o CD aproveitando todas as partes da haste. Calculei o centro de gravidade do suporte equilibrando sobre um lápis. Método científico, kkkk. Mas o nível de vibração diminui muito desde o início da montagem. Não conseguia segurar na mão no começo.  Gambiarras e mais gambiarras, gastei muitas lagartixas (lacres de fita plásticos) até conseguir o melhor posicionamento das pilhas.

Quer fazer funcionar? A bagunça me ajudou, kkk.


Infelizmente, a velocidade não chega até os 7200, seja pelo atrito com o ar ou pelo balanceamento que nunca chega a 100%. Depois de alguma voltas, o HD para sozinho, pois tenta chegar aos 7200 mas falha e depois de algumas vezes já desliga.
Uma coisa que notei é que ao girar mais devagar, conseguimos mostrar muito mais letras em menor espaço. Velocidade mais lenta é mais controlável e exige menos balanceamento. 


sexta-feira, 14 de fevereiro de 2014

Conectando e upando programas para o Arduino Pro Mini com CP2102



   Outra vez quebrei a cabeça com tentativa e erro. Segue, mastigadinho, um tutô para conectar o Arduino Pro Mini via Programador CP2102 - o que tenho é Baite - www.betencu.cn - modelo que dificilmente aparece nos demais tutoriais e fotos mas que vende bastante no Brasil.

                 Pro Mini                CP2102
                  GND ------------------- GND
                  VCC ------------------- 5V (DEPENDE DO MODELO)
                  RX -------------------- RXD
                  TX -------------------- TXD
                  GRN ------------------- DTR (EMBAIXO)

No Arduino IDE 1.5.5-r2, acertar para Placa Arduino Pro ou Pro Mini, Processador para Atmega328 (5V, 16 Mhz), Porta para a porta detectada, e Programador para AVRISP mkII.

Caso o CP2102 não tenha o pino de DTR, seguir o tutorial: Programador CP2102 SEM Autoreset - upload com botão de reset

segunda-feira, 10 de fevereiro de 2014

Construindo um USBasp - programador AVR


   Após uma semana tentando, refazendo, verificando, consegui fazer um programador USBasp prototipado, conseguindo programar um outro Atmega8. Orgasmo mental de felicidade.
   Segue a receita de bolo abaixo, em um protoboard.
   Seguindo o esquema do blog do Denilson Figueiredo de Sá, fiz o circuito, errado, mas consertei seguindo o esquema original. O Denilson fez um grande favor de arrumar o esquema para um formato físico mais próximo do real, facilitando a identificação das pernas do Atmega8 e suas ligações. Meu principal erro foi a inserção de um resistor (2k2) errado no lugar de outro que omiti (10k). Erros e mais erros de identificação do hardware, me desanimando um pouco.
   Republico os esquemas abaixo, porque os sites vivem desaparecendo.
Esquema do Denilson

Esquema original 

   Retirar o driver windows aqui, o libusb_1.2.4.0. Retirar também o firmware usbasp.2011-05-28 aqui. Utilizei o arquivo hex da pasta bin/firmware.

   Para fazer upload do firmware e acertar os fuses, utilizei um USBasp ching-ling da Baite, via mercado livre, que eu já citei neste blog anteriormente, e o programa avrdudess_20140102.zip no mesmo repositório logo acima.
   Os fuses recomendados são: LFUSE=0xef. HFUSE=0xc9.
   Para mais informações confira algumas instruções do avrdudess aqui.
   Uma observação é que não utilizei nenhum dos jumpers/switches e funcionou de primeira. Atentar para os fuses originais.



   Protótipo montado e funcionando. No soquete tipo Shrimp Minimal, está outro Atmega8 que foi programado. Tanto o exemplo blink via Arduino IDE como o firmware USBasp firmware via AVRDudess foram gravados com êxito. Isto causa o famoso dilema chicken-or-egg, pois o chip programado vira um chip programador.
   Infelizmente comecei por um projeto prometedor que era o tinyUSBboard. A idéia é excelente, pois pode atuar como um arduino standalone ou como um programador. Como não consegui fazer o circuito funcionar, pela falta de experiência com eletrônica, esquemas, etc, após várias tentativas e revisões, acabei desistindo. Mas recomendo, pois aparentemente várias pessoas conseguiram confeccionar o seu.