Időközben eljutottunk egy kiállításra, ahol a Rohde & Schwarz is jelen volt kiállítóként, és készséges segítséget kaptunk tőlük egy komoly és drága valósidejű spektrumanalizátor (ill. ez inkább EMI teszter) felhasználásával.
Itt némi kétség merült fel bennünk, ugyanis a rádiós kommunikáció kezdetén, felfutáskor jelentkezik egy modulálatlan tranziens, ami megszórja a spektrumot (szimpla ACK válasz esetén is).
Ekkor kezdtünk el jobban utánanézni, miként lehetne kideríteni, melyik NRF eredeti, és melyik kínai hamisítvány (klón).
Egyik támpont, hogy, amikor a kínai lemásolta az IC-t, gyakorlatilag lemásolta az adatlap szerinti viselkedést, ami viszont hibás, így egy feature aktiválásakor egy bizonyos bit inverzben működik az eredeti IC-hez képest. Ezt még nem próbáltam ki, de könnyebb javítani is egy későbbi revízióban.
Másik lehetőség a készenléti áramfelvételüket megmérni. Ez stabilabb indikátornak tűnik, mivel bonyolultabb feladat lenne az áramfelvétel csökkentése, és nem hinném, hogy a kínai fél túl sok energiát fektetne bele - tehát ez hosszabb távon is működő megoldásnak tűnik.
Az eredeti modulok áramfelvétele ~0,5uA körül, a hamis IC-t használó moduloké pedig ~660uA körül volt, tehát szignifikáns különbség van az eredeti és másolat készenléti áramfelvétele között.
Hirtelen felindulásból (még a másik teszt előtt) egy fizikai, "mikroszkópos" próbát is elvégeztünk, gyakorlatilag lecsiszoltuk az IC tetejét és összehasonlítottuk a neten fellelhető mintákkal... így utólag az ezen a teszten átment modulok ugyanazok voltak, amelyek áramfelvétele a későbbi tesztben alacsonyabbnak bizonyult (nyilván ezek másik modulok, de azonos típusúak).
Tehát kiderült, hogy a fenti mérésen részt vett modulok nagy része eredeti volt.
Mivel az IC-t elég sok termékben használják - mi egy Gigabyte egérben találtunk, de régebbi Logitech egerekben is ez van (újabban egy Logitech számára gyártatott, de azonos rádiós protokollt használó IC-t használnak az ún. Unifying ezközeikben) és sok egyéb termékben is benne van -, valószínűsítem, a spektrumanalizátoron látott probléma nem akkora gond, mint azt elsőre gondoltuk.
Jó lenne teljes bizonyossággal tudni, milyen feltételeket kell a rádiós modulnak teljesítenie (és ezeket teljesíti is), bár vélhetően nem véletlen kapta meg a CE / FCC / IC megfelelőséget a fent nevezett modul, és nem véletlen merik használni nevesebb gyártók is.
A történetet kicsit bővebben, képekkel és videókkal illusztrálva feltettem ide, ha esetleg érdekel valakit.
Azért írtam most meg ide is, hátha valaki hasznát veszi még, esetleg van olyan észrevétel, ami megerősít / elbizonytalanít a fentiekben. :)
Ha valakinek van hozzáfűznivalója, esetleg hozzá tud tenni még valamit, annak is örülök.
- VaZso blogja
- A hozzászóláshoz be kell jelentkezni
- 984 megtekintés
Hozzászólások
Azért az durva, hogy az eredeti és hamis modulok áramfelvétele között 1000x különbség van (0.5uA vs. 660uA).
Szerk: a 0.5uA-t milyen módban mérted? Mert a gyári spec szerint még power down-nak is kevés (0.9uA), a standby-I meg 26uA.
- A hozzászóláshoz be kell jelentkezni
Igen, eléggé nagy a különbség - még ha elsőre a ~0.5-1mA sem tűnik iszonyatosan soknak (kivéve, ha elemről / akkuról üzemeltetné az ember).
Az is durva volt, hogy szimpla csiszolással sikerült felnyitni az IC-t és megállapítani, melyikkel állunk szemben. :)
(Különösen a koppintást sikerült szépen lecsiszolni, a többi túl durva lett - de még így is felismerhető...)
Szerk.: Ez power down volt, de inkább csak tájékoztató érték, vagyis alapvetően az arány a lényeg.
- A hozzászóláshoz be kell jelentkezni
Ha műanyagtokos az IC, akkor próbálkozhattok tömény kénsavval. Óvatosan, csepegtetve/öblítve le lehet oldani.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "
- A hozzászóláshoz be kell jelentkezni
Lehetett volna jobban is csinálni, ez most a nekiesés szintjén történt csak, de a lényeget sikerült kideríteni szerencsére - tényleg kellett kicsit az a bizonyos szerencse is. :-)
- A hozzászóláshoz be kell jelentkezni
A mérést, hogyan végeztétek? Hangolt elemen/kimeneten közvetlenül, vagy antennával? Próbáltatok mérni llesztett rezisztív lezárással? Hogyan volt meghajtva a modul? Volt rajta puffer rendesen?
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "
- A hozzászóláshoz be kell jelentkezni
Szimplán antennán keresztül, nem volt közvetlen a műszer bemenetére illesztve.
A modul egyik esetben egy fejlesztői boardról kapott tápot, volt rajt egy viszonylag nagy puffer is közvetlen a modul tápjánál.
A késleltetést felvittük 50ms-ig biztosan - max. 100 ms-os késleltetést tettem bele a teszt idejére, de már nem emlékszem, felmentünk-e addig, inkább lejjebb vittük...
Ezen a modulon volt erősítő is (a videón ez volt az adó).
Volt ugyanezen a boardon erősítő nélküli IC is, ill. egy másik boardon lévő, erősítő nélküli modullal is azonos jelet kaptunk. (A kontroller előbbi esetben STM32, utóbbi esetben AVR / ATXMEGA volt, a felsőbb szintű library viszont azonos... de megnéztük a vevő modult is, és annak ACK-jain is látszott.)
- A hozzászóláshoz be kell jelentkezni
Ez érdekes. Mindenesetre, jó lenne mérni műterheléssel lezárt modulon is. Az ilyen széles sávú sugárzások mögött rosszul méretezett antenna, rossz tápellátás, vagy a hibás oszcillátor/modulátor megoldás szokott állni. Azért kellemetlen, az ilyen, mert rontja a vétel minőségét.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "
- A hozzászóláshoz be kell jelentkezni
Ehhez legfőképp' a megfelelő műszer és témán belüli jártasság hiányzik, de jó volna ezt látni ilyen körülmények között is.
Alapvetően modulokat próbáltunk, több típust és típuson belül többet is.
Tehát a rajtuk lévő oszcillátor nem azonos forrásból érkezett... modulációt viszont az NRF24L01+ IC végzi, ez volt a közös pont.
Leginkább azt próbáltuk elkerülni, hogy egy későbbi minősítés gondot okozzon... viszont úgy láttuk, mindegyik modul csinálja és vélhetően az NRF chip működése van a dolog mögött.
Ezt viszont sok termékben használják.
- A hozzászóláshoz be kell jelentkezni
Nagyon kibickedem, de nem lehet valami energiatakarékossági beállításon állítani? Hogy csak hosszabb inaktivitás után áramtalanítsa az adórészt? Mert gondolom azért olyan picike a fogyasztása, mert teljes egészében áramtalanít mindent, ami adott pillanatban nem kell és mikor egy ACK-t küld, akkor gyorsan bekapcsolja. De ha lehetne valami időzítőt állítgatni, akkor mondjuk megadnátok egy olyan időintervallumot, hogy ne minden adás kezdetén kelljen újra bekapcsolni az adót, hanem ha épp sűrűbb a ping-pongozás a rádiócsomagokkal, akkor maradjon bekapcsolva és csak nyugisabb időszakban élesítse az energiatakarékos funkciókat. Esetleg valami RF szűrő + külön RF erősítő, hogy legalább ne legyen olyan széles spektrumú az a zavar? Tudom, fogyasztás és költség szempontból biztos nem érné meg.
- A hozzászóláshoz be kell jelentkezni
Bizony ez egy valid felvetés. Lehet, hogy laállítja az oszcillátort és ACK-nál újraindítja és amíg nincs lock addig megszórja a sávot.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "
- A hozzászóláshoz be kell jelentkezni
Ezek külön adatcsomagok voltak, köztük az NRF Standby-II üzemmódban volt.
Az adatlap Standby-I-nél írja, hogy az áramfelvétel minimalizálása és rövid feléledés a cél, és az oszcillátor csak részben aktív.
Standby-II esetén extra órajel bufferek is aktívak, nagyobb az áramfelvétel, és, ha a TX FIFO-ba adat kerül, rögtön indul a PLL.
A köztes időszakban a PLL-t leállítja; ennek a beállása során keletkezik a videón is látható zaj, amikor még nincs rajt moduláció.
Ezen viszont nem tudok változtatni (külön adatcsomagok esetén).
- A hozzászóláshoz be kell jelentkezni
Valami GPIO vezérelt RF-Switch IC-vel leválasztani az eszközt az antennáról, amikor jön a "döccenés"? Plusz eszköz, meg macerás beidőzíteni, de mégis csak ötlet :) . Vannak kétállásúak, egy ellenállásra irányítanátok a kimenetet a kritikus szakaszban aztán visszakapcsolnátok az antennára. Bár lehet, ez a kapcsolgatás is kelt tranzienseket szépen :)
- A hozzászóláshoz be kell jelentkezni
Azért ez nem igazán kivitelezhető szerintem... egyrészt jelenleg nincs megfelelő műszerünk az ellenőrzésére, másrészt mikroszekundum alatti időzítéssel kellene kapcsolni, harmadrészt egyéb bizonytalanságok is bejönnek, pl. ACK-ot ad a másik által küldött adatra, esetleg hardveres ismétléssel valamely későbbi csomagra küld ACK-ot, vagy több csomagot is ACK-ol, mert maga a válasz nem érkezik meg rendesen.
Vagyis nem tudunk ráidőzíteni arra, pontosan mikor indul az adás.
- A hozzászóláshoz be kell jelentkezni