Trabalho desenvolvido para a disciplina de Sistemas Distribuídos do 7º período em Ciência da Computação
Implementação de RPC (Remote Procedure Call), e RMI (Remote Method Invocation) para comunicação com dispositivos embarcados em redes locais.
O projeto consiste no uso de um ESP8266 conectado a uma rede Wireless, e atuando como um servidor na porta 80. O acesso a esse servidor pode ser realizado através de um cliente. Ele executa comandos simples, que são enviados via protocolo TCP e acionam alguma funcionalidade de um Arduino Mega 2560.
- ESP8266 (atuando como server)
- Arduino Mega 2560 (atuando como controlador dos periféricos)
- Módulo Relé 5v
- Sensor de temperatura e umidade DHT11
- ligar lampada (define PIN13 como HIGH, acionando o relé e ligando a lâmpada)
- desligar lampada (define PIN13 como LOW, desativando o relé e desligando a lâmpada)
- temperatura (imprime a temperatura, umidade, ponto de orrvalho e status na tela do cliente)
- Cliente Python <-> ESP8266 <-> MEGA2560 <-> Sensores
- Cliente Java <-> Servidor Java <-> ESP8266 <-> MEGA2560 <-> Sensores
- Para utilização, baixe o Arduino IDE no site oficial.
- Adicione ao projeto, as placas esp8266: https://github.com/esp8266/Arduino/releases/download/2.3.0/package_esp8266com_index.json e mega2560 (já inclusa no Arduino IDE).
- Altere o código esp.ino, adicionando o SSID e Senha da sua rede local.
- Suba o código para o ESP8266.
- Abra o monitor serial do Arduino IDE e confira se o ESP foi inicializado e qual endereço IP lhe foi atribuído.
- Suba o código mega.ino no Arduino Mega 2560.
- Para a comunicação RPC, altere o cliente python trocando o Host para o endereço IP do ESP.
- Execute o programa cliente, digite e envie os comandos.
- Para a comunicação RMI, Altere o código Server.java trocando a String "ESP_IP" para o endereço IP do ESP.
- Para compilar: Abra um terminal na pasta do projeto, e execute o comando:
java *.java
. - Execute o ServidorRMI com
java ServidorRMI
. Deverá aparecer a mensagem: "Servidor RMI iniciado" - Abra um novo terminal na mesma pasta do projeto e execute:
java ClienteRMI
. - Seu cliente já pronto e aguardando comandos.
- O ESP consegue atuar como server e controlador ao mesmo tempo. Porém, dividir as tarefas com o Mega torna o projeto mais organizado. Além disso, o Mega possui mais pinos que podem ser usados para escalabilizar o projeto no futuro.
- Ao usar pela primeira vez, deve-se conectar o Hardware num dispositivo com o Arduino IDE e usar o monitor serial para ver o IP que foi atribuído pelo roteador (você pode optar por um IP estático, mexendo em algumas funções da biblioteca WiFi do ESP8266).