Pular para o conteúdo principal

Automatizando uma lampada Com Wifi (Serie: Sem fio)

Olá Humanos neste tutorial simples vamos brincar com redes wireless( padrão wifi), no post passado aprendemos a brincar com curta distancia bluetooth, não muito usado mais bem interessante de fato! para entendermos esse tutorial temos que entender como funciona sua rede domestica ai na sua casa ^_^, este tutorial sera um pouco longo mais nada de exorbitante certo? , primeiro passo entender sua rede domestica, depois como funciona servidor web em python e por fim integrar com arduino.

Requisitos para este tutorial

  • Raspberry/PC com Ubuntu
  • Arduino
  • Modulo Rele
  • Roteador 

Step 1 - Entendendo sua rede domestica ^_^


Em redes e bem comum termos como topologia e serviços de rede, vamos usar um padrão generico de rede local.


Bom bem simples topologia de redes domesticas é exatamente assim que nossa rede em casa normalmente é, precisamos configurar servidor web, e criar estrutura do de backend do arduino.


Step 2 - Entendendo Servidor web em python (Flask microfreamwork) 

Antes de irmos direto para a aplicação MicroFramework Flask, facilita desenvrolvimento de sites usando python e html de uma forma bem simples de se trabalha, para instalar use pip.

$ sudo pip install flask

Quando tiver instalado vamos brincar com flask pensando em automação simples,
cria um pasta chamada app e dentro dela outra chamada templates, a raiz deve ficar assim
App---> Templates, dentro de app cria arquivo chamado main.py e dentro de templates crie um arquivo chamado index.html, ambos vazios claro.

Codigo do main.py

#!/usr/bin/python

from flask import Flask, request,render_template # importando metodos da biblioteca flask

app = Flask(__name__)

@app.route("/",methods=["POST","GET"])  # definindo metodos a serem usados 
def index(): # funcao principal
   if request.method == "POST":               # request.method ele valida o metodo 
      if request.form[''submit''] == "ON":     #  request.form acessa submit se igual 'ON' luz desligada
           print 'Luz Ligada'
      elif request.form[''submit''] == "OFF": # request.form acessa submit se igual 'OFF' luz desligada
           print "Luz Desligada"
 return render_template(''index.html'')      # renderiza isso do arquivo da pasta template

if __name__ == "__main__":
   app.run(host="0.0.0.0",port=80,debug=True)
 # parametro host: pega ip local, porta: 80 para navegador, debug: para caso der algo errado ele mostrar

Se estiver funcionando prossiga, para levantarmos nosso primeiro site devemos usar programar agora o html da aplicação, na pasta templates abra o arquivo index.html

Codigo de index.html


<html>
<head>
  <title>
     Luz 
  </title>
</head>

<body>
     <center>
      <h1>Menu de Butoes Luz<h1>
      <form action="/" method="post">
         <input type="submit" name="submit" value="ON" style="width: 100px; height: 100px">
         <input type="submit" name="submit" value="OFF" style="width: 100px; height: 100px">
     </center>
</body>
</html>

Bom ate aqui escrevemos toda a parte do servidor web usando flask para falar com html diretamente usando leitura via request ^_^

Step 3 - Integrando com arduino


Aqui vamos seguir o circuito do tutorial passado onde usamos um arduino e um modulo rele


Bem simples de montar neh ? Pois vamos ao codigo da eletronica ^_^

Exemplo do luz.ino

char letra;

int luz=7;

void setup() {
  Serial.begin(9600);
  pinMode(luz,OUTPUT);
}

void loop() {
 letra = Serial.read();
 switch(letra){
  case 'd': // desligar luz
   digitalWrite(luz,HIGH);
   break;
  case 'l': // ligar Luz
   digitalWrite(luz,LOW);
   break;
 }
}

Agora vamos integrar tudo junto, mas antes vamos entender como isso funciona de forma clara,
primeiramente levantamos arduino conectado no raspberry, ou computador com linux com flask instalado, para iniciar o servidor web rodando na porta 80, onde podemos acessar uma pagina para ligar e desligar com butões, usando esse sistema de submit de post o python acessa e faz a leitura dos forms e para validar o butão que você clicou, enviando um caracter pro arduino.

Nesse ponto vamos inserir no codigo fonte do python as seguintes linhas.

import serial

ser = serial.Serial("/dev/ttyACM0",9600) # conecta na porta usb do arduino
ser.write("l")  # envia um caracter l para ligar luz
ser.write("d") # envia caracter d para desligar luz

Implementando {^_^}

#!/usr/bin/python

from flask import Flask, request,render_template # importando metodos da biblioteca flask
import serial
ser = serial.Serial("/dev/ttyACM0",9600)
app = Flask(__name__)

@app.route("/",methods=[''POST'',''GET''])  # definindo metodos a serem usados 
def index(): # função principal
   if request.method == ''POST'':               # request.method ele valida o metodo 
      if request.form[''submit''] == ''ON'':     #  request.form acessa submit se igual 'ON' luz desligada
           print 'Luz Ligada'
           ser.write('l')  # envia letra l para arduino ligar luz ^_^
      elif request.form[''submit''] == ''OFF''# request.form acessa submit se igual 'OFF' luz desligada
           print ''Luz Desligada''
           ser.write('d'# envia letra d para arduino desligar luz
 return render_template(''index.html'')      # renderiza isso do arquivo da pasta template

if __name__ == "__main__":
   app.run(host="0.0.0.0",port=80,debug=True)
 # parametro host: pega ip local, porta: 80 para navegador, debug: para caso der algo errado ele mostrar

Step Final Testar tudo

Test 1 da pagina web funcionando 



Test 2 da pagina web + arduino




Comentários

Postagens mais visitadas deste blog

Introdução ao Intel Edison: First Hello Word in Intel Edison

Introdução ao Intel Edison Olá Humanos hoje descidi que iria fazer um post sobre Intel Edison é mostrar um blink/HelloWord usando essa plataforma incrivel ^_^, sabe ? antes de codarmos em si, vamos ver 2 pontos simples, Software e Hardware. Software O.S: primeiro ! ele não usa um OS, ele usa uma build para construir OS, um projeto chamado Yoct, oque ser build ? Pense em um pacote para construir um sistema é pronto ^_^, simples porem tem uma documentação e um pacote completo no link https://www.yoctoproject.org/ Bibliotecas: Inicialmente trabalhamos com a libmraa, fornece uma PWM, GPIO, ADC, e outras interfaces para acesso mais baixo a componentes complexos como sensores e coisas legais. OBS: usamos API python para trabalhar com ela Hardware  Essa e intel Brekout o Edison é apenas o ship pegueno no canto esquerdo da imagem, uma arquitetura baseada no arduino porem com processador e uma microproscessador, bom basicamente é isso, porem o que chama atenção é que ele e um co...

Redirecionamento de Porta usando ngrok (Port Forward with ngrok) SSH

Olá Humanos, estou no pensionato e aqui não tenho acesso ao roteador para fazer um redirencionamento de porta digno affs ¬__¬, sim pensei em Hackear rsrsrs, porem minha preguiça minha preguiça não deixa hauhauha, então encontrei uma ferramenta bem legal chamada ngrok que faz com que eu possa acessar remotamente meu servidor local para brincar com IoT. Instalação e ngrok  link: https://ngrok.com/ Para se cadastrar é bem simples basta logar com conta sua conta do git ou google depois faça download e na https://dashboard.ngrok.com/auth na aba auth pegue seu authtoken e valide no terminal # unzip ngrok-stable-linux-amd64.zip # ./ngrok authtoken <YOUR AUTHTOKEN> Instalando SSH no seu computador  Bom se você usa Ubuntu basta rodar  comando  # apt-get install openssh-server Para testar se o serviço digite  # service ssh status Iniciando SSH no Ngrok Rode o ngrok em protocolo tcp na porta 22  # ./ngrok tcp 22 ...

Dicas rápidas !!!!!

Olá Humanos HOJE vamos aprender a criar um pendrive de boot com windows 7 tipo assim mt mt mt mt mt rapido #NoobAlert Requisitos: 1 - Pendrive de 4GB 1 - PC Windows 7 1 - Internet 1 - Cafe 1º Download ISO windows All-in-on  faça  o download do iso pelo site do Windows 7 All in on, se você não sabe usar o torrent acesse a  esta pagina https://kickass.to/windows-7-all-in-one-pre-activated-excellent-t7661549.html 2º Download do  A Bootable USB  http://www.baixaki.com.br/download/a-bootable-usb.htm OK com o download do arquivo BootableUSB.zip  extraia usando sua ferramente de extração, e acessando a pasta basta executar, abrindo a tela igual a de cima. Clique em  3º Criando Pendrive de Boot Seguindo a sequencia de passo 1 - Clique em Check USB para checar se em realmente um pendrive ali(por favor esteja ja com seu pendrive na porta usb neh) 2 - Clique em Format USB(Sera formatado seu pendrive então e bom que tenha um bkp)...