Arquivo da categoria: Projetos

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

Sphero 2.0

Olá a todos!

CapturarRecentemente ouvi falar sobre esse brinquedo bem interessante, lançado por uma startup, e gostaria de apresentá-lo a vocês!

O Sphero, se trata basicamente de um dispositivo dotado de uma determinada inércia, que possui em seu interior uma eletrônica embarcada, com acelerômetros e giroscópios. Basicamente, pode ser controlado através de um dispositivo móvel como tablet ou smartphone dotado da tecnologia Bluetooth.

O sphero pesa em média 170G, e utiliza um processador 75MHz ARM Cortex M4. Possui internamente duas baterias de 350 mAh de Litio. Possui um aplicativo próprio para Android e iOS, porém o código fonte desse aplicativo é disponibilizado para que os usuários possam desenvolver aplicações próprias que possuam interação com o Sphero. É possível também realizar uma integração dele com o ROS (Robot Operating System)

Capturar2

Li algumas avaliações sobre o produto, sem dúvidas é inovador, e pode até parecer que não, mas como vocês podem ver nos vídeos abaixo, ele é bem veloz. O que foi motivo de reclamação para algumas pessoas é o alto preço (vendido nos Estados Unidos por 130 dólares) e a baixa vida útil da bateria interna.

Nesse vídeo aqui se trata de uma ‘apresentação’ do dispositivo

Esse aqui mostra algumas aplicações:

Mais informações: http://www.gosphero.com/

Espero que tenham gostado, 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.

Soft Robots

Fala pessoal, tudo bem?
softbot-1410139898719Depois de um tempão sem publicações aqui no blog, por diversos motivos, hoje vamos falar de um assunto bem bacana, que eu tenho pesquisado e ouvido falar bastante e que eu vejo como uma tendência para o futuro do campo de robótica: os soft robots.

Nos últimos anos, vem ocorrendo um interesse crescente pelo uso de estruturas flexíveis ​​em sistemas robóticos. Essas estruturas ​​são cruciais para os sistemas que lidam com tarefas e(ou) ambientes incertos e dinâmicos, por exemplo, agarrar e manipular objetos desconhecidos, locomoção em terrenos acidentados e contato físicos com células vivas e corpo humano.

Continuar lendo

Veículos não tripulados

ImagemUm assunto que vem tomando grande amplitude ultimamente, são os veículos não tripulados, mais comumente chamados de UAVs – (Unmaneed Aerial Vehicle), no caso de veículos aéreos ou UUV (Unmaneed Underwater Vehicle), no caso de veículos aquáticos. Decidi fazer um post que abordasse um pouco sobre esse assunto, com alguns conceitos básicos e alguns exemplos do que vem sendo feito.

Continuar lendo

ROS – Um sistema operacional para Robôs

xvfZPAo

Fala pessoal!

Ultimamente tenho ouvido falar bastante nesse novo sistema operacional dedicado especificamente para robôs, resolvi fazer uma pesquisa e trazer um pouco do assunto para vocês.

Sistema Operacional de Robôs (ROS), é uma estrutura flexível para programação específica de robôs. Se trata basicamente de uma coleção de ferramentas, bibliotecas e convenções que buscam simplificar a criação de códigos para os mais diferentes tipos de robôs. A versão mais recente e completa do sistema é a Hydro Medusa (foto), que foi lançada no começo de setembro de 2013.

Continuar lendo