Inhoudsopgave:

ATtiny85 RF-afstandsbediening - Ajarnpa
ATtiny85 RF-afstandsbediening - Ajarnpa

Video: ATtiny85 RF-afstandsbediening - Ajarnpa

Video: ATtiny85 RF-afstandsbediening - Ajarnpa
Video: ATtiny85 simplest radio controller - 4 digital channels 2024, Juli-
Anonim
ATtiny85 RF-afstandsbediening
ATtiny85 RF-afstandsbediening

OPMERKING: Mijn Instructable "Virtual Hide-and-Seek Game" laat zien hoe dit type afstandsbediening te gebruiken met een RXC6-module die het bericht automatisch decodeert.

Zoals ik in een eerdere Instructable al zei, ben ik onlangs begonnen met spelen met enkele ATtiny85-chips. Het eerste project dat ik in gedachten had, was om een RF-afstandsbediening te maken die op een knoopbatterij zou kunnen werken. Ik moest met een onbewerkte chip gaan omdat geen van de Arduino's die ik heb kan voldoen aan zowel de behoefte aan een zeer laag vermogen als een relatief klein formaat. Een aangepaste LilyPad kwam in de buurt, maar de chip is een beter antwoord. Het idee was niet zozeer om een bestaande afstandsbediening te dupliceren, maar om te demonstreren hoe je je eigen zender- en ontvangerset kunt samenstellen. Behalve dat het een leuk leerproject is, kun je ook je eigen "geheime" codecombinatie maken. Ik heb "geheim" tussen aanhalingstekens gezet omdat het vrij eenvoudig is om deze eenvoudige codes te kraken.

Stap 1: RF-berichtindeling

RF-berichtindeling
RF-berichtindeling

Voor dit project heb ik ervoor gekozen om de signalen voor een van mijn Etekcity RF draadloze schakelaars te repliceren (zie mijn Instructable op die modules). Ik deed dat omdat ik kon verifiëren dat mijn zender werkt met de Etekcity-ontvanger en dat mijn ontvanger werkt met de Etekcity-afstandsbediening. Ik weet toevallig ook precies wat de juiste codes en het juiste formaat zijn voor die apparaten omdat ik ze eerder heb vastgelegd. Raadpleeg mijn "Arduino RF-sensordecoder" Instructable voor de schets van het vastleggen van codes.

De codes en formaten voor de Etekcity-outlets zijn heel typerend voor goedkope RF-apparaten. Ik heb goedkope beveiligingsapparaten die zeer vergelijkbare formaten gebruiken met slechts enkele timingvariaties. De berichtlengte is een handige 24 bits met een lange startbit en een korte stopbit. U kunt de code eenvoudig wijzigen om meer bytes aan gegevens toe te voegen en om de timing van de synchronisatie- en gegevensbits te wijzigen. Nogmaals, deze schets is slechts een startsjabloon.

Stap 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

De zender werkt op een knoopbatterij (2032), dus een laag stroomverbruik is essentieel. Het meeste daarvan wordt bereikt in de software, maar het wordt geholpen door het feit dat de ATtiny85 normaal gesproken op de interne klok van 1 MHz draait. De regel is dat lagere klokfrequenties minder stroom nodig hebben en 1 MHz is perfect voor de zenderlogica.

De eigenlijke RF-zendermodule die ik graag gebruik, is een FS1000A die algemeen verkrijgbaar is. Het wordt geleverd in zowel 433-MHz- als 315-MHz-versies. Het maakt de software niet uit welke je gebruikt, maar je moet ervoor zorgen dat de ontvangerkaart op dezelfde frequentie werkt. De meeste van mijn projecten gebruiken 433-MHz-apparaten, omdat dat is wat wordt gebruikt door de verschillende goedkope draadloze apparaten die ik heb verzameld. De op de afbeelding getoonde lay-out van het zenderbord past mooi in een oude pillenfles. Het is niet mooi, maar goed genoeg voor een proof-of-concept.

De ontvanger bevindt zich op een soldeerloze breadboard omdat het enige doel is om te laten zien hoe signalen kunnen worden ontvangen en hoe je iets aan/uit kunt zetten op basis van de ontvangen codes. Het gebruikt een LED om de aan/uit-status aan te geven, maar je zou die kunnen vervangen door een relaisstuurprogramma, enz. Elke Arduino kan voor de ontvanger worden gebruikt omdat deze niet op een batterij hoeft te werken. Als grootte nog steeds een overweging is, kunt u een andere ATtiny85-chip gebruiken. De sleutel is dat de ATtiny85 op 8 MHz in de ontvanger moet draaien. Raadpleeg mijn eerdere ATtiny85 Instructable voor een eenvoudige schets die verifieert dat u de interne klok met succes hebt gewijzigd in 8 MHz. Aan het einde van mijn Instructable over sensordecodering voeg ik een Arduino Nano-versie van de ontvangersoftware toe. Het is identiek aan de ATtiny85-versie die hier is opgenomen, behalve een paar chipregisterverschillen.

Zoals ik in mijn eerdere RF Instructables heb beschreven, gebruik ik liever een ontvanger zoals de gewone RXB6. Het is een superheterodyne ontvanger die veel beter werkt dan de superregeneratieve ontvangers die gewoonlijk bij de FS1000A-zenders worden geleverd.

Zowel de zender- als de ontvangermodule werken beter met de juiste antennes maar worden vaak niet meegeleverd. Je kunt ze kopen (de juiste frequentie krijgen) of je kunt ze zelf maken. Bij 433 MHz is de juiste lengte ongeveer 16 cm voor een rechte draadantenne. Om een opgerolde draad te maken, neemt u ongeveer 16 cm geïsoleerde draad met een massieve kern en wikkelt u deze in een enkele laag om zoiets als een 5/32-inch boorschacht. Strip aan één kant de isolatie van een kort recht stuk en sluit het aan op uw zender-/ontvangerkaart. Ik heb ontdekt dat de draad van een oude Ethernet-kabel goed werkt voor antennes. Het zenderbord heeft meestal een plaats om de antenne te solderen, maar het ontvangerbord heeft mogelijk alleen pinnen (zoals de RXB6). Zorg ervoor dat de verbinding veilig is als u deze niet soldeert.

Stap 3: Software

De zendersoftware gebruikt veelvoorkomende technieken om de chip in de slaapstand te zetten. In die modus trekt het minder dan 0.2ua stroom. De schakelaaringangen (D1-D4) hebben de interne pull-up-weerstanden ingeschakeld, maar ze trekken geen stroom totdat er op een schakelaar wordt gedrukt. De ingangen zijn geconfigureerd voor interrupt-on-change (IOC). Wanneer een schakelaar wordt ingedrukt, wordt een interrupt gegenereerd en wordt de chip gedwongen wakker te worden. De interrupt-handler voert ongeveer 48msec vertraging uit om de switch te laten debouncen. Vervolgens wordt gecontroleerd welke schakelaar is ingedrukt en wordt de juiste routine aangeroepen. Het verzonden bericht wordt meerdere keren herhaald (ik heb 5 keer gekozen). Dit is typerend voor commerciële zenders omdat er zoveel RF-verkeer is op 433 MHz en 315 MHz. De herhaalde berichten helpen ervoor te zorgen dat er tenminste één doordringt tot de ontvanger.

De synchronisatie- en bittijden worden gedefinieerd aan de voorkant van de zendersoftware, maar de databytes zijn ingebed in elk van de vier knoproutines. Ze zijn duidelijk en gemakkelijk te wijzigen en het toevoegen van bytes om een langer bericht te maken is ook eenvoudig. Alle dezelfde definities zijn opgenomen in de ontvangersoftware, evenals de databytedefinities. Als u databytes aan uw bericht toevoegt, moet u de definitie voor "Msg_Length" wijzigen en bytes toevoegen aan de variabele "RF_Message". U moet ook code toevoegen aan de "RF_Message" check in "loop" om de juiste ontvangst van de extra bytes te verifiëren en die bytes te definiëren.

Aanbevolen: