diretamente nos pinos SDA e SCL do Arduíno Uno e parecem estar funcionando "normalmente"...
No mesmo barramento I2C também uso um LCD 16x2 e um módulo RTC DS3231.
Estou ligando assim pois nos vídeos e artigos que vi o pessoal sempre liga o PCF8574 sem esses resistores de pull-up e como não entendo de eletrônica fiz igual...
No caso, como eu uso 2 chips do PCF8574, precisaria ligar 4 resistores 4k7, um em cada pino de cada CI? Ou seria apenas 2 resistores? E esses resistores não afetariam o display e o RTC, que ambos já têm resistores embutidos em seus módulos?…
ora de tomar seus remédios. Ele alarma em 4 horários predefinidos. Só para de tocar quando ela abre a caixa. O led referente ao horário, pisca para mostrar qual a cor da caixa do remédio que ela tem que tomar. lista de peças:
Arduino UNO
4 led (vai depender de quantos horários vc vai cadastrar)
RTC (usei o DS3231)
Buzzer
Resistores
Caixa ( esta um pouco feia, mas foi o que consegui que coube o arduino e a caixa de remédios dela).
Fonte de 9v
Segue link do alarme em funcionamento.
https://www.youtube.com/watch?v=xiLD6UvpEiE…
Adicionado por gean viana ao 20:05 em 21 novembro 2016
.
2 - Atualização de firmware via html
3 - Atualização de firmware via OTA na IDE Arduino.
4 - Uplooad via html
5 - Informações do sistema (memória, espaço, versão etc) via html.
6 - Barra colorida com informações de sinal, temperatura, etc.
7- Contador de RPM (consigo ótimo desempenho na contagem de RPM de um motor RC de 2200KV
Sensor de obstáculo infravermelho
Motor 2200kv
2200 x 12v = 26400 RPM
8- PZEM004 Voltimetro - Amperimetro 100A
9 - DHT22 - Temperatura e Umidade
10 - RTC DS3231 - Real Time Clock
Ainda no mesmo projeto implementei:
11 - Relógio interno com dia da semana (timelib - time-master) com ajuste via html ou NTP.
12 - Modo AP configurável via html.
13 - Modo Station configurável via html
14 - Troca automática de modo no caso de: SSID não encontrado, erro de senha, AP Lost, AP encontrado.
15 - Scan wifi via html
16 - Configurações de IP, SSID, modo, via html.
17 - Scan de dispositivos I2C (RTC DS3231 por exemplo).
Tem muito mais, vejam.
MEU PROJETINHO
Se Já tem o ESP8266 instalado, talvez seja preciso ir em "Ferramentas, exceptions" e colocar em "Enabled".
Aqui uso esses 2 para "brincar"
Gravador Placa
Se ainda não tem o ESP8266 instalado, siga esses passos:
No meu caso, para esse projeto, estou usando:
IDE 18.14
Após a instalação da IDe Arduino, vá em:
Arquivo, Preferencias, URLS Adicionais para Gerenciadores de Placas:
cole esse endereço:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Meu Tema para IDE Arduino
Vã em Ferramentas, Gerenciador de Placas e digite: ESP8266. vai aparecer esp8266 by ESP8266 Community versão...
Estou usando a versão 2.7.4 porque tive problemas com versões mais recentes, no MODO AP não conseguia me conectar (faça o teste).
Vá em Ferramentas, Gerenciador de Placas e selecione: NodeMCU 1.0(ESP12E Module) Upload speed 115200 CPU Frequency 160 Mhz
Excepitions = Enabled (Teste, comigo se não marcar isso dá erro);
Escolha a porta que o ESP8266 estiver conectado.
ESP8266 FFS v0.5
Estraia o arquivo e cole a pasta ESP8266FS dentro de tool, Vá em c:/arquivos de programas x86/arduino/tools/ESP8266FS/tool
INSTALAR AS BIBLIOTECAS:
DS3231 já em portugues
PZEM004v3
NTP Client
ESP8266 Ping Master
DHT22 Biblioteca
Adafruit Sensor
Para instalar as bibliotecas em .zip vá em Sketch, incluir bibliotecas, adcionar biblioteca .ZIP
Extraia o arquivo MEU PROJEITINO, abra o arquivo .ino e clique em carregar.
vá em Ferramentas, ESP8266 Sketch Data Upload (para enviar os arquivos para dentro do ESP)
pronto. tá feito.
Escolha a rede h3lyo, senha 12345678
http://10.1.1.1
Sei que possui muitos bugs (por exemplo: o scan wifi as vezes congela)... mas estou apenas tentando aprender e compartilhar conhecimento.
Obrigado a todos.
…
irei também descrever as bases da implementação, e a lógica da Máquina de Estados que controla o Sistema.
Antes de tudo, preciso fazer um comentário sobre a Biblioteca DS3231 que vc escolheu para usar no Projeto.
Fiz a implementação usando esta mesma Biblioteca DS3231. Porém, como ocorre com algumas bibliotecas escritas sem seguir padrões mais rigorosos, esta viola uma das regras da implementação "ISO C++". Não estou surpreso, pois já vi isto diversas outras vezes. Muitos provavelmente que usam esta Lib DS3231 não devem perceber isso, porque não tem habilitada a exibição das mensagens de warnings durante a compilação. Para aqueles que querem saber como configurar a exibição dessas mensagens, recomendo ver um documento que preparei recentemente para configuração de alguns itens significativos da IDE do Arduino, onde a parte de compilação está descrita na página 14 ("Configurações para o Processo de Compilação"), mas recomendo ver todo o documento pois poderá ser de grande ajuda.
link para o documento: config_IDE_Arduino.pdf
Sobre estes warnings na compilação da LIB DS3231, estou mostrando parte da listagem dos mesmos na figura a seguir (onde marquei parte do texto na cor rosa):
(clique na figura para "zoom")
Ao todo, resultam mais de 35 warnings, todos pelo mesmo motivo (pois são strings com nomes e nomes abreviados dos dias da semana e meses na língua inglesa), que é a violação da regra "ISO C++ forbids converting a string constant to 'char*' ". Claro é uma regra aparentemente "boba". Mas ao mesmo tempo não é. Ocorre que sempre que se encontra a palavra "forbid" nestes warnings, isto pode realmente significar apenas um warning na compilação na Plataforma Arduino, mas aguém acredita mesmo que o padrão ISO usaria "forbid" para um warning??? É claro que não. Sempre que um warning é sinalizado, é preciso ver o que ele significa e então decidir o que fazer. Neste caso específico, estamos ignorando o warning, pois sabemos que na Plataforma Arduino, ele não causará problemas. Mas isto nem sempre é assim. Normalmente quando encontro uma situação assim onde um código ao ser compilado gera warnings, eu sempre corrijo o código para que as mensagens não apareçam no Processo de Compilação. Mas em se tratando de uma Biblioteca que não fui eu quem a escreveu, não faço isso, pois se fizesse eu estaria alterando a Biblioteca (mesmo que eu tenha a certeza que a correção não terá nenhum efeito colateral). Claro, o ideal aqui seria avisar o autor da Biblioteca sobre a questão, para que ele próprio fizesse a correção. Neste caso não o fiz, porque sei que não terá problemas no Arduino, e porque exitem diversas outras Bibliotecas para o RTC DS3231 (e que não geram estes warnings).
Especificamente sobre este warning ocorrido, ele indica que o padrão ISO C++ proíbe a conversão de uma string constante para um Ponteiro de char. Sobre isso, farei uma rápida explicação. Existem essencialmente dois motivos. O primeiro, é que a referência para uma String, é sempre um Ponteiro, e no caso de uma String constante isso significa que esse ponteiro poderá estar apontando para a Memória de Programa, que em muitas plataformas de Processadores tem um Espaço de Endereçamento separado do Espaço de Dados, e dependendo do Processador (o "Core") o simples uso de um Endereço da Memória de Programa para acessar a Memória de Dados, resultará em acesso de dados errôneos, uma vez que a String não está no Espaço de Dados (ela está no Espaço de Programa). Claro no Arduino, sabemos que isso não será um problema, pois o código "escondido" de inicialização do C/C++ (executado antes da função "setup" do Arduino) irá copiar a String da Memória de Programa para a RAM, e ela será acessada da RAM por toda a execução do código (claro, isso gera um efeito colateral que é o consumo de RAM). O segundo motivo, mais evidente, é que uma vez que o Ponteiro da String constante é copiado para um Ponteiro "char* ", ele deixa de ser do tipo "constante", significando que o código poderá alterar a String durante a execução e assim corromper uma regra de tipo que foi justamente declarada para impedir que a String seja alterada. E neste segundo motivo não há como contra-argumentar, já que estamos explicitamente usando uma regra da Linguagem de Programação C/C++, e em seguida estamos violando esta mesma regra, o que é um Paradoxo, e é este o motivo do "forbid" (que no Arduino virou apenas "warning", mas em outras Plataformas poderia ser gerado um erro que impediria a compilação de ser concluída com sucesso).
Então, apenas esclarecido esta questão da Biblioteca DS3231, iniciarei a publicação da implementação.
Abrçs,
Elcids…
Adicionado por Elcids Chagas ao 17:57 em 14 setembro 2019
erview
O RTC DS1307 não tem saida de alarme, para usar com Wake up.
http://www.maximintegrated.com/en/products/digital/real-time-clocks/DS1307.html
O RTC DS3231 é mais preciso, permite o uso de dois alarmes e funciona com 3,3V !
http://www.maximintegrated.com/en/products/digital/real-time-clocks/DS3231.html
http://www.raspberrypi-spy.co.uk/2015/05/adding-a-ds3231-real-time-clock-to-the-raspberry-pi/
…
ento da bomba.
Quanto ao codigo, sinto em lhe informar que nao encontrei no PC, mas nas conversas eu coloquei ele em anexo. A ideia do menu é simples, vc pode utilizar uma função para cada estado e programar as açoes especificas.
Recomendo que utilize o DS3231 e se for o caso de utilizar motores preocupe-se com o aterramento e com a qualidade das fontes que vai utilizar. Para este projeto tive como referencia o menu do Rodrigo.Menu Rodrigo:https://www.youtube.com/watch?v=AoKCUvzZ-EoMeu Video:https://www.youtube.com/watch?v=wWca8XPiKDcQualquer coisa que puder ajudar, só chamar. Vlw…
ra podemos assim calibrar os timers e relógios.
- Existe o desvio de frequência devido à variação de temperatura. Como disse, no RTC DS3231, o prórprio relógio já faz essa compensação de temperatura. Só acho que para fazer a compensação de frequência do clock de um Arduino, deve dar muito trabalho e precisará de um frequencímetro de precisão ( que já tenha essa compensação de temperatura).
- Sobre o desvio de contagem que existe nos Timers do Arduino, já li que eles variam aleatóriamente ( isso que eu entendi). Depende do programa, das interrupções e dos contadores. Vou procurar onde eu achei isso.
Me lembro que o desvio pode variar de 0 a 4 microsegundos. …
arrinho para dispensar a ração, bem fácil de ser executado, mas ele é feito para alimentar peixes então é preciso fazer umas pequenas modificações na saída da ração.
https://lukmannet.blogspot.com.br/2009/05/manual-pemberi-makan-ikan...
Coloquei em anexo o código que fiz para o alimentador do meu aquário, ele aciona 3 motores vibratórios que dispensam a ração, de acordo com o tempo definido, no meu caso como é muito pouquinho é 200ms, mas o principio é o mesmo.
posta uma foto do seu projeto para gente ver como ficou hehe A unica recomendação é utilizar um relógio RTC do tipo DS3231 ao invés do DS1307.
depois posta foto do projeto…
Adicionado por Tiago Alexandre ao 11:51 em 16 fevereiro 2017
formações do relógio estão nos registradores internos do Chip DS1307.
Para acessá-los terá que ler os registradores. Cada registrador tem um endereço (address). Nesse exemplo citado no link, ele captura 7 bytes dos registradores e depois descodifica os dados. A interface de comunicação usada é a I2C.
Veja do datasheet :
https://www.maximintegrated.com/en/products/digital/real-time-clocks/DS1307.html
…