Pic İle yapılmış RF uzaktan kumanda

Katılım
18 Ocak 2008
Mesajlar
1,068
Puanları
156
Yaş
39
Herkese Tekrar Selamun aleyküm...

Bir çok defa RF uzaktan kumanda yapmak isteyen arkadaşın ihtiyaç duyduğu program ve kodlar olmakta ve yine çoğu defa rf uzaktan kumanda yapmak için çalışan sağlam kodlara ihtiyaç duyulmakta...

Elimde bir zamanlar proje ödevim için yaptığım ve çalıştırdığım bir program vardı ben de Bir çok defa Sorularıma cevap aldığım bir çok kişinin sorularına cevap vermeye çalıştığım daha doğrusu ortamı evimdeki oturma odam ve üyelerini de yıllardır birlikte yaşadığım insanlar gibi gördüğüm bu sitede paylaşmak istedim...

Paylaşacağım kodlar pic basic ile yazılmış çalışan defalarca denenmiş kullanılmış kodlardır Vericide 12F675 alıcıda ise 16F628A kullanılmış her iki pic in de intrc osc yani internal osilatörleri kullanılmıştır...


Programda piclerin hangi pinlerinin ne amaçla kullanıldığı komutlardan gayet net olarak anlaşılabileceği için ayrıca devre şeması paylaşma gereği duymadım sadece kodlar ile çok rahat bir şekilde çözümleme yapılabileceği düşüncesindeyim...

Bu kodlar aynı zamanda başka kumandaların kodlarından etkilenmemeleri için gönderilen verilerin senkronizasyon ve preamble olaylarından sonra şifrelenmesi açısından da çok güzel bir örnektir...

Umarım öğrenci yada diğer arkadaşlar tarafından bir işe yarar...

Alıcı :

Kod:
        INCLUDE "modedefs.bas"
        
    CMCON=7


    INPUT   PORTB.1
    OUTPUT  PORTA.0
    OUTPUT  PORTB.2
    OUTPUT  PORTB.3
    
    SIFRE1 VAR BYTE
    SIFRE2 VAR BYTE
    SIFRE3 VAR BYTE
    SIFRE4 VAR BYTE
    OKU VAR BYTE
    
    TEKRAR  VAR WORD
    
    SIFRE1=0
    SIFRE2=0
    SIFRE3=0 
    SIFRE4=0
    OKU=0
    
    LOW     PORTB.0


BASLA:
    SERIN PORTB.1,N2400,["1984"],OKU,SIFRE1,SIFRE2,SIFRE3,SIFRE4
    IF SIFRE1=1 AND SIFRE2=9 AND SIFRE3=8 AND SIFRE4=4  THEN
    GOTO ATLA
    ELSE
    LOW OKU
    GOTO BASLA
    ENDIF
ATLA:
    IF  OKU=10  THEN
    HIGH    PORTB.2
    PAUSE   25000
    HIGH    PORTB.3
    ENDIF
    IF  OKU=20  THEN
    LOW     PORTB.2
    LOW     PORTB.3
    ENDIF 
    GOTO    BASLA  
    END

Verici :

Kod:
INCLUDE "modedefs.bas"


CMCON=7
ANSEL=0
SIFRE1 VAR BYTE
SIFRE2 VAR BYTE
SIFRE3 VAR BYTE
SIFRE4 VAR BYTE


SIFRE1=1
SIFRE2=9
SIFRE3=8 
SIFRE4=4




INPUT   GPIO.2
INPUT   GPIO.1


AC      VAR GPIO.2
KAPA    VAR GPIO.1


OUTPUT GPIO.4
LOW    GPIO.4


GON VAR BYTE
GON=0


BASLA:
IF AC=1 THEN
GON=10
SEROUT GPIO.4,N2400,[GON,SIFRE1,SIFRE2,SIFRE3,SIFRE4,"1984"]
ENDIF
IF  KAPA=1  THEN
GON=20
SEROUT GPIO.4,N2400,[GON,SIFRE1,SIFRE2,SIFRE3,SIFRE4,"1984"]
ENDIF
GOTO BASLA
END
 
Düz mantık işlerden vazgeçsek harika olacak. Tamam çalışıyo belki ama olması gereken bu değil. Seri port gibi yazabilmek için seri bilgi kabul eden verici alıcı kullanmak gerek aksi halde uydurma iş oluyor bu yöntem
 
Düz mantık işlerden vazgeçsek harika olacak. Tamam çalışıyo belki ama olması gereken bu değil. Seri port gibi yazabilmek için seri bilgi kabul eden verici alıcı kullanmak gerek aksi halde uydurma iş oluyor bu yöntem


Olması gereken nasıl olacak peki yani ben de yorum yaparım yorum yapması muhalefet yapması mevzu değil de şu olması gerekeni ve düz mantık olmayan şeklini biraz tarif edebilirmisin @silvestir ?


Seri port gibi yazabilmek için seri bilgi kabul eden verici alıcı kullanmak gerek

Bu kısmı Özellikle açıklarsan memnun olurum!!!
 
Ya [MENTION=219310]silvestir[/MENTION] usta bu benim paylaştığım sistem çalışıyor seri port iletişimi yapıyor dikkatinizi çekti ise serin ve serout komutları var 2400 baud rata var yani iletişim hızı yanlız tek sıkıntı pic'in dahili kaynaklarını kullanarak asenkron seri iletişim yapmıyor da yazılım ile yapıyor Yani şu şekilde de düşünebiliriz PIN'LERDE ÖZGÜRLÜK SAĞLIYOR DONANIMA BAĞIMLI KALMADAN ÇALIŞIYORSUNUZ ÇÜNKİ KUMANDA İLE FARKLI BİR İŞLEM YAPMAYA İHTİYACINIZ YOK TUŞA BASARSANIZ ÇIKIŞA VERİ AKTARACAK HEPSİ BU.

Kumandalarda en önemli olay Ask modulasyonunda manchester kodu olayıdır bu manchester kodundaki amaçta vericiden gelen sinyaller ile alıcıyı uyandırıp verici ile alıcıyı senkronize edip ardından da asıl iş yapacak olan datayı yollamaktır ve gerisi teferruattır...

Yani sizinki HATİCE ye bakmaktır benimki NETİCE ye bakmaktır :D ha bekarım yakışıklıyım elimden bir çok iş gelir kafama göre bir hatice bulursam elbet ona da bakarım hem de itina ile :D

Son olarak eklemeyi unutmadan ilk yazımda belirtmeyi unutmuşum bu program ile UDEA nın ARX34 ve ATX34 modülleri çalıştırılmıştır yani 433.9MHZ ASK modulasyonlu alıcı vericiler için tasarlanmış bir programdır.
 
Valla tüm dünya ya Manchester ile atıyor ya da darbe genişlik modülasyonu ile. Yok ben illa Türk zihniyetiyle seri göndericem diyorsan bunu gönder göreyim data[]={0,0,0,0,0,0,0}
 
O söylediğin datayı da yollarım da sen boş geç onu bana şimdi Sanalda hava atma mühendis abi şimdi bana lazım olan devreyi söyliyim de biraz o konuda kafa yoralım...

Elimde 2 tane farklı rf kumanda var 1 tane de bu kumandalar ile hiç alakası olmayan bir alıcı devre var 4 röleli alıcı devre pic ile yapılmış verici kumandalar ise pt2260 ile

Şimdi ben bu alıcı devrenin arx34 katından bir şase bir de data kablosunu alıp kendi pic ile yaptığım devreye giricem ve herhangi bir kumandadan gelen sinyallerin kodlarını 4x20 lcd ekranda göstercem...

Burada herhangi bir kumanda dediğim ister pic ile yapılmış kumanda olsun ister pt ile ister başka bir entegre ile ne olursa olsun o kumandadan gelen sinyaller benim lcd ekranımda görünsün istiyorum

Şimdi buyur burdan yak bakalım SENİ VE CCS C Yİ GÖRELİM.
 
Böyle genel amaçlı birşey yapabilmek mümkün değil. Bende kablosuz alarm sistemi var, bunun veri taşıma sistemini çözdüm ve istediğim gibi pic kullanarak alarma kablosuz sensör veya kumanda ekleyebiliyorum ama önce veri tipini çözmek lazım

ayrıca hava atacak olsam ismimi yazarım böyle ne havası atayım. Amaç yapılan şeyi doğru yapılmasını sağlamak. Yoksa nasıl yaparsan yap derdim değil bi faydası yok. Ben öğrenmek istemiyorum aklım bana yeter diyorsan bildiğin tarz devam et. O datayı da yolla seri olarak ben de bu foruma bir daha girmem.
 
Bak [MENTION=219310]silvestir[/MENTION] ustam sırf sen bu siteye gir ve paylaşım yap diye o datayı yollamıyacam :D

Gelelim öğrenme konusuna yaşım 30 ve hayat felsefem hep 1+1 yani hep bir biliyorsam üstüne bir daha eklemek ;)

Eklediğim konuya değineyim birazda ; Bir sürü öğrenci oluyo rf ile kumanda yapmak isteyen öğrencinin yanı sıra pic ile uğraşanlar da kumanda yapmak istiyorlar...

Amacım ukalalık yapmak değil site içinde paylaşım yapmak peki niçin paylaşım yapılır ? Sende yoksa sende de olsun diye Şimdi sende yoksa bundan bana ne dersen şöyle bir düşüncem var : Bende yoksa sende vardır ;) ben bendekinin kopyasını versem bişiy kaybetmem kökü bende ama sen bendeki ile iki olursun ben de sendeki ile iki olurum.

Gelelim günün tartışma konusuna Ben bir zamanlar ihtiyaç duydum deli divane gibi bu programı aradım sonunda çalıştırdım kullandım işime yaradı o an için bütün dertlerime deva oldu, birisine daha lazım olur belki, amacı ile ben de paylaştım söylediğin gibi amacım hava atmak ukalalık yapmak olsa ben de herhalde isim yazardım :D

Haaaa belki yanlış yapmışımdır belki doğru yapmışımdır ama burda senin gerçekten iyi bildiğin bir konu ise ve çalıştırdığın garanti bir durum ise sen de sende olanı paylaşırsın yönetici arkadaşlardan ricada bulunuruz faydalı bir link sabit kalmasını istiyoruz deriz yönetici arkadaşlarda zaten cidden konuya çok hassas ve paylaşımcı ruhlu insanlar onlar da gereğini yaparlar konuyu sabitlerler...

Sonuçta CCSC ile yapmak isteyen senin projeni kullanır ihtiyacını karşılar pic basic ile yapmak isteyen de benim elimdeki projeyi kullanır ihtiyacını karşılar.

Ben de bu aralar mikroC ile ARM lere çalışıyorum STM32F407 discovery kit ile STM32F429 discovery kitleri satın aldım mikroC ile arm programlama kitabı satın aldım elimde olan malzemelerle ( lcd ekran - buton - led - tuş takımı - rf alıcı verici - vb ) elimden geldiği kadar boş zamanlarımda kendimi geliştirmek için çaba harcıyorum haa bizim yaptıklarımız devede kulak bile değil biz iki tane kit satın alacak parayı bağlarken zor geliyo adamlar proje baabında bize servet olacak paraları sermaye olarak bağlıyorlar yani bizim yaptığımız hobiden öte değil...Öğrenci projelerini öteye geçmiş sayılmayız.

Dediğim gibi çalıştırdığın ve kesin olarak ben yaptım çalışıyor dediğin bişiyler varsa ve paylaşmak istersen gerçekten forum adına çok memnun olurum hatta yönetici arkadaşlardan da ricada bulunur dediğim gibi sabitlenmesini isteriz...

Ama benim işime yaradı kullandım başkaları da sıkıntı çekmesin 1 satır kod bile bir dünya zaman harcamaya neden olabiliyor işte hazır kod demişim paylaşmışım

Sende kalkıp Düz mantık oluyo diyeceğine Düz mantık işlerden vazgeçsek harika olacak. Tamam çalışıyo belki ama olması gereken bu değil. Seri port gibi yazabilmek için seri bilgi kabul eden verici alıcı kullanmak gerek aksi halde uydurma iş oluyor bu yöntem

Diyeceğine kardeş şurasını şöyle yapsaydın daha iyi olurdu bak işin doğrusu bu bu senin yaptığın aslında seri port gibi bilgi kabul etmiyo ama xxxx şeklinde yapsan gerçek bir seri port gibi bilgi kabul ederdi deseydin gerçekten saygı duyardım Ha saygı gene duyuyorum ama yaptığın davranış şekli yanlıştır burda Gerçekten senin bir konuyu çok iyi biliyor olman hiç önemli değil önemli olan gerçekci ve insanları bilmiyor yanlış yapmış diye küçük görmeden bilgiyi verip adım attırmak için paylaşman gerekir mesaj sayım artsın için değil ;) Belki amacın bu değildir orasını da bilemem belki çok dürüst ve içinden gelerek yazmış olabilirsin ama benim için bu tarz bir yazı baştan aşağı insanın öğrenmeye ve paylaşmaya karşı olan hevesini kırmaktadır ve hiç de nezaketli bir davranış değildir...

Dikkat ederseniz ben hiç bir zaman bir projenin tamamını paylaşmam Seri port ile iletişim yapmışımdır ama sadece seri portun açılması ve kod gönderip alma şekilleri ile alakası olan kod kısmını örnek ile yapıp küçük bir parçacığını paylaşırım ama ilgilenen insan ben bu kodu yazarsam seri port açılıyormuş der ve çözüme ulaşır ha ilgilenen insan hiç bişiy bilmeyerek ilgileniyordur o da şu komut niçin diye sorar ben de bildiğim kadarı ile ( sonuçta allame değilim prof değilim mühendis değilim yazılımcı değilim ) şu kısmı şunun için kullandım derim yada ben demessem bilen biri mutlaka bişiy der önemli olan paylaşmaktır...

Zaten okullarda eğitim seviyesi ayaklar altında sürükleniyor teşvik yok her taraf tüketim amaçlı yetiştiriliyor e arada bir iki kişi bişiyler için çabalıyorsa en azından elinden tutulması gerekir Ben de çabalıyorum benim gibi bir sürü insan da çabalıyor ben dara kalınca soruyorum cevap alıyorum ama kimse de bana bütün proje vermiyor doğrusu da bu Bu vatanın evlatları bu milletin evlatları bişiy için çaba gösteriyorsa desteklenmeli kösteklenmemeli ;)

Belki yazım uzun oldu ama gerçekten doğru olduğuna inanıyorum yanlışım varsa da lütfen kim olursa olsun uyarsın...
 
Çok derdim değil, kafanıza göre takılın.
 

Forum istatistikleri

Konular
128,126
Mesajlar
915,254
Kullanıcılar
449,841
Son üye
nazoyata

Yeni konular

Geri
Üst