-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ModbusSensor.h compatible ESP8266-12E #23
Comments
Los pines esp-12E tx rx no son tolerantes 5V. La entrada RX de Esp tiene que se protegida a 3.3V. Eso quiere decir que con un pequeño divisor (o protección con zener) para RX se puede utilizar un modulo 485 estándar. |
Puerto serie... tiene 2 pero uno de ellos solo se puede usar para recibir (lo cual es practico, pues nos permite dejar el otro disponible para otras cuestiones). Otra cuestion, en lugar de esp8266 a secas, recomiendo usar nodemcu, por varias razones: Lo dicho... en el foro, si necesitais algun nodemcu os puedo enviar para hacer las pruebas. Feliz año nuevo |
Yo ahora mismo dispongo de un ESP-12E que todavía no he conectado pendiente de terminar otros proyectos, pero tenía entendido que también son nodeMCU compatible. La idea de utilizar ESP-12E es por la posibilidad de integrar todos los componentes en un conjunto reducido, sería algo como el D1 mini. su funcion es casi exclusiva gateway entre el Modbus y el entorno a través de WiFi, por lo que n se plantea comunicación USB excepto para cargar sketch.
|
Fuente de 220 a 3.3 no he encontrado (a precio coherente), si que he encontrado una buena fuente 220-5v (a buen precio): De todos modos yo prefiero el nodemcu directamente (entiendo por nodemcu el esp8266 que integra el adaptador usb-ttl + alimentador y resto de elementos), por tamaño realmente no merece la pena trabajar directamente con los esp8266 pues al final siempre tienes que colocar los conversores dc-dc asi como algunos condensadores para estabilizar la alimentacion, los conectores (pinouts)... al final acaba saliendo mas caro, con el riesgo de hacer mal alguna soldadura y cargarte el conjunto, es preferible trabajar con un D1, D1mini, o nodemcu (en cualquiera de sus versiones... la v 3.0 tiene la ventaja de tener entrada dc tb por pinout), si lo importante es el numero de gpios, la mejor opcion es nodemcu (tanto d1 como d1mini tienen menos gpios disponibles). La salida de debug se puede tambien hacer por el puerto serie 2 (gpio13, creo que no estan disponibles ni en D1 ni en D1 mini), o mediante una pantalla lcd por i2c). Respecto a los niveles... antes de probar con el max3485 yo probaria con el max485, al menos en nodemcu no estoy teniendo problemas de niveles (en gpio, no he probado en ttl). Otra ventaja añadida de esp8266 (ojo, para utilizarla no sirve la version estable del ide arduino-esp8266, hay que instalar la stagging version) , es que podemos usar hasta 3 Mb como sistema de ficheros (para guardar datos y logs)... a traves de spiffs (aunque para este proyecto no termino de verle ninguna utilidad practica). |
Otra ventaja añadida de esp8266 (ojo, para utilizarla no sirve la version estable del ide arduino-esp8266, hay que instalar la stagging version) , es que podemos usar hasta 3 Mb como sistema de ficheros (para guardar datos y logs)... a traves de spiffs (aunque para este proyecto no termino de verle ninguna utilidad practica). |
Si... seria una opcion interesante, incluso en situaciones de sistemas red wifi disponible, para hacer un sistema de bajo consumo (alimentado con bateria), imaginemos un logger de temperaturas, que monitorice cada 10 minutos, y guarde los datos en el fichero... se coloque en modo deepsleep y a los 10 minutos vuelva a hacer lo mismo, y una vez al dia se conecte via wifi y envie la totalidad de datos. (el consumo del esp es muy bajo en deepsleep, bajo en situacion de "despierto" y muy elevado al conectar a wifi... por ello si reducimos las conexiones wifi a una al dia, podemos multiplicar facilmente por 3 o 4 la duracion de el sistema con una simple bateria de litio. |
Si estamos monitorizando la red eléctrica siempre vamos a tener acceso a una fuente de alimentación, en cambio, para contadores de agua por pulsos es una opción muy interesante... no utilizaría la función 'deepsleep' pero sí la situación 'despierto' |
Si... para flujos de agua no es recomendable usar la opcion de deepsleep pues parece que el wake-up de las interrupciones via gpio no funcionan demasiado bien en el esp8266 (salvo que lo hayan corregido ultimamente). |
Una vez completada la versión 0.5.2 he creado una copia para compilar en el entorno arduino IDE/ESP8266 y me genera errores, supongo que asociados al precompilador de ESP, no son nada evidentes ¿Alguna guía para adaptar los programas al entorno ESP? |
Hi, I am working on your code porting to ESP8266. I have tested and I can suggest few hints. |
Yo no he visto nada... Pero la ultima versión del ide que salio ayer he
|
First of all, ESP8266 has two Serial Ports. So using hardware Serial, I would recommend to use Serial(Serial2 pins) for Modbus (Call Serial.swap() in the setup function). This is ideal and workable solution. Issue I am having is: |
Just for Info, I am able to compile code correctly, You also need to remove static keyword for declaring variables. |
Perfect !!! Los errores que arroja al compilar se discuten en este hilo esp8266/Arduino#574. aunque realmente no entiendo la solución, Prácticamente están pasando la variable a ámbito global. |
Efectuando este cambio compila.
Aunque la verdad no le veo sentido 😧 |
Acabo de encontrar esta otra referencia: |
@khawajamechatronics , glad to colaborate. Thank you for your advice, If I understand:
What are you using to communicate, MAX485 or MAX3485? |
"Serial object works much the same way as on a regular Arduino. Apart from hardware FIFO (128 bytes for TX and RX) HardwareSerial has additional 256-byte TX and RX buffers. Both transmit and receive is interrupt-driven. Write and read functions only block the sketch execution when the respective FIFO/buffers are full/empty. Serial uses UART0, which is mapped to pins GPIO1 (TX) and GPIO3 (RX). Serial may be remapped to GPIO15 (TX) and GPIO13 (RX) by calling Serial.swap() after Serial.begin. Calling swap again maps UART0 back to GPIO1 and GPIO3. Serial1 uses UART1, TX pin is GPIO2. UART1 can not be used to receive data because normally it's RX pin is occupied for flash chip connection. To use Serial1, call Serial1.begin(baudrate). By default the diagnostic output from WiFi libraries is disabled when you call Serial.begin. To enable debug output again, call Serial.setDebugOutput(true). To redirect debug output to Serial1 instead, call Serial1.setDebugOutput(true). You also need to use Serial.setDebugOutput(true) to enable output from printf() function. Both Serial and Serial1 objects support 5, 6, 7, 8 data bits, odd (O), even (E), and no (N) parity, and 1 or 2 stop bits. To set the desired mode, call Serial.begin(baudrate, SERIAL_8N1), Serial.begin(baudrate, SERIAL_6E2), etc." Respecto al serial swap, parece que hay que tener cuidado en la ubicacion del comando: "The trick is to use Serial.swap() , which is included in ESP8266 Arduino library. No termino de entender la utilidad de hacer swap del serial (por lo visto soluciona algo... pero no se exactamente que), si que entiendo usar el serial1 (es lo logico) para el debugging. |
Have anyone got solution for ModbusSensor.h for ESP8266? |
Que tal Peninquen. |
Cierto.Hace mucho tiempo que se sabe nada de vosotros.Espero que os vaya todo bien por que sois unos cracks. Un saludo |
Definir los problemas para utilizar la librería ModbusSensor.h en un ESP8266-12E.
1º Puerto serie. El ESP-12E parece tener dos puertos, pero uno de ellos está dedicado a la comunicación con el módulo WiFi.
2º Voltaje de referencia. ¿son Suficientes los 3.3V para activa TxEnable?¿son suficientes para el SDM120? ¿es necesario utilizar MAX3485?
The text was updated successfully, but these errors were encountered: