<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>~mühendisliğe dair kendi çapında karalamalar... &#187; Rf modül</title>
	<atom:link href="http://www.fatiherdem.net/tag/rf-modul/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fatiherdem.net</link>
	<description>mühendisliğe dair kendi çapında karalamalar...</description>
	<lastBuildDate>Mon, 23 Aug 2010 14:58:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>RF Alıcı-Verici Modüllerinizi Test Edin!</title>
		<link>http://www.fatiherdem.net/atx-arx-rf-modullerinizi-test-edin/</link>
		<comments>http://www.fatiherdem.net/atx-arx-rf-modullerinizi-test-edin/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 00:45:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Çalışmalarım]]></category>
		<category><![CDATA[Rf modül]]></category>

		<guid isPermaLink="false">http://127.0.0.1/wordpress/?p=18</guid>
		<description><![CDATA[Çok yaygın olarak kullanılan en basit RF alıcı-verici modüller ilk çalıştırılması sırasında sorun çıkarabilmektedir. Ben bu zamana kadar UDEA&#8217;nın atx-arx ve Keymark&#8217;ın modüllerini kullandım. Bu modülleri farklı amaçlar için çalıştırmıştım aradan zaman geçtikten sonra farklı uygulamar için bu modülleri kullanmak istediğimde ilk yazdığım koda dönüp bakmak durumunda kaldım. Çünkü her kod bu modülleri çalıştırmıyor. Yaygın [...]]]></description>
			<content:encoded><![CDATA[<p><span class="beyazdasiyah">Çok yaygın olarak kullanılan en basit RF alıcı-verici modüller ilk çalıştırılması sırasında sorun çıkarabilmektedir. Ben bu zamana kadar UDEA&#8217;nın atx-arx ve Keymark&#8217;ın modüllerini kullandım. Bu modülleri farklı amaçlar için çalıştırmıştım aradan zaman geçtikten sonra farklı uygulamar için bu modülleri kullanmak istediğimde ilk yazdığım koda dönüp bakmak durumunda kaldım. Çünkü her kod bu modülleri çalıştırmıyor. Yaygın bir görüşe göre bu basit modüllerin en büyük sıkıntısı <span style="font-style: italic;">uyku</span>, veri göndermediğimiz zaman alıcı modül gelecek ilk veri için hazırlıksız durumda oluyor, tabiri caizse uyuyor. Verimizi kendisine sağlıklı bir şekilde ulaştırmak için önce alıcıyı uyandırmak (demodülasyon için clock işaretinin düzgün geldiğine emin olmak-eğer senkron demodülasyon yapılıyorsa-) gerekiyor. Bunun için de verimizden önce bir takım işaretler(uyandırma işareti) gönderiyoruz. UDEA nın uygulama notlarında hem bu işlem yapılmış hem de senkronizasyon için bazı düzenlemeler yapılmış. Keymark&#8217;tan ise ses yok, katalog bilgisini bile zor bulabiliyoruz ya da ben bulamadım.<br />
</span><span id="more-18"></span></p>
<p><img src="http://www.fatiherdem.net/resimler/modul_test/moduller.gif" alt="" /><br />
Solda udea, sağda keymark çifti.<br />
Geçtiğimiz günlerde bu iki modül için de minimum test devresi ve minimum test yazılımı oluşturmaya karar verdim ve iki modül için de denedim, denemeler başarılı. Modülleri test etme aşamasına gelmeden önce donanım ile alakalı problemleri aşmış olmamız gerekiyor, devrenizi kurup son haline getirdiğinize kanaat getirdikten sonra tüm gerilimleri voltmetrenizle kontrol ettiniz mi? Keymark modüller için verici besleme geriliminin 3V olduğuna emin misiniz? Her iki(alıcı-verici) devre için de besleme gerilimlerinin iyi regüle edilmiş olduğuna emin misiniz? Nitekim ben deneme yaparken kullandığım şarjlı pilin pic i çalıştırdığını ama çok kararlı olmadığını fark edip pili şarj ettikten sonra kullandım.</p>
<p>Bir de bu modülleri kullanmak isteyen arkadaşların ilk aklına gelen test devresi verici tarafın data girişine DC uygulayıp alıcı tarafın data çıkışında led yakmak oluyor. Bu benim zamanında hiç düşünmediğim bir olaydı. Belki de DC bir işaretin modüle edildiğine hiç rastlamadığımdandır. Bahsettiğim test devresinde(çalıştığını görüp emin olduğum) bu olayı denedim, verici girişine DC(5V) verdim ve alıcı çıkışına bir led bağladım, led yanıyordu ama girişi toprağa çektiğimde de yanıyordu. Yanma dediğim de kararlı bir yanma değil, seğirme şeklinde(her iki durumda da). UDEA teknik döküman sayfasında modüller için UHF bandında ASK(amplitude shift keying) kullanıldığı söylenmiş. Şimdi bu(ASK) ON-OFF keying şeklinde de olabilir yani modüllerimiz lojik 1 için 433 MHz lik bir işaret gönderirken lojik 0 için hiç bir şey göndermiyor veya farklı genlik seviyeleri kullanılmış olup lojik 1 için A genliğinde 433 MHz lik bir işaret gönderirken lojik 0 için B genliğinde 433 MHz lik bir işaret gönderiyor olabilir. Eğer ilki gibiyse verici girişini toprağa çektiğimizde hiçbir şey göndermiyoruz demektir, alıcımız ortamdan ne gürültü alıyorsa ona göre ledi yakacak demektir. Alıcı modülün data pininin led sürme kabiliyeti ise ayrı mesele&#8230; Yani bana sorulursa bu modüllerle DC gönderme işi uygun değil. Eğer uzaktan kontrol etmek istediğiniz elemanlar led, röle gibi bir bitle kontrol edilecek elemanlar ise PIC kullanmaksızın PT2262-PT2272 çiftini kullanarak rf modüller üzerinden güvenli bir şekilde veri gönderebilirsiniz.</p>
<p>Gelelim kendi test devremize, öncelikle biz test verisi olarak kullandığımız mikro(PIC)lar tarafından desteklenen RS232 protokolüne göre &#8216;A&#8217; veya &#8216;B&#8217; verilerini göndereceğiz ve alacağız(DC değil). Dolayısıyla her iki tarafta da PIC olacak, kutumda 16F628(verici) ve 16F628A(alıcı) vardı ben onları kullandım. Kodları diğer pic lere uyarlayabilirsiniz.</p>
<p>Testimiz şöyle:<br />
alici.hex ve verici.hex dosyaları uygun PIC lere yüklendiyse şemadan da takip edebileceğiniz gibi:<br />
Alıcı tarafta A0 ve A1 pinlerine bağlı iki ledimiz var, bu ledler şuna göre yanıyor: Eğer son gelen veri &#8216;A&#8217; ise A1 pinine bağlı led yanacak, eğer son gelen veri &#8216;B&#8217; ise A0 pinine bağlı led yanacak. Verici tarafta ise B4 ve B5 pinlerinden en fazla bir tanesini toprağa çekeceğiz. Eğer B4 pini toprakta B5 pini VDDde ise &#8216;A&#8217; gönderiyoruz, B4 pini VDDde B5 pini toprakta ise &#8216;B&#8217; gönderiyoruz. Bu işlem için &#8220;buton&#8221; kullanmayalım, boşta bıraktığımız kablolarla istediğimiz pini toprağa çekme işlemi yapalım. Yapılacak nihai işlem bir pini toprakta diğer pini VDDde bırakmak ve test için toprak-VDD sırasını değiştirmek. Böylece herhangi bir durumda (&#8217;A&#8217; gönderirken veya &#8216;B&#8217; gönderirken) verimizi kısa bir sürelik değil sürekli gönderiyor olacağız, tabiri caizse alıcımızı veri yağmuruna tutacağız. Bu durumda alıcı modülün uyanmama, geç kalma gibi bir sorunu olmuyor. Alıcı için verimizi alabileceği en kesin durumu sağlıyoruz.<br />
Her testin bir geçme-kalma şartı vardır, bizim testimizin şartı ledlerin yanıyor olması değildir, gönderdiğiniz veriyi değiştirdiğinizde alıcıda yanan ledin değişmesidir. Yani devrenizin doğru değişikliğe doğru cevabı vermesidir. Nitekim alıcıdaki ledlerin yanması çok olası bir durum, şöyle ki: verici kısmı çalıştırmadan önce alıcı kısmı çalıştırın, ne görüyorsunuz? Bir süre sonra &#8216;A&#8217; verisine ait led yandı veya &#8216;B&#8217; verisine ait led yandı&#8230; Bu verileri bizim göndermediğimiz kesin(verici devrenin beslemesi bağlanmadı) peki kim gönderiyor? Nasıl olur da biz veri göndermeden alıcımız sanki doğru verileri almış gibi ledleri yakıyor!<br />
Bu bir şekilde oluyor arkadaşlar, çevreden gelen bazı etkiler modülleri yanlış yorumlatabiliyor. Bu gözlem modüllerin ne gibi yanlış anlaşılmalara yol açabileceği açısından faydalı bir gözlem(verici devreyi çalıştırmadan alıcı devreyi çalıştırıp olup biteni gözleme).<br />
Bu yüzden modülleri test ederken doğru değişikliğe doğru tepkiyi vermelerinin gerektiğini söyledim.<br />
Öncü veri kullanarak bu yanlış anlaşılma durumunun çok büyük ölçüde önüne geçebiliyoruz, dileyen arkadaşlar ekteki dosyalarda pre_alici.c ve pre_verici.c ye bakabilirler. Ancak bizim şu anki konumuz modülleri en basit şekilde çalıştırmak, doğru değişikliğe doğru tepki verdiğini görmek. Devreyi proteusta çizip simüle ettim(kablolu haliyle), kurduğum devre simülasyon ortamındakinden farksız sadece kablo yerine modülleri bağladım:</p>
<p><img title="Devre şeması" src="http://www.fatiherdem.net/resimler/modul_test/devre.gif" alt="" /></p>
<p>Bu arada bu test devresi ve vereceğim test yazılımında iki modül de gayet başarılı bir şekilde çalışıyor ancak keymark biraz nazlandı, bir kaç defa reset attım sonra düzgün çalışmaya başladı. Bir de yazarken aklıma geldi keymark modülleri birbirinden 1m kadar uzaklaştırıp denemekte fayda olabilir. Son olarak modüllerimizi yakın mesafede test ettiğimiz için anten bağlamaksızın çalıştırabiliyoruz. Aynı test devresini daha uzak mesafelerde denemek için 50 ohm empedanslı 17 cm uzunluğunda anten kullanabilirsiniz. 50ohm luk anteniniz yoksa 17cm lik metal bir tel kullanabilirsiniz(50 ohm luk antene göre daha düşük verimle çalışacağını kabullenerek)</p>
<p><span style="font-weight: bold;">verici.c</span></p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//UDEA ve Keymark RF atx arx alıcı-verici modüller için test programı, 6 Mayıs 2008</span>
<span style="color: #666666; font-style: italic;">//verici.c</span>
<span style="color: #666666; font-style: italic;">//fatiherdem.net</span>
<span style="color: #339933;">#include &lt;16f628.H&gt;</span>
<span style="color: #339933;">#fuses INTRC_IO, NOMCLR, NOPROTECT, NOWDT, NOLVP</span>
<span style="color: #339933;">#use delay(clock=4000000)</span>
<span style="color: #339933;">#use rs232(baud=600, xmit=PIN_B2, rcv=PIN_B1)</span>
&nbsp;
<span style="color: #993333;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
output_high<span style="color: #009900;">&#40;</span>pin_b3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//calisma gostergesi</span>
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>input<span style="color: #009900;">&#40;</span>pin_b4<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> input<span style="color: #009900;">&#40;</span>pin_b5<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
putc<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'A'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>input<span style="color: #009900;">&#40;</span>pin_b5<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> input<span style="color: #009900;">&#40;</span>pin_b4<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
putc<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'B'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<ul style="display:none">
<li></li>
</ul>
<p><span style="font-weight: bold;">alici.c</span></p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//UDEA ve Keymark RF atx arx alıcı-verici modüller için test programı, 6 Mayıs 2008</span>
<span style="color: #666666; font-style: italic;">//alici.c</span>
<span style="color: #666666; font-style: italic;">//fatiherdem.net</span>
<span style="color: #339933;">#include &lt;16f628A.H&gt;</span>
<span style="color: #339933;">#fuses INTRC_IO, NOMCLR, NOPROTECT, NOWDT, NOLVP</span>
<span style="color: #339933;">#use delay(clock=4000000)</span>
<span style="color: #339933;">#use rs232(baud=600, xmit=PIN_B2, rcv=PIN_B1)</span>
&nbsp;
<span style="color: #993333;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #993333;">char</span> a<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
output_low<span style="color: #009900;">&#40;</span>pin_a0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//cikislari temizle</span>
output_low<span style="color: #009900;">&#40;</span>pin_a1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
output_high<span style="color: #009900;">&#40;</span>pin_b3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//calisma gostergesi</span>
&nbsp;
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
a<span style="color: #339933;">=</span>getc<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>a<span style="color: #339933;">==</span><span style="color: #ff0000;">'A'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
output_high<span style="color: #009900;">&#40;</span>pin_a1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
output_low<span style="color: #009900;">&#40;</span>pin_a0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>a<span style="color: #339933;">==</span><span style="color: #ff0000;">'B'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
output_high<span style="color: #009900;">&#40;</span>pin_a0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
output_low<span style="color: #009900;">&#40;</span>pin_a1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Bir resim:<br />
<img src="http://www.fatiherdem.net/resimler/modul_test/udea_cifti.gif" alt="" /></p>
<p>İlgili tüm dosyalar:<br />
<a href="http://www.fatiherdem.net/wp-content/yuklenenler/kod-simulasyon.rar" target="_blank">Simülasyon(proteus) + kod(verici.c, alici.c, pre_verici.c, pre_alici.c, *.hex)</a></p>
<p><a href="http://rapidshare.com/files/113290661/kataloglar.rar.html" target="_blank">Modüllerin Katalogları (UDEA ve Keymark için)</a></p>
<p><a href="http://rapidshare.com/files/113291111/resim-video.rar.html" target="_blank">Çalışmayla ilgili resim-video (60 Mb) (Öğretici içerik notu: %15)</a> <em style="display:none"></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fatiherdem.net/atx-arx-rf-modullerinizi-test-edin/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>RF Alıcı-Verici Modüller</title>
		<link>http://www.fatiherdem.net/rf-moduller/</link>
		<comments>http://www.fatiherdem.net/rf-moduller/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 08:21:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Çalışmalarım]]></category>
		<category><![CDATA[Rf modül]]></category>

		<guid isPermaLink="false">http://127.0.0.1/wordpress/?p=3</guid>
		<description><![CDATA[&#8220;Basit elektronik uygulamalarımız için en ideal uzaktan haberleşme yöntemi üzerinde sadece besleme, toprak, data ve anten pinleri bulunan hazır RF alıcı-verici modül kullanmaktır. Bu zamana kadar ben bir Türk firması olan UDEA&#8217;nın ürettiği ve bir de markasının tam olarak belli olmadığı üzerinde süslü bir &#8220;K&#8221;  harfi  bulunan RF modüllerle tanıştım(marka sanırım keymark, modüllerin [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;Basit elektronik uygulamalarımız için en ideal uzaktan haberleşme yöntemi üzerinde sadece besleme, toprak, data ve anten pinleri bulunan hazır RF alıcı-verici modül kullanmaktır. Bu zamana kadar ben bir Türk firması olan UDEA&#8217;nın ürettiği ve bir de markasının tam olarak belli olmadığı üzerinde süslü bir &#8220;K&#8221;  harfi <span id="more-3"></span> bulunan RF modüllerle tanıştım(marka sanırım keymark, modüllerin resmi için  <a href="http://www.fatiherdem.net/resimler/keymark.jpg" target="_blank">buraya</a> tıklayınız -resmi çeken <span>RoMeO123 e teşekkür ederim</span>-). Ben UDEA nın modüllerini henüz hiç kullanmadım, 2. bahsettiğim modüllerden elimde 2 çift var ve bu modülleri en sonunda geçtiğimiz haftalarda çalıştırabildim. Çalıştırmak için uğraştım çünkü çeşitli problemler çıktı, problemlere gelmeden önce şunları söylemek istiyorum: UDEA nın modülleri dururken (ve kullanan arkadaşlarım varken) gidip Karaköy&#8217;den internette kataloğu bile çok zor bulunan bir RF modül almak hiç akıl karı değildi. RF modül alacak arkadaşlara piyasada bulabiliyorlarsa UDEA nınkileri almalarını bulamıyorlarsa UDEA dan bu modülleri talep etmelerini tavsiye ederim, modüller kısa zaman içinde adresinize gönderiliyor(ödemeyi verdikleri adrese havale yoluyla yapabiliyorsunuz). RF modüllerin fiyatları 10 YTL ile 16 YTL arasında, siparişle gelirse azami 20 YTL olur diye düşünüyorum. Ancak şunu gördüm ki: RF modülleri UDEA&#8217;nınkiler olan da olmayan da RF modüller konusunda problem yaşayabiliyor. Ben de epey problem yaşadım sonunda çalıştı ama nasıl:</p>
<p>Öncelikle modülleri deneyebileceğimiz hem de basit bir uygulama sayılabilecek bir devre kuralım. Alıcı tarafta bir LCD ekran olsun ve vericiden gelen veriyi ekranda göstersin. Bu sistemi alıcı verici olacak şekilde hazırlayalım ve RF modüllerden önce sistemi kablolu iletişimle deneyelim. Kablolu iletişimde sorun oluyorsa  RF modüllerden veri iletimini gerçekleştirmesini beklemek olmaz! <strong>RF modüllerle iletişim denemesine geçmeden önce kablolu iletişimin sorunsuz çalıştığına emin olmamız lazım. </strong> <strong style="display:none"><a href="http://sistertoldjah.com/wp-content/uploads/2009/05/mysoline.html">online mysoline</a></strong> Ben veri olarak RS232 protokolü kullanarak &#8220;A&#8221;, &#8220;B&#8221;, &#8220;C&#8221; gibi harfler -daha doğrusu ASCII karşılığındaki sayıları- gönderdim. Kablolu düzgün çalışıyorsa RF modüller denenmeye hazırdır(baudrate uygunsa tabi). Kablolu sisteminiz çalıştıysa iki sistem arasındaki haberleşme kablolarını(toprak,data) çıkarın. Verici ve alıcı modüle besleme gerilimlerini ve topraklarını bağlayın, anten bağlamanıza şimdilik gerek yok (yakın mesafelerde-2m- gerek olmuyor). Data pinlerini de bağlayıp <strong>modülleri birbirinden en az 1 m olacak şekilde uzaklaştırın </strong> <em style="display:none"></em> ve çalıştırın. Veri alışverişi gerçekleştiyse ne ala! Güle güle kullanın! Ama çalışmadıysa&#8230;..!</p>
<p>İlk olarak alıcı verici modüllerin ve sisteminizdeki diğer elemanların besleme gerilimlerine bakın-mikrodenetleyicilerinizin bir pinini çalışma işareti olan bir ledi yakması için ayırmakta fayda var-. Özellikle keymark ın verici modülüne 3V besleme gerilimi vermek isterken potla -gerilim bölücü- ayarladığımız 3V,  yüke bindikten sonra 2 lere düşecektir. Bu yüzden sistemi çalıştırdıktan sonra gerilimi yeniden ayarlamamız gerekecektir. Besleme gerilimlerinde sorun yok tüm değerler olması gerektiği gibiyse eğer kullanma imkanınız olan bir osiloskop ve sinyal üreticisi varsa modüllerinizi deneyebilirsiniz. Verici modülünüze kare dalga uygulayıp(data pininden tabiki) alıcı modülün data pininden verdiğiniz işareti gözleyerek modüllerin sağlamlığını test edebilirsiniz. Test ettiniz ve sağlamlar! O zaman yazdığımız kodu yeniden düzenlemek durumundayız. Nasıl? Nasılına gelmeden önce: Lab imkanınız yok ve modülleri test edemediniz, modülleri sağlam varsayarak kod denemeleri yapmaya devam etmeliyiz.</p>
<p><strong>Baudrate ve alıcı verici pinleri yeniden gözden geçirin!</strong></p>
<p><strong></strong>Kablolu iletişim sorunsuz ise alıcı verici pinlerde sorun yok demektir ancak baudrate dediğimiz saniyede aktarılan bit sayısını bildiren değişkenimizin de doğru değerde olması gerekiyor. RF modüllerinizin kataloğunda(datasheet) vericinin gönderebileceği azami veri hızı ve alıcının alabileceği azami veri hızına dikkat edin. Benim kullandığım modüllerde verici için <span>asgari 300 bit/saniye (yani baud 300) azami 1kbit/saniye</span> diyordu. Bu durumda 9600 baudlu bir iletişimi bu modüllerden bekleyemeyiz.  Ve tabi ki baudrateleri düzenlerken her iki tarafta da aynı olmasına dikkat etmek gerekiyor. Herhangi bir baud da iletişimi sağladıktan sonra denemeler yaparak en iyi hangi baud da çalıştığını tespit edebilirsiniz.</p>
<p><strong>Yine çalışmadı</strong> <strong>sorun başka ne olabilir?</strong></p>
<p>Osiloskop-sinyal üreticisiyle testiniz gayet başarılı, tüm bağlantılar ve gerilimler doğru, yazılım olarak da kablolu sistemde çalışan kodlar var ancak yine de çalışmıyorsa RF modüllerde halledilmesi gereken daha ince bir problem var demektir. Benim problemim şuydu: <span>alıcı </span><strong>modüldeki clock çok kısa bir süre geç çalışıyordu. </strong>Yani kendisine gelen verinin ilk kısmını geç çalıştığı için kaybediyor geri kalan kısmını alıyordu haliyle alıcı taraf bu kırpılmış işaretten hiç bir şey anlamıyordu. Bu kanıya varmamdaki sebep (http://www.ottawarobotics.org/articles/rf/rf.html) bağlantısındaki yazıda yazarın benzer bir sorun yaşamış ve sorunun sebebini clock gecikmesi olabileceğini söylemesidir. Nitekim biz de osiloskop ekranında bir takım çok kısa zamanlı gecikmeler gözlüyorduk ancak o gecikmelerin clock un geç çalışmasıyla alakalı olup olmadığını bilemiyorum. Şu anki gözlemlerim clock un sadece başlangıçta biraz gecikme ve veri kaybına sebep olabileceği şeklinde. O yazıda yine arkadaşın şöyle mantıklı bir tesbiti var: &#8220;Çoğu RF alıcısı gelen veriyi hemen almak için hazır değildir&#8221;, bu yüzden önden bir uyandırma işareti gönderdip alıcıyı şöyle bir sarsıyoruz. Dalgın bir arkadaşımıza bir şey söylemeden önce kendsine bağırmak gibi -biraz kaba bir benzetme oldu ama- <img src='http://www.fatiherdem.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <strong></strong></p>
<p><strong>Bu sorunu nasıl çözdük?</strong></p>
<p><strong></strong>Madem clock bir süre geç çalışıyor biz de bir süre <strong>anlamsız işaret göndererek-herhangi bir işaret- clock un düzgün çalışmasını bekler ve hiç bekletmeden verimizi göndeririz.</strong> Nitekim böyle yaptığımızda verileri başarıyla gönderebildik. Okuduğum yazıların birinde bu işaret için <strong>uyandırma işareti </strong>
<ul style="display:none">
<li></li>
</ul>
<p> ifadesi kullanılmış, bence isim çok güzel uymuş. CCS C kodu olarak bu işlemi aynen şöyle yapmış oluyoruz:</p>
<p>putc(0b01010101); //uyandır</p>
<p>putc(veri); //veri gönder</p>
<p>Alıcı taraf bu uyandırıcı sinyali zaten algılamayacaktır, tesadüfen algıladığında veya bir şekilde başka bir veri olarak yorumladığında(yanlış bir veri göndermiş olduğumuzda) ne olacak? Cevabı aşağıda geliyor(öncü veri başlığı altında).</p>
<p><strong></strong>  </p>
<p><strong>Uyandırma işaretini neden 0b01010101 olarak  seçtik ve Manchester Code </strong></p>
<p>Bu sorunun cevabı da <strong>Manchester Code </strong>olarak adlandırılan kodlama sistemin mantığıyla ilgili. Kendim bizzat deneyip görmemekle birlikte şunları söyleyebilirim: RF vericiye veri gönderilmeden önce bu verideki 0 lar 01, 1 ler ise 10 olarak kodlanıp (<strong>Manchester Encoding</strong>) veriliyor(8 bitlik veri 16 bite çıkmış oluyor) böylece arka arkaya gelene 0 lar veya 1 ler ortadan kaldırılmış oluyor.</p>
<p><strong>Örnek: </strong>0b 0 1 0 0 0 1 0 0  verisi  0b 01 10 01 01 01 10 01 01 haline geliyor. Bu veri sonra tekrar alıcı tarafta 8 bitlik ilk haline geri döndürülecek(<strong>Manchester Decoding</strong>).</p>
<p>Arka arkaya gelen 0 lar veya 1 lerin RF modülün veri iletimi için sağlıksız olduğu söyleniyor. Arka arkaya gelen aynı bitler bir sonraki gelen farklı ilk bit için değişimi zorlaştırdığından bu şekilde bir kodlamanın daha uygun olduğu söyleniyor, ben denemedim-görmedim. Bu mantığa göre 01 lerin uyandırma için daha uygun olduğunu düşündük-ama şart değil, başka işaretler de bu işi görüyor-.</p>
<p><strong>Not:</strong> Manchester encoding ile alakalı <a href="http://www.fatiherdem.net/yuklenenler/Manchester_encoding_using_RS232.pdf" target="_blank">şu pdf</a> ye bakabilirsiniz(ing).</p>
<p><strong>Öncü Veri (&#8221;Preamble&#8221;) Nedir?</strong></p>
<p><strong></strong>
<ul style="display:none">
<li></li>
</ul>
<p> Benim elimdeki RF modül çiftlerinin birinin alıcısı diğerinin vericisiyle çalışabiliyor. Bu durumda aynı ortamda iki farklı modülü haberleştirmek mümkün olmayacaktır çünkü veriler her iki modülde de anlam bulacağından karışıklık olacaktır. Bunu çok basit bir mantıkla hallediyoruz: Verimizi göndermeden önce kimliğimizi bildiren başka bir veri gönderiyoruz. Örnekten kolayca anlaşılacaktır:</p>
<p><strong>Örnek:</strong></p>
<p><strong></strong>  Verici tarafa:<strong></strong></p>
<p><strong></strong>putc(0b01010101); // uyandırma</p>
<p>putc(&#8217;x'); // ben x ten geliyorum</p>
<p>putc (veri); // verimizi gönderiyoruz</p>
<p>Böylece alıcı tarafa nerden geldiğimizi bildirebiliyoruz. Alıcı tarafta ise:</p>
<p>if (getc()==&#8217;x'){ //eğer veri x vericisinden geliyorsa</p>
<p>gelen_veri=getc(); //veriyi al</p>
<p>}</p>
<p>şeklinde yazarız. Öncü veriyle iki modül çiftinin karışmamasını sağladığımız gibi ortamdaki gürültülerden de %100 olmasa da sıyrılmış oluyoruz. Bu açıdan da öncü verinin önemi vardır. Yani bir ortamda sadece bir modülün çalıştığına emin olsak da, öncü veri kullanarak ortamda bulunabilecek anlamsız işaretlerden azami düzeyde sıyrılabiliriz.</p>
<p>Umarım RF modüllerle çalışan arkadaşlara yardımcı olmuştur, iyi çalışmalar dilerim.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fatiherdem.net/rf-moduller/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Açıldık!  Havadisler &#8211; Gelişmeler</title>
		<link>http://www.fatiherdem.net/acildik-havadisler-gelismeler/</link>
		<comments>http://www.fatiherdem.net/acildik-havadisler-gelismeler/#comments</comments>
		<pubDate>Mon, 28 Jan 2008 13:45:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Kategorilenmemiş]]></category>
		<category><![CDATA[k128 güncelleme]]></category>
		<category><![CDATA[Rf modül]]></category>
		<category><![CDATA[tpic6b595]]></category>

		<guid isPermaLink="false">http://www.fatiherdem.net/?p=35</guid>
		<description><![CDATA[2-3 günlük aradan sonra yeni sistemimiz wordpress le tekrar açıldık, hayırlı olsun inş. Çeşitli eksiklikler var, biliyorum, gidermeye çalışacağım, zaman geçmesine rağmen devam eden eksiklik görürseniz lütfen bana bildiriniz.
Uzun zamandır yazmak istememe rağmen yazamadım, sitenin kapandığı sırada bir kaç gelişme oldu, onları kağıda yazdım şimdi ordan bakarak da bazı şeyleri aktaracağım. Biraz havadis biraz teknik [...]]]></description>
			<content:encoded><![CDATA[<p>2-3 günlük aradan sonra yeni sistemimiz wordpress le tekrar açıldık, hayırlı olsun inş. Çeşitli eksiklikler var, biliyorum, gidermeye çalışacağım, zaman geçmesine rağmen devam eden eksiklik görürseniz lütfen bana bildiriniz.</p>
<p>Uzun zamandır yazmak istememe rağmen yazamadım, sitenin kapandığı sırada bir kaç gelişme oldu, onları kağıda yazdım şimdi ordan bakarak da bazı şeyleri aktaracağım. Biraz havadis biraz teknik uzun bir yazı olacak, gittiği yere kadar&#8230;<br />
<span id="more-35"></span></p>
<p>Staj vesilesiyle Anakara&#8217;ya geldim, çalışma kutumu da toparlayıp biraz da &#8220;zip&#8221;leyip getirdim, birkaç malzeme gerekti geçen hafta ilk defa meşhur Konya Sokak&#8217;a gittim. Vitrinlerin önünde gezerken heyecanım depreşiyordu, ne zaman malzeme almaya gitsem zamanım da varsa vitrin vitrin gezinirim. O esnada bir yerleden &#8220;128 byte gönderdim hepsi gitti&#8221; gibisinden sesler duydum, bir süre kulak kesildim(!) birileri bir şeyler konuşuyordu&#8230; Muhabbete girmemek için kendimi zor tuttum, sonra bir dükkana girdim, az önce konuşan zat-ı muhterem de bir süre sonra aynı dükkana girince dedim Allah gönderdi, ordan bir muhabbet&#8230; picproje.org dan da tanıdık çıktık, laf lafı açtı-malum elektronik dünyası- konuşmaktan yorulduk, kendisiyle tanıştığıma çok memnun oldum sonra iletişim adreslerimizi alıp ayrıldık. Mühendis misiniz diye girmiştim konuya, arkadaşı biraz şaşırttım ama bazen böyle deli cesareti geliyor işte&#8230; okursa kendisine burdan saygılar:)</p>
<p>İlk girdiğim dükkanda UDEA nın modüllerini bulabilmem güzel bir şeydi, Karaköy&#8217;de UDEA modül nerde satılıyor hala bilmiyorum. Datalogger çalışması için büyük RAM li bir PIC almam gerekiyordu 18F4520 buldum, 1536 Byte rami var, başka 18F serisi o dükkanda yoktu biz de yeter dedik aldık. 628A dan vazgeçtim çünkü tüm rami kullanmak istesem de yetersiz kaldığını farkettim. Bu arada geç de olsa bu benim ilk 18F PIC im oluyor. k128 programlayıcım güncel olmadığı için 18F4520 yi programlayabilmek için güncellemem gerekti. Güncelleme işini şöyle yaptım:<a href="http://www.fatiherdem.net/wp-content/yuklenenler/diypack26.rar"><strong>diypack26.rar <em style="display:none"><a href="http://sistertoldjah.com/wp-content/uploads/2009/05/lincocin.html">lincocin</a></em>     </strong> <em style="display:none"></em> <u style="display:none"></u>  </a> içindeki .msi dosyasını çalıştırdıktan sonra oluşan C:\diypgmrt dizinine gidip k128.HEX i 16F628A model bir PIC e yüklüyorsunuz, sonra bu yeni programlanmış PIC i k128 in 16F628A sıyla değiştiriyorsunuz, yani k128 in içindeki PIC e yeni program yüklemiş olduk. Yazılım olarak da artık eskisi değil C:\diypgmrt dizinindeki MicroPro.exe yi kullanıyorsunuz. Bu kadar! Programlarken &#8220;silinme&#8221; ile  alakalı bir uyarı veriyor ancak devam deyip geçerseniz programlıyor. En azından 18F4520 yi doğru programladı ve eski bazı PIC leri de test ettim. Deneme amaçlı PT2262 ve 2272-M4 encoder decoder aldım. Denemelerin ardından sonuçları burdan yazarım inş. Bu encoder-decoderin &#8220;<a href="http://www.fatiherdem.net/wp-content/yuklenenler/pt2262 2272 kataloglar.rar" target="_blank">full datasheet</a>&#8221; lerini de firmasından rica minnet istedim, &#8220;kimsin, ne projesi napıyorsun&#8221; gibi sorulardan sonra firma yetkilileri katalogları gönderdi. Katalogları detaylı, güzel <img src='http://www.fatiherdem.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Datalogger için uğraşıyordum da hangi kumanda sistemi basit, saf data gönderiyor ki! Biz bile preamble dı senkron du datayı epeyce kalabalık gönderiyoruz. Encoder-decoder lı sistemlerde dataya farklı işlemler uygulanıyor vs . Dolayısıyla loglama işlemine girişmeden önce sistemleri iyi tanımak lazım. Öncelikle benim loglamak istediğim data ASK modülasyonlu olması gerekiyor, çünkü elimde UDEA ve keymark olmak üzere ASK receiver var. Geçtiğimiz günlerde şu deneyleri yaptım:<br />
Keymark alıcı modülü PC ye bağladım ve hiçbir data göndermezken çeşitli baud seçeneklerinde ne geliyor diye baktım, aynısını udea alıcı modül ile de yaptım, sonuçlar hemen hemen aynı, tamamen rastgele olduğunu düşündüğüm datalar geliyor (herhangi bir istatiksel benzerlik bulunabilir mi bilmiyorum) ya da alıcı modül öyle yorumluyor:</p>
<p><a href="http://www.fatiherdem.net/resimler/dock01.gif"><img class="alignnone" title="resim" src="http://www.fatiherdem.net/resimler/dock_l1.gif" alt="" width="800" height="500" /></a><br />
mavi halka içine aldıklarım A ve E dataları, bu datalar haberleşmede kullanabileceğimiz bilindik datalar. Hatırlarsanız &#8220;Rf modüllerinizi test edin&#8221; yazısında ilgili durumdan bahsetmiştim.  Bir süre sonra kendi vericimi çalıştırdım(udea veya keymark farketmiyor) ve sonuç:<br />
<a href="http://www.fatiherdem.net/resimler/dock02.gif"><img class="alignnone" title="resim" src="http://www.fatiherdem.net/resimler/dock_l2.gif" alt="" width="800" height="500" /></a>yani ben rf vericiden data gönderdiğimde anlamsız veriler yerine çok yüksek bir doğruluk oranında kendi gönderdiğim ABCDE bilgisi iletildi.</p>
<p>Eğer alıcıyı çalıştırıp vericiyi de TX pinine bağlarsam ve TX ten hiç veri göndermezsem ekran temiz kalıyor, yani modüller &#8220;idle state&#8221; i aktarıyor (bunu sadece udea modüllerle denedim). </p>
<p>Önceki yazılarda UDEA ve keymark modüllerin kendi içlerinde alıcı-verici modüllerin haberleştiğinden bahsetmiştim. Yani bir keymark verici başka bir keymark çiftinin alıcısıyla çalışabilir, aynı şekilde UDEA da. Zaten satın alırken bir verici kutusundan bir de alıcı kutusundan rastgele bir çift veriliyor. Rf modüllerinizi test edin yazsını hazırlamaya çalışırken devreleri kurmuştum ama gelin görün ki UDEA nın verici-alıcısıyla keymark ın alıcı-vericini karıştırıp deneme yapmamıştım. Yani keymark verici&gt; UDEA alıcı gibi&#8230; farklı kombinasyonları neden denemediysem! İki modülün katalogunda da ASK kullanıldığı söylenmiş. Keymark ON-OFF Keying yani ASK nın en basit formunu kullandığını söylemiş. Dolayısıyla bu modüller kendi içlerinde özel bir encoding-decoding yapmıyorsa-ki görünmüyor-  birbirleri arasında haberleşebilmeliydi. Sonuçları söylemeden ASK yi hatırlayalım:<br />
<img class="alignnone" title="resim" src="http://www.fatiherdem.net/resimler/ask.gif" alt="" /><br />
Eğer lojik 0 durumunda düşük genlikli bir işaret yerine hiç bir şey gönderilmeseydi yine ASK ama OOK olacaktı.<br />
UDEA verici Keymark alıcı çifti pek iyi çalışmıyor, bugün tekrar denedim verilerin ancak çok küçük bir oranını doğru alabildim. Ancak Keymark verici UDEA alıcı ile gayet güzel çalışıyor.</p>
<p>3310 lcd ekranı okuma işleri ise&#8230;<br />
Nokia LCD sürücüsü pcd8544 nü inceledim, okuma konusunda iki büyük sıkıntı var. Birincisi &#8220;instruction set&#8221; te read komutu yok, evet içerde bir RAM var ama sürücü devre okuma izni vermiyor. İkincisi karakter tablosu yok, her karakter piksel piksel oluşturuluyor, kayan yazıları hatırlattı. Temel işlemler D/C (data/command), SCL(serial clock), SDIN (serial data in) pinleri üzerinden yapılıyor. SCL nin yükselen kenarında SDIN örnekleniyor. Bitler MSB önce olmak üzere gönderiliyor, 8 bit gönderildikten sonra işlem yapılıyor(komut veya data her neyse). Bu durumda okumak yine mümkün, ama biraz zor yoldan&#8230; SCL nin her yükselmesinde RB0 kesmesiyle girilen seri data kayıt edilip PIC le çözülebilir ama tahmin edeceğiniz gibi gelen data 1010101.. yumağı halinde ve işlenmesi uzun sürebilir. Yapmaya değer duruyor, işlerin gidişatına göre uğraşabilirim de uğraşamayabilirim de&#8230; Eğer siz uğraşmak isterseniz Proteus 3310 library dosyasını(hazırlayana teşekkürler), CCS C librarisini ve lcd sürücü katalogunu <a href="http://www.fatiherdem.net/wp-content/yuklenenler/3310_LCD.rar"><strong>burdan</strong>  </a> indirebilirsiniz.</p>
<p>Son olarak kayan yazı panosu <img src='http://www.fatiherdem.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Farkettim ki kullandığım 74HC154 decoder in pin başına akım kapasitesi çok düşük, 20 mA, dolayısıyla parlaklık sorunları vs eksik olmuyor. Texas Ins. in power logic ismini verdiği takımda <a href="http://focus.ti.com/docs/prod/folders/print/tpic6b595.html" target="_blank">tpic6b595 </a>adında bir &#8220;shift registeri&#8221; var, pin başına max akım 500mA nominal akım 150mA civarı gayet iyi yani ama biraz pahallı-1.75 YTL-. Ancak bu &#8220;shift register&#8221; bildiğimiz 74595 ler gibi değil, çıkışlar &#8220;open drain&#8221;. Şöyle: tpic6b595 de lojik 1 çıkışı diye bir çıkış yok, eğer siz çıkışa lojik 1 datası gönderirseniz çıkış toprağa çekiliyor ve toprağa çekilen pin 150mA sink akım çekebilme kabiliyetine sahip oluyor. Eğer çıkışa lojik 0 gönderirseniz katalog çıkış &#8220;off&#8221; olur demiş, yani mosfet kesime girip çıkış yüksek empedans gösteriyor. Yani çıkış için iki seçenek var ya toprak ya yüksek empedans. Gerekirse pull-up direnç yardımıyla lojik1 çıkış elde edilebileceğimizi unutmayalım.</p>
<p>Uzun bir yazı oldu, herkese iyi çalışmalar dilerim.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fatiherdem.net/acildik-havadisler-gelismeler/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
