Slide 1

Slide 1 text

Python com IoT Utilizando as placas da Intel com Python

Slide 2

Slide 2 text

Olá! Sou Juliana Karoline Estou aqui por motivos de Python <3 e IoT. Twitter/Facebook: @julianaklulo /julianaklulo

Slide 3

Slide 3 text

IoT Entendendo o que há por trás do buzzword

Slide 4

Slide 4 text

Sobre a Internet das Coisas Internet das Coisas (IoT): trata-se de uma rede onde coisas (things) trocam informações captadas do ambiente, assim como recebem comandos para alterar o mundo físico.

Slide 5

Slide 5 text

Sobre as Coisas Coisas: objetos que coletam dados do ambiente por meio de sensores, transmitem esses dados via rede, e modificam o mundo físico por meio de atuadores que recebem os comandos também pela rede.

Slide 6

Slide 6 text

Sobre as Coisas Exemplos de sensores: ▧ Luminosidade ▧ Umidade ▧ Distância ▧ Presença ▧ Corrente ▧ … ▧ Tudo que capta informações do ambiente

Slide 7

Slide 7 text

Exemplos de atuadores: ▧ LEDs ▧ Motores ▧ Buzzer ▧ Display TFT ▧ … ▧ Tudo que realiza uma ação no ambiente Sobre as Coisas

Slide 8

Slide 8 text

Mas como controlar as coisas?

Slide 9

Slide 9 text

Placas Escolhendo a placa correta para o projeto

Slide 10

Slide 10 text

▧ Para controlar os sensores e atuadores, utiliza-se placas de desenvolvimento. Placas disponíveis no mercado Raspberry Pi 2 Model B Arduino UNO R3 Beagle Bone Black

Slide 11

Slide 11 text

Intel Galileo Gen 1

Slide 12

Slide 12 text

Especificações Galileo ▧ Intel Quark SoC 32-bits 400MHz ▧ First board based on Intel architecture designed to be hardware and software pin-compatible with Arduino shields designed for the Uno R3. ▧ A full sized mini-PCI Express* slot, 100Mb Ethernet port, Micro-SD slot, USB Host port, USB Client port, RTC on-board ▧ Yocto Linux

Slide 13

Slide 13 text

Intel Galileo Gen 2

Slide 14

Slide 14 text

Intel Edison Arduino Breakout Board Mini Breakout Board

Slide 15

Slide 15 text

▧ Intel® SoC that includes a dual-core, dual-threaded Intel® Atom™ CPU at 500 MHz and a 32-bit Intel Quark microcontroller at 100 MHz ▧ 1 GB LPDDR3 POP memory ▧ WiFi and Bluetooth Low Energy 4.0 ▧ Yocto Linux Especificações Edison

Slide 16

Slide 16 text

Mas o que essas placas têm em comum?

Slide 17

Slide 17 text

GPIO General Purpose Input/Output

Slide 18

Slide 18 text

Funcionamento das GPIOs ▧ As entradas e saídas de propósito geral (GPIOs) são um meio de comunicação com o mundo externo. Elas servem para conectar objetos que não possuem um padrão predeterminado, como USB, HDMI, VGA, etc. ▧ Através dos pinos é possível ler a tensão que um objeto fornece (Digital e Analog Read) ▧ É possível também fornecer uma tensão para um objeto (Digital e Analog Write)

Slide 19

Slide 19 text

Localização das GPIOs

Slide 20

Slide 20 text

Como manipular as GPIOs?

Slide 21

Slide 21 text

MRAA Low Level Skeleton Library for Communication on GNU/Linux Plataforms

Slide 22

Slide 22 text

MRAA ▧ Libmraa é uma biblioteca C/C++ de baixo nível para comunicação em plataformas GNU/Linux, com wrappers em javascript & python, que interfaceia com as entradas e saídas das Galileo, Edison e outras plataformas. ▧ O uso da libmraa não te amarra a um hardware específico, pois com a detecção da placa sendo feita durante o runtime o código se torna multiplataforma.

Slide 23

Slide 23 text

Blink da MRAA

Slide 24

Slide 24 text

E os sensores?

Slide 25

Slide 25 text

Upm Useful Packages & Modules Sensor/Actuator repository for MRAA

Slide 26

Slide 26 text

UPM ▧ UPM é um repositório de alto nível para sensores que utiliza a MRAA. Os sensores são abstraídos por meio de classes e são instanciados como objetos. ▧ A lista de sensors suportados cresce a cada dia (170+) e você pode contribuir abstraindo um sensor novo através do GitHub!

Slide 27

Slide 27 text

Exemplos de sensores suportados pela UPM: ▧ Acelerômetro ▧ Pressão Atmosférica ▧ Sensor de cores ▧ Bússola, giroscópio, ▧ Potenciômetro digital ▧ Displays ▧ GPS ▧ Relés ▧ Servo motores ▧ ... UPM

Slide 28

Slide 28 text

Exemplo UPM - Buzzer

Slide 29

Slide 29 text

Exemplo UPM - Servo

Slide 30

Slide 30 text

Exemplo UPM - Botão

Slide 31

Slide 31 text

Exemplo de aplicação

Slide 32

Slide 32 text

Clockwise An Intelligent Alarm Clock

Slide 33

Slide 33 text

A Proposta Acordar com a previsão do tempo, temperatura local e seus compromissos do dia no Google Calendar sendo anunciados gentilmente pelo seu próximo despertador inteligente.

Slide 34

Slide 34 text

Os Componentes ▧ Intel Edison + Arduino Breakout Board ▧ Grove Base Shield ▧ Grove Push Button (x2) ▧ Caixa de som Bluetooth

Slide 35

Slide 35 text

O Código Onde a magia acontece

Slide 36

Slide 36 text

1. Previsão do Tempo Recebendo os dados pela API pywapi

Slide 37

Slide 37 text

Código da cidade conditions: contém os dados atuais do clima Pegando informações da API pywapi forecasts: contém as estimatimas para o dia

Slide 38

Slide 38 text

2. Google Calendar Obtendo os eventos do dia pela API do Google Calendar

Slide 39

Slide 39 text

Pegando os eventos do dia events: armazena todos os dados dos eventos buscados Conexão com a API, feita usando OAuth2

Slide 40

Slide 40 text

Filtrando os dados dos eventos Seta o alarme se tiver um evento cadastrado para isso Pega hora/minuto e nome do evento Gera uma string com dos dados dos eventos

Slide 41

Slide 41 text

3. Reproduzindo o texto Gerando .mp3 através da API voicerss (text-to-speech)

Slide 42

Slide 42 text

Gerando .mp3 Composto pela string do clima e dos eventos Serializa a resposta e salva como .mp3

Slide 43

Slide 43 text

4. Lendo os Grove Push Buttons Usando a biblioteca MRAA da Intel para ler os push buttons da Grove

Slide 44

Slide 44 text

Declarando os botões Pinos da Edison ligados no Grove Base Shield

Slide 45

Slide 45 text

Lendo os botões Função que reproduz os .mp3 gerados

Slide 46

Slide 46 text

Função soneca

Slide 47

Slide 47 text

Demonstração

Slide 48

Slide 48 text

https://www.youtube.com/watch?v=pGNk6oWwzbk

Slide 49

Slide 49 text

Instructables http://www.instructables.com/id/Clockwise-an-Intelligent-Alarm-Clock-Powered-by-In/

Slide 50

Slide 50 text

Obrigada! http://github.com/julianaklulo/clockwise