domingo, 3 de janeiro de 2016

Iniciando em IoT com a placa D1 da Wemos.cc, um ESP8266 compatível com Arduino - Parte 1

Sobre


Com a popularização da placa Arduino, e o crescimento da internet das coisas (IoT), diversos produtos estão surgindo para suprir a necessidade dos desenvolvedores, e o seguinte texto irá mostrar um pouco sobre uma dessas opções, a placa “Wemos D1”.

Introdução


O ESP8266 é um microcontrolador fabricado pela empresa chinesa Espressif, que inclui capacidade de comunicação por Wi-Fi. Ele ficou famoso e se espalhou muito rapidamente devido ao seu baixo preço (cerca de US$4,00 pelo chip), o que é um valor semelhante a um microcontrolador sem interface de internet.

Após o seu lançamento diversas placas contendo o ESP8266 foram lançadas. Abaixo algumas delas:




Entre elas irei destacar a ESP12-E, que é uma das últimas versões, e que pode ser programada utilizando-se o NodeMCU, um firmware open-sourse que permite programar o ESP8266 usando a linguagem de programação Lua. Essa placa também pode ser programada diretamente pelo Arduino IDE, como a Wemos D1, mas esse não será o tema DESSE artigo.


Wemos D1


A Wemos D1 (http://www.wemos.cc) é o passo seguinte na evolução das placas que utilizam o chip ESP8266. Nesse caso a placa tem como objetivo ocupar o lugar de placas como a Arduino UNO, tendo o seu formato e a disposição dos pinos muito semelhantes ao UNO, além de ser compatível com alguns shields para Arduino existentes, SE estes trabalharem com 3,3V como níveis de tensão.


Características da Wemos D1:

MicrocontrollerESP-8266EX 
Operating Voltage3.3V
Digital I/O Pins11
Analog Input Pins1 (3.3V max)
Clock Speed80MHz/160MHz

Além de:
  • uma conexão Micro USB
  • um conector de energia do tipo "power jack", que aceita entre 9-24V de alimentação



Maiores detalhes podem ser vistos no site do fabricante: http://www.wemos.cc/wiki/doku.php?id=en:d1


E não é apenas o formato, ela também pode ser programada utilizando-se a IDE do Arduino! [https://github.com/esp8266/Arduino]

A seguir o passo-a-passo de como você poderá configurar a IDE do Arduino para funcionar com a Wemos D1.


Instalação


Antes de mais nada, a Wemos D1 possui o chip Ch340G, que é um conversor USB/UART. Para poder usar uma placa com esse chip, um driver de dispositivo será necessário, e deverá ser baixado em http://www.wemos.cc/wiki/doku.php?id=en:ch340g. Faça o download do driver indicado para o seu sistema operacional e o instale em seguida.

No Mac OS X


No meu caso eu utilizei o driver para o MacOSX. Ainda não testei a placa em um computador com Windows ou Linux. Talvez seja necessário reiniciar o computador após a instalação do driver.

Bom, o método acima funcionou no OS X Maverick, mas não no El Captain. Para este último tive que fazer mais algumas mudanças, como pode ser visto em http://tzapu.com/making-ch340-ch341-serial-adapters-work-under-el-capitan-os-x/

Resumidamente:

- Reiniciar o computador e pressionar COMMAND + R imediatamente após ouvir o som de início do sistema, para poder entrar no Modo Recovery
- Abrir o Terminal dentro do Recovery Mode
- Rodar o seguinte comando: csrutil enable --without kext
- Reiniciar

Feito isso, a placa finalmente aparecerá listada lá em Porta, no Arduino.


Configuração do ambiente


Utilizei a versão 1.6.5 do IDE Arduino para utilizar com a Wemos D1. Para configurar o ambiente segui as instruções do site que contém as libs do ESP8266 para a IDE do Arduino (https://github.com/esp8266/Arduino).

Na parte de preferências do sistema do IDE Arduino, procure por Additional Boards Manager URLs, e adicione a seguinte linha: http://arduino.esp8266.com/stable/package_esp8266com_index.json




Feito isso o IDE irá baixar os arquivos necessários e você poderá utilizar diversas placas com o chip ESP8266, dentre elas, a Wemos D1.



Selecione a porta correta de onde a placa está conectada, e altere a velocidade da placa para 115200 bps.


Nesse ponto eu já consegui gravar a placa e tudo estava aparentemente normal. Mas, se não estou enganado, tive que instalar o pySerial quando estava usando Maverick. No meu caso, #sudo pip install pyserial

“Hello World”


A seguir um programa super simples (um "pisca led") que irá servir apenas para você saber se fez tudo certo e conseguiu programar a placa corretamente. O LED em questão é o que já vem conectado a placa ESP8266.

------------------------------------------------------------------------------
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 */

// the setup function runs once when you press reset or power the board

void setup() {
  // initialize BUILTIN_LED as an output.
  pinMode(BUILTIN_LED, OUTPUT);
}

// the loop function runs over and over again forever

void loop() {
  digitalWrite(BUILTIN_LED, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(5000);                       // wait for a second
  digitalWrite(BUILTIN_LED, LOW);    // turn the LED off by making the voltage LOW
  delay(5000);                       // wait for a second
}
------------------------------------------------------------------------------

Diversos códigos de exemplo de como utilizar a placa estão disponíveis no IDE do Arduino, após você ter configurado para utilizar a Wemos D1. Vale MESMO a pena dar uma olhada.


Conclusão


O código apresentado não é nada útil, ainda mais com essa placa, cujo principal uso é conectar algo a internet. Na parte dois desse artigo iremos conecta-la à sua rede wifi local e receber/enviar alguns comandos via browser. Até lá! =D

P.S.: enquanto eu ainda estava escrevendo esse artigo uma atualização dessa placa foi lançado, sendo denominada Wemos D1 R2. Mais detalhes em http://www.wemos.cc/wiki/doku.php?id=en:d1_r2


Links:




Referências:





terça-feira, 21 de abril de 2015

Robôs e robótica

Os termos robô e robótica surgiram recentemente, mas as idéias relacionadas a eles antecedem a história registrada. A palavra robô foi usada pela primeira vez por um dramaturgo tchecoslovaco chamado Karel Capek que, em 1921, elaborou a peça “Rossum’s Universal robôts”. Os robôs de Capek foram projetados para serem trabalhadores perfeitos e incansáveis, realizando trabalhos manuais para seres humanos.

Isaac Asimov nas suas histórias de ficção científica sobre robôs, nos anos 40, cunhou o termo robótica como sendo "a ciência ou o estudo de robôs". O Dicionário Aurélio define robótica como sendo o “conjunto dos estudos e das técnicas tendentes a conceber sistemas capazes de substituírem o homem em suas funções motoras, sensoriais e intelectuais”.

Mesmo que a palavra seja relativamente nova, o trabalho na pesquisa em robótica tem existido a centenas de anos.

Muitos pensam como sendo a robótica uma área única de tecnologia, mas na verdade a robótica compreende diversas áreas, como a mecânica, a elétrica e os sistemas eletrônicos, além do hardware e software de computadores.

Robôs industriais

Como os robôs do Karel Capek, os robôs industriais são projetados para serem um trabalhador perfeito e incansável. Ele é criado para ajudar trabalhadores humanos, não para substituí-los.

Basicamente temos os seguintes trabalhos onde nós humanos preferimos que sejam delegados a robôs: os trabalhos maçantes, os sujos e os perigosos. Robôs, se corretamente projetados, não terão problemas com tais tarefas.

Os locais mais comuns de se encontrar robôs industriais são em linhas de montagem de fábricas diversas, onde esses robôs auxiliam na soldagem de partes metálicas, na pintura, no posicionamento de peças e em diversas outras tarefas, tendo um desempenho bem melhor que trabalhadores humanos, além de evitar que humanos trabalhem com elementos tóxicos ou danosos de alguma outra forma.



Robôs militares

Engenheiros militares consideram como sendo um robô qualquer máquina que pode ser operada sem uma pessoa estando presente. Essa definição engloba a maior parte dos dispositivos que utilizam um controle-remoto, já que quase qualquer um desses tipos de dispositivos podem ser operados por um computador no lugar de um operador humano. Tanques e aviões de controle-remoto e dispositivos de detonação de bombas sobre as linhas inimigas são alguns exemplos de robôs militares.

Os programas espaciais desenvolveram alguns dos mais sofisticados robôs para fins especiais já feitos. O veículo lunar não tripulado e as sondas Viking e Voyager realizaram fantásticas proezas de exploração, sem contar sondas e robôs mais recentes, como a Pathfinder, o Curiosity e o Opportunity.

Robôs promocionais (ou de entretenimento)

Geralmente tendo uma aparência mais humana (bem diferente das dos robôs industriais), esses robôs talvez sejam melhor descritos como “dispositivos remotamente controlados”.

São vistos em eventos e convenções, onde se movem pelos corredores, misturam-se com os visitantes, e parecem conversar com eles.

Robôs educacionais

Kit Lego Mindstorms
Robôs educacionais são dispositivos que podem ser usados para ensinar os princípios da robótica.  Eles podem ser manipuladores, computadores, kits de sensores ou qualquer parte relacionada a robótica.

Algumas empresas se especializaram nessa área de robótica, criando kits educacionais e robôs facilmente programáveis.

Robôs médicos

Robôs médicos incluem todos dispositivos mecatrônicos/robóticos que dão assistência médica ou mesmo substituem médicos em determinadas tarefas, ou mesmo substituem partes do corpo em pessoas com tal necessidade.

Vários dos tipos de robôs já mencionados podem também ser classificados como robôs médicos. Robôs promocionais são usados em trabalhos de terapia com crianças abusadas. Robôs industriais são usados como assistentes de laboratório para manipular fluidos perigosos. Braços, mãos, pernas e pés biônicos estão alcançando um estágio de serem realmente úteis para quem perdeu algum desses membros.

Robôs domésticos

Roomba 790, da iRobot
Robôs domésticos (ou robôs pessoais) ainda tem um bom caminho pela frente para serem completamente úteis. A primeira geração de robôs pessoais serviu apenas como animais de estimação mecânicos. Gerações seguintes são/serão capazes de entreter, ser babás, aspirar o pó, pegar as correspondências, aparar a grama e levar o lixo para fora.

Também podem ser usados para a proteção da casa, para o cuidado da saúde de idosos ou enfermos, detenção de incêndios e muitas outras funções a serem imaginadas.

Robôs de “lazer” (hobby)

São robôs construídos por qualquer pessoa que tenha o mínimo de conhecimento em eletrônica e mecânica, usando kits desenvolvidos por terceiros ou não, tendo como objetivo os mais diversos.

São importantes para apontar para onde o desenvolvimento da robótica pode caminhar no futuro.



Referências

1. Robotics: introduction, programming, and projects / James L. Fuller - 2nd ed.
2. http://en.wikipedia.org/wiki/R.U.R. (visto em abril de 2015)



terça-feira, 22 de janeiro de 2013

Automatize ou Morra

A ideia para que esse texto fosse escrito surgiu quando li que a empresa Foxconn, a principal montadora dos equipamentos da Apple, na China, irá trocar, a partir de 2013, trabalhadores humanos por robôs em suas fábricas, para reduzir custos. Estima-se que 1 milhão de robôs sejam colocados para funcionar nos próximos 3 anos.

Substituir pessoas por máquinas, algo que começou a ser feito em maior escala com a "Revolução Industrial", iniciada no século XVIII (1a. fase) e expandida durante o século XIX (2a. fase). O tear mecanizado é um dos principais símbolos dessa era, acelerando a produção em série nas fábricas, com aumentando da velocidade de produção e redução significante nos custos.

Mais nem tudo são flores, pois uma forte oposição a substituição da mão-de-obra humana por máquinas acabou surgindo, alegando-se que as máquinas estariam roubando os empregos dos humanos.  Um dos movimentos oposicionistas mais conhecidos foram os "ludistas", que ficaram famosos por invadir fábricas e destruir máquinas. Com você lendo isso, em um computador montado em uma linha de produção, não preciso nem dizer que esses atos falharam, não é mesmo?

E não adiantava mesmo brigar por isso, porque as empresas que passavam a utilizar maquinários mais sofisticados e a produção em série eram muito mais competitivas do que as outras, obrigando-as a seguir o mesmo caminho ou a fechar suas portas.

Na terceira fase da Revolução Industrial os produtos passaram a ter um maior valor agregado, como os computadores, softwares, chips e robôs industriais. E é essa fase, ou talvez uma quarta fase, dependendo do ponto de vista dos historiadores, que está se expandindo atualmente, com uma adoção ainda maior de processos automatizados e robôs, não apenas na indústria mas em praticamente todos os lugares que tenham problemas que podem ser solucionados por uma máquina.

Mais e mais a máquina vem substituindo e muitas vezes superando o trabalho humano. O foco continua sendo reduzir custos com encargos trabalhistas e melhorar a eficiência nas linhas de produção, além de executar tarefas monótonas e repetitivas, muitas delas criadas nas fases anteriores da Revolução Industrial.

Fábrica 100% automatizada (Lights-Out)
Fábricas inteiramente automatizadas (lights-out), que não precisam de um único ser humano dentro delas, estão começando a ser implantadas, apesar dos custos ainda serem bastante elevados. Mas isso não significa que o custo de automatizar seja elevado, mas sim que uma automatização total e radical costuma ser. A questão é saber o que vale a pena e o que não vale, ainda, ser automatizado.

De forma geral, se você tem uma tarefa que se repete com frequência, sem muita alteração, essa tarefa é uma ótima candidata a ser automatizada e colocada para ser feita por uma máquina. Isso irá, a médio e longo prazo, reduzir drasticamente os seus custos, além de padronizar a sua produção. Descobrir o que você pode automatizar na sua empresa ou local de trabalho é um ponto chave para a sua sobrevivência.

Exemplos de automação: em indústriais, em restaurantes e no campo


Como no exemplo citado no início do texto, mesmo empresas grandes e que geram lucros enormes não estão estáticas e, continuamente, investem na pesquisa e implementação de processos automatizados.

E... OK, você não vai morrer se não começar a automatizar os processos da sua empresa mas, a sua empresa, quando começar a concorrer com outras empresas que estiverem fazendo a lição de casa, essa sim vai. A questão é apenas quando.