Stap 1: Een geschiedenis van een mislukt
Voel je vrij om deze stap overslaan. Ik ben gewoon het documenteren hoe ik op deze specifieke oplossing.
TL; DR: hoewel dit project geslaagd, ik betwijfel als ik ooit gebruik 433 / 315MHz kits voor iets ernstig (op zijn minst niet eenvoudige degenen). Het lawaai van RF de Arduino zelf genereert (vooral als verbonden met en [/ of] seriëletransmissie) maakt deze dingen nogal nutteloos IMHO. Specifiek - Arduino Micro is het veel erger (en terwijl we toch bezig bent: de Micro ook machtige lang duurt om te resetten. Daar. Gekregen het van mijn borst).
In het begin werkte het
Er was een werkend prototype (zie foto). Het had een ander algoritme, maar het werkte.
Dan kreeg ik terug naar huis, bouwde het weer (Zie Tupperware foto), het werkte, maar met veel verkeerd speurder (gedetecteerd signaal wanneer er niet om het even welk), maar ik heb in geslaagd om het verfijnen van de spullen en het werkte.
Toen kwam de Arduino Micro
Vervolgens mij beproefd een kleinere ontvanger gebaseerd op een Arduino Micro (Zie Zeepschaal foto), en alles ging mis: het ding alleen-signaal kan detecteren als was het een paar Cm vanaf de zender (en zelfs toen het een beetje onzeker was).
Dus ik begon te doen sommige "organische debugging"(TM): Ik heb de piëzo-zoemer aangesloten rechtstreeks op de pin van de gegevens van de ontvanger, en begon te luisteren - het ding was het maken van een heleboel RF lawaai: zelfs wanneer de zender was weg.
Zelfs in de velden (weg van iets elektrische).
Het kreeg beter toen ik vertelde om te stoppen met het gebruik van de serie, maar nog steeds - u naar het bijgevoegde geluid luisteren kunt (voordat / nadat ik weer op de zender, en zodra het wordt 20-30cm afstand van de zender).
Ter referentie, heb ik een circuit met alleen het ontvangen en een piëzo-zoemer gebouwd op de data pin. U kunt luisteren naar het bijgevoegde geluid (voorheen / nadat ik op de zender, en terwijl ik [luidruchtig] walk away ~ 2m).
Dus besloten heb ik te gaan mainstream
Ik begon te denken: misschien het hele idee van het niet hebben van een Arduino aan de kant van de zender is dom. Misschien zijn bibliotheken zoals VirtualWire of RadioHead er om iets te krijgen op zulk een lage signaal/ruis-niveau. Dus ik een eenvoudig voorbeeld van de "Hello" tussen een Arduino als zender en de Arduino Micro als ontvanger probeerde, kreeg geen ontvangst. Geschakeld tussen de grote Arduino en de Micro, Nada.
Ik mijn ontvanger branden?
Na een paar experimenten zelfs de "Tupperware prototype" werd (degene die gebruikt om te werken) veel erger. Dus ik heb besloten heb ik de ontvanger beschadigd. Misschien tijdens al deze experimenten, was een zender schets geüpload naar de verkeerde machine en signaal afgegeven aan de ontvanger gegevens. Niet zeker dat (als je het antwoord weet, please comment) van belang, maar als je niet weet of u de enige ontvanger hebt gebrand heb je of niet - het is echt klote.
Dus bestelde ik heb een paar meer RF-kits [en wachtte...]
Wanneer de nieuwe kits aangekomen - nada. In het voorbeeld van de VirtualWire aan het werk kon ik niet krijgen. Zo heb ik zocht het forum en iemand met een soortgelijk probleem (mijn cursivering) gevonden:
Ik kocht deze kit, en met behulp van VirtualWire had het werkt perfect... Dan plotseling het tegengehouden werken. ... Ik gebruikte om veel lawaai door... nu er niets is te krijgen.
en er is een antwoord te zeggen:
USB Power source zijn zeer slecht. Probeer aandrijven door batterij. Kleine afstand tussen rx en tx zijn niet goed. Kleine afstand tot PC is niet goed (ze zijn als een stoorzender hf).
Dus probeerde ik te debuggen spullen zonder met behulp van seriële of externe kracht
Als een "draadloze debugging hulpmiddel" mij beproefd voor toepassing een I2C LCD, maar het probleem was ertoe brengen om te werken op accustroom werkt (een seriële kabel naar een PC of zelfs stopcontact Jam de rf slecht), maar ik had alleen een oude Arduino (ik zal binnenkort sommige moderne degenen om) met een handmatige USB/batterij selectie jumper, en was het niet triviaal om de I2C LCD monitor werken terwijl in de "batterij" modus (als u vergelijkbare problemen hebt Hier is een howto die ik schreef).
Succes
Zodra ik kreeg het LCD probleem uit de weg, schreef ik een versie van stick2cane die het histogram (zie algoritme later. Het is veel eenvoudiger dan de vorige). De truc was om te zien de histogrammen visueel en bestuderen ze. Geen enkele hoeveelheid seriële foutopsporing kan dergelijke inzichten bieden (tenzij u importeren CSV- of json via seriële - een idee voor een toekomstig project ;)).