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
Comentários
Postar um comentário