Bagaimana cara kerja hack pemancar RF / FM GPIO?

8

Beberapa waktu yang lalu, beberapa orang mengetahui bahwa mereka dapat mengirimkan sinyal FM menggunakan port GPIO Raspberry Pi, dan orang lain menyadari bahwa ia dapat menggunakan RasPi untuk mengendalikan peralatan otomasi rumahnya:

http://www.skagmo.com/page.php?p=projects/22_pihat

Ini adalah file yang mengontrol radio untuk ini:

https://github.com/s7mx1/pihat/blob/master/radio.c

Sekarang, saya ingin port ini ke bahasa yang lebih mudah daripada C bagi saya untuk bereksperimen, seperti Go atau Python. Namun, saya tidak begitu jelas tentang bagaimana hal ini dilakukan.

Skagmo menggunakan harmonik untuk menghasilkan frekuensi 433 MHz. Katakanlah Anda hanya menginginkan frekuensi 100 MHz, untuk kesederhanaan, bagaimana Anda menghasilkan itu? Dari apa yang saya mengerti, ini ada hubungannya dengan jam GPIO (atau mungkin SPI? Saya tidak yakin).

Dari apa yang dapat saya lihat di file, ia menetapkan tiga bit pada beberapa register pemilihan fungsi GPIO, dan kemudian menginisialisasi jam dengan struct, dan kemudian menetapkan sedikit setiap kali ia ingin mengirimkan tinggi atau rendah.

Apakah ini dalam gelombang pembawa? Di mana adalah gelombang pembawa?

Saya juga menemukan skrip Python ini yang mengklaim melakukan hal yang sama , tetapi saya tidak yakin apakah ia menggunakan pemancar asli atau jika orang tersebut menghubungkan yang eksternal ke RasPi.

Pada dasarnya, saya akan sangat menghargai penjelasan atau referensi singkat tentang bagaimana ini bekerja, tepatnya, dan jika Python / Go cukup cepat untuk mengirimkan sinyal yang dapat meniru remote pintu garasi saya (sepertinya dimodulasi, tampaknya ASK), atau jika saya punya melakukannya di C.

Stavros Korokithakis
sumber

Jawaban:

2

sementara mengakui ini sebagai peretasan yang lucu dan hebat, saya menyarankan agar tidak menggunakannya untuk apa pun kecuali bukti demo konsep, karena penyiaran pada frekuensi yang tidak berlisensi dapat melanggar hukum dan / atau mengakibatkan masalah hukum dan / atau hukuman berat.

tolong, gunakan hanya peralatan berlisensi untuk menyiarkan dalam rentang frekuensi yang diizinkan dan batas daya keluaran. Anda tidak akan pernah tahu apakah ada orang yang dilengkapi alat pacu jantung di lingkungan Anda.

Raspberry Pi memiliki clock generator, yang dapat menampilkan gelombang persegi ke pin GPIO. Jika Anda memprogram penghasil clock ke frekuensi yang diinginkan Anda akan mendapatkan sinyal, dan ketika Anda mengubah frekuensinya, sinyal menjadi radio modulasi frekuensi (FM). Poin buruk dari pendekatan ini adalah: 1) gelombang persegi sangat bising - banyak harmonik dan frekuensi lainnya ditransmisikan, 2) RasPi dapat mengeluarkan banyak daya RF, memblokir beberapa transmisi lain dalam spektrum frekuensi yang sangat luas.

lenik
sumber
3

Mungkin ada pita frekuensi radio di negara Anda di mana emisi radio tanpa daya yang sangat rendah mungkin diizinkan (Peraturan FCC Bagian 15 di AS). Namun output GPIO tanpa filter tidak akan disiarkan hanya dalam satu band RF.

Trik pemancar GPIO menggunakan output digital berkala untuk menghasilkan sinyal radio. Ini disebabkan oleh salah satu teorema Fourier yang membuktikan bahwa sinyal non-sinusoidal tetapi periodik dapat didekomposisi menjadi banyak komponen sinusoidal (harmonik). Hubungkan komponen sinusoidal ke antena panjang setengah gelombang dan akan memancarkan energi RF. Tetapi, untuk memutus energi dalam pita frekuensi selain yang dimaksud, filter low-pass atau filter band-pass perlu digunakan antara pin GPIO dan antena untuk menghilangkan energi RF di semua frekuensi yang tidak diinginkan (semua frekuensi lain yang termasuk dalam dekomposisi Fourier dari gelombang keluaran digital GPIO Pi Anda).

Anda tidak ingin Pi Anda mengganggu pita radio layanan darurat frekuensi tinggi, yang dapat menyebabkan masalah hukum.

Ditambahkan: FM berarti modulasi frekuensi, misalnya perubahan (modulasi) dalam frekuensi pembawa RF mewakili informasi tentang input modulasi (amplitudo audio dalam satu kasus umum). Pi memiliki register kontrol yang dapat mengubah waktu periodik pin output GPIO. Perubahan dalam pengaturan waktu berkala juga merupakan perubahan frekuensi. Ubah frekuensi digital ini pada waktu yang tepat (ketika sinyal audio mengubah amplitudo, dll.) Dan Transformasi Fourier dari gelombang digital ini juga akan mengubah spektrum frekuensinya (lebih tinggi atau lebih rendah, mis. Modulasi frekuensi atau sinyal FM). DMA kadang-kadang digunakan untuk mengubah register pengaturan waktu Pi, karena DMA dapat terjadi cukup sering untuk mencocokkan perubahan dalam amplitudo file audio pada laju sampel audio, atau beberapa daripadanya.

Beberapa buku teks tentang desain radio akan berisi lebih banyak detail tentang bagaimana spektrum perlu diubah untuk memenuhi berbagai standar siaran (beberapa bab lebih dari cukup di sini). Pengetahuan tentang DSP audio dan bagaimana register kontrol Pi dan DMA bekerja juga mungkin diperlukan (sekali lagi, beberapa bab lebih dari cukup di sini).

hotpaw2
sumber
2
Meskipun ini adalah jawaban yang paling benar, penjelasan tentang dekomposisi Fourier, tidak menjelaskan bagaimana sinyal GPIO digital dikonversi ke FM, yang orang percaya adalah analog. Saya yakin banyak orang ingin secara visual lebih mengerti bagaimana sinyal dimodulasi menjadi FM.
not2qubit