Arquivo da tag: raspberry pi

Raspberry Pi 101 – GPIO Buttons

Welcome back folks!

Vamos continuar a desbravar as capacidades de nosso Raspbery Pi. Hoje, vamos mostrar a você como realizar a interface de um botão com seu Raspy. Utilizaremos a informação fornecida por uma porta de nosso GPIO para alterar o curso do nosso programa, tornando nossas aplicações mais interessantes e divertidas.

Os materiais que você vai precisar são:

– 01 Raspberry Pi modelo A ou B (estou usando o B);

– 01 LED de qualquer cor;

– 01 Resistor de 470 Ohms;

– 02 Push Buttons

– Alguns jumpers e uma protoboard.

Deu para perceber que iremos precisar do hardware que usamos em nosso primeiro tutorial, o LED e o Resistor. Optei por manter as conexões para aproveitarmos o trabalho já realizado e um pouco do código que já testamos anteriormente. Nosso hardware será conectado da seguinte forma:

00_GPIO_Button

INSERIR ESQUEMÁTICO

O botão conectado ao pino 22 será responsável por parar a execução de nosso programa. O botão conectado ao pino 8 será o responsável por alterar o comportamento de nossa saída, fazendo com que o LED pisque. Repare que não estou utilizando resistores de Pull-Up junto aos botões, isso porque  o Raspy tem resistores de Pull-Up (e Pull-Down) disponíveis internamente e passíveis de serem configurados via software, através da biblioteca RPi.GPIO.

ATENÇÃO: certifique-se de que não rodou nenhum software utilizando as GPIOs antes de montar o hardware. Se não tem certeza se deixou alguma das portas com sinais digitais ativos, abra o IDLE (IDE Python) e execute os dois comandos abaixo. Isso assegura que não ocorra nenhum curto-circuito durante a montagem do hardware. 😉

import RPi.GPIO as GPIO
GPIO.cleanup()

Muito bem, tudo conectado it’s time to code!

Mais uma vez recomendo que utilize o Spyder, como IDE para desenvolver suas aplicações. Crie um novo arquivo e nomeie helloGPIO102.py (não se esqueça da extensão .py).  Na primeira sessão do seu código fonte deve constar a documentação do seu projeto:

"""
0. Documentation Section
helloGPIO102.py
Toggle LED using button interface
Authors: Bruno Godoi Eilliar
Date: March 31, 2015.
"""

Na sessão 1 importamos as bibliotecas que iremos utilizar

# 1. Pre-Processor Directives Section
import RPi.GPIO as GPIO
import time

Na sessão 2 realizamos as declarações das variáveis que vamos utilizar e configuramos as GPIOs correspondentes ao LED e aos dois botões de nosso projeto (sw e sw_stop).

# 2. Declarations Section
sw = 8
sw_stop = 22
led = 18
GPIO.setmode(GPIO.BCM)    # Set GPIO numeration label
GPIO.setup(led, GPIO.OUT)    # set pin led as digital output
GPIO.setup(sw, GPIO.IN, pull_up_down = GPIO.PUD_UP)    # set pin sw as digital input and turn on pull-up internal resistor
GPIO.setup(sw_stop, GPIO.IN, pull_up_down = GPIO.PUD_UP)    # set pin sw_stop as digital input and turn on pull-up internal resistor

Em seguida vamos definir as funções principal e auxiliar que serão utilizadas em nossa aplicação. Primeiro definimos a função ToggleLED() responsável por fazer com que o LED pisque uma vez com um intervalo definido entre os estados. Assim, podemos utilizar o código do post anterior como base e fazer algumas modificações:

def ToggleLED(delay, pin):<br />
    """
    Function to blink LED once, connected at pin
    """
    GPIO.output(pin, True)    # Turn ON the LED
    time.sleep(delay)    # Delay for a few seconds
    GPIO.output(pin, False)    # Turn OFF the LED
    time.sleep(delay)    # Delay for a few seconds

Por fim, precisamos definir o comportamento da rotina principal do programa. Queremos o seguinte comportamento:

– Se o sw_stop for pressionado, o programa termina e limpa as GPIOs utilizadas.

– Se o sw for pressionado, o LED irá piscar uma vez, com intervalo de 0.5 segundos entre cada estado. Caso contrário, o LED ficará apagado.

O que temos acima é uma descrição do comportamento que desejamos para nosso sistema. Em algumas literaturas você pode encontrar com o nome de pseudo-code e é tido como fundamental no design de sua aplicação para evitar erros durante a fase de desenvolvimento do projeto. Recomendo que sempre estruture seus projetos em pseudo-code antes de começar a programar, isso evita muito retrabalho durante o desenvolvimento do código. 😉

Agora vamos traduzir isso para código em Python:

"""
Main subroutine
"""
print ("Running program...")
print ("To finish the program press the stop button on the breadboard.")
while True:
    stop_flag = GPIO.input(sw_stop)    # Read input
    if stop_flag == False:    # Button Pressed
        break    # Jump off while loop
    input_state = GPIO.input(sw)    # Read input
    if input_state == False:    # Button pressed
        print ("Button Pressed")
        ToggleLED(.5, led)
        time.sleep(.2)
print ("Stopping execution...")
GPIO.cleanup()

 

 Voilà! Eis sua primeira aplicação utilizando Digital Inputs em seu Raspberry Pi! Para rodar basta apertar F5 e observar as mensagens na sua tela.

Ficou alguma dúvida ou desenvolveu algo interessante com seu Raspy? Comente e vamos fazer o possível para ajudar.

Não se esqueçam de espalhar a palavra! Vejo vocês no próximo post, onde vamos fazer a interface do sensor de distância HC-SR04 e falar sobre como plotar gráficos em Python!

😉

Anúncios

Raspberry Pi 101 – GPIO

Welcome back Folks! Vamos começar com uma série de aplicações interessantes para o seu Raspberry Pi! Vamos assumir que você já saiba do que se trata e qual a proposta do Raspberry Pi; e mais importante, que você já tenha um. Se não for esse o caso, mas você está interessado em descobrir e começar a explorar essa ferramenta, dê uma olhada no site oficial: http://www.raspberrypi.org/.

Vamos ao que interessa, para esse post os materiais que você vai precisar são:

– 01 Raspberry Pi model A ou B (estou usando o B);

– 01 LED de qualquer cor;

– 01 Resistor 330Ω ou 470Ω;

Vamos nos certificar de que nosso Raspy tem tudo o que precisamos para começar nosso primeiro programa. Iremos usar Python para fazer nossas aplicações. Trata-se de uma linguagem de programação interpretada (como o Matlab) e de sintaxe altamente elegante e “limpa” (o código fonte é visualmente enxuto e fácil de ler). Claro que não é uma linguagem voltada para alta performance, como as linguagens compiladas (C e Fortran, por exemplo), mas atende às nossas necessidades de forma satisfatória. Os Sistemas Operacionais para o Raspy, geralmente, já vêm com Python instalado, para certificar-se de que seu Raspy tem Python, no shell (“prompt de comando” do Linux) digite:

which python

Se tiver instalado, o shell retornará o diretório de instalação do Python.

O Python é uma linguagem de programação Orientada à Objeto, que quer dizer que podemos aproveitar código de outras pessoas na forma de “módulos” (equivalente à bibliotecas em C/C++). Para realizar a interface de nosso Raspy com o mundo externo através das General Purpose Inputs Outputs (GPIOs), vamos precisar do módulo (ou biblioteca, como preferir) RPI.GPIO para Python. Mais uma vez, normalmente, o OS do Raspy já vem com esse módulo instalado e só precisamos atualizá-lo. No shell digite:

sudo python
import RPi.GPIO as GPIO
GPIO.VERSION

 

Você então verá a versão do módulo GPIO que está instalado. A versão atual (até a data de concepção desse post) é a 0.5.11 (saiba mais em: https://pypi.python.org/pypi/RPi.GPIO). Se tiver que atualizar sua versão, abra um novo shell e digite:

sudo apt-get update
sudo apt-get upgrade

Quase lá! Agora vamos escolher uma IDE (Integrated Development Environment) para programarmos nossas aplicações. Como um Engenheiro de Controle e Automação sempre somos expostos ao poderoso Matlab e, querendo ou não, nos acostumamos à sua interface e suas praticidades, além de sua sintaxe. Então, se você também está nessa situação, eu sugiro usar a IDE Spyder. Ela possui uma interface gráfica bem parecida com o Matlab e pode facilitar a vida daqueles que se sentem desconfortáveis programando diretamente no shell do Linux. Para instalá-la, use o shell e digite:

sudo apt-get install spyder

Após instalação, para iniciar o Spyder digite:

sudo spyder &

“Um pouco de Linux:

– O sudo no início de cada comando executa a sua solicitação com permissões de Super Usuário, o equivalente ao Administrador no Windows;

– O & no final do comando, inicia a aplicação mas libera o shell que você está usando para receber novos comandos, assim não precisa abrir um shell a cada programa que for utilizar.”

Descrição do Hardware

Nossa primeira aplicação será fazer com que um LED, conectado à um dos pinos GPIO, pisque por um determinado número de vezes, a ser especificado pelo usuário através do teclado. Os pinos de I/O do Raspy respeitam a seguinte configuração (Modelos A e B):

30_GPIO01

Vamos conectar o LED da seguinte forma:

30_GPIO02

De forma técnica, o Anodo(+) do LED conecta-se à GIPO18 e seu Catodo(-) conecta-se ao resistor e esse a um dos pinos terra da placa (GND), fechando o circuito.

Time to Code!

Agora que temos o hardware pronto, vamos programar. Inicie o Spyder, crie um novo arquivo e salve. ATENÇÃO: não se esqueça de adicionar a extensão .py ao nome do arquivo, para que a IDE saiba que se trata de um código em Python (em Linux algumas coisas não são tão automáticas como no Windows).

Se você já tem alguma experiência em programação, em C/C++ ou Matlab, aprender Python não será difícil e você vai entender facilmente o que vamos fazer aqui. Se não sabe nada de programação eu sugiro que dê uma passada no CodeAcademy, pois lá eles têm um excelente programa para você aprender Python (e muito mais) do zero.

Vamos adotar as mesmas boas práticas de programador que usamos para programar nossa Tiva C LaunchPad. Dividimos o código fonte em 4 sessões: 0 – Documentação; 1 – Diretivas de Pré-processamento; 2 – Declarações; 3 -Subrotinas.

"""
0. Documentation Section
helloGPIO101.py
Blink LED, connected to pin "led"

Authors: Bruno Godoi Eilliar
Date: March 21, 2015
"""

#1. Pre-Processor Directives Section

import RPi.GPIO as GPIO
import time

#2. Declarations Section

led = 18    # LED will be connected at pin 18

GPIO.setmode(GPIO.BCM)    # set GPIO numeration label
GPIO.setup(led, GPIO.OUT)    # set pin "led" as digital output

#3. Subroutines Section

def Blink(numTimes, speed):
"""
Function to blink LED, connected at pin "led", for numTimes
"""
    for i in range(0, numTimes):
        print "Iteration " + str(i+1)    # Print status
        GPIO.output(led, True)    # Turn ON the LED
        time.sleep(speed)    # Delay for a few seconds
        GPIO.output(led, False)    # Turn OFF the LED
        time.sleep(speed)    # Delay for a few seconds
     print "Done blinking!"    # Print status
     GPIO.cleanup()    # Clean up all GPIO pins

"""
Main Subroutine
"""
iterations = raw_input("Enter total number of times to blink: ")
speed = raw_input("Enter lenght of each blink (seconds): ")

Blink(int(iterations), float(speed))

Vamos analisar nosso programa. Na Main Subroutine solicitamos que o usuário insira valores para o número de vezes que o LED irá piscar e o delay entre as transições dos estados aceso e apagado. Então esses valores são passados à função Blink() que definimos anteriormente. Essa função é a responsável por executar nossa rotina de acender e apagar o LED um número numTimes de vezes. Ao final da função, por meio do comando GPIO.cleanup() nos certificamos de “limpar” todas as GPIOs que usamos (neste caso apenas uma) para que nenhuma fique ligada desnecessariamente. Aqui está o vídeo de como minha aplicação funcionou:

Sucesso! Agora você pode explorar a conexão de sua Raspy com o mundo externo através das GPIOs. Se tiver alguma sugestão ou dúvida, deixe nos comentários ou envie-nos um e-mail. Se tiver alguma ideia de projeto usando a sua Raspy, conte-nos e compartilhe com a comunidade!

Se gostou do post não esqueça de espalhar a palavra e deixar seu comentário abaixo. Fique ligado para o próximo episódio onde iremos realizar a interface de um botão com nossa Raspy para alterar o estado de nosso programa. Até a próxima!

 

😉

Raspberry Pi, Intel Edison e Campus Party

Olá a todos.

Nesse post, vou falar um pouco sobre duas novidades que estão muito em alta no mundo tecnológico nos últimos dias. O Raspberry Pi 2 e o novo microcomputador da Intel, o Edison.

Começando pelo começo.

Novo computador Raspberry terá suporte ao Windows 10 (Foto: Divulgação)Como todos sabem, temos alguns posts aqui no blog que já trataram não só do Raspberry Pi, mas também da Internet das Coisas. Caso você não saiba, a Internet das Coisas é um conceito que vem se tornando realidade nos ultimos anos. Basicamente, se trata da interação de objetos simples do nosso dia a dia como geladeira, fogão, banheira, sala de estar, diversas ‘coisas’ conectadas diretamente à internet, se tornando assim dispositivos inteligentes. Você pode por exemplo, preparar seu banho e mandar seu microondas esquentar sua comida enquanto está no trânsito, utilizando seu celular, para quando chegar em casa, tudo já estar prontinho pra você.

Raspberry Pi 2

A Raspberry Pi foundation anunciou o novo modelo, que irá substituir o Modelo B agora a partir de feveiro.

Algumas configurações básicas:

  • 900 MHz quad-core ARM Cortex-A7 CPU
  • 1GB RAM
  • 4 portas USB
  • 40 pinos GPIO
  • Porta HDMI
  • Porta Ethernet
  • Conector de audio 3.5mm
  • Interface com câmeras
  • Interface com Display
  • Slot para cartão SD
  • E um núcleo dedicado de processamento de vídeo.

Segundo os próprios desenvolvedores, o Modelo 2, possui propósitos mais acadêmicos, por oferecer uma flexibilidade maior. Para aplicações embarcadas e projetos que requerem menor gasto energético, o modelo antigo ainda pode ser mais vantajoso.

Uma grande vantagem do novo modelo, é a interface com o futuro Windows 10. A microsoft quer reafirmar a ‘universalidade’ do sistema, que além de prometer muito para celulares, tablets e notebooks, também quer entrar de cabeça na Internet das Coisas.

Durante essa semana, estou acompanhando (dentro do que posso) a Campus Party, que está acontecendo na Expo São Paulo (antigo Pavilhão Imigrantes). O foco grande durante esse ano é em Empreendedorismo. Mas muito se fala também sobre a Internet das Coisas, Drones, Robótica Educacional e por aí vai.. Falando sobre isso, tivemos o anúncio da prefeitura de São Paulo, da construção de 12 novos Fab Labs. Achei essa iniciativa super interessante, por poder proporcionar a quem tem poder criativo, uma opção para desenvolver duas ideias. O grande foco é em impressão 3D, mas vai um pouco além disso.

 O segundo tema que eu gostaria de falar hoje, ainda no ponto da Internet das Coisas, é sobre o Intel Edison, que começará a ser vendido no Brasil a partir dessa quinta (05/02). O Intel Edison, basicamente, é um micro computador que promete agir com ‘as coisas’, seguindo o conceito da Internet das Coisas, abordado anteriormente.

O módulo Intel Edison disponível atualmente no país conta com um SoC Intel Atom de 22 nanômetros com CPU dual core, dual threaded de 500MHz e um microcontrolador Intel Quark de 32-bit a 100MHz. Inicialmente, oferecerá suporte para desenvolvimento com Arduino e C/C++. Node.Js, Python, RTOS e Programação Visual estão no planejamento, mas apenas em um futuro próximo, segundo a Intel.

Na Expo da Campus Party, é possível encontrar  duas versões: Intel Edison Kit for Arduino; e Intel Edison Breakout Board Kit, para usuários que não desenvolvem com Arduino. A fabricante afirma que o terceiro modelo também será vendido no país: o Intel Edison Module chega após o evento.

Na minha opinião, o Intel Edison aparenta ser bastante interessante, porém devido ao preço meio salgado ( a partir de R$650,00) não se trata de uma ferramenta interessante para hobbistas e desenvolvedores. Talvez como uma opção para grandes empresas de automação residencial, ou até mesmo industrial.

Bom por hoje é isso, espero que tenham gostado! Ah sim, como muito foi falado sobre a Campus Party desse ano no post de hoje, compartilho algumas fotos bacanas com vocês:

IMG_20150203_201037_Fotor

Cerimônia de abertura com a Marimoon.

IMG_20150204_171925_Fotor

Mystery Machine (Scooby Doo) e MACH 5 (Speed Racer)  exibidos na Zona Expo da Campus.

IMG_20150205_180108_Fotor

Stand da Robocore em parceria com a Submarino (também na Expo) onde acontecem competições de robôs de combate e testes com drones.

IMG_20150205_180340_Fotor

Moodings (computadores com esses cases super diferentes), esse foi um dos que eu achei mais legais.

IMG_20150205_193349_Fotor

Uma vista geral da Arena, local onde rolam as palestras e os participantes utilizam seus computadores.

Raspberry Pi e seus periféricos

Fala pessoal,

IMG_2368Um dos grandes problemas que a galera geralmente tem quando adquire um Raspberry Pi, é quanto ao uso de periféricos, em muitos casos, é desconfortável utilizar um monitor e um teclado, o que faz com que o Raspi perca um pouco de mobilidade, sendo assim você não pode levá-lo para qualquer lugar facilmente. Eu comprei alguns periféricos para utilizar com o Raspi que fossem simples, sem fios e que proporcionassem maior mobilidade possível, e que além do mais, não ocupam muito espaço.

Eu já falei aqui no blog anteriormente que eu vejo o RaspberryPi como o futuro da eletrônica embarcada. Pra quem ainda não viu, temos outros posts aqui no blog, sobre Alguns conceitos básicos sobre o Raspberry Pi, Os primeiros passos com o Raspbery Pi, algumas aplicações na palestra do Vinícius Senger da Globalcode na Campus Party 6, e além do mais temos o blog do amigo Bruno Eilliar, Elementary Engineering, que vai bem a fundo com programação Python.

Continuar lendo

Elementary Engineering – Raspberry Pi

Olá a todos!!

CapturarHoje eu vim fazer a recomendação de um blog pra vcs. O meu amigo Bruno Godoi Eilliar vem desenvolvendo alguns estudos bem interessantes na parte de Raspberry Pi. Eu infelizmente ainda to na mesma, não me aprofundei muito desde aquele post sobre Os primeiros passos com Raspberry Pi onde tratamos na instalação do Raspbian em um cartão SD. Comprei alguns periféricos para usar com o Raspberry e estou aguardando chegarem para começar a brincar também.

O blog em questão (http://elementaryeng.blogspot.com.br/) foi criado à pouco tempo, mas já tem um bom material sobre a criação de Máquinas virtuais (caso vc queira usar o Raspbian mas não o Hardware do Raspberry Pi), algumas noções sobre Linux OS e até mesmo a preparação do cartão SD. Sem falar em alguns posts mais OFF e algumas outras coisas mais voltadas a educação

Eu não tenho dúvidas que a parte de eletrônica embarcada vai evoluir muito rapidamente para o uso de dispositivos como o Raspberry Pi e a BealgeBone por exemplo.

Aguardem, pois estou preparando um projeto bem legal, que vou querer retratar passo a passo no blog, tenho certeza que vocês vão gostar.

Até a próxima! 

Os primeiros passos com o Raspberry Pi

Fala pessoal!

FZF718IHAQ37SUM.LARGERecentemente, eu comprei o meu Raspberry Pi pelo Sparkfun. Chegou nessa última semana, e eu acabei de instalar o Raspbian (Sistema Operacional Oficial) nele. Resolvi fazer esse pequeno tutorial explicando passo-a-passo o procedimento para a instalação.

O Raspbian, pra quem não sabe, é um sistema operacional  completo com interface gráfica, navegador de Internet etc., otimizado para rodar no Raspberry Pi

Antes de mais nada, é necessário baixar o Raspbian diretamente do site oficial. Você pode fazer o download utilizando esse link. Navegue até Raspbian “wheezy” e escolha alguma das opções de download (Torrent ou direto).

Continuar lendo

Parallella

Olá, pessoal!

Hardware livre: um supercomputador por $99

Há mais um participante de peso no mundo do hardware livre, um esforço para compartilhar projetos de equipamentos que qualquer um possa fabricar, usar ou vender.

Sem patentes e sem royalties, os ativistas dessa Era das Máquinas Livres acreditam que será possível contar com equipamentos mais robustos e mais baratos, tornando-os acessíveis a camadas maiores da população e tornando as pessoas independentes de empresas ávidas por lucros trimestrais.

Continuar lendo