ESP8266 com comunicação RS485 - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-28T21:27:03Zhttps://labdegaragem.com/forum/topics/esp8266-com-comunica-o-rs485?commentId=6223006%3AComment%3A694782&feed=yes&xn_auth=nobom dia, eu poderia colocar u…tag:labdegaragem.com,2023-12-14:6223006:Comment:8959712023-12-14T18:14:01.007ZVitor S Costahttps://labdegaragem.com/profile/Vitor315
<p>bom dia, eu poderia colocar um esp32 nos pinos RX e TX<br/>Tenho essa duvida porque o esp32 é 3,3V e o ci que vc usou e de 5V entao provavel emnte ele ira jogar 5V no esp32, entao acredito que nao de... oque vc me sugere para fazer uma comunicação com esp32 que e 3,3V?</p>
<p></p>
<p>bom dia, eu poderia colocar um esp32 nos pinos RX e TX<br/>Tenho essa duvida porque o esp32 é 3,3V e o ci que vc usou e de 5V entao provavel emnte ele ira jogar 5V no esp32, entao acredito que nao de... oque vc me sugere para fazer uma comunicação com esp32 que e 3,3V?</p>
<p></p> Não funcionou também...
Tente…tag:labdegaragem.com,2018-12-07:6223006:Comment:6949292018-12-07T17:59:15.255ZWilliam Bhttps://labdegaragem.com/profile/WilliamBenatti
<p>Não funcionou também...</p>
<p>Tentei isso também sem sucesso:</p>
<p> digitalWrite(PIN_RS485, HIGH);<br/> for (int i = 0; i < 9; i++)<br/> Serial.write((unsigned char)i);<br/> digitalWrite(PIN_RS485, LOW);</p>
<p></p>
<p></p>
<p>Não funcionou também...</p>
<p>Tentei isso também sem sucesso:</p>
<p> digitalWrite(PIN_RS485, HIGH);<br/> for (int i = 0; i < 9; i++)<br/> Serial.write((unsigned char)i);<br/> digitalWrite(PIN_RS485, LOW);</p>
<p></p>
<p></p> Boa tarde WB,
ok, entendi a n…tag:labdegaragem.com,2018-12-06:6223006:Comment:6948532018-12-06T20:08:16.622Zmineirin RVhttps://labdegaragem.com/profile/RuiViana
<p>Boa tarde WB,</p>
<p>ok, entendi a necessidade do seu projeto.</p>
<p>Já testou assim:</p>
<p>voce envia " <span>(unsigned int)MB_msg_length) </span>" bytes ;</p>
<p></p>
<p> <span class="hljs-keyword">int</span> <span>bytesSent = 0; // bytesSent recebe o valor de bytes enviados pelo Serial.write.</span></p>
<p><span> </span></p>
<p><span> while(bytesSent < (unsigned int)MB_msg_length))</span></p>
<p> {</p>
<p> <span>bytesSent = Serial.write((const uint8_t…</span></p>
<p>Boa tarde WB,</p>
<p>ok, entendi a necessidade do seu projeto.</p>
<p>Já testou assim:</p>
<p>voce envia " <span>(unsigned int)MB_msg_length) </span>" bytes ;</p>
<p></p>
<p> <span class="hljs-keyword">int</span> <span>bytesSent = 0; // bytesSent recebe o valor de bytes enviados pelo Serial.write.</span></p>
<p><span> </span></p>
<p><span> while(bytesSent < (unsigned int)MB_msg_length))</span></p>
<p> {</p>
<p> <span>bytesSent = Serial.write((const uint8_t *)MBBufferArray, (unsigned int)MB_msg_length);</span></p>
<p> }</p>
<p>RV</p> Não posso usar "Serial.print"…tag:labdegaragem.com,2018-12-06:6223006:Comment:6946992018-12-06T19:09:10.730ZWilliam Bhttps://labdegaragem.com/profile/WilliamBenatti
<p>Não posso usar "Serial.print" em meu projeto real, pois trabalho com um buffer de bytes (não baseado em string). Além disso, o "print" não permite informar a quantidade de bytes do buffer que preciso enviar pela serial. Então ainda que funcionasse para strings (não testei), não funcionaria para mim pelo outro motivo que citei. Obrigado novamente.</p>
<p>Não posso usar "Serial.print" em meu projeto real, pois trabalho com um buffer de bytes (não baseado em string). Além disso, o "print" não permite informar a quantidade de bytes do buffer que preciso enviar pela serial. Então ainda que funcionasse para strings (não testei), não funcionaria para mim pelo outro motivo que citei. Obrigado novamente.</p> WB,
faça um teste com Serial.…tag:labdegaragem.com,2018-12-06:6223006:Comment:6947842018-12-06T16:19:08.513Zmineirin RVhttps://labdegaragem.com/profile/RuiViana
<p>WB,</p>
<p>faça um teste com Serial.print ao invés de Serial.write ou Serial.printf.</p>
<p>E depois conta pra gente.</p>
<p>RV</p>
<p>WB,</p>
<p>faça um teste com Serial.print ao invés de Serial.write ou Serial.printf.</p>
<p>E depois conta pra gente.</p>
<p>RV</p> Vou testar e posto aqui o res…tag:labdegaragem.com,2018-12-06:6223006:Comment:6946982018-12-06T16:15:47.372ZWilliam Bhttps://labdegaragem.com/profile/WilliamBenatti
<p>Vou testar e posto aqui o resultado. Obrigado.</p>
<p>Vou testar e posto aqui o resultado. Obrigado.</p> Por que esta mudando o estado…tag:labdegaragem.com,2018-12-06:6223006:Comment:6947832018-12-06T14:28:00.021ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Por que esta mudando o estado do pino TXD2 ( GPIO 15) para HIGH ? Para ativar o chip RS-485. </p>
<p>Sugiro que use um outro pino, para efeito de teste. </p>
<p></p>
<p><span>#define PIN_RS485 15</span></p>
<p><span> digitalWrite(PIN_RS485, HIGH);</span></p>
<p><span> e depois </span></p>
<p><span>digitalWrite(PIN_RS485, LOW);…</span></p>
<p></p>
<p></p>
<p>Por que esta mudando o estado do pino TXD2 ( GPIO 15) para HIGH ? Para ativar o chip RS-485. </p>
<p>Sugiro que use um outro pino, para efeito de teste. </p>
<p></p>
<p><span>#define PIN_RS485 15</span></p>
<p><span> digitalWrite(PIN_RS485, HIGH);</span></p>
<p><span> e depois </span></p>
<p><span>digitalWrite(PIN_RS485, LOW);</span></p>
<p></p>
<p><a rel="nofollow noopener" href="http://blog.eletrogate.com/nodemcu-esp12-introducao-1/" target="_blank">http://blog.eletrogate.com/nodemcu-esp12-introducao-1/</a></p> Opa. Isso não é um problema e…tag:labdegaragem.com,2018-12-06:6223006:Comment:6947822018-12-06T14:04:13.540ZJucelei Freitashttps://labdegaragem.com/profile/juceleiFreita
<p>Opa. Isso não é um problema em si, e sim uma condição de operação da library que você usa. Nos meus projetos uso o timer para desabilitar esse pino, assim que mando enviar o ultimo byte, carrego o hwtimer com tempo de overflow associado ao tempo de transmissão. Posso alterar o baud de 2400 a 115200 que são valores usuais e funciona sempre perfeitamente. </p>
<p></p>
<p>Sds.</p>
<p>Opa. Isso não é um problema em si, e sim uma condição de operação da library que você usa. Nos meus projetos uso o timer para desabilitar esse pino, assim que mando enviar o ultimo byte, carrego o hwtimer com tempo de overflow associado ao tempo de transmissão. Posso alterar o baud de 2400 a 115200 que são valores usuais e funciona sempre perfeitamente. </p>
<p></p>
<p>Sds.</p> Não alterou o comportamento.…tag:labdegaragem.com,2018-12-06:6223006:Comment:6949132018-12-06T13:59:29.882ZWilliam Bhttps://labdegaragem.com/profile/WilliamBenatti
<p>Não alterou o comportamento. A necessidade do delay ainda persiste. Valeu!</p>
<p>Não alterou o comportamento. A necessidade do delay ainda persiste. Valeu!</p> Só um detalhe a mais que obse…tag:labdegaragem.com,2018-12-06:6223006:Comment:6947802018-12-06T13:54:45.782ZWilliam Bhttps://labdegaragem.com/profile/WilliamBenatti
<p>Só um detalhe a mais que observei agora em meu código, mas eu acredito que não deva fazer diferença: Em lugar de escrever na serial com "Serial.printf" eu estou escrevendo com "Serial.write". Não deveria influenciar, correto?</p>
<p></p>
<p>Meu código exato está assim:</p>
<p>Serial.write((const uint8_t *)MBBufferArray, (unsigned int)MB_msg_length);</p>
<p></p>
<p>As variáveis são:</p>
<p>unsigned char MBBufferArray[100];</p>
<p>int MB_msg_length;</p>
<p>Só um detalhe a mais que observei agora em meu código, mas eu acredito que não deva fazer diferença: Em lugar de escrever na serial com "Serial.printf" eu estou escrevendo com "Serial.write". Não deveria influenciar, correto?</p>
<p></p>
<p>Meu código exato está assim:</p>
<p>Serial.write((const uint8_t *)MBBufferArray, (unsigned int)MB_msg_length);</p>
<p></p>
<p>As variáveis são:</p>
<p>unsigned char MBBufferArray[100];</p>
<p>int MB_msg_length;</p>