Vezeték nélküli hőmérő rádióamatőr módra

Korábban már írtam a Raspberry Pi Pico mikrovezérlőről illetve a PIO névre hallgató részegységéről.

Ez utóbbi betűszó a Programmable Input, Output -ból ered és egy zseniális be,- illetve kimeneti egységet takar. A legtöbb mikrovezérlőtől eltérően a Raspberry Pico lelkét képező RP2040 procikban a soros (vagy akár párhuzamos ) adatátviteli módok nincsnek hardveresen “bedrótozva” , hanem egy elkülönített egység állítja elő őket, egy egyszerűsített assembler programkód alapján, így gyakorlatilag bármilyen átviteli protokoll előállítható (leprogramozható). A kimenő adatfolyam sebessége tág határok között beállítható, gyakorlatilag a processzor órajele, egy beállítható osztó és az említett assembler programocska lefutásához szükséges órajelciklusok száma határozza meg. A legegyszerűbb kimeneti “protokoll” nem más, mint egy kimenetnek konfigurált GPIO láb ciklikus ki/be kapcsolgatása, azaz egy egy négyszögjel előállítása. Ez mindössze 2 utasítással elérhető, így a teljes 125MHz-es órajelet rákapcsolva ennek a fele, 62.5MHz-es négyszögjel is előállítható.

Apró érdekesség, hogy a gyártó “up to 133MHz” -nek specifikálja a proci órajelét, a gyakorlatban azonban 125MHz-es gyári beállítással érkeznek a Pico -k, viszont egyes források szerint kétszáz mega fölé is biztonsággal feltornászható ez az érték.

Az elérhető legkisebb leosztott órajel 1kHz , így a fent említett bit billegtetéses technikával 500Hz-es hangfreki is előállíítható. Szerencsére az osztó számolgatásával és programozásával nem kell bíbelődni, MicroPythont vagy CircuitPythont használva ezt megteszi helyettünk egy beimportálható PIOASM szoftvermodul. Természetesen a PIOASM csak az osztásaránnyal tud játszani, így az általunk beállított frekvenciához legközelebb eső értéket fogja előállítani. Ez egyes esetekben a beállítotthoz képest meglepően pontos értéket eredményez, más esetekben akár 20kHz eltérés is tapasztalható. Amennyiben a nagyon pontos kimeneti frekvencia a cél, akkor lehet a beálított érték változtatásával illetve az assemblerbe beiktatott 1-2 extra ciklust előidéző NOP utasítással is játszani, de azért senki se kapjon vérszemet, hogy itt a kevesebb, mint kétezer forintos VFO, ez a cucc azért nem erre való (akkor inkább kisérletezz a 3000 Ft körüli Silabs SI5351A órajel ic-vel mint perifériával)

Viszont, ha már 1kHz és 62MHz között nagyjából bármilyen kimeneti frekvenciát be tudunk állítani, akkor adja magát , hogy valamiféle rövidhullámú adót építsünk belőle ! A néhány mW adóteljesítmény és a meglehetősen spektrumszennyező négyszögjel miatt antennára nem érdemes illetve nem illik kapcsolni a szerkentyűt, de az adott GPIO-ra csatlakoztatott 8-10cm-es jumper kábellel pár méteres hatótávolság kényelmesen elérhető és így másokat nem zavarva játszhatunk kedvünkre.

Egy folyamatos vivő vagy egy periodikus csipogás körülbelül 10 másodpercig érdekes, morzézni tanítottam meg a Pico-t , az aktuális hőmérsékletet adja le számunkra. Mivel csak játékról van szó, nem bíbelődtem egy I2C buszos hőmérő (bővítő) panellel, hanem az RP2040 programból kiolvasható processzormag hőmérsékleteivel dolgozom. Mivel a programocska gyakorlatilag észrevehetetlen terhelést jelent a processzor számára, az egyik egyik magot be sem kapcsolja hozzá. Így ennek hőmérséklete majdnem megegyezik a környezet hőmérsékletével, így számunkra megfelelő pontosságú adatot biztosít.

Viszont, ha már 1kHz és 62MHz között nagyjából bármilyen kimeneti frekvenciát be tudunk állítani, akkor adja magát , hogy valamiféle rövidhullámú adót építsünk belőle ! A néhány mW adóteljesítmény és a meglehetősen spektrumszennyező négyszögjel miatt antennára nem érdemes illetve nem illik kapcsolni a szerkentyűt, de az adott GPIO-ra csatlakoztatott 8-10cm-es jumper kábellel pár méteres hatótávolság kényelmesen elérhető és így másokat nem zavarva játszhatunk kedvünkre.

Mivel egy folyamatos vivő vagy egy periodikus csipogás körülbelül 10 másodpercig érdekes, morzézni tanítottam meg a Pico-t , az aktuális hőmérsékletet adja le számunkra. Mivel csak játékról van szó, nem bíbelődtem egy I2C buszos hőmérő (bővítő) panellel, hanem az RP2040 programból kiolvasható processzormag hőmérsékleteivel dolgozom. Mivel a programocska gyakorlatilag észrevehetetlen terhelést jelent a processzor számára, az egyik egyik magot be sem kapcsolja hozzá. Így ennek hőmérséklete majdnem megegyezik a környezet hőmérsékletével, így számunkra megfelelő pontosságú adatot biztosít.

Íme a felkommentezett program:   (használjátok egészséggel !)

[iframe src=”https://trinket.io/embed/python/049c7c4cd3″ width=”100%” height=”356″ frameborder=”0″ marginwidth=”0″ marginheight=”0″ allowfullscreen]