Computação Física e o Jupyter Notebook

4 04-03:00 julho 04-03:00 2018 — Deixe um comentário

Aprenda a instalar o Jupyter Notebook em um Raspberry Pi e, diretamente ler e controlar sensores e atuadores.

Todos sabemos que o Jupyter Notebook é uma ferramenta fantástica, ou melhor, um aplicativo Web de código aberto que permite criar e compartilhar documentos que contenham códigos ativos, equações, visualizações e texto.

O Jupyter Notebook é amplamente utilizado no campo do Data Science, limpando e transformando dados, fazendo simulações numéricas, modelagem estatística, visualização de dados, aprendizado de máquina e muito mais!

Mas, que tal usar os Jupyter Notebooks para controlar os GPIOs de um Raspberry Pi?

É exatamente  isso que faremos neste tutorial. Aprenderemos como instalar o Jupyter Notebook em um Raspberry Pi, e diretamente nele, ler sensores e atuar em atuadores.

1. Introdução

O diagrama abaixo nos dá uma visão geral sobre o projeto:

E o video poderá lhe dar uma pista do que é possível obter quando o Pi encontra Jupyter!

 

2. O HW

Lista de materiais

  • Raspberry Pi V3
  • Temperatura DHT22 e Sensor de Umidade Relativa
  • DS18B20 Sensor De Temperatura À Prova D ‘Água
  • BMP180 Pressão barométrica, temperatura e sensor de altitude
  • LEDS (3x)
  • Botão de pressão (1x)
  • Resistor 4K7 ohm (2x)
  • Resistor 1K ohm (1x)
  • Resistor 330 ohm (3x)
  • Protoboard e cabos

O diagrama elétrico

Vamos seguir o diagrama elétrico acima e conectar todos os 3 sensores, botões e LEDs ao Raspberry Pi.

Os sensores usados ​​neste projeto são os mesmos ulizados ​em meu tutorial:

Estação Meteorológica IoT Com RPi e ESP8266

Sugiro que você dê uma olhada nesse tutorial, onde explico um por um, como instalar os sensores e suas bibliotecas, testando-os individualmente antes de executar o programa completo.

3. Instalando o Jupyter

Para instalar o Jupyter em seu Raspberry (que será executado com o Python 3), abra o Terminal e insira os seguintes comandos:

sudo pip3 install jupyter
sudo ipython3 kernelspec install-self

Agora em seu terminal, execute o comando:

jupyter notebook

E é isso!!!! Surpreendente! muito simples e fácil. O Notebook será executado como um servidor em:

http:localhost:8888

Mas, isso não é realmente importante para você saber, porque, automaticamente, seu navegador padrão será aberto nesse endereço, executando uma “Página Inicial”.

Para parar o servidor e fechar os “kernels” (os Jupyter notebooks), você deve usar [Ctrl] + [C] no teclado de seu RPi.

A partir de agora, sempre que você iniciar seu Pi e quiser usar o Jupyter Notebook, basta digitar o comando “Jupyter notebook” no terminal do RPi, mantendo-o funcionando o tempo todo. 

Isto é muito importante!

Se você precisar usar o terminal de seu RPi para outra tarefa, como executar um outro script por exemplo, abra uma nova janela de Terminal.

4. Executando Scripts Python no Jupyter Notebook

Estamos assumindo que você esteje familiarizado com o Jupyter Notebook. Ele funcionará em seu Pi exatamente como funciona em seu desktop.

Há “toneladas” de bons tutoriais sobre como utilizar Jupyter notebooks  disponíveis na web,  faça uma busca no Google e você certamente encontrará um adequado para você.

Vamos brincar com um notebook que criei especialmente para este tutorial.

Faça seu download desde meu GitHub: Sensores de estação meteorológica – Atuadores

Salve o notebook no seu Raspberry Pi. Em meu caso, o salvei no diretório principal (veja a tela da página inicial acima). Observe que existem 4 notebooks no meu diretório principal (notebooks possuem um “pequeno notebook” como ícone). Apenas clique nele. O notebook será carregado e aparecerá como este abaixo. Se você observar a página inicial novamente (“Home”), perceberá que o “ícone do notebook” agora está “verde”, o que significa que está em execução.

Além disso, observe que há uma imagem do HW na primeira célula de meu notebook. Para que a imagem apareça corretamente, você deve ou tê-lo no mesmo diretório (que é o meu caso) ou alterar o seu caminho no notebook, caso você use outro diretório para armazenar a imagem.

Você pode entrar com comandos Unix diretamente em uma célula do Notebook, da mesma forma que faz no Terminal.

Por exemplo, o comando:

ls

Listará todos os seus arquivos encontrados no diretório onde o notebook está sendo executado, como você pode ver aqui:

5. Inicialização (1): Criando um Script Python no Jupyter Notebook e Importando Bibliotecas

A idéia é começar a escrever seu script da mesma forma (e ordem) em que você está acostumado a fazer com um IDE do Python.

Vou dividir meu notebook em 3 fases, onde faremos:

  1. Inicialização
  • Importar Bibliotecas
  • Definir GPIOs
  • Inicialize os GPIOs
  • Crie funções importantes
  1. Sensores de Leitura

       3. Leitura e atuação em GPIOs (botão e LEDs)

Importante observar que, normalmente, você executará a fase de inicialização apenas uma vez. Depois disso, você pode brincar com sensores e GPIOs, executando apenas as células pertinentes criadas para as Fases 2 e 3, como neste exemplo.

Para entender melhor a fase 1, reveja o vídeo da introdução.

6. Inicialização (2): Definindo e inicializando os GPIOs

7. Inicialização (3): Funções para exibição de dados

8. Inicialização (4): Funções para Manipulação de Sensores

9. Inicialização (5): Funções para Manipulação de GPIOs

10. Obtendo dados de sensores e manipulando com GPIOs

Executando a célula [11], você obterá todos os dados dos sensores:

Widgets

Neste ponto é importante chamar a atenção para os “Widgets”.

Os widgets são objetos python como elementos ativos no navegador, geralmente como um controle deslizante, uma caixa de texto, botões, etc. Você pode utilizar widgets para criar GUIs interativas para seus Notebooks.

Aqui neste exemplo, estamos usando widgets (“Sliders”) na célula [12}, para o controle em TEMPO REAL do estado dos atuadores, neste caso ligando ou desligando os LEDs. Os widgets são ótimos para adicionar um comportamento mais dinâmico aos notebooks.

Como você deve ter observado, no código devemos executar a célula [11] sempre que quisermos um valor de atualização de sensores, mas é claro, um widget também poderá ser implementado para fazê-lo de maneira automatica, ou mesmo pressionando-se um botão criado como widget, para exemplo. Deixarei isso como um desafio à você! 😉

Instalação da Biblioteca de Widgets

Para usar Widgets, você deve instalar a biblioteca Ipywidgets. Para isso, use os comandos abaixo:

sudo pip3 install ipywidgets
jupyter nbextension enable --py widgetsnbextension

Após a instalação, chame a biblioteca em uma célula de seu Notebook.

Note que fizemos isso, no começo, na fase de inicialização

# widget library
from ipywidgets import interactive
import ipywidgets as widgets
from IPython.display import display

Este Widget, “interativo”, é simples de ser implementado e muito poderoso. Você poderá aprender mais sobre este assunto neste link: Widget interativo .

11. DataScience, Machine Learning, Computação Física, Visão por Computador, IoT e… o Futuro!

Estou iniciando novas jornadas neste fascinante mundo da tecnologia. Tudo o que vemos hoje tem dados relacionados e o conhecimento desses dados pode ser fundamental para projetos relevantes que podem ajudar as pessoas. Você verá mais e mais, aqui em meu blog, tutoriais onde o DataScience é misturado com Computação Física, Visão por Computador, Aprendizado de Máquina e IoT.

Como exemplo, para um curso On-line de Data Science que fiz pela plataforma EDX (Universidade da California – San Diego), trabalhei com os dados que capturado em um projeto anterior de IoT, o ArduFarmBot  :

ardufarmbot_gal_block_diagramUtilizando os dados que foram registrados na plataforma de IoT, ThingSpeak e aplicando algorítmos de “Machine Learn” nesses dados, foi possível prever (na verdade, confirmar) quando a lâmpada e a bomba devem ser ligadas.

Os resultados foram incríveis !!!!!!

Você poderá ver o o Jupyter Notebook e o relatório final do projeto em meu GitHub:

ArduFarmBot_Data_Analysis

Isso é tudo, pessoal! 😉

12. Conclusão

Como sempre, espero que este projeto possa ajudar o outros a encontrar seus caminhos no emocionante mundo da eletrônica!

Para detalhes e código final, por favor visite meu depositário do GitHub: Pyhon4DS / RaspberryPi

Fique ligado! Em um futuro tutorial, enviaremos dados de uma estação meteorológica remota para uma estação central, com base em um servidor da Web Raspberry Pi Flask:

Saludos desde el sur del mundo!

Vejo você em meu próximo tutorial!

Obrigado,

Marcelo

Nenhum Comentário

Seja o primeiro a iniciar uma conversa!

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s