İçindekiler:

ATtiny85 RF Uzaktan Kumanda: 3 Adım
ATtiny85 RF Uzaktan Kumanda: 3 Adım

Video: ATtiny85 RF Uzaktan Kumanda: 3 Adım

Video: ATtiny85 RF Uzaktan Kumanda: 3 Adım
Video: Raspberry Pi ve Arduino Uno ile 433MHz Alıcı ve Verici kullanılarak kablosuz röle çalıştırılması 2024, Kasım
Anonim
ATtiny85 RF Uzaktan Kumanda
ATtiny85 RF Uzaktan Kumanda

NOT: Eğitilebilir "Sanal Saklambaç Oyunum", bu tür uzaktan kumandanın mesajı otomatik olarak çözen bir RXC6 modülüyle nasıl kullanılacağını gösterir.

Daha önceki bir Eğitilebilir Kitapta bahsettiğim gibi, yakın zamanda bazı ATtiny85 çipleriyle oynamaya başladım. Aklımdaki ilk proje, bozuk para piliyle çalışabilen bir RF uzaktan kumanda yapmaktı. Ham bir çip kullanmam gerekiyordu çünkü sahip olduğum Arduino'ların hiçbiri hem çok düşük güç ihtiyacını hem de nispeten küçük boyutu karşılayamıyor. Değiştirilmiş bir LilyPad yaklaştı ama çip daha iyi bir cevap. Fikir, mevcut bir uzaktan kumandayı kopyalamak değil, kendi verici ve alıcı setinizi nasıl oluşturabileceğinizi göstermekti. Eğlenceli bir öğrenme projesi olmasının yanı sıra kendi “gizli” kod kombinasyonunuzu oluşturmanıza da olanak tanır. Bu basit kodları kırmak oldukça kolay olduğu için tırnak içine "sır" koydum.

Adım 1: RF Mesaj Formatı

RF Mesaj Formatı
RF Mesaj Formatı

Bu proje için, Etekcity RF kablosuz anahtarlarımdan birinin sinyallerini kopyalamayı seçtim (bu modüllerdeki Talimatlarıma bakın). Bunu yaptım çünkü vericimin Etekcity alıcısıyla çalıştığını ve alıcımın Etekcity uzaktan kumandasıyla çalıştığını doğrulayabildim. Ayrıca bu cihazlar için doğru kodların ve formatın ne olduğunu tam olarak biliyorum çünkü onları daha önce yakaladım. Kod yakalama taslağı için "Arduino RF Sensör Şifre Çözücü" Talimatına bakın.

Etekcity çıkışları için kodlar ve formatlar, ucuz RF cihazları için çok tipiktir. Sadece bazı zamanlama varyasyonlarıyla çok benzer formatları kullanan ucuz güvenlik cihazlarım var. Mesaj uzunluğu, uzun bir başlangıç biti ve kısa bir durdurma biti ile uygun bir 24 bittir. Daha fazla bayt veri eklemek ve eşitleme ve veri bitlerinin zamanlamasını değiştirmek için kodu kolayca değiştirebilirsiniz. Yine, bu eskiz sadece bir başlangıç şablonu.

2. Adım: Donanım

Donanım
Donanım
Donanım
Donanım
Donanım
Donanım

Verici madeni para (2032) ile çalışır, bu nedenle düşük güç tüketimi önemlidir. Bunların çoğu yazılımda gerçekleştirilir, ancak ATtiny85'in normalde 1 MHz dahili saatte çalışması buna yardımcı olur. Kural, daha düşük saat frekanslarının daha az güç gerektirmesidir ve 1 MHz, verici mantığı için mükemmeldir.

Kullanmayı sevdiğim gerçek RF verici modülü, yaygın olarak bulunan bir FS1000A'dır. Hem 433 MHz hem de 315 MHz versiyonlarında gelir. Yazılım hangisini kullandığınıza bakmaz, ancak alıcı kartının aynı frekansta çalıştığından emin olmanız gerekir. Projelerimin çoğu 433 MHz aygıtları kullanıyor çünkü biriktirdiğim çeşitli ucuz kablosuz aygıtlar bunu kullanıyor. Resimde gösterilen verici kartı düzeni, eski bir hap şişesine güzel bir şekilde uyuyor. Güzel değil ama bir kavram kanıtı için yeterince iyi.

Alıcı, lehimsiz bir devre tahtası üzerindedir, çünkü tek amacı sinyallerin nasıl alınacağını ve alınan kodlara göre bir şeyin nasıl açılıp kapatılacağını göstermektir. Açık/kapalı durumunu belirtmek için bir LED kullanır, ancak bunu bir röle sürücüsü vb. İle değiştirebilirsiniz. Alıcı için herhangi bir Arduino kullanılabilir, çünkü pilin bitmesi gerekmez. Boyut hala önemliyse, başka bir ATtiny85 yongası kullanabilirsiniz. Anahtar, ATtiny85'in alıcıda 8 MHz'de çalışması gerektiğidir. Dahili saati başarıyla 8-MHz'e değiştirdiğinizi doğrulayan basit bir çizim için önceki ATtiny85 Instructable'ıma bakın. Sensör kod çözme konusundaki Instructable'ımın sonunda, alıcı yazılımının Arduino Nano versiyonunu ekliyorum. Birkaç çip kaydı farkı dışında, burada bulunan ATtiny85 sürümüyle aynıdır.

Daha önceki RF Talimatlarımda detaylandırdığım gibi, genel RXB6 gibi bir alıcı kullanmayı tercih ederim. FS1000A vericileriyle birlikte verilen süper rejeneratif alıcılardan çok daha iyi çalışan süper heterodin bir alıcıdır.

Hem verici hem de alıcı modülleri uygun antenlerle daha iyi çalışır, ancak genellikle tedarik edilmezler. Onları satın alabilir (doğru frekansı elde edebilir) veya kendinizinkini yapabilirsiniz. 433 MHz'de, düz telli bir anten için doğru uzunluk yaklaşık 16 cm'dir. Sarmal bir tane yapmak için, yaklaşık 16 cm yalıtımlı, tek damarlı tel alın ve tek bir katmanda 5/32 inç matkap ucu sapı gibi bir şeyin etrafına sarın. Bir ucundaki kısa düz bölümün yalıtımını soyun ve verici/alıcı kartınıza bağlayın. Hurda bir Ethernet kablosundan gelen telin antenler için iyi çalıştığını buldum. Verici kartında genellikle anteni lehimlemek için bir yer bulunur, ancak alıcı kartında yalnızca pinler olabilir (RXB6 gibi). Sadece lehimlemezseniz bağlantının güvenli olduğundan emin olun.

3. Adım: Yazılım

Verici yazılımı, çipi uyku moduna geçirmek için yaygın teknikler kullanır. Bu modda 0,2ua'dan daha az akım çeker. Anahtar girişlerinde (D1-D4) dahili çekme dirençleri bulunur, ancak bir anahtara basılana kadar herhangi bir akım çekmezler. Girişler, değişimde kesinti (IOC) için yapılandırılmıştır. Bir anahtara basıldığında, bir kesme oluşturulur ve çipi uyanmaya zorlar. Kesme işleyicisi, anahtarın geri dönmesine izin vermek için yaklaşık 48 msn gecikme gerçekleştirir. Ardından hangi anahtara basıldığını belirlemek için bir kontrol yapılır ve uygun rutin çağrılır. İletilen mesaj birkaç kez tekrarlanır (5 kez seçtim). 433 MHz ve 315 MHz'de çok fazla RF trafiği olduğundan, bu ticari vericiler için tipiktir. Tekrarlanan mesajlar, en az birinin alıcıya ulaşmasını sağlamaya yardımcı olur.

Senkronizasyon ve bit süreleri, verici yazılımının önünde tanımlanır, ancak veri baytları, dört düğme rutininin her birine gömülüdür. Açıktır ve değiştirilmesi kolaydır ve daha uzun bir mesaj oluşturmak için bayt eklemek de kolaydır. Aynı tanımlamaların tümü, veri baytı tanımlarının yanı sıra alıcı yazılımına dahil edilmiştir. Mesajınıza veri baytları eklerseniz, “Msg_Length” tanımını değiştirmeniz ve “RF_Message” değişkenine bayt eklemeniz gerekecektir. Fazladan baytların uygun şekilde alındığını doğrulamak ve bu baytları tanımlamak için "döngü"deki "RF_Message" denetimine de kod eklemeniz gerekecektir.

Önerilen: