Escolar Documentos
Profissional Documentos
Cultura Documentos
Rita Barbosa
Participante:
Gabriel da Silva
Problema/Solução
Problema:
Uma senhora tem um problema com o seu horário e fica fora de casa por vários dias
dependendo do seu trabalho, então ela acaba não tendo tempo para cuidar da ração do seu
cachorro, ela então pediu a sua ajuda para criar um projeto que ajude ela a alimentar seu
cachorro enquanto ela estiver fora de casa.
Solução:
A solução para esse problema será criar um alimentador automático para ela usando o
ESP32, um servo motor que será conectado ao ESP32 e vai ser o responsável por abrir o
compartimento onde está armazenado a ração, um Módulo RTC (Real Time Clock),
também conectado ao ESP32 para definir os horários que o cachorro se alimenta e assim
ativar o servo motor.
Miniprojeto Wokwi
Desenho do Projeto:
Código do Projeto:
Código do projeto sem estar conectado no Wi-Fi:
#include <ESP32Servo.h>
#include "RTClib.h"
Servo servo;
RTC_DS3231 rtc;
void setup() {
servo.attach(servoPin, 500, 2400);
Serial.begin(115200);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
}
void loop() {
DateTime now = rtc.now();
String horaAtual = String(now.hour()) + ":" + String(now.minute());
delay(5000);
void alimentarPet() {
servo.write(0);
delay(20000);
servo.write(90);
delay(40000);
#include <ESP32Servo.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <PubSubClient.h>
#include "RTClib.h"
WiFiClient espClient;
PubSubClient client(espClient);
Servo servo;
RTC_DS3231 rtc;
void setup() {
servo.attach(servoPin, 500, 2400);
Serial.begin(115200);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
conectawifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
void loop() {
int alimentar = 0;
DateTime now = rtc.now();
String horaAtual = String(now.hour()) + ":" + String(now.minute());
if (horaAtual == "9:10" || horaAtual == "12:30" ||horaAtual == "20:30") {
alimentarPet();
alimentar = 1;
}
if (!client.connected()) {
reconnect();
}
if (millis() - lastMillis > 10000) {
lastMillis = millis();
sprintf(mensagem, "%d", alimentar);
Serial.print("Mensagem enviada: ");
Serial.println(mensagem);
client.publish(my_topic_PUB, mensagem);
Serial.print(contador);
Serial.println("-Mensagem enviada com sucesso...");
contador++;
}
delay(40000);
}
void alimentarPet() {
servo.write(0);
delay(20000);
servo.write(90);
}
void conectawifi(){
WiFi.begin(WIFI_SSID, WIFI_PASSWORD, WIFI_CHANNEL);
Serial.print("Conectando ao WiFi ");
Serial.print(WIFI_SSID);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Conectado!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void reconnect() {
while (!client.connected()) {
Serial.print("Tentando conectar ao MQTT ...");
if (client.connect("ESPClient")) {
Serial.println("Conectado");
client.subscribe(my_topic_SUB);
}
else {
Serial.print("falhou, rc=");
Serial.print(client.state());
Serial.println(" Tente novamente em 5 segundos");
}
}
}
Parabéns por concluir o curso e por se dedicar ao
desenvolvimento de habilidades em IoT na área de
Energia!