Rastgele Gürültüyü Sinyale Dönüştürmek: Mikrodenetleyicilerle Dijital Kaosu Yakalamak
Elektronik devrelerin ve yazılım algoritmalarının kesişiminde en büyüleyici şeylerden biri, kontrol edilemez görünen kaostan anlamlı bir çıktı elde etmektir. Bizim için, bu bazen bir hatadan ibaret bir gürültü akımıdır; bazen de beklenmedik bir veri kümesi. Bu yazıda, benim de zaman zaman karşılaştığım ama nihayetinde bir probleme çözüm bulduğum bir senaryoyu, yani gerçek dünyadaki rastgele gürültüyü mikrodenetleyiciler kullanarak nasıl ölçülebilir bir sinyale dönüştürebileceğimizi anlatacağım.
Birkaç ay önce, basit bir akustik basınç sensöründen gelen verileri kaydetmeye çalışıyorduk. Sensör, çevredeki tüm akustik olayların toplamını alıyordu; bu, düşük seviyede sürekli bir gürültü tablosuydu. İlk başta bu veri akışı tamamen anlamsızdı; ölçülen voltaj değişimleri, sanki beyaz gürültüye bakıyormuşum gibiydi. Bu gürültüye odaklanmak, bir bilgisayarın fanının dönmesi gibi sürekli arka planda olan, ancak hiçbir şeyi temsil etmeyen bir veri gibiydi.
Gürültüyü Sayısallaştırma Aşaması
Bu tür bir veriyi anlamlandırmak için atılması gereken ilk adım, onu doğru bir temsil düzlemine oturtmaktır. Benim için bu, ham analog voltaj değişimini dijital sayılara çevirme süreci oldu. Arduino'nun ADC (Analogdan Dijitale Dönüştürücü) hızını ve çözünürlüğünü bu gürültü seviyesine uygun ayarladım. Bu, gürültünün "ne kadar hızlı" değil, daha çok "ne kadar yoğun" olduğunu kaydetmek anlamına geliyordu.
Adım adım süreç şu şekildeydi:
- Örnekleme Hızı Sabitleme: Gürültünün doğası gereği, yüksek frekanslı değişimleri yakalamak yerine, her örneği belirli bir zaman diliminde (örneğin, her 10 milisaniyede bir) alarak örnekleme hızını düşürdüm. Bu, gürültüdeki anlık yükselişleri filtrelememe yardımcı oldu.
- Ortalama Alma (Moving Average): Ham verinin kaotik yapısını kırmak için basit bir hareketli ortalama filtre uyguladım. Bu, birkaç ardışık okumanın basit aritmetik ortalamasını alarak, ani ve rastgele sapmaları yumuşattı.
- Ön İşleme ve Kayıt: Bu filtrelenmiş ortalama değerini, seri port üzerinden bilgisayara gönderdim. İşte burası, kaostan düzenli bir çıktı almaya başladığımız yerdi.
Python ile Anlamlandırma: Filtreden Öte Bir Bakış
Veriyi Arduino'dan bilgisayara aktarmak, sadece bir boruyu geçirmekten ibaretti. Asıl sihir, bu veriyi Python ortamında doğru yorumlamakla gerçekleşti. Ham veriyi okuduktan sonra, bu dizinin sadece gürültü değil, aslında düşük seviyeli, yüksek entropili bir "ses kaydı" olduğunu fark ettim.
Gürültüye bu kadar uzun süre maruz kalmak, benim için analitik bir sabır sınavıydı. Eğer bilinçli bir hedefim olsaydı, bu gürültüye neden olan fiziksel kaynağı bulmaya odaklanırdım. Ancak bu denemede hedefimiz, gürültüyü veri temsili haline getirmekti.
Bu yüzden, bu ham, filtrelemiş veri dizisini alıp, bir Fourier dönüşümünden geçirdim. Bu dönüşüm, zaman domenindeki dağınık bu sinyalin, frekans domeninde nerede enerjisini yoğunlaştırdığını gösterdi. Ve o anda gördüm ki, "rastgele" olduğumuzu sandığımız bu gürültü, aslında çok dar bir frekans bandında, ancak düşük genlikle var olan ritmik bir bileşene sahipti.
Rastgele olan, sadece onu nasıl modelleyeceğinizi bilmediğiniz süreçlerin çıktısıdır. Mikrodenetleyiciniz bu kaosu yakalar; bilgisayarınız ise ona bir alfabe öğretir. Bir sonraki sefer, bu bilgiyi belki bir uyarı sistemi olarak kullanabiliriz. Şimdilik, bu akustik gürültünün dinginleştirilmiş dijital bir portresi benim için yeterliydi.