Professional Documents
Culture Documents
EM ELETRôNICA:
Tudo que você precisa
saber para começar
GUIA IOT PARA INICIANTES EM ELETRÔNICA 02
INTRODUÇÃO
Um assunto que anda bastante na moda é a “internet das coisas” ou
“IoT”, vinda do inglês Internet of Things. O termo foi utilizado pela primeira
vez em 1999 para descrever um sistema onde os objetos poderiam ser
conectados à internet. Mas o que é exatamente a internet das coisas?
Como “funciona”? Como aplicá-la ao nosso dia a dia?
_BOA LEITURA.
o que É
INTERNET
DAS COISAS?
GUIA IOT PARA INICIANTES EM ELETRÔNICA 04
ONDE SE ENCONTRA
A IOT?
CONFIGURAÇÃO DA IDE DO
ARDUINO PARA O NODEMCU
http://arduino.esp8266.com/stable/package_esp8266com_index.json
GUIA IOT PARA INICIANTES EM ELETRÔNICA 11
PROGRAMAR NODEMCU
COM IDE ARDUINO
1 void setup() {
2 // Define o pino 13 como saida
3 pinMode(13, OUTPUT);
4 }
5 void loop() {
6 digitalWrite(13, HIGH); // Acende o Led
7 delay(1000); // Aguarda 1 segundo
8 digitalWrite(13, LOW); // Apaga o Led
9 delay(1000); // Aguarda 1 segundo
10 }
FUNCIONAMENTO DO MQTT
COMO UTILIZAR O
NODEMCU E MQTT
IMPORTANTE
1. O LED possui acionamento em lógica invertida, ou seja,
para acendê-lo é preciso enviar o estado LOW para D0 e para
GUIA IOT PARA INICIANTES EM ELETRÔNICA 20
PROGRAMA NODEMCU
E MQTT
Vamos à programação!
INTERAÇÃO COM
O NODEMCU
PARA FUNCIONAR
1. Definir as strings dos tópicos de publish e subscribe
e clicar em “Conectar”. Aguardar a mensagem Conectado
ao Broker! aparecer na sessão “Debug / respostas do
servidor”.
BIBLIOTECA
SPIFFS
#include <FS.h>
SPIFFS.begin()
SPIFFS.format()
SPIFFS.open(arquivo, modo)
EXEMPLO 1: SALVANDO
ESTADO DO LED NA MEMÓRIA
1 #include <FS.h>
2
3 int led = D1;
4 int chave = D0;
5
6 /**
7 * @desc escreve conteúdo em um arquivo
8 * @param string state - conteúdo a se escrever no arquivo
9 * @param string path - arquivo a ser escrito
10 */
11 void writeFile(String state, String path) {
12 //Abre o arquivo para escrita (“w” write)
13 //Sobreescreve o conteúdo do arquivo
14 File rFile = SPIFFS.open(path,”w+”);
15 if(!rFile){
16 Serial.println(“Erro ao abrir arquivo!”);
17 } else {
18 rFile.println(state);
19 Serial.print(“gravou estado: “);
20 Serial.println(state);
21 }
22 rFile.close();
23 }
24
25 /**
26 * @desc lê conteúdo de um arquivo
27 * @param string path - arquivo a ser lido
28 * @return string - conteúdo lido do arquivo
29 */
30 String readFile(String path) {
31 File rFile = SPIFFS.open(path,”r”);
32 if (!rFile) {
33 Serial.println(“Erro ao abrir arquivo!”);
34 }
35 String content = rFile.readStringUntil(‘\r’); //desconsidera ‘\r\n’
36 Serial.print(“leitura de estado: “);
37 Serial.println(content);
38 rFile.close();
39 return content;
40 }
41
42 /**
43 * @desc inicializa o sistema de arquivos
44 */
GUIA IOT PARA INICIANTES EM ELETRÔNICA 28
45 void openFS(void){
46 //Abre o sistema de arquivos
47 if(!SPIFFS.begin()){
48 Serial.println(“\nErro ao abrir o sistema de arquivos”);
49 } else {
50 Serial.println(“\nSistema de arquivos aberto com sucesso!”);
51 }
52 }
53
54 void setup() {
55 pinMode(led, OUTPUT);
56 pinMode(chave, INPUT);
57 Serial.begin(9600);
58 openFS();
59
60 // no primeiro upload de programa o arquivo state.txt deve ser criado com o conteúdo “off”
61 // no segundo upload a linha deve ser comentada.
62 //writeFile(“off”, “/state.txt”);
63
64 // verifica o último estado do LED e ativa de acordo
65 String state = readFile(“/state.txt”);
66 if(state == “on”)
67 {
68 digitalWrite(led, HIGH);
69 }
70 else if(state == “off”)
71 {
72 digitalWrite(led, LOW);
73 }
74 }
75
76 void loop() {
77 /*
78 * verifica o estado anterior salvo no arquivo,
79 * ativa o LED de acordo
80 * e escreve novo estado no arquivo.
81 */
82 if(digitalRead(chave) == LOW)
83 {
84 String state = readFile(“/state.txt”);
85 if(state == “off”)
86 {
87 writeFile(“on”, “/state.txt”);
88 digitalWrite(led, HIGH);
89 }
90 else if(state == “on”)
91 {
92 writeFile(“off”, “/state.txt”);
93 digitalWrite(led, LOW);
94 }
95 while(digitalRead(chave) == LOW);
96 }
97 }
GUIA IOT PARA INICIANTES EM ELETRÔNICA 29
1 #include <FS.h>
2 #include <ESP8266WiFi.h>
3 #include <WiFiClient.h>
4 #include <ESP8266WebServer.h>
5
6 const char* ssid = “Nome da rede Wifi”;
7 const char* password = “Senha da rede Wifi”;
8
9 String webPage = “”;
10
11 ESP8266WebServer server(80);
12
13 void handleRoot() {
14 server.send(200, “text/html”, webPage);
15 }
16
17 void readFile(void) {
18 //Faz a leitura do arquivo HTML
19 File rFile = SPIFFS.open(“/index.html”,”r”);
20 Serial.println(“Lendo arquivo HTML...”);
21 webPage = rFile.readString();
22 // while(rFile.available()) {
23 // String line = rFile.readStringUntil(‘\n’);
24 // webPage += line;
25 // }
26 Serial.println(webPage);
27 rFile.close();
28 }
29
30 void setup() {
31 Serial.begin(9600);
32 SPIFFS.begin();
33
34 if(SPIFFS.exists(“/index.html”))
35 {
36 Serial.println(“\n\nfile exists!”);
37 }
38 else Serial.println(“\n\nNo File :(“);
GUIA IOT PARA INICIANTES EM ELETRÔNICA 30
39
40 readFile();
41
42 WiFi.begin(ssid, password);
43 // Wait for connection
44 while (WiFi.status() != WL_CONNECTED) {
45 delay(500);
46 Serial.print(“.”);
47 }
48 Serial.println(“”);
49 Serial.print(“Connected to “);
50 Serial.println(ssid);
51 Serial.print(“IP address: “);
52 Serial.println(WiFi.localIP());
53
54 server.on(“/”, handleRoot);
55
56 server.begin();
57 }
58
59 void loop() {
60 server.handleClient();
61 }
../Arduino/tools/ESP8266FS/tool/esp8266fs.jar
1 <!DOCTYPE html>
2 <html>
3 <body>
4 <h1>Hello Wemos SPIFFS!</h1>
5 </body>
6 </html>
GUIA IOT PARA INICIANTES EM ELETRÔNICA 32
BLUETOOTH CLÁSSICO
VERSUS BLE
RX Characteristic: 6E400002-B5A3-F393-E0A9-E50E24DCCA9E
TX Characteristic: 6E400003-B5A3-F393-E0A9-E50E24DCCA9E
GUIA IOT PARA INICIANTES EM ELETRÔNICA 38
MONTAGEM
DO CIRCUITO
PROGRAMA BLUETOOTH
LOW ENERGY COM ESP32
APLICATIVO DE CELULAR
COM THUNKABLE
FUNCIONAMENTO
DO PROJETO
IMPORTANTE
Antes de seguir adiante, tenha certeza que a sua Raspberry
Pi Zero W está totalmente operacional (com cartão SD, com
Raspbian instalado e conectividade à Internet operante).
Lembramos também que apesar deste projeto usar a
Raspberry Pi Zero W, para montar o seu projeto de Broker
MQTT, você também pode usar qualquer uma das outras
placas da linha Raspberry, ok?
GUIA IOT PARA INICIANTES EM ELETRÔNICA 48
CONFIGURAÇÃO DE UM HOSTNAME
PARA A RASPBERRY PI ZERO W
Agora será feito algo muito útil para o uso e testes com o
broker MQTT que roda na Raspberry: a configuração de
GUIA IOT PARA INICIANTES EM ELETRÔNICA 49
sudo raspi-config
Com isso, seu broker MQTT local está pronto para uso!
GUIA IOT PARA INICIANTES EM ELETRÔNICA 51
UTILIZANDO O PROJETO
DA PLANTA IOT NESTE BROKER
USOS ADICIONAIS DE UM
BROKER MQTT LOCAL
CONCLUSÃO
A internet das coisas já faz parte da nossa realidade e é muito
mais acessível do que se imagina. Para os makers de carteirinha
que queiram inventar projetos de IoT dos mais variados tipos, é
possível encontrar uma série de conteúdos na internet, como o
próprio Blog da FilipeFlop. E se você quiser compartilhar o seu
próprio projeto, tirar dúvidas e interagir com outros makers,
acesse nosso Fórum!
VISITAR BLOG
ACESSAR FÓRUM
companhe
A
nossas redes sociais
www.filipeflop.com