IoT Com ESP8266 - BSB FAB LAB
by bsbfablab in Circuits > Microcontrollers
2840 Views, 13 Favorites, 0 Comments
IoT Com ESP8266 - BSB FAB LAB
A Internet das Coisas (IoT) é um cenário no qual objetos, animais ou pessoas recebem Identificadores Únicos, além da habilidade de transferir dados em uma rede sem a necessidade de interação humano-humano ou humano-computador. A IoT evoluiu da convergência de tecnologias sem fio, da popularização de sistemas microeletromecânicos e da internet.
A popularização dos dispositivos conectados à internet é um processo visível na sociedade moderna e o surgimento de tecnologias baratas e acessíveis para o desenvolvimento e prototipagem de aplicações coloca nas mãos dos novos empreendedores a chance de explorar mercados novos com baixos investimentos.
Neste curso, pretendemos dar conhecimentos básicos ao participante sobre as tecnologias por trás de um simples sistema IoT. Para isso, trataremos dos seguintes tópicos:
- Sistemas embarcados
- Internet
- Sensores
- Servidores
- ESP8266
Após isso, construiremos um simples sistema IoT usando ESP8266 e Thingspeak
Links:
https://blog.adafruit.com/category/iot/
http://www.libelium.com/top_50_iot_sensor_applications_ranking/
Sistemas Embarcados
É fácil que não percebamos a quantidade de computadores nos rodeando todos os dias. A velocidade do desenvolvimento dos circuitos integrados tornou muito mais barato utilizar computadores de uso geral para as aplicações mais diversas. O computador que controla seu microondas ou seu relógio é extremamente semelhante aos melhores computadores disponíveis ao público poucos anos atrás. Com a popularização dos meios de produção trazida pelo boom da internet, a figura do hobbista DIY se torna extremamente relevante e há um grande mercado para ferramentas que permitam que alguém sem treinamento use da tecnologia para solucionar problemas do seu dia a dia.
Sistemas embarcados se diferem de computadores comuns por serem projetados para serem bastante miniaturizados, simples e capazes de suportar ambientes industriais, veiculares ou portáteis.
Um bom exemplo de ferramenta que surge para suprir as necessidades de prototipagem em sistemas embarcados de várias comunidades é o Arduino. Como é comum a sistemas embarcados, a plataforma oferece:
- Uma unidade de processamento capaz de interpretar comandos simples e acessar dados na memória
- Memórias para armazenamento de uma lista de comandos e de dados variáveis
- Periféricos que permitem a interface com sensores ou outros sistemas
Sistemas embarcados são elementos essenciais de qualquer plataforma IoT. São eles que estarão dentro das "coisas" coletando dados, tomando decisões e se comunicando.
Internet
Ahh a internet...
Parte da vida de boa parte da civilização urbana moderna, a internet é um sistema global de redes de computadores interconectadas que usam um protocolo padrão (TCP/IP) para conectar bilhões de dispositivos ao redor do mundo. É uma rede de redes que consiste de milhões de redes privadas, publicas, acadêmicas, empresariais e governamentais de escopos que vão do local ao global, conectadas por uma grande serie de tecnologias de rede eletrônicas, sem fio e ópticas. A internet carrega um grande variedade de recursos e serviços, como os documentos de hypertexto interligados da World Wide Web (WWW), a infraestrutura de suporte para o email, além de redes de compartilhamento de arquivos e de telefonia.
A internet tem camadas
O que permite o correto funcionamento dos sistemas que interconectam dispositivos de fabricação variada é a existência de uma série de protocolos organizados de forma hierárquica. Eles descrevem os procedimentos físicos e computacionais que possibilitam as abstrações que utilizamos para descrever produtos e servições todos os dias.
Nesse contexto, o desenvolvimento de sistemas simples e baratos com capacidade de se conectar uns aos outros se tornou muito facilitado. Podemos falar de endereços ip e url sem ter de nos preocupar com como nossos dados atravessarão o globo.
Sensores
Sensores permitem que nossos sistemas tomem decisões baseadas não só nos dados que programamos neles, mas também em características de seus ambientes. Eles convertem informações sobre o ambiente em sinais que o seu sistema consegue interpretar. É um sensor que permite um alarme perceber a abertura de uma porta. São sensores também que permitem que seu celular rotacione o conteúdo da tela de acordo com a orientação que você o segura. Até botões podem ser sensores.
Ter um bom conhecimento de quais são os sensores facilmente disponíveis no mercado permite ao desenvolvedor chegar mais facilmente a soluções para os problemas práticos que ele precisa solucionar.
Links de bons fornecedores de sensores para pequenos projetos:
Servidores
Servidor é um sistema computacional que fornece serviços a uma rede de computadores. Quando seu sistema buscar dados da internet, ele estará se comunicando com outro computador que foi programado para receber comandos através de mensagens. Aos protocolos que estabelecem o formato e o conteúdo dessas mensagem dá-se o nome de API.
Serviços online fornecem APIs para que desenvolvedores construam produtos baseados nos seus. É uma API do twitter que permite que outros serviços enviem mensagens em seu nome. E várias empresas oferecem APIs que permitem seus projetos IoT interagirem com diversos serviços. Seus objetos podem enviar tweets, podem enviar emails, podem fazer compras na Amazon...
Para pequenos projetos, existem serviços como o Thingspeak, que fornece uma plataforma para armazenar e distribuir os dados coletados por sistemas embarcados simples. Além de permitir que se tome decisões em cima dos dados e que se pratique algumas ações simples como enviar um tweet, enviar um email, ou se comunicar com outra api de outro serviço. É o serviço que utilizaremos para nosso projeto.
Outra opção é utilizar um servidor hospedado em uma máquina sua. EasyIoT é um servidor simples com interface web e móvel que roda tanto em ambiente Windows quanto em uma Raspberry Pi
ESP8266
A plataforma que utilizaremos para implementarmos um exemplo de IoT é baseada no CI ESP8266 da Espressif Systems. É um SoC muito capaz, que além de incluir basicamente todos os periféricos que outras plataformas de desenvolvimento incluem, já possui todo o necessário para conectar-se a redes wifi, bem como se comportar como um "Access Point". O módulo também já tem a pilha TCP/IP implementada, restando ao desenvolvedor se importar apenas com comandos mais alto nível.
Nossos ESP8266 estão em placas NodeMcu Devkit, que são pequenos módulos que adicionam tudo o necessário para desenvolver seus sistemas. Ele adiciona o conversor USB<->Serial CH340, reguladores de tensão, um led e botoes.
Conectando ao Módulo
Com um cabo micro USB, conecte seu NodeMcu Devkit ao computador. Se não for usuário de linux, provavelmente haverá a necessidade da instalação de um driver antes que se possa utilizar o módulo corretamente. Instruções para a instalação do driver para Windows e Mac seguem no link abaixo:
ESPlorer
Uma ferramenta muito útil para o desenvolvimento no NodeMcu é o ESPlorer. Ele permite que facilmente se envie, edite e execute programas no módulo além de oferecer uma IDE simples para desenvolvimento em LUA. Faça o download do software no link abaixo:
Download ESPlorer
Para o correto funcionamento, será necessária a instalação da máquina virtual JAVA
LUA
O NodeMcu é um interpretador de LUA, que é uma linguagem de programação muito versátil que vem ganhando espaço no mercado de sistemas embarcados. No link abaixo você encontra o básico para você desenvolver suas aplicações.
Programando
Vamos começar a explorar nossa plataforma. Os drivers instalados no passo anterior permitirão que seu computador envie mensagens para o ESP8266 através de uma porta serial que será criada automaticamente quando conectar seu Nodemcu Devkit na porta USB. Abra o ESPlorer, selecione a nova porta serial no canto superior direito e, logo abaixo, clique em connect.
A tela que é apresentada é dividida horizontalmente em duas partes. A da direita apresenta métodos para conectar-se ao módulo, bem como um terminal que mostra a comunicação entre os 2 sistemas. A da esquerda permite a edição de código além do upload e execução do mesmo.
Exemplo 1: Conectando-se a uma rede Wifi
print(wifi.sta.getip())<br>--nil wifi.setmode(wifi.STATION) wifi.sta.config("SSID","password") print(wifi.sta.getip()) --192.168.18.110
Exemplo 2: Cliente HTTP
-- A simple http client<br>conn=net.createConnection(net.TCP, false) conn:on("receive", function(conn, pl) print(pl) end) conn:connect(80,"121.41.33.127") conn:send("GET / HTTP/1.1\r\nHost: www.nodemcu.com\r\n" .."Connection: keep-alive\r\nAccept: */*\r\n\r\n")
Exemplo 3: Servidor HTTP
-- a simple http server<br>srv=net.createServer(net.TCP) srv:listen(80,function(conn) conn:on("receive",function(conn,payload) print(payload) conn:send("Hello, NodeMCU.")end) end)
Teste ThingTweet: GitHub