Translate

sábado, 23 de agosto de 2014

Formatação forçada de pendrive no Windows (XP, 7, 8, 8.1)

Tive problema com formatação de pendrive 2 vezes em 2 dias, devido à exigência do instalador. Foram 2 operações diferentes: instalar o Zabbix appliance e montar um pendrive de formatação UEFI do Windows 8.1.
A única referência que deu certo encontrei em https://en.opensuse.org/SDB:Create_a_Live_USB_stick_using_Windows, que vou transportar para cá, pois sempre os links acabam mudando ou morrendo.

  • executar o cmd.exe como administrador (geralmente shift+click no prompt de comando);
  • verificar a letra do pendrive no windows explorer;
  • digitar "mountvol letra: /d" e Enter (substituir letra pela letra do pendrive); dica: "mountvol  /?" mostra uma lista de parâmetros que podem ser usados;
  • digitar "diskpart" e Enter; este programa permite manipular a partição e formatação de drives; muito cuidado para não acabar com seu HD;
  • Digite "list disk" e Enter para listar os drives existentes;
  • digite "select disk 1" para selecionar o disco 1 (veja o número do pendrive, no exemplo é o 1);
  • "clean" limpa o disco (apaga todas as informações);
  • "create partition primary" cria uma partição primária;
  • "active" ativa a partição;
  • "format FS=fat32 Quick" executa uma formatação rápida na partição;
  • "assign" ativa o disco no windows;
Uma das finalidades foi descarregar uma imagem RAW do Zabbix no pendrive. Para conseguir realizar isso, precisei o programa imagewriter.exe no endereço  https://github.com/downloads/openSUSE/kiwi/ImageWriter.exe.

Aproveitando, segue abaixo o roteiro para montar um pendrive de boot do Windows 8.1 no Dell Inspiron 14 3541 no modo UEFI, visto no forum http://pt.community.dell.com/support-forums/notebooks/f/36/t/29638.aspx.


Criar um pen drive bootável do Windows 8 para placa-mãe com UEFI para formato GPT: Seu drive USB precisa ser bootável e estar formatado no sistema de arquivos FAT32, pois o UEFI não identifica um drive USB formatado em NTFS como drive de boot UEFI.
1.Abra e rode o CMD como administrador (comandos em negrito).
2. Digite Diskpart, aperte Enter.
3. Digite List Disk, aperte Enter.
4. Digite Select Disk # (# é o número do drive USB que será utilizado), aperte Enter.
5. Digite Clean, aperte Enter.
6. Digite Create Partition Primary, aperte Enter.
7. Digite Active e aperte Enter.
8. Digite Format FS=FAT32 Quick e depois Enter.
9. Digite Assign, e depois Enter.
10. Digite Exit e finalmente Enter.
11. Copie todo o conteúdo do DVD de instalação do Windows 8 para o pen drive. Um simples arrastar e soltar já completa o processo (se você tiver usando um arquivo de imagem .ISO, extraia ou monte a .ISO para copiar os arquivos para o drive).

Dando boot, Particionando e Formatando em GPT manualmente para Windows 8 (com o setor de 4KB):
 *O modo UEFI precisa estar ativado no BIOS de seu notebook ou computador para que o mesmo reconheça o novo dispositivo de boot UEFI quando der boot na máquina para a instalação do sistema.
1. Dê boot da mídia de instalação do Windows (você precisa inicializar de um dispositivo marcado como UEFI, ou então a instalação do Windows poderá dar um erro que impede do sistema ser instalado na partição). Estes dispositivos de boot UEFI possuem um prefixo “UEFI + nome do seu dispositivo”, e mostra o drive como opção de boot em seu UEFI.
2. Depois do boot você verá a tela de instalação do Windows 8. Lá, aperte Shift + F10 para abrir um prompt de comando.
3. No prompt de comando, digite Diskpart, tecle enter.
4. Digite List Disk, tecle Enter.
5. Digite Select Disk # (onde # é o número do drive que aparecer no prompt), tecle Enter.
6. Digite Clean, tecle Enter.
7. Digite Convert GPT, tecle Enter.
8. Digite Create Partition EFI Size=100, tecle Enter.
9. Digite Format FS=FAT32 Quick, tecle Enter.
10. Digite Create Partition MSR Size=128, tecle Enter.
11. Digite Create Partition Primary Align=4096, tecle Enter.
12. Digite Format FS=NTFS Quick, tecle Enter.
13. Digite Exit, e depois Enter.
14. Feche o prompt.
15. Clique em Próximo (Next).
16. Clique em Instalar Agora (Install Now).
17. Aceite os termos e clique em Próximo.
18. Escolha Personalizado: Instalar o Windows apenas (avançado)(Custom: Install Windows only (advanced)).
19. Clique na partição.
20. Clique em Próximo.*
21. A partir daí, siga as instruções na tela até chegar na área de trabalho.
*Se fez tudo até aqui certinho como descrito acima, o resto é só o famoso "avançar, avançar, avançar..." 


Adendo 01/06/2021

Já estava desistindo quando achei este um post em https://www.icare-recovery.com/howto/sd-card-turned-raw.html que acrescentou um comando ao diskpart: alinha que começa com attributes no print abaixo matou o problema





segunda-feira, 26 de maio de 2014

Próximos projetos


  • reset de attiny HVSP
  • base de soldador e holder de circuito (acrescentado cooler de aspiração de vapor de solda, holder de solda, multi-alimentação 5 e 12 v e iluminação articulada)
  • controlar servo via pwm Fácil
  • arduino bluetooth com HC-06 Fácil
  • matriz de leds
  • esp8266 - monitor de conexão internet
  • relógio despertador com alarme, sensor de presença e de luminosidade
  • IoT - webserver com esp8266
  • o'baka one chip arduino - http://make.kosakalab.com/arduino/obaka/project-5/index_en.html
  • leitor/emissor infravermelho de controle remoto
  • regulador de velocidade de cooler via pwm
  • sequenciador de luzes de natal
  • arduino ethernet com enc28j60
  • arduino wifi com esp8266 - IoT 
  • tinyUSBboard com atmega328
  • laser show (Make Mag 20)
  • sirene espanta cachorros - make mag 26
  • hexapod com 12 servos
  • controlador de motor de passo com uln2003
  • alarme para moto
  • sensor de chuva na janela aberta
  • cubo led 8x8x8

  • Interface android com adição, modificação de botão e função para acionamento de automação.


segunda-feira, 14 de abril de 2014

Acertando o Atmega8-16PU para testes com o USBAsp


    Tive um pequeno problema ao programar o Atmega8 somente tendo o protoboard e o USBAsp. A dica é ligar um crystal de 16Mhz e dois capacitores cerâmicos de 22 pF como no esquema do Minimal Shrimp.
    Depois basta ligar o USBAsp nos pino 17 a 20, 22 e 1, conforme  http://webappfreelancer.blogspot.com.br/2013/06/bootloader-no-arduino-minimal-shrimp.html. jumpeia-se somente os pinos 7 com 20 e 22 com 8. O restante dos componentes são dispensáveis. 


    Acertamos os fuses para 8MHz internos (os meus fuses ficaram com L:0xE4 e H:0xD9. 
    Pode se retirar os capacitores e o crystal. 
    Agora o circuito com o Atmega8 funciona praticamente sem qualquer componente extra a 8Mhz.
    Lembre-se que a precisão não é tão boa quanto quando utilizamos um crystal externo, além dos ciclos serem mais demorados. Mas vários projetos que não demandam muita velocidade podem ser utilizados dessa maneira.
    Planejo utilizar para manipular um controle remoto com IR, que deve ser meu próximo projeto.

domingo, 13 de abril de 2014

Entendendo os fuses de AVR - attiny, atmega



Baseado na página http://embedderslife.wordpress.com/2012/08/20/fuse-bits-arent-that-scary/ e http://www.ladyada.net/learn/avr/fuses.html, como o próprio nome diz, não deve ser tão assustador de se entender os bits de fuse dos microcontroladores AVR.

Nem vou traduzir fuse e lock porque não tem esse sentido ao pé da letra. Fuse=fusível é feito para queimar e lock seria travar. A idéia do uso não é esta. Baseado no site acima e em alguma pesquisa para confirmar a veracidade das informações, vai um resumo e algumas considerações e obsevações.


Cada modelo de AVR tem uma configuração diferente. Caso queira uma calculadora online, podemos utilizar  http://www.engbedded.com/fusecalc ou http://eleccelerator.com/fusecalc/fusecalc.php (prefiro o último devido às descrições serem mais detalhadas).


Observe que são bits. Bits que configuram de alguma forma o comportamento o AVR "como acesso à memória, clock e seu divisor, as opções de inicialização, de programação e assim por diante".

AVISO: manipular os bits de fuse e lock incorretamenta podem "bricar" o seu microcontrolador, isto é, eles ficam inacessíveis. Caso aconteça isso, tente seguir algumas medidas destas páginas: http://www.larsen-b.com/Article/260.html e https://sites.google.com/site/wayneholder/attiny-fuse-reset (não testadas). Resumindo, muito cuidado ao manipular pois o simples erro de configurar o clock já pode bricar o AVR.

Outro ponto interessante é que para ativar um item de configuração temos que zerar o bit correspondente (isto é o inverso da lógica aprendida em informática), causando muita confusão.

Os bits de fuse e lock podem variar conforme o modelo dos AVRs. É sempre importante conferir nos datasheets de cada modelo. Abaixo estão alguns exemplos. As observações valem para qualquer modelo.

Lock bits

O ideal é evitar mexer nestes bits. Dizem respeito à bootloader, des/ativação da pinagem, etc. 
lock bits do Attiny25/45/85

lock bits do Atmega328P

LB1 caso seja ativado (zero) desabilita a programação da Flash e EEPROM
LB2 caso seja ativado (zero) desabilita a programação e verificação da Flash e EEPROM

High fuse bits

Os 3 bits abaixo são os mais problemáticos quando alterados sem conhecimento:
RSTDISBL: este bit corresponde ao pino de RESET, liberando para I/O caso esteja ativado. Atenção: a maioria dos programadores de AVR utilizam este pino para fazer o upload do programa; quando ativado poderá impossibilitar a reprogramação.
DWEN: também altera o comportamento do pino de RESET. Ativa o modo DebugWire para este pino, podendo causar os mesmos problemas que em RSTDISBL.
SPIEN: desliga a programação no sistema.

Os bits abaixo afetam o comportamento dos AVRs sem tantos problemas ou bricks.
WDTON: WatchDog timer sempre ligado. Watchdog reinicia o microcontrolador quando detectado algum problema (normalmente quando não passa periodicamente por uma determinada instrução do programa, pois todo programa AVR tem um loop).
BOOTRST: controla se a execução do microcontrolador se inicia pelo programa do Flash ou pela seção de bootloader.
EESAVE: preserva o conteúdo da EEPROM mesmo que executado um Chip Erase (apagamento do chip).


Low fuse bits


CKDIV8: quando zerado causa a divisão do clock por 8; caso o clock interno de 8Mhz esteja selecionado o clock efetivo será de 1Mhz;
CKOUT: permite usar o clock para dispositivos externos quando necessário.
SUT1,0: definem o tempo de startup - inicialização:

Atmega328P tempo de startup 

Attiny25/45/85 tempo de startup 

CKSEL3,2,1: definem a faixa do clock a ser utilizado e quais capacitores de cerâmica a serem utilizados.


CKSEL0: juntamente com SUT1,0 definem o tipo de crystal e tempo de startup

CKSEL0 + SUT1,0 - Attiny25/45/85
(valores para Atmega328P são bem próximos)

Extended fuse bits - também e melhor não alterar

BODLEVEL0, 1, 2: (Brown-out Detect) em alguns modelos podem fazer parte do high fuse bits. São usados para configuração da tensão interna de desligamento do AVR. Caso a tensão caia muito o chip se desligará até a normalização, evitando erros de memória, tempo, etc.
SELFPRGEN: habilitação da programação pelos próximos 4 ciclos de clock. Ele se auto-limpa após esse período.

Dica: sempre que possível, leia os valores dos fuse bits (o AVRDudess consegue), transfira o valor para uma das calculadoras de fuse bits, altere o que for necessário e transfira o valor para o o aplicativo que consiga gravar (o AVRDudess também faz isso)






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.