ESP32 x PCF8574 - problema de leitura I2C - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-28T22:53:03Zhttps://labdegaragem.com/forum/topics/esp32-x-pcf8574-problema-de-leitura-i2c?feed=yes&xn_auth=noIsso mesmo Elcids,
No video…tag:labdegaragem.com,2019-07-02:6223006:Comment:7124372019-07-02T20:45:21.159ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Isso mesmo Elcids, </p>
<p>No video que eu postei, o ESP32 DVM envia a leitura de tensão para o Tablet Android via WIFI. Usando a plataforma Blynk. </p>
<p>Além disso, desenvolvi também o envio das leituras através do Bluetooth, usando a plataforma <a href="http://app.thunkable.com/" rel="nofollow noopener" target="_blank">http://app.thunkable.com</a></p>
<p></p>
<p>Esta tudo no projeto, mas em inglês. Pretendo postar assim que possível tudo no meu blog. </p>
<p><strong>Com esse projeto eu…</strong></p>
<p>Isso mesmo Elcids, </p>
<p>No video que eu postei, o ESP32 DVM envia a leitura de tensão para o Tablet Android via WIFI. Usando a plataforma Blynk. </p>
<p>Além disso, desenvolvi também o envio das leituras através do Bluetooth, usando a plataforma <a rel="nofollow noopener" href="http://app.thunkable.com/" target="_blank">http://app.thunkable.com</a></p>
<p></p>
<p>Esta tudo no projeto, mas em inglês. Pretendo postar assim que possível tudo no meu blog. </p>
<p><strong>Com esse projeto eu ganhei menção honrosa no concurso da Elektor em 2018! </strong></p>
<p></p>
<p>Na época eu não havia entendido bem como postar o projeto. E ficou muito confuso para acompanhar todos Posts do projeto. O projeto tem todos os detalhes. </p> O mais legal de um projeto de…tag:labdegaragem.com,2019-07-02:6223006:Comment:7125272019-07-02T20:38:43.082ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>O mais legal de um projeto desses é a aplicação e uso ! </p>
<p></p>
<p>O Indiano que montou o meu projeto e agora esta funcionando, tem uma fazenda. Ele quer medir a resistividade da terra para encontrar água ! Imagino que ele deve ter essa fazenda em local bem seco, talvez árido.E agora ele poderá prosseguir nas pesquisas dele. Muito legal e gratificante !</p>
<p></p>
<p></p>
<p><span>Good day sir, I would like to measure earth resistivity to geophysical exploration for ground water…</span></p>
<p>O mais legal de um projeto desses é a aplicação e uso ! </p>
<p></p>
<p>O Indiano que montou o meu projeto e agora esta funcionando, tem uma fazenda. Ele quer medir a resistividade da terra para encontrar água ! Imagino que ele deve ter essa fazenda em local bem seco, talvez árido.E agora ele poderá prosseguir nas pesquisas dele. Muito legal e gratificante !</p>
<p></p>
<p></p>
<p><span>Good day sir, I would like to measure earth resistivity to geophysical exploration for ground water detection in my farm, Basically i am farmer and Geologist working in Schlumberger middle east Oil field exploration. so i need to measure voltage and current to get resistivity R=V/I. i tried many other ADC like ADS1115, MCP3424 etc, not getting stable and noisy. so like to measure voltage like multimeter IC to PC. I found your post very usefull and confident to proceed my work. .</span></p> Elcids,
Em qual cidade mora?…tag:labdegaragem.com,2019-07-02:6223006:Comment:7123292019-07-02T20:34:18.751ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Elcids, </p>
<p>Em qual cidade mora? Aqui em BH eu encontrei mais barato do que no ML. </p>
<p></p>
<p>Quando eu fiz os testes, verifiquei os pulsos com o osciloscópio - o clock de 480 e 100 Khz OK. E os pulsos de interrupção gerados pelo TLC7135 - também OK. </p>
<p></p>
<p>O resto fica aos cuidados do ESP32. Não verifiquei a interface I2, já que não apresentou a leitura esperada. Se quiser posso verificar. No meu PC estou usando o Core 1.0.2</p>
<p></p>
<p></p>
<p>Elcids, </p>
<p>Em qual cidade mora? Aqui em BH eu encontrei mais barato do que no ML. </p>
<p></p>
<p>Quando eu fiz os testes, verifiquei os pulsos com o osciloscópio - o clock de 480 e 100 Khz OK. E os pulsos de interrupção gerados pelo TLC7135 - também OK. </p>
<p></p>
<p>O resto fica aos cuidados do ESP32. Não verifiquei a interface I2, já que não apresentou a leitura esperada. Se quiser posso verificar. No meu PC estou usando o Core 1.0.2</p>
<p></p>
<p></p> Oi Murta, irei pedir um TCL71…tag:labdegaragem.com,2019-07-02:6223006:Comment:7125232019-07-02T20:12:35.341ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">Oi Murta, irei pedir um <strong>TCL7135</strong> lá no <strong>ML</strong>.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Sobre o código que postei hoje, peço que verifique com seu <strong>Analisador Lógico</strong>, se o <strong>Strobe</strong> está sendo gerado pelo <strong>TCL7135</strong>, ou seja se ele está realmente gerando os pulsos, pois caso não esteja, não vai cadenciar o funcionamento do código.…</span></p>
<p></p>
<p><span style="font-size: 12pt;">Oi Murta, irei pedir um <strong>TCL7135</strong> lá no <strong>ML</strong>.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Sobre o código que postei hoje, peço que verifique com seu <strong>Analisador Lógico</strong>, se o <strong>Strobe</strong> está sendo gerado pelo <strong>TCL7135</strong>, ou seja se ele está realmente gerando os pulsos, pois caso não esteja, não vai cadenciar o funcionamento do código.</span></p>
<p><span style="font-size: 12pt;"> No teste, para não comprometer a temporização, não acrescente nenhuma outra funcionalidade (como WiFi ou Bluetooth). Isto seria feito posteriormente, após constatado o funcionamento.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Ah sim: realmente as justificativas do "<em><strong>StickBreaker</strong></em>" deixam um pouco a desejar. Mas eu já tenho a resposta para o seu Sistema original não estar mais funcionando na <strong>1.0.2</strong>, pois como eu havia dito inicialmente, eu havia feito uma análise detalhada de toda a LIB <strong>Wire</strong> na versão <strong>AVR</strong> (a qual tem algumas limitações preocupantes). Logo que possível, postarei aqui detalhadamente sobre isso.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> esqueci de mencionar:
…tag:labdegaragem.com,2019-07-02:6223006:Comment:7124312019-07-02T19:51:16.943ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">esqueci de mencionar:</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Posteriormente, acrescentarei uma <em><strong>Máquina de Estados</strong></em> para processar os valores convertidos pelo <strong>DVM</strong>, e enviá-la pelo <strong>Bluetooth</strong> do <strong>ESP32</strong>, já que no seu vídeo original vc estava visualizando no <strong>smartphone</strong> o valor convertido.</span></p>
<p><span style="font-size: 12pt;"> Isto deve ser…</span></p>
<p><span style="font-size: 12pt;">esqueci de mencionar:</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Posteriormente, acrescentarei uma <em><strong>Máquina de Estados</strong></em> para processar os valores convertidos pelo <strong>DVM</strong>, e enviá-la pelo <strong>Bluetooth</strong> do <strong>ESP32</strong>, já que no seu vídeo original vc estava visualizando no <strong>smartphone</strong> o valor convertido.</span></p>
<p><span style="font-size: 12pt;"> Isto deve ser feito com uma <strong>Máquina de Estados</strong>, a fim de preservar de forma confiável a temporização existente no Sistema, sem prejudicar o processo de conversão.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Elcids</span></p>
<p></p> Grande Elcids, se gostou do p…tag:labdegaragem.com,2019-07-02:6223006:Comment:7123272019-07-02T19:48:24.390ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Grande Elcids, se gostou do projeto recomendo que monte ele.</p>
<p>Esse projeto pode ser útil para inúmeras aplicações ! </p>
<p>Os testes que eu fiz do seu programa foi com o ESP32 Voltmeter conectado.</p>
<p>Mas todos sem sucesso. </p>
<p></p>
<p>Veja o que o Indiano fez ! Ele que reclamou que o meu projeto não estava funcionando. E agora ele conseguiu fazer funcionar com o Core 1.0.0 ! …</p>
<p></p>
<p></p>
<p>Grande Elcids, se gostou do projeto recomendo que monte ele.</p>
<p>Esse projeto pode ser útil para inúmeras aplicações ! </p>
<p>Os testes que eu fiz do seu programa foi com o ESP32 Voltmeter conectado.</p>
<p>Mas todos sem sucesso. </p>
<p></p>
<p>Veja o que o Indiano fez ! Ele que reclamou que o meu projeto não estava funcionando. E agora ele conseguiu fazer funcionar com o Core 1.0.0 ! </p>
<p></p>
<p><a rel="nofollow" href="https://www.elektormagazine.com/labs/esp32-digital-voltmeter#/comments/58040">https://www.elektormagazine.com/labs/esp32-digital-voltmeter#/comme...</a></p>
<p></p>
<div class="Comment__header"><strong><span class="Comment__nickname">PADAKATHU R RANGASAMY</span> <span class="Comment__date">July 2, 2019 | 11:32</span></strong></div>
<div class="Comment__header"></div>
<div class="Comment__text">Thank you so much Gustavo and Chuck (StickBreaker) for discuss and find solution. i used ESP32 ARDUINO CORE 1.0.1 and now using 1.0.0. Working GOOD now, reading voltages from ICL7135. checked all three board by follow up the discussed code.<br/>Below attached serial monitor working one photos.</div> olá Murta.
O que fiz,…tag:labdegaragem.com,2019-07-02:6223006:Comment:7122612019-07-02T19:42:20.071ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Murta.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> O que fiz, não foi uma simulação (que ocorre apenas em SW). Foi uma <span style="text-decoration: underline;"><em><strong>emulação</strong></em></span> (HW e SW).</span></p>
<p><span style="font-size: 12pt;"> Para tal, programei o <strong>Timer0 </strong> do <strong>ESP32</strong> para gerar a temporização,<span> e com isso ir cadenciando sequencialmente os sinais gerados pelo…</span></span></p>
<p><span style="font-size: 12pt;">olá Murta.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> O que fiz, não foi uma simulação (que ocorre apenas em SW). Foi uma <span style="text-decoration: underline;"><em><strong>emulação</strong></em></span> (HW e SW).</span></p>
<p><span style="font-size: 12pt;"> Para tal, programei o <strong>Timer0 </strong> do <strong>ESP32</strong> para gerar a temporização,<span> e com isso ir cadenciando sequencialmente os sinais gerados pelo <strong>TCL7135</strong>. O <strong>Timer0</strong>, gera <strong>Interrupções</strong> (IRQs) na mesma temporização do <strong>TCL7135</strong>. Quando uma dessas <strong>IRQs</strong> ocorre, ela gera o Sinal "<strong>Strobe</strong>" fisicamente através de um <strong>I/O</strong> do <strong>ESP32</strong> (usei o pino <strong>16</strong>), e este "<strong>Strobe</strong>" está conectado ao <strong>pino</strong> "<strong>STB</strong>" <strong>original</strong> que vc usa (o <strong>pino 4</strong>). Então isso provoca uma nova <strong>IRQ</strong> para o <strong>ESP32</strong>, exatamente a mesma do <strong>TCL7135</strong>. E na <strong>ISR</strong> desta <strong>IRQ</strong>, eu faço um <strong>IntACK</strong> (<strong>Interrupt Acknowledge</strong>), restaurando o sinal "<strong>Strobe</strong>" para o estado inativo (ou seja, "High"). </span></span><span style="font-size: 12pt;"><span>A partir desse ponto, é feito o restante do processamento normal para o <strong>TCL7135</strong>.</span></span></p>
<p><span style="font-size: 12pt;"><span> Este processo se repete <strong>5 vezes</strong>, já que existem <strong>5 pulsos</strong> de <strong>Strobe</strong>. Após isso, a própria <strong>ISR</strong> do <strong>Timer0</strong>, muda sua temporização, para emular um novo <strong>ciclo de conversão</strong> (que para o <strong>TCL7135</strong> é a cada <strong>40002</strong> ciclos de <strong>CLK</strong>).</span></span></p>
<p><span style="font-size: 12pt;"><span> Em cada <strong>ISR</strong> do <strong>Timer0</strong>, além do próprio sinal "<strong>Strobe</strong>" do <strong>TCL7135</strong>, são gerados também os demais bits, correspondentes ao <strong>B1</strong>, <strong>B2</strong>, <strong>B4</strong>, e <strong>B8</strong>, e aos sinais de status <strong>D5</strong>, <strong>POL</strong>, e <strong>OVR</strong>. Claro o <strong>D5</strong> é gerado apenas no primeiro dos 5 Strobes.</span></span></p>
<p><span style="font-size: 12pt;"><span> Assim, na emulação há <strong>8 sinais</strong> gerados no <strong>HW</strong>: 7 entram no <strong>PCF8574</strong>, e um (o Strobe) entra no "<strong>STB</strong>" original do que já existia (<strong>pino 4</strong>). Observe que não gerei o sinal "<strong>UNR</strong>" (Under Range), já que vc não o estava usando no <strong>DVM</strong>.</span></span></p>
<p></p>
<p><span style="font-size: 12pt;"><span> <span style="text-decoration: underline;"><em><strong>Um detalhe importante</strong></em></span>: o código que postei acima, não é o que tem a emulação. Ele já é o código para rodar na sua placa <strong>DVM</strong> com o "<strong>TCL7135</strong>". Se vc rodar ele em um <strong>ESP32</strong> <span style="text-decoration: underline;"><em>sem o seu circuito</em></span> do <strong>DVM</strong>, ele vai realmente dar "<strong>Timeout</strong>", pois não existirá a geração do "<strong>STB</strong>" pelo <strong>TCL7135</strong>. Peço desculpas por não eu não ter mencionado isto (devido à correria, fiz um post mais suscinto).</span></span></p>
<p><span style="font-size: 12pt;"><span> Assim o código postado é para seu Hardware do <strong>DVM</strong>. Aconselho testar primeiro com 100 kHz, e depois que estiver vendo as medições no <em><strong>Terminal do Arduino</strong></em>, vá aumentando a frequência do CLK. Os cálculos que fiz e as medições com o Osciloscópio, indicam que ele vai funcionar mesmo a 480 Khz, pois medi uma latência de menos de <strong>10us</strong> entre o Strobe e a subsequente leitura <strong>I2C</strong>. Mas mesmo assim, inicie com 100 kHz para o primeiro teste.</span></span></p>
<p></p>
<p><span style="font-size: 12pt;"><span> Ainda sobre a emulação: para permitir que outras pessoas também testem o Sistema, assim que possível irei preparar as figuras e postar as ligações externas para a placa "<em><strong>DOIT ESP32 DevKit V1</strong></em>" (e que também poderão ser usadas para outras placas <strong>ESP32</strong>), juntamente com o <em><strong>código da emulação</strong></em>. Observe que o código da emulação apenas tem a parte da <strong>emulação</strong> com o <strong>Timer0</strong>, e o restante é totalmente igual ao código que postei hoje.</span></span></p>
<p></p>
<p><span style="font-size: 12pt;"><span> Abrçs,</span></span></p>
<p></p>
<p><span style="font-size: 12pt;"><span> Elcids</span></span></p> Elcids, curiosidade.
Qual si…tag:labdegaragem.com,2019-07-02:6223006:Comment:7125122019-07-02T12:53:50.333ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Elcids, curiosidade. </p>
<p>Qual simulador esta usando? </p>
<p>Obrigado. </p>
<p>Elcids, curiosidade. </p>
<p>Qual simulador esta usando? </p>
<p>Obrigado. </p> O arquivo excedeu o limite do…tag:labdegaragem.com,2019-07-02:6223006:Comment:7122552019-07-02T12:46:00.791ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>O arquivo excedeu o limite do Forum. </p>
<p>Enviei o arquivo para o Github. Baixe o arquivo:</p>
<p><a href="https://github.com/Gustavomurta/ESP32-DVM/blob/master/ESP32_VDM7135_V3%20B.logicdata">https://github.com/Gustavomurta/ESP32-DVM/blob/master/ESP32_VDM7135_V3%20B.logicdata</a></p>
<p>O arquivo excedeu o limite do Forum. </p>
<p>Enviei o arquivo para o Github. Baixe o arquivo:</p>
<p><a href="https://github.com/Gustavomurta/ESP32-DVM/blob/master/ESP32_VDM7135_V3%20B.logicdata">https://github.com/Gustavomurta/ESP32-DVM/blob/master/ESP32_VDM7135_V3%20B.logicdata</a></p> Bom dia Elcids,
Obrigado pel…tag:labdegaragem.com,2019-07-02:6223006:Comment:7122542019-07-02T12:41:19.329ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Bom dia Elcids, </p>
<p>Obrigado pelo esforço em me ajudar ! </p>
<p></p>
<p>Com o clock gerado de 100 KHz - apareceu a mensagem = <strong>ocorreu Timeout!</strong></p>
<p>#define TLC_freq 100000 // frequencia do CLK para o TLC, em [Hz].</p>
<p></p>
<p>Testei com 480 KHz (frequencia do meu projeto). Mesma mensagem = <strong>ocorreu Timeout!</strong></p>
<p></p>
<p>Acho que vai ser praticamente impossível você simular o funcionamento do meu projeto se não souber o timing dos vários…</p>
<p>Bom dia Elcids, </p>
<p>Obrigado pelo esforço em me ajudar ! </p>
<p></p>
<p>Com o clock gerado de 100 KHz - apareceu a mensagem = <strong>ocorreu Timeout!</strong></p>
<p>#define TLC_freq 100000 // frequencia do CLK para o TLC, em [Hz].</p>
<p></p>
<p>Testei com 480 KHz (frequencia do meu projeto). Mesma mensagem = <strong>ocorreu Timeout!</strong></p>
<p></p>
<p>Acho que vai ser praticamente impossível você simular o funcionamento do meu projeto se não souber o timing dos vários pinos. </p>
<p></p>
<p>Você tem algum analisador lógico ai ? Recomendo esse aqui - <strong>Analisador Lógico 8ch Saleae</strong> (procure no ML). É barato e ótimo! </p>
<p>Mesmo se não tiver, instale esse programa do analisador Lógico :</p>
<p><a href="https://www.saleae.com/downloads/">https://www.saleae.com/downloads/</a></p>
<p></p>
<p>E abra esse arquivo do meu projeto que eu anexei.</p>
<p>ESP32_VDM7135_V3 B</p>
<p>Vai ver como o meu ESP32 DVM funcionava perfeitamente antes das alterações na Biblioteca I2C. </p>
<p></p>
<p>Grande abraço e muito obrigado. </p>
<p></p>
<p></p>
<p></p>