Pues esto si que me ha costado un montón de tiempo para poder resolverlo.
Pruebo la placa y el ESP no llega a arrancar (esto ya lo habíamos comentado en un post anterior), cojo el polímetro, empiezo a medir y me acabo dando cuenta de que falta una resistencia de pulldown en el GPIO15. Curiosamente en mi protoboard ese componente no está, aunque más tarde me doy cuenta que la plaquita blanca que utilicé para poder pinchar el ESP a la protoboard llevaba el espacio para los componentes mínimos y la resistencia la puse allí, es de tamaño 0805, no me acordé así que cuando repasé la protoboard para hacer la PCB simplemente no lo ví.
¿como llegué a la conclusión?, la verdad es que el mensaje de boot mode no está muy documentado, pero encontré esta info:
ets Jan 8 2013,rst cause:XXX, boot mode:(YYY,ZZZ)
For XXX
we can check the meaning here.
For YYY
and ZZZ
I am not sure but I know it has something to do with this. I think YYY
stands for abc
where a = MTDO, b = GPIO0 and c = GPIO.
a=MTDO es el estado del GPIO15, en condiciones normales el bit más significativo debe de ser cero, por lo que la yyy del bootmode no puede ser 4 o mayor.
Para poder seguir hice lo que técnicamente se conoce como un workaround, Detrás de esta palabra lo que se esconde es el soldar una resistencia como se puede para que funcione y ver que es lo siguiente.
La PCB ya arranca y se puede programar. La programo y va leyendo y poníendose en deep sleep, pero cuando le toca enviar da un error de LMIC en la línea 692 del fichero radio.c. Las pruebas son las siguientes:
- Mirando la línea parece que el problema es cuando identifica el chipset del RFM95W, por lo que es posible que esté mal configurado en el fichero config.h del LMIC, lo compruebo y está bien configurado, ese no es el problema.
- Lo segundo que dicen en los foros es que es un problema de pinout, como eliminamos algunos pins para dejar GPIOS libres no es complicado, Mido con el tester la continuidad entre los pines de la radio y los del ESP, todos correctos.
- Pienso, estoy comparando con el esquema, igual lo que está mal es el esquema y compraro con la protoboard, todas las pistas son correctas.
- Casi por casualidad veo que la señal de clock y la de MISO están en corto, comparo en la protoboard y allí no están en corto, pienso que se habrá estropeado el ESP o la radio, por lo que saco el ESP (que es más barato).
- Con el ESP fuera no me da corto entre sus patillas, tampoco entre las de la radio, pongo otro ESP nuevo. Mido y están en corto, pienso, pues será la radio.
- Cambio la radio, miro la radio que saco y no están en corto, pongo otra y sigo teniendo problemas, están en corto.
- Al final llego a la conclusión de que el corto lo hace el ESP con una via que hay muy cerca del pad (ver la foto), así que pongo cinta Kapton y vuelvo a soldarlo.
Ya no hay corto!!!!!! pero tanto soldar y desoldar ahora tiene otro problema, con lo que voy a montar otra desde cero con componentes nuevos.
Tensión en vacío
Pues que me he dado cuenta que como en modo deep-sleep no nodo no consume prácticamente nada la tensión en vacío de la pila (por lo menos la que mide el nodo), está por encima de las especificaciones del ESP8266, me da casi 4V. ¿que es lo que puede provocar esto?, pues inestabilidades y un incremento en la corriente de deep-sleep. He encontrado un regulador de low droutput de TI, que promete que solo consume 0,5uA, se utiliza con muy pocos componentes externos y se puede dejar en nA con una entrada de Enable que incorpora. He pedido algunos para probar, de hecho tenía en mi lista de cosas pendientes el buscar una alternativa al driver de los sensores porque es de un formato mínimo y esta me parece una buena opción. Con el regulador principal la entrada EN me va bien por si un día quiero poner un relé reed para desactivarlo con un imán (pongo el relé entre la entrada EN y la masa y me garantizo que mientras esté almacenado solo consume unos pocos nA si tiene el imán). Para los sensores controlo la puerta EN con el GPIO10 en lugar de controlar el driver y reduzco de 0,5uA a unos pocos nA, además estabilizo la tensión. Me parece un buen plan.