les, sejam as mais sofisticadas, pra nós são todas importantes).
Alguns comentários sobre meu último post, onde descrevi o problema que vc estava confrontando:
1) mencionei que o GPIO2 estando em "0", como acabava ocorrendo no seu design durante o BOOT do ESP, força o "Modo "UART" ser iniciado pelo ESP (o modo de gravação do código, que todo mundo usa). Na verdade para entrar neste modo, a combinação dos GPIOs é outra, conforme pode ser vista no meu primeiro post (a tal "Tabela 3"). Então o que faz o ESP "travar" quando o GPIO2 está em "0" durante o BOOT ? a resposta pra isso está na tabela a seguir:
Como se pode observar, para o ESP01, quando o GPIO2 está em "0" durante o BOOT, resulta em uma combinação que não é considerada válida. Obviamente, que algo deve ocorrer nessa situação, mas não é divulgado pelo Fabricante, pois provavelmente é reservado para situações de testes na Linha de Produção da Fábrica. Claro que se você gastar horas e horas analisando o código nativo residente do ESP8266, poderá descobrir, mas acho que não vale a pena né?
Também, note que para o ESP01, apenas as 4 primeiras linhas da Tabela são aplicáveis, pois esta placa tem o GPIO15 do ESP8266 ligado a 0V (GND).
E a Tabela pode ser usada para o também popular ESP12, e como este tem o GPIO15 "livre", então todas as combinações se aplicam a essa placa.
Essa Tabela e outras informações significativas, podem ser encontradas neste link: ESP8266 Arduino Core
2) reforço meu conselho de usar 5V para alimentar o Relé, pois se você olhar o datasheet que está no site do Robocore (é fabricado pela Metaltex), vai ver que a tensão mínima da Bobina que é garantido acionar os contatos, é de 3,5V. Se vc alimentar a Bobina com 3,3V, eventualmente um ou outro Relé do mesmo modelo, irá falhar no acionamento, pois você estaria no limiar da tensão mínima de acionamento (na verdade já abaixo desse limiar). Também se acionado com 3,3V, uma pequena pancada no Relé poderá abrir os contatos (e talvez não feche novamente), pois a força do campo magnético criado pela corrente na Bobina (e que aciona os contatos) não será tão forte como em 5V. Além disso, 5V é a tensão nominal desse modelo de Relé.
3) Sua plaquinha Adaptadora para o ESP01 (a da Robocore), possui um regulador LDO na mesma. Isto permite você alimentar o ESP01 seguramente por ela, pois a saída desse LDO é de 3,3V. Outro ponto: o LDO exige uma tensão mínima de entrada maior que a tensão de saída (os 3,3V). Então a plaquinha adaptadora não deve ser alimentada com exatos 3,3V (caso vc a alimente com essa tensão, o LDO não "terá força" para suprir a necessidade de corrente do ESP01, e hora ou outra este poderá falhar).
Finalizando, alguns comentários sobre o código:
1) procure usar a técnica que mostrei, usando os defines para os números dos pinos, e usando os nomes funcionais para os pinos no restante do código (como por exemplo o "pino_Rele" e o "pino_Pisca"), isso certamente deixará seu código mais claro e fácil de trabalhar.
2) Sobre as sentenças lógicas para as decisões de acionamento do Relé, a partir da Hora atual, e dos valores "Ativa" e "Desativa", veja as figuras que preparei a seguir:
e
Bem estas duas últimas figuras, me poupam palavras (ufa!!!) para descrever.
Pessoal, há alguns meses atrás, levantei os esquemáticos do ESP01 e do ESP12, o mais confiável que pude, a partir de diversas referências (em sites e do próprio fabricante), e inclusive medindo alguns pontos nas próprias placas.
Para o ESP01, encontrei duas versões bem solidificadas no mercado, que chamei de "revisão 1" e "revisão 2". Para o ESP12, desenhei apenas uma revisão. Todas os três esquemáticos estou disponibilizando no anexo no final do post.
Mas pra "enfeitar o pavão", seguem os prints para a "rev 2" do ESP01, e para o ESP12:
Luiz, caso tenha algo que possamos colaborar, estaremos à disposição.
Abraços.
Elcids
…
Adicionado por Elcids Chagas ao 20:54 em 22 maio 2018
rmware que estiver no mega possa enviar comandos AT de configuração para o ESP.
Para que o ESP receba os dados obtidos pela serial conectada ao Mega e envie para a internet será necessário vc desenvolver um protocolo de comunicação que atue entre Mega e o ESP, o hardware aparentemente esta correto.
Neste protocolo bastante básico estarão informações quanto a velocidade de transferência e logica como numero de bytes e formato, binário ou ASCII.
O fato de você conseguir transferir comandos AT é um bom sinal.
Acredito que o problema esteja na atualização das variáveis "Vida" "de" "silicio".
Elas deverão conter os dados obtidos nas entradas AD do mega e atualizadas de tempo em tempo, portanto as variáveis manipuladas pelo MEGA e ESP devem ser igualadas e devem estar no mesmo formato ASCII.
O ESP01 parece ser a versão mais limitada da série, tanto que nem o conversor AD esta facilmente disponível.
Não sei qual a necessidade do mega no seu projeto, mas talvez uma versão mais avançada do ESP resolva todo o seu problema sem a utilização do Arduino Mega ou mesmo se quiser usar o arduino, a utilização de um Arduino já com o módulo de IOT incluso como o Arduino Yun pode ser uma opção mais efetiva.
Fico feliz em saber que conseguiu a conexão com a internet, existem outras opções como o Temboo , Blynk e Thinkspeak da MATLAB. Temboo e Blink geram até o código, ThikgSpeak faz até análise dos dados.
Abraços
…
valores negativos ex: servo.write(-180)... (-90)... (90)... (180) e ele apenas gira de 0 a 90º. Não sei o que posso estar fazendo errado, para teste já troquei a biblioteca por uma versão mais velha e o resultado ainda é o mesmo. O código de teste peguei na internet, ja vi vários códigos mas todos são iguais, inclusive nos vídeos é visível que o servo gira 180º...
Tenho dois servos, um SG90 e um SG5010. Ambos giram somente 90º. Estou usando um ESP8266 01S, uso um conversor de nível lógico (pois o servo trabalha em 5v).
Testei com valores negativos pois no datasheet diz que ele é 180º (90 em cada direção). Mas sem sucesso.
O código de teste está disponível aqui: https://pastebin.com/S3bLHDPW
Alguém tem alguma ideia do que pode estar acontecendo? :/
EDIT: Tenho um arduino pro micro aqui comigo, testei o mesmo código no arduino pro micro e funciona direitinho, gira os 180º. Só no ESP não gira, alguém sabe como corrigir? O que devo fazer? Gostaria de usar o ESP pois queria utilizar NTP para conseguir usar hora e data sem ter um modulo RTC.
EDIT2: No ESP32 funciona normalmente também, mas utilizando a biblioteca ESP32Servo.h; Então de qualquer forma, vou usar um ESP32 embora o ESP01 é bem mais compacto e se alguém tiver uma sugestão, posta ai. Obrigado a todos!…
Adicionado por Mateus Diel ao 11:29 em 27 dezembro 2021
falto obter, serei capaz de concluir, ainda que demande um pouco mais de tempo. Tendo isso em vista, gostaria de pedir a orientação do grupo para uma dificuldade que estou tendo.
Gostaria de desenvolver uma comunicação de voz entre pessoas através de, necessariamente, uma rede wifi doméstica e SEM utilizar Smartphone. Para isso, penso em utilizar 2 esp32 (ou 1 esp32 e 1 esp01), conectados a microfone e fones de ouvido e uma bateria, para ser possível a mobilidade.
Para o microfone
temos diversos módulos (ex MAX9814) e sensores (ex KY-038). Vi ainda que, aparentemente, qualquer microfone pode ser conectado diretamente a um arduino ou esp,, emitindo assim um sinal analógico de áudio
Para reproduzir o áudio
Sei que existem alguns módulos para utilizar em p2, como este (que na verdade é um "adaptador"), vi alguns decodificadores como este, Logo, imagino que não exista problema nesta etapa.
IMAGINO, que a emissão/recepção do sinal analógico, da entrada para a saida, no próprio controlador (arduino/esp), também seja algo fácil. (mic -> esp32/esp01 -> fone)
Para transferir pela Wifi
Conectar arduino, esp32, esp8266-01 a uma rede doméstica, é muito fácil, mas... e abrir um canal de voz entre estes dois equipamentos? Alguém sabe como eu deveria proceder? O mais próximo que achei foi a construção da comunicação entre um esp32 e um computador, mas, ainda assim, não consegui achar o resultado final.
Ficaria muito contente se alguém pudesse ao menos me da um "norte", pois não estou conseguindo achar respostas.…
Adicionado por tiago merces ao 15:34 em 6 fevereiro 2020
sempre anexar o código aqui, se possível).
Parece que vc não está detectando quando a String é de fato recebida por completo, o que é sinalizado pelo caractere '\n' no final da string, se a mesma estiver sendo enviada para o ESP01 através do Terminal do Arduino e este estiver configurado (o que é muito provável) para transmitir o '\n' no final quando se clica no botão "enviar".
Ajustei seu código para sinalizar a recepção completa apenas após o '\n'.
Ah, e configure para 8N1 (onde "1" é o total de stop bits).
Segue o código ajustado, para sua verificação/teste: String_na_Serial_Sofware_2_01.zip
Espero ter ajudado,
Abrçs,
Elcids…
Adicionado por Elcids Chagas ao 4:21 em 28 agosto 2019
clique na figura para "zoom")
Na primeira revisão, o Relé era acionado por "HIGH" no Arduino, e o nível lógico do sinal "GPIO0" controla diretamente o MOSFET (Canal N) que aciona a bobina do Relé. Isto pode ser conferido no esquema elétrico dessa revisão, conforme mostro na figura a seguir:
(clique na figura para "zoom")
Já o outro módulo ao qual o sr se refere, é provavelmente uma revisão "4". Nesta revisão, algumas coisas foram alteradas. Uma delas, é que o Relé tem bobina para 3.3V (isso aumenta a corrente necessária para acionar o Relé, embora a Potência consumida para obter-se este acionamento, ainda seja a mesma da revisão 1). Mas isto não tem efeito no Sistema, uma vez que já existe na plaquinha do módulo um Regulador de Tensão para 3.3V.
Outra coisa, é que nesta revisão "4", também foram acrescentados Resistores de "pullup" para os sinais "GPIO0" e "CH_PD". Também foi acrescentado um circuito clássico "PUC" ("Power Up Clear") para o sinal "RST", assim garantindo que o ESP01 seja resetado quando o Sistema é energizado.
E finalmente, foi acrescentado um "Opto-acoplador" entre o Gate do MOSFET e o sinal "GPIO0" do ESP01. Devido à forma como o LED interno deste Opto-acoplador está conectado no circuito deste módulo, o Relé deve ser acionado por "LOW" no sinal "GPIO0".
Estas características podem ser observadas no esquemático da revisão "4", conforme mostro na figura a seguir:
(clique na figura para "zoom")
Para facilitar, aconselho que use logo no início do seu código, um "#define" para especificar o nível lógico ("HIGH" ou "LOW") que deve ser aplicado ao "GPIO0" para ligar o Relé, o que terá efeito em todo seu programa, e facilitará manter duas versões (para um caso ou outro). Na figura a seguir mostro um exemplo disso, neste caso para a revisão "4", onde o Relé deve ser acionado por "LOW":
(clique na figura para "zoom")
E para configurar o pino, e fazer o controle ON/OFF do Relé, pode ser como mostro na figura a seguir:
(clique na figura para "zoom")
E caso queira conhecer algumas "artimanhas" referentes ao acionamento desses módulos de Relés mais "genéricos" (mas que também se aplicam ao módulo "ESP-01S"), veja um tópico recente aqui no LDG onde descrevo algumas características relacionadas.
O tópico é este: "Módulo Relé 8 canais sem JD-VCC"
Espero ter ajudado.
Abrçs,
Elcids…
Adicionado por Elcids Chagas ao 11:27 em 27 abril 2020
sas duas referências:
- https://www.youtube.com/watch?v=O3lhQozI27I
- https://www.youtube.com/watch?v=DTkzoDW1fjg&t=293s
Depois disso, adaptei da seguinte forma:
o 555 da esquerda, é responsável por produzir "corte" no som, e produzir uma onda triangular (para conectar ao pino 5 do 555 "B"). o Trimpot faz o ajuste fino dessa frequência.
o 555 da direita (B), é responsável pela emissão do som. o Trimpot é responsável por ajuste na frequência base da saída do som para os falantes.
Na teoria, funcionou muito bem. Na prática, nem tanto.
1- Eu não consegui um capacitor de 10nf para o pino 5 do 555 da esquerda
2- com vários capacitores entre VCC/GND, a variação da tensão para modulação, era muito melhor.
3- Existiu um problema na curva do som. Isto é: Ele deveria ir do nivel mais baixo, ao mais alto, e depois voltar para o mais baixo, mas, na prática, ele ficou "assim": 1..2..3.4..5..6..7..8..7..6..7..8..9..10..9..8..7..6..5..4..3...2..1......
4- minha opinião pode está conturbada devido as longas e longas horas ouvindo frequencias de 900~3000hz, o que me deixou bem irritado, mas eu tive a sensação que, após o trimpot, o som ficou mais sujo.
A grande vantagem em usar a dupla de 555+componentes, está no custo total. Tanto os integrados quanto os componentes, são muito baratos. Eu imagino um custo total em torno de 3 reais, no máximo.
A grande desvantagem, é que não será tão simples montar tudo em uma plaquinha universal (aquela com furinhos). Visualmente, seria um caos. Então seria necessário confeccionar uma PCB. Mas levando em consideração que:
- Não tem fabricante em minha região
- o frete da JLCPCB não é dos mais simpáticos
- O valor da placa de fenolite (china) + percloreto de ferro (ok.. o percloreto dura uma eternidade)
Eu estimo que o valor de cada unidade, provavelmente, será superior a 3 reais.
E ai entra a grande questão. Um esp01 custa até 8 reais. Adiciona uma placa furadinha apenas com os transistores, fim.
Eu teria um aumento de 2~4 reais no custo total, mas provavelmente a carga de trabalho será bem menor.
RV: Pesquisei preços do Atiny, mas estavam com valor superior a 15 reais.
Esse é um projeto comercial (sim, excessivamente simples, mas é comercial). Estou me desdobrando, pois em 6 meses, eu precisarei comprar muitas fraudas. …
Adicionado por tiago merces ao 17:14 em 3 janeiro 2024
nquanto os dígitos e letras após o "1117" indicam a tensão de saída e o encapsulamento. Aqui está um datasheet de um deles: AMS117 - datasheet
Mas como eu disse, há diversos fabricantes (procure no Google os datasheets).
Sobre a tensão de saída, há diversos com tensão fixa (1.5V, 1.8V, 3.3V, etc), e também com tensão ajustável (ou "setável"). No seu caso, estaríamos falando do que tem tensão de saída fixada em 3.3 Volts.
Para alimentar apenas o ESP8266 (junto com o DHT), com uma tensão de entrada de 5V, vc pode usar o "1117" sem precisar de dissipador de calor adicional.
Sobre os capacitores, siga estritamente o recomendado pelo datasheet.
Mas respondendo sua pergunta: sim, vc pode usar o capacitor de 100uF Eletrolítico de Alumínio convencional, porém obrigatoriamente deverá colocar em paralelo com este, ou um capacitor de Tântalo (entre 10uF e 22uF) ou do tipo Cerâmico (mesmo faixa do Tântalo). Só o "Eletrolítico" não pode.
Apenas esclarecendo: o pessoal não fala "alumínio", mas estes eletrolíticos convencionais são do tipo de alumínio. Ocorre que prefiro dizer "Eletrolítico de Alumínio" porque na verdade, o capacitor de Tântalo também é um Eletrolítico, porém completamente diferente na fabricação e características elétricas. Então dizer apenas "Eletrolítico", não é muito adequado pra quem sabe sobre isso.
Ainda sobre a alimentação, veja que há diversas plaquinhas muito pequenas já prontas disponíveis no mercado (lá no famoso "ML" por exemplo há aos montes), que já possuem o "1117" (ou similar). A vantagem é que elas já vem com capacitores, e embora não tenha marcado qual o valor desses, em geral são valores adequados. Mas claro que vc pode também acrescentar seu de 100uF "por fora".
E se vc montar a sua própria placa e tiver que colocar os capacitores, observe que eles devem ficar muito próximos ao "1117". Num datasheet "bom", vc encontrará observações sobre isso. Já seu eletrolítico de 100uF, não precisa estar tão próximo ao "1117", e na verdade é preferível que ele esteja próximo do sujeito que o "1117" vai alimentar (no caso o ESP8266).
Como vc disse que sua taxa de dados será muito baixa, a cada 5 minutos, então me parece que usar o modo "Sleep" do ESP8266 parece totalmente adequado para sua aplicação.
Mas veja: usar o "Sleep" não é apenas para a parte de envio via WiFi. Tenha em mente que se vc estiver medindo grandezas cuja variação é muito lenta (temperatura, humidade, etc), então a própria aquisição dessas grandezas pode ser feita em uma taxa também baixa. Veja: não há sentido em ficar aquisitando a temperatura a cada segundo e "guardando" localmente (em um vetor na memória), se ela mal se alterar neste tempo, e se vc apenas for transmitir a cada 5 minutos. Digo isso, porque uma taxa de aquisição de dados mais alta, vai tirar o ESP8266 do "Sleep" na mesma taxa, e aí a economia de energia com o "Sleep" será impactada severamente.
Há diversos sites aí afora que mostram a tratativa correta de usar o "Sleep" do ESP8266. Então tenha a certeza de que vc está usando da forma mais eficiente. Pesquise no Google "ESP8266 Sleep". Aqui vai um link que acho que vc precisa ver: SLEEP MODES - ESP8266
Nota: para a plaquinha ESP01, há uma limitação para usar o "Sleep", pois um pino essencial não está tão facilmente disponível. No link acima que passei, isto é descrito (bem no início do artigo), inclusive uma "gambi" para contornar essa limitação. Para as demais plaquinhas que tem o ESP8266, esta limitação não existe, já que praticamente todas disponibilizam o tal pino facilmente.
Sobre o ar quente "subir", o que eu quis induzir, é que vc pode estudar a inserção de chanfros de saída do ar no seu "case" (caso isto seja possível, é claro), e orientar o posicionamento da fixação desse "case" de forma a favorecer a saída direta do ar quente, sem que em seu caminho ascendente, este ar passe pelo sensor DHT.
Abrçs,
Elcids
…
Adicionado por Elcids Chagas ao 19:36 em 15 março 2019