Buenas!
Me presento y les muestro una idea para que sea criticada (en el sentido estricto, que esta mal, que esta pésimo, etc) y acepto sugerencias, que marquen errores, lo que sea.
Me llamo Gustavo, no soy técnico electrónico ni ingeniero, solo un hobbista con mas ignorancia que conocimientos de electrónica pero con las mañanas libres durante la pandemia, lo que me lleva a meterme en cosas que no conozco e intento aprender, y aquí llegamos al ESP32.
La idea inicial fue armar un dispositivo sencillo con un modulito ESP32 y un BME280, al que después le fui agregue un modulo Lora, logre conectarlo con TTN usando LoraWan, y ahi es donde empezó la tontería de querer hacer algo que definitivamente no se hacer: Construir una placa que acepte varios sensores, con un modulo Heltec Wireless Shell (Viene con Lora, Wifi y BLE incluidos), y ahí como es todo 3.3v lo quise hacer tolerante a los 5v entonces le agregué convertidores de nivel lógico, y ahi es justamente una de las macanas que me mandé.
Porque ese modulo Heltec en lugar de uno que ya viniera listo para conectar los pines? Black Friday, estaba de oferta, se ve bueno y es diminuto.
El proyecto va a funcionar en una caja estanca, con un panel solar de 12v / 10w y una batería sellada de 12v 7ah. Para este tipo de dispositivo es demasiado, pero es que donde estoy viviendo han pasados semanas enteras lloviendo y sin ver el sol y el conjunto no estaba caro. La idea era también hacerle un controlador de carga con su correspondiente circuito de power path para que no use la batería cuando hay suficiente energía en el panel, pero por ahora eso queda para una segunda etapa, voy a usar un controlador comercial chino y barato y listo.
Sensores lleva un BME280 para medir presión, temperatura y humedad, sensor de radiación UV (VEML6070), sensor de luz (TSL2561), una veleta con un sensor de angulo magnético AS5200, pluviómetro y un anemómetro simple con un sensor hall. Originalmente iba a tener un RTC DS3231, pero parece que esta en falta, y al final lo saque. También un slot de MicroSD para que mantenga un registro de estos datos por si por alguna razón el gateway LoraWan no esta disponible.
La alimentación tiene un buck converter para bajar la tensión de 12v a 5v. pero que quede todo listo por si después le agrego el power path y que acepte los 18v que puede llegar a entregar el panel, y después un LDO para pasar de 5v a 3.3v. Originalmente el buck converter iba a ser TPS56339DDCR de Texas Instruments) y el LDO iba a ser el XC6220B331MR-G, también de TI, no por nada en particular simplemente que el sitio de TI tiene las herramientas para hacer los calculos de los componentes de manera súper fácil, y para mi nivel de ignorancia venia muy bien. Después ante la falta de stock decidí cambiarlos, el buck converter ahora es un TPS54202DDCR y el LDO es el AMS1117-3.3, el motivo del cambio es puramente económico, y porque esta combinación que ahora uso ya la vi en el esquemático de algunas controladoras de impresoras 3D, por eso era facil conseguir todo listo. La corriente de 2A en el buck converter y 1A en el LDO es mas que suficiente para alimentar varios de estos dispositivos, pero bueno, es lo que hay. Por ahí podría poner algo de 1A en el buck y 500ma en el LDO solo para reducir el tamaño de los componentes, por ejemplo el inductor, pero por ahora no es critico.
Respecto a los convertidores de nivel lógico, la idea original también cambio. Para el bus I2C uso un PCA9306, porque era lo que había encontrado inicialmente específicamente para ese uso, pero después quise que también los IO funcionaran con 5v, y como hay 12 GPIO disponibles (y 5 GPI), me decidí a poner tres convertidores de nivel de 4 bit TXS0104EDR, que al final termine cambiando por dos TXS0108EPWR de 8 bit porque cuestan la mitad, y ahí esta una de las tonterías que aun no cambié, me quedan 4 bit libres, y creo que podría usarlo para el I2C y quitar el PCA9306, pero al final no lo voy a hacer, por ahora así queda nomas.
Este es el esquematico hasta ahora:
No hay mucho mas para decir, todo es bastante sencillo en cuanto al esquema electronico siguiendo los datasheets, pero en algunos cálculos hago agua muy feo, como por ejemplo el divisor de tensión para el pin ENABLE del buck converter, lo dejo asi porque asi esta en el esquema del cual "tome prestada" la idea, pero no se como se llega a eso porque cuando intento resolver las ecuaciones para el calculo de esas resistencias según el datasheet a mi me da otros valores. Podria dejar el pin EN flotante, y eso ya funcionaría, pero la idea de poner ese divisor de tensión es que cuando la tensión baja de 12v el dispositivo el buck converter se apaga, asique si ese divisor no funciona simplemente lo quito y ya todo funciona sin la protección por baja tensión.
Otro de los puntos donde seguramente hay muchos errores es en el PCB, por lo que seguramente seguramente ahí tendré que corregir muchas cosas. Lo voy a mandar a hacer en China, con JLCPCB, una tirada de 5 que es lo minimo, y 2 de ellos van a venir montados, los otros tres con los componentes para montar. Uso SMD con footprint 0603 porque es lo que puedo soldar y desoldar a mano con lupa, menos que eso no me da la vista. Va en 4 capas: componentes, GND, +3.3v, reverso donde se trazan algunas lineas horizontales y el resto rellenado con GND. La diferencia de dinero entre hacerlo en 2 y 4 capas no es mucha, y me simplifica el trazado de las pistas. El tamaño actual de la placa es de 90mm x 65mm aproximadamente y se podria reducir un poco mas "amuchando" algunos componentes, pero la idea es que yo pueda soldarlo manualmente, al menos hasta que me arme el hornito para hacer el reflow.
Finalmente hay un header para conectar un convertidor USB a UART para poder hacer los updates de firmware por USB, pero también tiene agregado un botón para habilitar WiFi y poder hacer los updates OTA, via WiFi. Si el WiFi esta habilitado los paquetes de datos van directo al MQTT, si no se mandan a traves de LoraWan. Aun me falta corregir muchas cosas en el firmware, pero va empezando a funcionar.
Bueno, esto es lo que hay, No se si es bueno o malo, sin dudas que no es perfecto, y es posible que algunas cosas no tengan mucho sentido, como las "aeroventilas" que Homero le agregaba al diseño de su auto, por ejemplo usar un convertidor de nivel para el i2c cuando tengo 4 bit disponibles en uno de los convertidores usados en el GPIO, pero todo es modificable.
Seguramente hay muchos errores pero no son intencionales, es pura ignorancia, por lo que considero muy apropiado que sean señalados, prefiero aprender algo ahora y no despues que tengo todo armado.
Saludos y muchas gracias.
Gustavo
Me presento y les muestro una idea para que sea criticada (en el sentido estricto, que esta mal, que esta pésimo, etc) y acepto sugerencias, que marquen errores, lo que sea.
Me llamo Gustavo, no soy técnico electrónico ni ingeniero, solo un hobbista con mas ignorancia que conocimientos de electrónica pero con las mañanas libres durante la pandemia, lo que me lleva a meterme en cosas que no conozco e intento aprender, y aquí llegamos al ESP32.
La idea inicial fue armar un dispositivo sencillo con un modulito ESP32 y un BME280, al que después le fui agregue un modulo Lora, logre conectarlo con TTN usando LoraWan, y ahi es donde empezó la tontería de querer hacer algo que definitivamente no se hacer: Construir una placa que acepte varios sensores, con un modulo Heltec Wireless Shell (Viene con Lora, Wifi y BLE incluidos), y ahí como es todo 3.3v lo quise hacer tolerante a los 5v entonces le agregué convertidores de nivel lógico, y ahi es justamente una de las macanas que me mandé.
Porque ese modulo Heltec en lugar de uno que ya viniera listo para conectar los pines? Black Friday, estaba de oferta, se ve bueno y es diminuto.
El proyecto va a funcionar en una caja estanca, con un panel solar de 12v / 10w y una batería sellada de 12v 7ah. Para este tipo de dispositivo es demasiado, pero es que donde estoy viviendo han pasados semanas enteras lloviendo y sin ver el sol y el conjunto no estaba caro. La idea era también hacerle un controlador de carga con su correspondiente circuito de power path para que no use la batería cuando hay suficiente energía en el panel, pero por ahora eso queda para una segunda etapa, voy a usar un controlador comercial chino y barato y listo.
Sensores lleva un BME280 para medir presión, temperatura y humedad, sensor de radiación UV (VEML6070), sensor de luz (TSL2561), una veleta con un sensor de angulo magnético AS5200, pluviómetro y un anemómetro simple con un sensor hall. Originalmente iba a tener un RTC DS3231, pero parece que esta en falta, y al final lo saque. También un slot de MicroSD para que mantenga un registro de estos datos por si por alguna razón el gateway LoraWan no esta disponible.
La alimentación tiene un buck converter para bajar la tensión de 12v a 5v. pero que quede todo listo por si después le agrego el power path y que acepte los 18v que puede llegar a entregar el panel, y después un LDO para pasar de 5v a 3.3v. Originalmente el buck converter iba a ser TPS56339DDCR de Texas Instruments) y el LDO iba a ser el XC6220B331MR-G, también de TI, no por nada en particular simplemente que el sitio de TI tiene las herramientas para hacer los calculos de los componentes de manera súper fácil, y para mi nivel de ignorancia venia muy bien. Después ante la falta de stock decidí cambiarlos, el buck converter ahora es un TPS54202DDCR y el LDO es el AMS1117-3.3, el motivo del cambio es puramente económico, y porque esta combinación que ahora uso ya la vi en el esquemático de algunas controladoras de impresoras 3D, por eso era facil conseguir todo listo. La corriente de 2A en el buck converter y 1A en el LDO es mas que suficiente para alimentar varios de estos dispositivos, pero bueno, es lo que hay. Por ahí podría poner algo de 1A en el buck y 500ma en el LDO solo para reducir el tamaño de los componentes, por ejemplo el inductor, pero por ahora no es critico.
Respecto a los convertidores de nivel lógico, la idea original también cambio. Para el bus I2C uso un PCA9306, porque era lo que había encontrado inicialmente específicamente para ese uso, pero después quise que también los IO funcionaran con 5v, y como hay 12 GPIO disponibles (y 5 GPI), me decidí a poner tres convertidores de nivel de 4 bit TXS0104EDR, que al final termine cambiando por dos TXS0108EPWR de 8 bit porque cuestan la mitad, y ahí esta una de las tonterías que aun no cambié, me quedan 4 bit libres, y creo que podría usarlo para el I2C y quitar el PCA9306, pero al final no lo voy a hacer, por ahora así queda nomas.
Este es el esquematico hasta ahora:
No hay mucho mas para decir, todo es bastante sencillo en cuanto al esquema electronico siguiendo los datasheets, pero en algunos cálculos hago agua muy feo, como por ejemplo el divisor de tensión para el pin ENABLE del buck converter, lo dejo asi porque asi esta en el esquema del cual "tome prestada" la idea, pero no se como se llega a eso porque cuando intento resolver las ecuaciones para el calculo de esas resistencias según el datasheet a mi me da otros valores. Podria dejar el pin EN flotante, y eso ya funcionaría, pero la idea de poner ese divisor de tensión es que cuando la tensión baja de 12v el dispositivo el buck converter se apaga, asique si ese divisor no funciona simplemente lo quito y ya todo funciona sin la protección por baja tensión.
Otro de los puntos donde seguramente hay muchos errores es en el PCB, por lo que seguramente seguramente ahí tendré que corregir muchas cosas. Lo voy a mandar a hacer en China, con JLCPCB, una tirada de 5 que es lo minimo, y 2 de ellos van a venir montados, los otros tres con los componentes para montar. Uso SMD con footprint 0603 porque es lo que puedo soldar y desoldar a mano con lupa, menos que eso no me da la vista. Va en 4 capas: componentes, GND, +3.3v, reverso donde se trazan algunas lineas horizontales y el resto rellenado con GND. La diferencia de dinero entre hacerlo en 2 y 4 capas no es mucha, y me simplifica el trazado de las pistas. El tamaño actual de la placa es de 90mm x 65mm aproximadamente y se podria reducir un poco mas "amuchando" algunos componentes, pero la idea es que yo pueda soldarlo manualmente, al menos hasta que me arme el hornito para hacer el reflow.
Finalmente hay un header para conectar un convertidor USB a UART para poder hacer los updates de firmware por USB, pero también tiene agregado un botón para habilitar WiFi y poder hacer los updates OTA, via WiFi. Si el WiFi esta habilitado los paquetes de datos van directo al MQTT, si no se mandan a traves de LoraWan. Aun me falta corregir muchas cosas en el firmware, pero va empezando a funcionar.
Bueno, esto es lo que hay, No se si es bueno o malo, sin dudas que no es perfecto, y es posible que algunas cosas no tengan mucho sentido, como las "aeroventilas" que Homero le agregaba al diseño de su auto, por ejemplo usar un convertidor de nivel para el i2c cuando tengo 4 bit disponibles en uno de los convertidores usados en el GPIO, pero todo es modificable.
Seguramente hay muchos errores pero no son intencionales, es pura ignorancia, por lo que considero muy apropiado que sean señalados, prefiero aprender algo ahora y no despues que tengo todo armado.
Saludos y muchas gracias.
Gustavo