Innholdsfortegnelse:

ATtiny85 RF -fjernkontroll: 3 trinn
ATtiny85 RF -fjernkontroll: 3 trinn

Video: ATtiny85 RF -fjernkontroll: 3 trinn

Video: ATtiny85 RF -fjernkontroll: 3 trinn
Video: ATtiny85 RF Transmitter & Receiver 2024, Juli
Anonim
ATtiny85 RF fjernkontroll
ATtiny85 RF fjernkontroll

MERK: Mitt instruerbare "virtuelle skjul-og-søk" -spill viser hvordan du bruker denne typen fjernkontroll med en RXC6-modul som automatisk dekoder meldingen.

Som jeg nevnte i en tidligere Instructable begynte jeg nylig å spille med noen ATtiny85 -brikker. Det første prosjektet jeg hadde i tankene var å lage en RF -fjernkontroll som kunne fungere på et myntbatteri. Jeg trengte å gå med en rå chip fordi ingen av Arduinoene jeg har kan dekke både behovet for veldig lav effekt og relativt liten størrelse. En modifisert LilyPad kom i nærheten, men brikken er et bedre svar. Tanken var ikke så mye å kopiere en eksisterende fjernkontroll, men å demonstrere hvordan du kan lage ditt eget sender- og mottakersett. I tillegg til å være et morsomt læringsprosjekt, lar det deg også lage din egen "hemmelige" kodekombinasjon. Jeg satte "hemmelig" i anførselstegn fordi det er ganske enkelt å knekke disse enkle kodene.

Trinn 1: RF -meldingsformat

RF -meldingsformat
RF -meldingsformat

For dette prosjektet valgte jeg å replikere signalene for en av mine trådløse Etekcity RF -svitsjer (se min Instructable på disse modulene). Jeg gjorde det fordi jeg kunne bekrefte at senderen min fungerer med Etekcity -mottakeren og at mottakeren min fungerer med Etekcity -fjernkontrollen. Jeg vet også tilfeldigvis nøyaktig hva som er de riktige kodene og formatet for disse enhetene fordi jeg fanget dem tidligere. Se min "Arduino RF Sensor Decoder" Instruerbar for kodefangstskissen.

Kodene og formatene for Etekcity -utsalgsstedene er veldig typiske for rimelige RF -enheter. Jeg har billige sikkerhetsenheter som bruker veldig like formater med bare noen tidsvariasjoner. Meldingslengden er en praktisk 24 bit med en lang startbit og en kort stoppbit. Du kan enkelt endre koden for å legge til flere byte med data og for å endre tidspunktet for synkronisering og databiter. Igjen, denne skissen er bare en startmal.

Trinn 2: Maskinvare

Maskinvare
Maskinvare
Maskinvare
Maskinvare
Maskinvare
Maskinvare

Senderen går på et myntbatteri (2032), så lavt strømforbruk er nøkkelen. Det meste oppnås i programvaren, men det er hjulpet av det faktum at ATtiny85 normalt kjører på 1 MHz intern klokke. Regelen er at lavere klokkefrekvenser krever mindre strøm og 1-MHz er perfekt for senderlogikken.

Selve RF -sendermodulen jeg liker å bruke er en FS1000A som er tilgjengelig. Den kommer i både 433-MHz og 315-MHz versjoner. Programvaren bryr seg ikke om hvilken du bruker, men du må sørge for at mottakerbordet fungerer med samme frekvens. De fleste av prosjektene mine bruker 433-MHz-enheter fordi det er det som brukes av de forskjellige rimelige trådløse enhetene jeg har samlet. Senderkortoppsettet som vises på bildet, passer fint inn i en gammel pilleflaske. Det er ikke pent, men bra nok for et proof-of-concept.

Mottakeren er på et loddfritt brødbrett fordi det eneste formålet er å vise hvordan du mottar signaler og hvordan du slår noe på/av basert på mottatte koder. Den bruker en LED for å indikere av/på -status, men du kan erstatte den med en relédriver osv. Enhver Arduino kan brukes til mottakeren fordi den ikke trenger å gå tom for et batteri. Hvis størrelsen fortsatt er en vurdering, kan du bruke en annen ATtiny85 -brikke. Nøkkelen er at ATtiny85 må kjøre på 8-MHz i mottakeren. Se min tidligere ATtiny85 Instructable for en enkel skisse som bekrefter at du har endret den interne klokken til 8-MHz. På slutten av min Instructable on sensor -dekoding inkluderer jeg en Arduino Nano -versjon av mottakerprogramvaren. Det er identisk med ATtiny85 -versjonen som er inkludert her bortsett fra et par chipregisterforskjeller.

Som jeg beskrev i mine tidligere RF -instrukser, foretrekker jeg å bruke en mottaker som den vanlige RXB6. Det er en super-heterodyne-mottaker som fungerer mye bedre enn super-regenerative mottakere som vanligvis følger med FS1000A-sendere.

Både sender- og mottakermodulene fungerer bedre med riktige antenner, men de leveres ofte ikke. Du kan kjøpe dem (få riktig frekvens) eller du kan lage din egen. Ved 433 MHz er riktig lengde ca 16 cm for en rett trådantenne. For å lage en spiral, ta ca 16 cm isolert, solid kjernetråd og pakk den rundt noe som en 5/32-tommers borekrone i et enkelt lag. Fjern isolasjonen fra en kort rett seksjon i den ene enden og koble den til sender/mottakerbordet. Jeg har funnet ut at ledningen fra en skrot Ethernet -kabel fungerer godt for antenner. Senderkortet har vanligvis et sted å lodde antennen, men mottakerbordet kan bare ha pinner (som RXB6). Bare sørg for at tilkoblingen er sikker hvis du ikke lodder den.

Trinn 3: Programvare

Senderprogramvaren bruker vanlige teknikker for å sette brikken i hvilemodus. I den modusen trekker den mindre enn 0.2ua strøm. Bryterinngangene (D1-D4) har de interne opptrekkmotstandene slått på, men de trekker ikke strøm før du trykker på en bryter. Inngangene er konfigurert for interrupt-on-change (IOC). Når en bryter trykkes, genereres et avbrudd og det tvinger brikken til å våkne. Avbryterbehandleren utfører omtrent 48 ms forsinkelse for å la bryteren gå av. En sjekk blir deretter utført for å finne ut hvilken bryter som ble trykket, og den riktige rutinen blir kalt. Den overførte meldingen gjentas flere ganger (jeg valgte 5 ganger). Dette er typisk for kommersielle sendere fordi det er så mye RF-trafikk på 433 MHz og 315 MHz der ute. De gjentatte meldingene er med på å sikre at minst én kommer til mottakeren.

Synkroniserings- og bitetiden er definert på forsiden av senderprogramvaren, men databyte er innebygd i hver av de fire knapprutinene. De er åpenbare og enkle å endre, og det er også enkelt å legge til byte for å lage en lengre melding. Alle de samme definisjonene er inkludert i mottakerprogramvaren, så vel som databyte -definisjonene. Hvis du legger til databyte i meldingen, må du endre definisjonen for "Msg_Length" og legge til byte i variabelen "RF_Message". Du må også legge til kode i "RF_Message" -innsjekkingen i "loop" for å bekrefte at de ekstra bytes er godt mottatt og definere disse byte.

Anbefalt: