Ezt a bejegyzést elsősorban Dia Haryhoz intézett levele ihlette, vagyis arra gondoltam, hogy írok egy picit én is a szakmáról.
Az alapszituáció a következő: lokalizácós alkalmazást fejlesztünk mótokra. Ehhez egyszerű CC1000 rádiós modulokat, vagyis azok RSSI (received signal strength indication) kimeneti jelét használjuk különböző trükkös módszerekkel. A jelfeldolgozásra az alapötlet már adott, azonban még számos megoldatlan problémánk van mind az elméleti, mind a gyakorlati dolgokat illetőleg. Az egyik ilyen gyakorlati probléma, hogy egy szimpla mikrokontroller lassú a feladathoz - ez már most látszik. Ezt orvoslandó FPGA-t fogunk használni. Az egész megoldáshoz vezető utat pedig az alábbi három mérföldkőre tudnám osztani:
- Alap mérőrendszer kialakítása, vagyis a mért jel letárolása memóriába, majd továbbítása PC-re
- A valós (és szimulált ideális adatokkal) a lokalizációs algoritmus pontos kidolgozása MATLAB-ban
- A MATLAB-os kód implementálása FPGA-ra
Jelenleg (nyilván) az első pontnál tartok. Már több, mint hete dolgozom az ügyön, és úgy néz ki, hogy hétfőn be is fejezem. Voltaképpen már végezhettem volna vele jóval korábban is, de a világ nyilván nem így működik. :P
Hogy ne kelljen mindent olyan alacsony szinten kódolni, belehelyeztünk az FPGA-ba egy picoBlaze lágyprocesszort. Innentől már assembly nyelven írhattam a kódot, ami egyfajta megkönnyebbülést jelentett. A kód már múlt hét pénteken kész volt, de sehogy sem akart működni. Most hét elején újraírtam az egészet az alapoktól, de ez sem segített: a rádió vevőt nem sikerült úgy felkonfigurálni, hogy az általunk kijelölt ISM frekvenciasávban vegyen. Az viszont gyanús volt, hogy az "állítólagos" vételi módban a kártya 40 mA-el többet fogyasztott, mint az adatlapi érték. Úgyhogy elkezdtünk méregetni. A CC1000 rádiós chiphez tartozó rezgőkör szinte minden elemét tartalmazza az IC. Ez alól egyedül a tekercs (L1rf) a kivétel, amint kívülről kell hozzáilleszteni. Ezen a "tekercsen" mintegy ~3 V DC feszültséget mértünk, ami egy tekercs esetében sok, úgyhogy elkeztünk ezen az úton továbbmenni. Előkerestük a beültetési tervként szolgáló silkscreen réteg rajzát és hamar megtaláltuk, hogy mi okozta a problémát.
CC1000 és környéke
Ha azt mondom, hogy az L1rf környékén van valami "hiba", van valami tipp, hogy micsoda?
Nekünk (pontosabban Péternek) volt egy tippünk, hogy mi a probléma forrása. Ez a tipp be is jött: gyorsan orvosoltuk a hardveres problémát. Ezután feltöltöttük az FPGA konfigurációmat (és szoftveremet), és lám minden ment tökéletesen. Egy piros pont magamnak az elsőre működő szoftverért.