Довольно интересная идея — использовать Raspberry Pi для FM-трансляций.
Причём, для этого проекта не нужно никакое дополнительное оборудования — только сам Raspberry Pi и кусок проволоки, выступающий в роли антенны.
Проволоку (около 20 см длиной) нужно подключить к 4-му контакту интерфейса ввода-вывода (GPIO).
Проволока выступает в роли передающей антенны. Далее, нужно скачать, скомпилировать и установить модуль Pifm.tar.gz.
Вот и всё! Теперь Raspberry Pi может транслировать любой wav-файл формата 44,1 кГц, 16 бит, моно.
sudo python >>> import PiFm >>> PiFm.play_sound("sound.wav")
Теперь, можно включить радиоприёмник, настроить его на частоту 100 МГц и принимать свой сигнал, который различим на расстоянии до 100 метров.
В основе программы, лежит модуляция сигнала на основе внутреннего тактового генератора, работающего на частоте 500 МГц. По-умолчанию, частота делится на пять, поэтому вещание и происходит на частоте 100 МГц (этот параметр можно изменить в настройках).
Модулируемый сигнал из памяти направляется на разъём ввода-вывода и, что удивительно, этой мощности оказывается достаточно для радиовещания.
// // Set up a memory regions to access GPIO // void setup_io() { /* open /dev/mem */ if ((mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0) { printf("can't open /dev/mem \n"); exit (-1); } /* mmap GPIO */ // Allocate MAP block if ((gpio_mem = malloc(BLOCK_SIZE + (PAGE_SIZE-1))) == NULL) { printf("allocation error \n"); exit (-1); } // Make sure pointer is on 4K boundary if ((unsigned long)gpio_mem % PAGE_SIZE) gpio_mem += PAGE_SIZE - ((unsigned long)gpio_mem % PAGE_SIZE); // Now map it gpio_map = (unsigned char *)mmap( gpio_mem, BLOCK_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, mem_fd, GPIO_BASE ); if ((long)gpio_map < 0) { printf("mmap error %d\n", (int)gpio_map); exit (-1); } // Always use volatile pointer! gpio = (volatile unsigned *)gpio_map; } // setup_io
0 комментариев на «“Raspberry Pi в роли FM-передатчика”»
прикольная идея
на выходных попробую 🙂
*здесь должна быть картинка с троллейбусом из буханки хлеба*
И вообще, такое можно и на ардуине какой-нибудь слепить.
А если включить мозг и хоть и хоть раз в жизни подумать перед тем как писать посты? Прелесть Raspberry Pi в намного большей производительности в отличии от ардуины, на которой никак, вообще никак не выдашь на ногу контролера работающего на частоте 16 МГц сигнал частотой 100 МГц, не говоря уже о модуляции этого сигнала.
Вот бы кто написал скрипт, что бы брать поток интернет-радио и вещать с малины вот таким способом(я бы сам, да мозгов не хватит)))