Довольно интересная идея — использовать 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 МГц, не говоря уже о модуляции этого сигнала.
Вот бы кто написал скрипт, что бы брать поток интернет-радио и вещать с малины вот таким способом(я бы сам, да мозгов не хватит)))