Paso 1: Una historia de falla
No dude en saltar este paso. Solo estoy documentando Cómo llegué a esta solución específica.
TL; DR: aunque este proyecto tuvo éxito, dudo si alguna vez usaré kits 433 / 315MHz para nada serio (al menos no los simples). El ruido de RF el Arduino se genera (sobre todo si está conectado a y [o] transmisión serial) hace estas cosas mi humilde opinión bastante inútil. Específicamente - Arduino Micro es mucho peor (y mientras estamos en él: el Micro también tiene un poderoso tiempo a restablecer. Allí. Tengo apagado mi pecho).
En un principio, trabajó
Hubo un prototipo de trabajo (ver foto). Tenía un algoritmo diferente, pero funcionó.
Luego llegué a casa, construyó otra vez (véase foto de Tupperware), funcionó, pero con un montón de falsas detecciones (detecta señal donde no había ninguno), pero he conseguido ajustar cosas y funcionó.
Luego vino el Arduino Micro
Luego probé un receptor más pequeño basado en un Arduino Micro (ver foto del plato de jabón), y todo salió mal: la cosa sólo podría detectar la señal si era unos Cm del emisor (y aún así era un poco incierto).
Así que empecé a hacer algunos "debugging"(TM) orgánica: he conectado el zumbador piezo directamente al pin de datos del receptor y comenzó a escuchar - lo hacía un montón de ruido de RF: incluso cuando el transmisor estaba apagado.
Incluso en los campos (de nada eléctrico).
Consiguió mejor cuando lo deje de usar el Serial, pero todavía - se puede escuchar el sonido adjunto (antes / después de encienda el transmisor, y una vez que consigue 20-30cm de distancia del transmisor).
Para la referencia, he construido un circuito con sólo la recepción y un zumbador piezoeléctrico sobre el pin de datos. Se puede escuchar el sonido adjunto (antes / después recurro en el transmisor y mientras [ruido] paseo lejos ~ 2m).
Así que decidí ir corriente principal
Comencé a pensar: tal vez la idea de no tener un Arduino en el lado del transmisor es estúpida. Tal vez son librerías como VirtualWire o RadioHead para conseguir cualquier cosa en un nivel bajo de señal/ruido. Por lo que se trataba de un simple ejemplo de "Hola" entre un Arduino como transmisor y el Arduino Micro como receptor, no consiguió recepción. Cambiar entre el Arduino grande y Micro, Nada.
¿Puedo grabar mi receptor?
Después de algunos experimentos incluso el "prototipo de Tupperware" (uno que solía trabajar) se convirtió en un lote que es peor. Así que he decidido que he dañado el receptor. Tal vez durante todos estos experimentos, un esbozo del transmisor fue había subido a la máquina equivocada y envía señal a los datos del receptor. No importa (si sabes la respuesta, por favor, comentario), pero cuando no sabes si has quemado el único receptor que tienes o no - es realmente una mierda.
Así que he ordenado unos kits de RF más [y esperado...]
Cuando llegaron los nuevos kits - nada. No pude conseguir el ejemplo VirtualWire para trabajar. Así que he buscado un hotel en el foro y he encontrado a alguien con un problema similar (mi énfasis):
Compré este kit y usando VirtualWire lo tenía funcionando perfectamente... Entonces de repente lo dejó de funcionar. ... Solía conseguir un montón de ruido a través de... ahora no hay nada.
y hay una respuesta diciendo:
Fuente de alimentación USB son muy malos. Probar con alimentación por batería. Pequeña distancia entre rx y tx no son buenas. Distancia pequeña a la PC no es buena (son como un jammer de hf).
Así que he intentado depurar cosas sin usar corriente serial o externo
Como una "herramienta de depuración inalámbrica" intenté utilizar un LCD I2C, pero el problema era conseguir que funcione a base de pilas (un cable serie a un PC o toma incluso atascos de la rf mal), pero sólo tenía una vieja Arduino (te pido unos modernos pronto) con un puente manual de selección de USB/batería y no trivial para conseguir el trabajo de monitor de LCD I2C en modo "batería" (si tienes problemas similares Aquí es un howto que escribí).
Éxito
Una vez que tengo el problema de la LCD fuera del camino, escribí una versión de stick2cane que presenta el histograma (véase más adelante en el algoritmo. Es mucho más simple que el anterior). El truco era ver los histogramas visualmente y estudiarlos. Ninguna cantidad de depuración serie podría proporcionar tales ideas (a menos que importar csv o json via serie - una idea para un proyecto de futuro ;)).