Mês: setembro 2015

ARM – SysTick fácil.

SysTick é um timer decrescente presente na maioria dos processadores ARM Cortex ligado diretamente ao Core Clock com registrador de 24 Bits.

O SysTick gera interrupção a cada estouro do contador, ou seja, quando chega em 0. Para configurar usando os registradores diretamente segue exemplo:

SysTick->CTRL = 0; // Desliga o SysTick
SysTick->LOAD = 1000; // Conta de 1000 até 0
SysTick->VAL = 0; // Valor inicial, e também valor da contagem atual
SysTick->CTRL = 0x7; // Liga o SysTick

Ou para quem tiver disponível os arquivos CMSIS (muito provavelmente) este pode ser inicializado diretamente:

Neste caso estabelecemos um estouro a cada 1ms

SysTick_Config(SystemCoreClock / 1000) ;

Neste o loop while trava se um valor impossível for inicializado.

while (SysTick_Config(48000000 / 2) != 0);  // 48Mhz / 2 = 24Mhz

Ótima opção para iniciar no mundo ARM.

Lembre-se que o tamanho máximo do contador é de 24 bits o que representa um valor decimal de 16777216. Assim dividir o 48Mhz por 2 retorna uma valor maior que o máximo possível. Deu para perceber que conseguir 1 Segundo de estouro só é possível em clocks mais baixo.

Para que as interrupções ocorram não esqueça de definir uma função (Handler) que deve estar adicionada na Vector Table:

void (* const g_pfnVectors[])(void) = {
&_estack,
Reset_Handler,
NMI_Handler,
FaultHandler,
0,
0,
0,
0,
0,
0,
0,
SVC_Handler,
0,
0,
PendSV_Handler,
SysTickIsr, //Função SysTickIsr que será chamada a cada estouro
};

Porque sou monarquista?

Origem

Falar em monarquismo é ser taxado de louco hoje em dia. Entretanto aos que assim nos taxam espero ao menos um pouco de estudo para poder iniciar um debate.

Dois livros, que li, me defendem dessa fama; um é a ‘Nova arte de pensar, Jean Guitton‘ livro que em um de seus ensinamentos prega que devamos negar a realidade para chegar a um pensamento novo. Então negando a frase ‘Louco é aquele que perdeu o juízo‘ este chega a brilhante conclusão que ‘Louco é aquele que perdeu tudo, menos o juízo‘. Também se negarmos que o sistema politico atual não é a melhor opção iniciam-se novas descobertas.

O outro livro não sei o nome, era somente um livro do ensino médio de história do Brasil que usei para estudar para os vestibulares. E lendo ele todo (sempre costumo le-los completamente) uma frase no final do capitulo sobre o período monárquico mudou de forma latente meus pensamentos ‘… tirando a escravidão o Brasil foi neste período um país mais democrático e pacifico que os próximos governos …‘.  Esta frase mudou meu preconceito – comum aos brasileiros –  ao período imperial. Aos poucos estudando cada vez mais a história do Brasil e do Mundo fui percebendo que de fato a monarquia nunca deveria ter sido extinta.

Tudo isso bem antes da crise politica atual.

Minhas razões

Algumas conclusões próprias me convenceram de ser um defensor desse sistema:

  • Um Rei dura muito. Se cada presidente que subir no planalto quiser enriquecer a si e seus amigos a falência é óbvia.
  • Um presidente e seus amigos tem data de saída. Não há compromisso para fazer o serviço correto não é mesmo? E pior, com a reeleição (ou sem ela) a preocupação é em manter a si e seus amigos no cargo, mesmo que isso custe a falência do país.
  • Uma repulsa comum à figura do Rei é: “vamos colocar um sortudo lá para viver a custas de nosso dinheiro?”. E dai? São poucos. Prefere então sustentar outros tantos a cada período de renovação no presidencialismo? Lembre-se que basta o sujeito ser presidente que já tem direito a pensão vitalícia. Isso representa infelizmente a baixa qualidade moral no país de desrespeito a figura da autoridade. Ser um Rei é visto hoje como um crime, uma subordinação humilhante. Não é. Ter um Rei estimula o respeito e aos valores familiares que tanto precisamos.

Razões dos outros monarquistas

Há um movimento tímido, mas com ótimas razões em defesa da restauração da monarquia.

  • Um Rei pensa para a próxima geração, um presidente para as próximas eleições.
  • Se houver crise de representatividade no parlamento o Rei dissolve o parlamento e convoca novas eleições (algo que sempre gostaríamos de fazer.)
  • A República veio para resolver problemas que ela não conseguiu.
  • No período imperial houve paz e liberdade. No período republicano tivemos tiranos, regimes totalitários, roubos. Isso é estabilidade?

Caminho

Você sabia que no período imperial o Brasil era um país rico? Mais importante que muitos países atuais (Celso Furtado). A República acabou com isso.  Um Rei não destruiria a Petrobras, porque ele não precisava ganhar dissecando as riquezas da maior empresa do pais. Um Rei faria a Petrobras crescer e ser forte por orgulho, por querer ganhar mais e entregar ao seu filho e cidadãos um país próspero.

Dropbox no Linux

blue_dropbox_glyph-vflJ8-C5d

DropBox

Para quem precisa de algum lugar seguro e remoto para guardar arquivos de forma transparente no Linux o DropBox é uma boa alternativa por ter software nativo.

A configuração é simples. Selecione o local onde serão sincronizados os dados com o servidor. Vincule uma conta – e você deverá ir ao site criar uma – e pronto.

Tudo que for colocado ou atualizado nesta pasta irá ser sincronizado automaticamente com o servidor.

Captura de tela de 2015-09-18 10-00-57

Para ajudar instale os plugins do seu navegador de arquivos usado para aumentar as facilidades. Eu uso o Caja do fork Gnome2 MATE.

No Archlinux para instalar o programa do DropBox será necessário adicionar o repositório não oficial (se não sabe como).

[archlinuxfr]
Server = http://repo.archlinux.fr/$arch

E instalar o dropbox

pacman -S dropbox

O espaço inicial é de 2,5G. Sim é menos que o GoogleDrive, mas funciona no Linux sem dor de cabeça.

Ir à página de registro de uma conta

Automação residencial como fazer – Luzes

Automatizar uma casa pode ser feita sem gastos excessivos. Felizmente aparelhos inteligentes estão sendo lançados facilitando a inter-conectividade e processos automáticos. Para isso demonstrarei aqui alguns equipamentos e cenários comuns.

Controle de Luzes

Para controle de lampadas por controle remoto utiliza-se algum receptor de Radio Frequência ou Infravermelho com saída biestável. Tem preço aproximado de R$ 90,00 dependendo de quantos reles de saída for utilizados.

Na China e nos sites chineses (link) de compras é possível achar bons e baratos equipamentos de saída biestável alimentados com 127V/220V com diversos canais de saídas.

O controle por RF é útil para distâncias longas; como outro comodo da casa, luz da garagem ou de fora em um sítio por exemplo. Os por infravermelho ficam restritos ao mesmo ambiente já que o receptor deve ‘enxergar’ o controle.

O controle da intensidade é feito por dimmer. Aparelho antigo – e funcional – feito para lampadas de filamento. Lampadas fluorescentes compactas para funcionarem com dimmers tem que ter este recurso especificado: são os modelos ‘dimerizáveis’. Porém para uma solução mais bonita e elegante recomendo as fitas LEDs.

Reles de impulso

Reles de impulso são uma ótima solução para ligar diversas lampadas e equipamentos mais pesados em um ambiente de automação. Com um pulso no lado do controle que pode vir de um interruptor tipo campanhia, um receptor RF ou um microcontrolador a saída liga ou desliga.

Sabe aquelas ligações paralelas para controle de luzes? Aquele monte de fios? Acabou. Com um rele de impulso você pode acrescentar quantas lampadas ele aguentar na mesma fiação sem necessidade de acrescentar fios para comandar de um lugar e de outro. Também em qualquer lugar um controlador pode ser acrescentado sem nova fiação.

Reles de impulso da Finder com duas saídas permitem que a cada pulso as saídas se alternem (des-des, lig-des, des-lig, lig-lig) e assim com um receptor da para comandar dois circuitos de lampadas diferentes.

Lampadas LED

Uma novidade crescente com ótimas opções de controle as lampadas e fitas LED podem tornar um ambiente muito bonito. Compram-se em lojas especializadas em iluminação no Brasil e em São Paulo na Santa Efigênia. O preço varia muito. Pois há produtos ruins, bons e ‘cult’ demais.

Pode-se controlar a cor e a intensidade. Fitas LED RGB farão o ambiente elegante ao colocando-as escondidas em forros de gesso por exemplo. Não é caro. Porém o setor encontra-se desregulado e há opções ruins e boas.

Philips HUE , uma opção elegante e durável com preços altos. Com o aplicativo para Android/IOS o controle estará sempre ao alcance das mãos.
Fitas LED chinesas tem preços ótimos. Fique atento, porém, que fitas LEDs trabalham com 12V ou 24V assim é preciso um ‘driver’ que fornece esta tensão e corrente constante. Um driver ruim fará a corrente variar e isto diminui a vida útil dos LEDs.

Eventos inteligentes

Para controlar lampadas com certos eventos você precisará de sensores. Os mais comuns são os sensores de presença que custam a partir de R$ 40,00 ou sensores de portas com custo menor. Ligue estes sensores a algum rele de impulso por exemplo e o controle esta pronto.

Ligar e desligar em horários determinados pode ser implementado com o uso de reles inteligentes que

CLPs

Quando se contrata um ‘integrador’ (pessoa que basicamente integra os aparelhos em um serviço de automação residencial) normalmente os CLPs serão usados. Existem modelos pequenos e baratos com 4 saídas. Porém o gerenciamento dos acionamentos por computador necessitará de CLPs com saídas seriais ou Ethernet.

O Arduino para os entendidos pode facilmente substituir um CLP e com preços mais em conta com toda a flexibilidade da programação e conexão de sensores e atuadores. O Raspberry PI também tem sido muito usado devido sua saída Ethernet, GPIOS e um servidor Web nativo.

Smartphone

Na moda, controlar tudo por Smartphone te dou dois caminhos. A Philips Hue ou o Orvibo Allone.

A Philips Hue é uma opção segura e bonita, mas o preço é alto.

20140228175300833

O Orvibo Allone tem artigo aqui neste site.

O preço não é tão alto se pensarmos nos recursos: Aprox U$ 35,00.

Outro caminho é usar o Raspberry PI … mas somente para conhecedores da área sem dúvida.

Links:

Orvibo Allone Wiwo – Central de automação residencial

20140228175300833

O mercado de automação residencial poderia-se dividir em três grandes basicamente: Os padrões americanos, os padrões europeus e os nascentes chineses.

Orvibo Wiwo-R1 é provavelmente um dos grandes representantes dessa crescente inovação chinesa. Este aparelho faz maravilhas reunidos em um só. Com ele você poderá programar todos seus controles remotos infra-vermelhos do Home Theater, da TV, do Som e tantos outros e usando um aplicativo Android no smartphone operar todos eles. Essa possibilidade se faz através da conexão wifi da casa.

Também como diferencial ele incorpora um transmissor 433mhz adicionando também o controle dos portões, alarmes e luzes.

O melhor de tudo: é barato para os recursos encontrados nele. Custa aprox $32,00 muito abaixo dos obsoletos X-10.

O que gosto neste aparelho é que não é exatamente um aparelho inovador para um conhecedor da eletrônica. Nada que uma reunião de um STM32 e alguns periféricos não façam, entretanto é interessante de se ver como eles conseguem implementar uma idéia e lançar para o mundo.

Aonde comprar?

Eu comprei no Alliepress como nos links abaixo:

Mas se você pode torrar dinheiro no Mercado Livre também vende.

Pessoalmente recomendo pelo preço imbatível, o frete gratuito e os recursos inimagináveis em uma linha americana com este preço.

Manual: http://www.gotake.cn/dl/manual/AllOne_manual.pdf

Veja este video sobre o aparelho para ter uma idéia:

Como funcionam os controles Rolling Codes/Hopping Code

No princípio a inocência

Houve uma época em que acionar o alarme de um carro era feito através do envio de um código de tamanho e forma fixa. O famoso e muito utilizado HT6P20-B da Holtek transmite  28 bits imutáveis a cada aperto do botão do controle.
O receptor era então sincronizado com este código e toda vez que este recebesse o código ele efetuava uma ação como travar/destravar o alarme, abrir e fechar o portão ou ligar uma lampada.

E os ladrões viraram nerds …

Enfim, um código fixo imutável poderia ser facilmente copiado e retransmitido por qualquer outro transmissor que o receptor nem saberia de quem se tratava. Mais conhecido como Clonagem ou Replay Attack.

Assim é o funcionamento do controle Learning Code.

Criptografia rolante

Uma forma de mudar isto era obviamente criptografar a informação – o ID do controle – . Mas se você pegar um código que nunca muda e criptografa-lo o resultado sera somente outro código fixo.

Para isso é necessário que se mude o código transmitido a cada aperto do botão ou tempo programado de forma que um possível intruso (homem do meio) não consiga prever qual o próximo código a ser gerado.

Para que o código varie constantemente normalmente é usado um contador interno que é  incrementado a cada aperto do botão. Assim monta-se uma bloco contendo o contador e algumas outras informações como o botão apertado e o nível da bateria do controle e criptografa-se este bloco com algum algoritmo criptográfico.

Como o contador constantemente varia o bloco transmitido será sempre diferente. Assim somente o receptor com a chave para descriptografar conseguirá ler o conteúdo.

E aqui fica o pulo do gato. Mesmo que um ladrão pegue uma transmissão legítima e reenvie ao receptor este verá que o contador desta transmissão já foi aceito antes, então ignora a transmissão. O receptor só ira aceitar uma transmissão válida se este bloco conter um contador inédito.

Veja que uma forma de ataque é poluir o espectro RF para que sua transmissão não chegue ao receptor – portão, carro – e o atacante consiga pegar esta transmissão e reenviar posteriormente ao receptor para efetuar a ação. Como o contador não foi recebido o receptor aceitará a transmissão. Por isso é bom certificar-se que o carro ‘travou’ o alarme do que simplesmente apertar o botão e nem dar bola.

Keeloq

Keeloq é um algoritmo proprietário da Microchip que criptografa um bloco de 32 bits com uma chave de 64 bits. Os chips mais famosos no Brasil atualmente utilizando ele são os HCS200 e HCS301 que pré-programados com a chave transmitem um código que sempre varia devido a um contador que é incrementado a cada aperto do botão.

As empresas tem uma chave única para todos os controles (ou segmentos de produtos, região). Se você descobrir a chave você clona qualquer carro ou portão do mesmo alarme.

AES128

Alguns estão começando a implementar um sistema rolling code com o AES128. A tendência é utilizar a mudança do contador de forma temporal ( a cada 1ms por exemplo).

A ideia é simples e de fácil implementação em um Arduino, para testar dois Arduinos e um par TX-RX são necessários. Um envia o código criptografado e o outro descriptografa, verifica e aciona:

Seja:
uint32 Contador
uint24 ID
uint4 Botão
Faça a cada 1ms:
Incremente o contador (ou outra forma de variação)
Se o botão for apertador faça:
Monte um bloco de 128 bits  contendo o contador, o botão e se quiser o ID.
Criptografe este bloco com a chave
Some a este bloco o ID (logo será um bloco de 24+128bits) e transmita

Clonagem

Se você pretende clonar algum controle Keeloq boa sorte. Há uma técnica utilizando o ataque de sub-channel onde é observado o consumo de energia de um receptor implementado em PIC e conhecidos os consumos específicos de cada instrução é possível estimar a chave. Porém é uma técnica avançada.

Para saber mais (todos em inglês) …

Cores no terminal serial pelo Arduino/STM32 no linux

Poucos sabem mas as cores em um terminal serial é possível devido a emulação VT-100 nos terminais que aceitam códigos de escape com certas ações e dessa forma pode-se fazer saídas intuitivas e bonitas como da imagem destacada do programa WeeChat.

Esses códigos não somente estabelecem cores mas fornecem comandos úteis para montar telas estáticas (não rolantes) como as que se consegue com a biblioteca ncurses (e antiga conio.h), inclusive com o uso dos recursos de janelas da tabela ASCII a ncurses torna-se desnecessária.

Veja, então, exemplos já embutidos em printf para aprender como utilizar estes códigos. Qualquer outra função serial que envie uma string entre aspas funcionará também.

Todos os códigos iniciam com o ESC em octal 033.

printf("\033[2J"); // Apaga todo o terminal
printf("\033[H"); // Manda o cursor para o começo da tela
printf("\033[?25l"); // Esconde o cursor
printf("\033[48;5;4m"); // Estabelece a cor Azul
printf("\033[0m"); // Reseta as formatações estabelecidas

Também funciona em Python como no exemplo:

print("\033[2;0f") # Coloca o cursor na linha 2

Na internet há muito mais códigos disponíveis como em http://ascii-table.com/ansi-escape-sequences-vt-100.php entretanto você poderá ver algumas diferenças entre os sites no código de escape utilizado pois VT-100 é uma tecnologia antiga e foi utilizada em várias plataformas diferentes mudando alguns aspectos.

Neste site (http://misc.flogisoft.com/bash/tip_colors_and_formatting) há uma lista útil para códigos de escape de cores. O site foi feito com exemplos para o comando echo do terminal porém basta substituir o \e por \033 e funcionará da mesma forma.

No Windows utilize o famoso Putty para poder visualizar as cores.

Esses recursos são úteis para se livrar do velho conceito de tela rolante e podermos fazer telas avançadas para visualização de controle de informações bonitas e funcionais.