Innehållsförteckning:

ATtiny85 RF -fjärrkontroll: 3 steg
ATtiny85 RF -fjärrkontroll: 3 steg

Video: ATtiny85 RF -fjärrkontroll: 3 steg

Video: ATtiny85 RF -fjärrkontroll: 3 steg
Video: ATtiny85 RF Transmitter & Receiver 2024, November
Anonim
ATtiny85 RF -fjärrkontroll
ATtiny85 RF -fjärrkontroll

OBS: Mitt instruerbara "Virtual Hide-and-Seek Game" visar hur man använder denna typ av fjärrkontroll med en RXC6-modul som automatiskt avkodar meddelandet.

Som jag nämnde i en tidigare Instructable började jag nyligen spela med några ATtiny85 -marker. Det första projektet jag hade i åtanke var att göra en RF -fjärrkontroll som kunde fungera på ett myntbatteri. Jag behövde gå med ett rått chip eftersom ingen av de Arduinos jag har kan tillgodose både behovet av mycket låg effekt och relativt liten storlek. En modifierad LilyPad kom nära men chipet är ett bättre svar. Tanken var inte så mycket att duplicera en befintlig fjärrkontroll utan att demonstrera hur du kan skapa din egen sändare och mottagare. Förutom att det är ett roligt inlärningsprojekt kan du också skapa din egen "hemliga" kodkombination. Jag sätter "hemlighet" i citattecken eftersom det är ganska lätt att knäcka dessa enkla koder.

Steg 1: RF -meddelandeformat

RF -meddelandeformat
RF -meddelandeformat

För detta projekt valde jag att replikera signalerna för en av mina Etekcity RF trådlösa switchar (se min Instructable på dessa moduler). Jag gjorde det för att jag kunde verifiera att min sändare fungerar med Etekcity -mottagaren och att min mottagare fungerar med Etekcity -fjärrkontrollen. Jag råkar också veta exakt vilka rätt koder och format som är för dessa enheter eftersom jag fångade dem tidigare. Se min "Arduino RF Sensor Decoder" instruerbar för kodinspelningsskissen.

Koderna och formaten för Etekcity -butikerna är mycket typiska för billiga RF -enheter. Jag har billiga säkerhetsenheter som använder mycket liknande format med bara några tidsvariationer. Meddelandelängden är bekvämt 24 bitar med en lång startbit och en kort stoppbit. Du kan enkelt ändra koden för att lägga till fler byte med data och för att ändra tidpunkten för synkronisering och databitar. Återigen är denna skiss bara en startmall.

Steg 2: Hårdvara

Hårdvara
Hårdvara
Hårdvara
Hårdvara
Hårdvara
Hårdvara

Sändaren körs på ett myntbatteri (2032) så låg strömförbrukning är nyckeln. Det mesta uppnås i programvaran men det hjälps av att ATtiny85 normalt körs på 1 MHz intern klocka. Regeln är att lägre klockfrekvenser kräver mindre effekt och 1-MHz är perfekt för sändarlogiken.

Själva RF -sändarmodulen jag gillar att använda är en FS1000A som är allmänt tillgänglig. Den finns i både 433 MHz och 315 MHz versioner. Programvaran bryr sig inte om vilken du använder, men du måste se till att mottagarkortet fungerar med samma frekvens. De flesta av mina projekt använder 433-MHz-enheter eftersom det är det som används av de olika billiga trådlösa enheterna jag har samlat på mig. Sändarkortets layout som visas på bilden passar fint in i en gammal pillerflaska. Det är inte vackert men tillräckligt bra för ett proof-of-concept.

Mottagaren är på en lödlös brödbräda eftersom dess enda syfte är att visa hur man tar emot signaler och hur man slår på/av något baserat på de mottagna koder. Den använder en lysdiod för att indikera på/av -status, men du kan ersätta den med en relädrivrutin etc. Vilken som helst Arduino kan användas för mottagaren eftersom den inte behöver gå ur ett batteri. Om storlek fortfarande är en övervägande kan du använda ett annat ATtiny85 -chip. Nyckeln är att ATtiny85 måste köras med 8 MHz i mottagaren. Se min tidigare ATtiny85 Instructable för en enkel skiss som verifierar att du har ändrat den interna klockan till 8-MHz. I slutet av min Instructable on sensor -avkodning inkluderar jag en Arduino Nano -version av mottagarprogramvaran. Det är identiskt med ATtiny85 -versionen som ingår här med undantag för ett par chipregisterskillnader.

Som jag beskrev i mina tidigare RF -instruktioner, föredrar jag att använda en mottagare som den vanliga RXB6. Det är en super-heterodyne-mottagare som fungerar mycket bättre än de super-regenerativa mottagarna som vanligtvis levereras med FS1000A-sändarna.

Både sändar- och mottagarmodulerna fungerar bättre med rätt antenner men de levereras ofta inte. Du kan köpa dem (få rätt frekvens) eller så kan du göra din egen. Vid 433 MHz är rätt längd cirka 16 cm för en rak trådantenn. För att göra en lindad, ta cirka 16 cm isolerad, solid kärntråd och linda den runt något som en 5/32-tums borrskaft i ett enda lager. Avlägsna isoleringen från en kort rak sektion i ena änden och anslut den till din sändare/mottagarkort. Jag har upptäckt att kabeln från en skrot Ethernet -kabel fungerar bra för antenner. Sändarkortet har vanligtvis en plats för lödning av antennen men mottagarkortet kan bara ha stift (som RXB6). Se bara till att anslutningen är säker om du inte lödder den.

Steg 3: Programvara

Sändarprogramvaran använder vanliga tekniker för att sätta in chipet i viloläge. I det läget drar det mindre än 0.2ua ström. Omkopplaringångarna (D1-D4) har de interna uppdragningsmotstånden påslagna men de drar ingen ström förrän en knapp trycks in. Ingångarna är konfigurerade för interrupt-on-change (IOC). När en omkopplare trycks in, genereras ett avbrott och det tvingar chippet att vakna. Avbrottshanteraren utför cirka 48 ms fördröjning för att tillåta omkopplaren att debounce. En kontroll görs sedan för att avgöra vilken omkopplare som trycktes in och lämplig rutin anropas. Det överförda meddelandet upprepas flera gånger (jag valde 5 gånger). Detta är typiskt för kommersiella sändare eftersom det finns så mycket RF-trafik på 433 MHz och 315 MHz där ute. De upprepade meddelandena hjälper till att säkerställa att åtminstone en tar sig till mottagaren.

Synkroniserings- och bettiderna definieras på framsidan av sändarprogramvaran men databyte är inbäddade i var och en av de fyra knapprutinerna. De är uppenbara och lätta att ändra och att lägga till byte för att göra ett längre meddelande är också enkelt. Alla samma definieringar ingår i mottagarprogramvaran samt databytesdefinitionerna. Om du lägger till databyte i ditt meddelande måste du ändra definitionen för "Msg_Length" och lägga till byte till variabeln "RF_Message". Du måste också lägga till kod i "RF_Message" -checkningen i "loop" för att verifiera att de extra bytena tas emot korrekt och definiera dessa bytes.

Rekommenderad: