os planteo una duda de principiante relacionada con software serial en arduino UNO (o mas bien atmega 328p). Sé que solo dispone de un puerto serie y lo que pretendo es usar una comunicación usando MAX485 (rs-485) simplex master - slave ( 5 slave que controlan un servo cada uno).
Mi problema es que me gustaria controlar el arduino que hace de master dentro de la red de rs-485 con wifi. Para ello he planteado usar el ESP-01 pero este modulo también se habla con el atmega por serial.
No se si es posible usar software serial para uno de los dos.
Mi intención es, mediante una app, enviarle ordenes al master para que este mande ordenes a los slaves.
NOTA: necesito usar atmega328p, en modo standalone, pinchado en un PCB y no usando una placa ya fabricada como puede ser el UNO, MEGA, nodemcu o similares....
NOTA 2: Usar directamente un wifi que controle a los slaves no me sirve... necesito que el master, aparte de recibir cosas por wifi esté escuchando unas entradas analogicas continuamente y actue sobre los slaves si es necesario. El wifi seria para hacer de puente con un smartphone y tener la posiblidad de visualizar y manipular el master.
No vas a tener problema en comunicar uno de los módulos por software serial, dos instancias de software serial puede ser complicado. Pero programando el esp-01 puedes tener acceso a otras alternativas.
Bueno, eso depende de tu proyecto, por ejemplo puedes usar el esp como servidor web para poder interactuar fácilmente con dispositivos con un simple navegador web.
No entiendes la idea que @PeterKantTropus te sugiere.
El ESP01 puede ser otro esclavo, entonces el ESP01 via Wifi recibe comandos, y el master se entera cuando actualice información con dicho esclavo.
En lugar de 5 esclavos tendras 6.
Este esclavo ESP brindará órdenes o comandos que el master luego distribuirá a los esclavos servos.
No había registrado que pretendías una comunicación unidirecional , solo funcionaria si la comunicación full o half duplex ¿Cuales son tus servos rs485 y protocolo? Ten en cuenta que una comunicacional full o half duplex te brindaría mas posibilidades.
Efectivamente, tenéis razón @Surbyte y tú, debo usar half duplex. Había entendido que con un maestro y muchos esclavos solo era posible una comunicación unidireccional (simplex) y que el resto de opciones (half duplex, full duplex.. etc) solo eran posibles entre dos dispositivos. Entonces, entendiendo esto (os doy las gracias) me surgen nuevas dudas:
El ESP-01 trabaja en 3.3v y recuerdo haber usado level shifter para que se hablase por serial con arduino... Sin embargo, usando el RS485 veo que hay un MAX485 que trabaja en 5v y otro que trabaja en 3.3v (MAX3485)...¿ es tan sencillo como usar un integrado y otro aunque estén en voltajes diferentes? ¿debo usar level shifter?
Infinitas gracias, cuando tenga todo claro y el software resuelto (me ayuda un colega que sabe mucho de programación, yo estoy tratando de diseñar el circuito) subiré el proyecto completo porque creo que puede serle útil a mucha gente, está relacionado con zonificar un sistema de aire acondicionado por conductos.
todos los esclavos están microprocesados, tenia previsto usar un atmega328p en cada esclavo que controlan un servomotor por PWM, todo a 5v. Uso rs485 por distancias largas entre la placa maestro y los esclavos donde el PWM no funcionaria bien y el cableado haría de antena captando mucho ruido.
Modbus, dado que solo es mover el servo, probablemente no lo usemos.
No usar un protocolo, cualquiera, es buscarse problemas. La mayoría de los protocolos tienen comprobación de integridad del mensaje. En el foro hubo muchas casos que empezaron con un simple transmisión serie y luego se les complico mucho. Implementar tu propio protocolo, aunque sea simple, es reinventar la rueda. Ademas con Modbus, u otro protocolo, puedes escalar lo que hace el esclavo a futuro como finales de carreras, medición de temperatura, leds, etcétera.
bueno, usarlo o no, hasta donde sé, no modifica el hardware. En el punto del proyecto en el que estoy solo me interesa plantear una disposición de hardware que no dejé nada imprescindible atras. Mi principal duda es el tema de la diferencia de voltaje de trabajo del ESP01 y el atmega...
Revisa las hojas de datos.
Yo entiendo que el 3485 lo podrías usar para ambos porque admite hasta 7V de alimentación y es compatible con lógica a 5V.
Si entiendo bien tendrías el tema resuelto.
Yo he usado un MAX485 con un ESP8266 sin problemas, salvo el lado RX del ESP8266 que si hice adaptación de niveles. Pero el lado TX del ESP que ataca el MAX485 no requiere level shifter.