He estado trabajando en un proyecto simple que incluye una Raspberry pi y algunos interruptores. Nunca pensé que tendría ningún problema por algo tan simple como un interruptor, pero aquí estoy.
Los 2 cables de mi interruptor están conectados a la frambuesa pi. Uno está conectado a tierra, el otro está conectado a un GPIO. Se utiliza la resistencia interna de pull-up de la frambuesa pi.
La longitud del cable es de unos 7 m.
El programa es solo una cuestión de leer el GPIO y enviar comandos de acuerdo con los cambios de estado.
Mi problema es simple: todo funciona bien durante algún tiempo, pero eventualmente el interruptor deja de "funcionar" (se lee en estado bajo tanto si se presiona el interruptor como si no).
Revisé el interruptor y, por supuesto, aún se abre y se cierra como se esperaba, por lo que el problema proviene de otro lugar. Lo que hice fue desconectar el interruptor y medir el voltaje entre los dos cables: obtengo 0V.
Esta es mi primera pista para pensar que algo malo le sucedió a la frambuesa pi. Debido a que se utiliza el pullup interno, debería haber medido alrededor de 3.3V. Y esto es de hecho lo que mido si sustituyo la frambuesa pi por una nueva.
¿Pensé que esto podría ser causado por EMI, causando picos de voltaje? Realmente no tengo experiencia lidiando con esto. Entonces, lo que hice fue reemplazar la frambuesa pi, y agregué una resistencia de pull-up externa con un valor más bajo (la resistencia interna es 30k, usé 1k como resistencia externa), adivinando que esto reduciría el ruido. Pero lo mismo sucedió después de un día.
Esta vez, cuando mido el voltaje en el GPIO, tengo alrededor de 1.2V. De acuerdo con la lectura, usando un simple divisor de voltaje, esto es equivalente a un valor de resistencia de 600 Ohms que tira la señal hacia el interior de la frambuesa. Definitivamente no es normal.
Luego intenté reemplazar los cables con un cable de audio blindado, conectando el blindaje a tierra. Y medio día después, otra pi de frambuesa era buena para la jubilación.
Ahora coloqué un capacitor cerámico entre gnd y GPIO (100nF), y por ahora parece estar bien (solo han pasado las 12 h), pero debo decir que no tengo confianza porque no estoy seguro de qué es. La razón de este problema.
En el mismo sistema, tengo otro interruptor con un cable mucho más corto (1 m) y nunca tuve ningún problema con este. Esta es la razón por la que creo que mis cables actúan como antenas, pero no estoy seguro (especialmente porque los cables blindados no ayudaron).
Cualquier idea sobre lo que podría pasar sería apreciada.