Postagens

Mostrando postagens de 2015

Conseguindo mais espaço no SD

Imagem
Hoje eu tive um problema: o SD de 4GB do RPi lotou, aí não deu pra atualizar o sistema e outros problemas maiores ocorreram. Decidi tomar uma atitude drástica: remover o X. Removendo o X padrão A ideia é remover o ambiente gráfico padrão. Como preciso de um ambiente gráfico lá, então preciso optar por um mais leve. Primeiro eu removi o X completamente: sudo aptitude remove x11-common Apareceram mensagens sobre pacotes dependentes que seriam excluídos e outros que seriam deixados de lado para serem corrigidos depois. Aceitei a sugestão. Depois do processo, limpei o cache de instalação e verifiquei as atualizações: sudo apt-get autoremove sudo apt-get clean sudo apt-get update O espaço livre aumentou para 48%. Sei disso porque usei o df -h: Aí deu pra atualizar o sistema de boa: sudo apt-get upgrade sudo rpi-update Usando um ambiente gráfico mais leve Um ambiente gráfico é útil em vários momentos e não quero ficar sem pelo menos um bem básico. O lance é que exist...

PIC: Uma introdução rápida ao mundo dos microcontroladores

Imagem
PIC significa "Programmable Interface Controller", ou Controlador de Interface Programável. Por ser uma interface programável, dá pra fazer coisas bacanas com um desses em conjunto com uns componentes eletrônicos. Meu nome é PIC, Microchip PIC. O arduíno, o Raspberry PI, e outros equipamentos nesse estilo, usam microcontroladores pra serem legais. As portas (pinos) são conexões diretas com os microcontroladores associados. O arduíno, por exemplo, usa um ATmega (o número do modelo depende da versão do arduíno). Esses equipamentos não são apenas o microchip: existe uma quantidade razoável de componentes eletrônicos que são necessários conectar entre o microcontrolador e o mundo externo para torná-lo funcional: cristal de pulso, alimentação, capacitores, resistores, transistores, etc. Se temos o arduíno, pra que queremos um microcontrolador? O arduíno e o Raspberry Pi são ótimos sistemas de criação e design de circuitos. O problema é que são caros, muito caros para de...

E, finalmente, um mundo de resistores

Imagem
Chegaram. Até que enfim. Isso merece um post. Talvez seja interessante entender o básico sobre resistores antes de continuar. Combinando resistores Por mais que tenhamos um mundo de resistores, nem sempre temos aquele que nos atende exatamente com o valor que precisamos. Os resistores comerciais não abrangem toda gama possível sozinhos, daí precisamos combinar pra alcançar os valores adequados. Existem três maneiras de combinar os resistores Em série É a combinação mais simples. Se precisamos de um valor maior, então colocamos resistores de valor menor um após o outro e bingo, atingimos o valor que precisamos. Exemplo: precisamos alcançar uma resistência de 940 ohms, mas os valores comerciais mais próximos encontrados são apenas 910 e 1K. Se na gaveta tivermos dois de 470, então, problema resolvido. A fórmula é a seguinte: Rt = R1 + R2 + Rn Onde: Rt: Resistência total; R1, R2, Rn: valores dos resistores ligados em série. Em paralelo Não deixa de ser simples tam...

De olho nas novidades!

Imagem
Desde a última semana estão chegando novos itens para a oficina. - Pi Câmera - Relés - Joystick - Motor de passo - Display 16x2 - Multímetro bacanudo (o anterior foi pro saco quando troquei a bateria) Mas ainda faltam chegar algumas coisas importantes, como resistores de diferentes valores, e que fazem muita falta, além de dois PICs 16F84a. Além destes, chegaram os irmãos mais novos do Raspberry Pi B: - 4x Raspberrys Pi B+ - 1x Raspberry Pi A+ Boa parte dos equipamentos já foram testados e aguardam a vez para figurarem nos novos projetos (chega de LEDs, certo?). Também montei um cluster com os Raspis, e o post sobre a experiência está quase pronto (faltam os testes de desempenho). Não suma, novos projetos virão, mas, pra não passar em branco, segue o código de um jogo de luzes utilizando Raspberry Pi, LEDs e resistores de 300ohms. Arquivo ledshow.py from Pin import Pin import time leds = [Pin(17), Pin(27), Pin(22), Pin(18), Pin(23), Pin(24), Pin(25), Pin(8)] def a2h(...

Um programador PHP entendendo Pyhton

Pro resto do mundo, Python é uma linguagem fácil de assimilar. Pro resto do mundo. Pra mim é algo muito novo, bem distante do C++, e tenho tido certa dificuldade. Por isso decidi começar a escrever mais sobre o Python e aprender a usar isso aí. Uma classe pra chamar de minha Uma classe é basicamente um um conjunto de métodos e propriedades. A classe costuma representar algo no mundo real, como, por exemplo, um interruptor. Se eu quiser criar, em PHP, uma classe para tratar um interruptor, vai ficar semelhante a isso: <?php   class Interruptor {     $estado;     function __construct($estadoInicial = 'desligado') {       $this->estado = $estadoInicial;     }     function lerEstado() {       return $this->estado;     }     function alterarEstado() {       if($this->estado == 'desligado') {  ...

Considerações sobre PWM no Raspberry Pi e Clustering

Logo depois de criar aquele post do LED RGB , aprendi que a versão 0.52a do RPi.GPIO habilita, via software, o PWM para todos os pinos. Isso quer dizer que dá pra ter não apenas 7, mas mais de 16 milhões (255x255x255) de cores com um único LED RGB. Da hora isso. E pra usar com o PHP? A grande questão é que o PWM via software foi escrito em C. Dá pra usar no Python sem problema algum, mas estou migrando para o PHP, então já viu né: como isso vai funcionar? De acordo com o site do projeto , depois de instalado, basta usar o comando "rpio" pra fazer a coisa acontecer, então posso considerar rodar isso em segundo plano quando for necessário, mas preciso estudar isso direito por algumas horas. E sobre cluster... Além disso, estudando sobre cluster, notei que, aparentemente, para um processo ser dividido, é preciso que seja executado através do comando mpiexec . Ele roda tranquilo aplicações desenvolvidas em C, Fortran e Python. A questão é: vai dar pra rodar o Apache tam...

PHP + Raspberry Pi - a hora da verdade

Imagem
Imagine um mundo onde você pode usar uma linguagem web para manipular os pinos do Raspberry Pi. Não precisa imaginar, esse mundo existe com a recém criada classe Pin.class.php. E o programador disse: e façamos o código à imagem de nossas ideias! Como tratei no post anterior, dá pra manipular os arquivos correspondentes ao pinos do RPi usando sysfs. Aquele foi o primeiro passo para migrar do Python para o PHP. Agora, entendendo como funciona essa manipulação, basta criar algumas classes para manipular os pinos e beleza, tudo fica lindo. Classes de interesse Como tudo vai rolar num browser, então pode ser interessante criar classes para manipular o HTML, mas isso não é essencial. Para fornecer o acesso básico ao pino, criarei a classe Pin.class.php com o seguinte conteúdo: <?php     /**      * Pin.class.php      * Manipula um pino no Raspberry Pi      * by Leonardo Costa      * add...

Manipulando os pinos do Raspberry Pi através do sysfs

Imagem
Em algum lugar alguém uma vez falou que Python é uma linguagem bem fácil de aprender. Talvez por isso deram tanto suporte a ela no RPi, mas... e pra quem já curte uma outra linguagem, tipo PHP? Veja, fiquei um tempo sem programar pro RPi e hoje, quando voltei, me enrolei todo. Sou adepto a ideia de que o lance é usar uma linguagem apenas, sempre que possível, pois, quando se tem muitas linguagens na cabeça, não dá pra ficar bom em nenhuma delas. Pois bem. Decidi migrar de Python para PHP no RPi, principalmente agora que quero trabalhar com integração. Pesquisei e percebi que isso não era difícil. Veja os motivos É Linux rodando no Raspberry Pi Isso quer dizer que todos os processos de hardware pode ser interpretados como arquivos de texto através do sysfs. Então, para enviar um sinal para um pino qualquer, basta escrever no arquivo correspondente ao pino e pronto, tudo feito. Ele é um bom servidor Apache + PHP E também de banco de dados. Claro que ele não será, sozinho, tão...

Controlando LED RGB com Raspberry Pi

Imagem
Não abandonei o meu querido amigo RPi. Aliás, de tanto gostar, até arrumei uns amigos pra ele. Mesmo tendo apenas um pino PWM (à partir da versão 0.5.2 do RPi.GPIO isso passa a ser um mito) dá pra controlar as cores de um LED RGB usando o RPi com facilidade. O processo é basicamente o mesmo de qualquer lógica para acender LEDs comuns: cátodo no negativo, ânodo no positivo e corrente passando por eles. Como não temos pinos PWM disponíveis para controlar cada cor, então podemos optar pelas cores primárias e secundárias, gerando assim 7 cores, dispensando o uso do PWM. Para implementar isso teremos que considerar como as cores serão obtidas: cada pino pode assumir o estado ligado e desligado. Dessa maneira, com 3 pinos representando as três cores primárias, dá pra conseguir o seguinte: R G B Cor 1 0 0 Vermelho 1 1 0 Amarelo 1 1 1 Branco 0 1 1 Ciano 0 0 1 Azul 1 0 1 Magenta 0 1 0 Verde Agora é só criar uma coleção (array) com esses valores: cores = [[1,0,0],[1,1,0],[1...

Controlando LED RGB com arduíno

Imagem
Antes de começar, verifique se os LEDs que você possui são de ânodo ou cátodo comum, pois o esquema muda de acordo com o tipo escolhido. O esquema considera os com ânodo comum, ou seja, vou ligar o positivo na perna maior. Para entender o projeto, não deixe de ler a matéria sobre ânodo, cátodo e PWM. O circuito Liguei o pino de 3.3v (pois com 5v fica muito claro) a um resistor de 300ohms e, daí, no ânodo do LED. Os pinos 9, 10 e 11 controlarão as cores vermelho, verde e azul, respectivamente. O circuito... Conectado aos devidos pinos... O código Note que será necessário ter a biblioteca Pin.h para que o projeto funcione. Confira a última versão . #include <Pin.h> Pin red(9); Pin green(10); Pin blue(11); int cores[][3] = {   {255, 0, 0}, //Vermelho   {0, 255, 0}, //Verde   {0, 0, 255}, //Azul   {255, 255, 0}, //Amarelo   {255, 0, 255} //Rosa }; //Aplica as variações de intensidade de cor void toColor(int r, int g, int b, i...

Cátodo, Ânodo, PWM e LEDs RGB

Imagem
Então. Até algumas horas atrás eu achava que havia queimado uns LEDs aqui, mas não foi isso que aconteceu. Tenho aqui comigo uns LEDs RGB que possuem o ânodo comum, não o cátodo, e na internet o pessoal geralmente tem LEDs com o cátodo comum. Essa era a confusão... E esse tal de cátodo é primo de quem? Cátodo é um eletrodo negativo, enquanto ânodo é um eletrodo positivo. Isso quer dizer que, pelo cátodo só sai e, pelo ânodo, só entra (quem saca de eletrônica sabe que na prática a teoria é outra, mas enfim). Aí eu tava ligando o negócio invertido achando que meus LEDs eram de cátodo comum. Ok. Por conta disso o lance da manipulação de LED RGB atrasou deveras, mas agora chegou a hora. E vamos começar pelo... PWM PWM significa modulação por largura de pulso, ou Pulse Width Modulation. É assim: um pulso é quando ligamos e desligamos alguma coisa. Ligar e desligar várias vezes gera vários pulsos e o intervalo de duração do pulso é a sua largura. A imagem a seguir explica isso: ...