Inhoudsopgave:
Video: ATtiny85 RF-afstandsbediening - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
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
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
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:
Het energieverbruik van de batterij voor Digispark ATtiny85 verminderen: 7 stappen:
Het energieverbruik van de batterij voor Digispark ATtiny85 verminderen: of: een Arduino met een 2032-knoopcel gedurende 2 jaar laten werken. Als u uw Digispark Arduino-bord uit de doos met een Arduino-programma gebruikt, trekt het 20 mA bij 5 volt. Met een 5 volt powerbank van 2000 mAh werkt maar 4 dagen
AtTiny85 adresseerbare LED-strip: 10 stappen
AtTiny85 Adresseerbare LED-strip: Mijn doel was om een bureaulamp te maken van LED's. Ik wilde dat deze verstelbaar was, zodat hij zowel overdag als 's nachts kon worden gebruikt. Bij mijn eerste poging gebruikte ik een eenvoudige LED-strip en grote MOS- FET's om ze op 12v aan te sturen. Deze keer heb ik gekozen voor adresseerbare LED's die krachtig zijn
Een Attiny85-console maken - ArduPlay: 5 stappen (met afbeeldingen)
Hoe maak je een Attiny85-console - ArduPlay: Het was als volgt: ik bladerde doelloos door YouTube-video's om te ontspannen met een kopje thee. Misschien een voetbalwedstrijd hoogtepunten of een compilatie van grappige video's? Plots kreeg ik een melding op mijn telefoon - een nieuwe video op het Electronoobs-kanaal. Ongelukkig
Gewoon weer een ATtiny85 Retro-gameconsole: 4 stappen
Gewoon een andere ATtiny85 Retro-gamingconsole: een kleine retro-console-achtige opstelling gebaseerd op ATtiny85 x 0,96 OLED voor het spelen van space-invaders, Tetris, enz
ATtiny85 programmeren en opstarten met USBasp: 5 stappen
ATtiny85 programmeren en opstarten met USBasp: In deze Instructable leer je precies hoe je een ATtiny85-microchip opstart en programmeert op de eenvoudigste manier die ik kon bedenken. Dit is mijn eerste Instructable, dus als je advies of tips hebt over hoe je betere gidsen kunt maken, neem dan gerust contact met ons op