반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

가끔 보자, 하늘.

프로토타입 _ 1 2015-05-03 본문

개발 이야기/개발툴 및 기타 이야기

프로토타입 _ 1 2015-05-03

가온아 2015. 5. 4. 01:49

인터넷 라디오 프로토타입을 완성. 실행 후 버튼을 누르면 채널이 변경되도록 만들었다. 

 

일단 회로도 구성은 아래와 같다. 아직은 버튼이 하나라 간단하다. 

 

 

YELLOW BUTTON : 3.3V로 전원이 들어가고 10K옴을 통해 버튼으로 들어간다. 위 그림에서 위 오른쪽 다리 방향으로 GND로 이어지고, 버튼의 입력은 18번 핀으로 받도록 설정했다. 18번 pin은 wiringPI에서 5번이다.

 

실행 후 노란 버튼을 누르면 미리 입력된 채널이 변경되도록 했다. mms 출력을 위해 mplayer를 사용하며, mplayer 설치 방법 을 참고하기 바란다. 

 

코드는  아래와 같다. 

#include <stdio.h>

#include <stdlib.h>

#include <signal.h>

#include <time.h>

#include <unistd.h>

#include <wiringPi.h>

 

int main (void)

{

  if(-1 == wiringPiSetup())

    return 1;

 

  int SWITCH = 5; //  pin 18

  pinMode( SWITCH, INPUT);

 

  clock_t startPush = 0;// for shutdown

  const char *radiolist[] = {

    "mms://210.105.237.100/mbcam"

    ,"mms://211.181.136.136/livefm"

    ,"mms://114.108.140.39/magicfm_live"

    ,"mms://115.84.165.160/fmlive"

    ,"mms://211.218.209.124/L-FM_300k"

  };

 

  int count = sizeof(radiolist)/sizeof(int);

  printf("radio list count = %d\n", count);

  printf("now time = %d \n", startPush);

 

  pid_t sndPID = -1;

  pid_t myPID = getpid();

  int radioIdx = 0;

  for (;;)

  {

    if( digitalRead(SWITCH) == 0)

    {

        if(sndPID != -1)

          kill(sndPID, SIGQUIT);

        sndPID = fork();

        if(sndPID == 0)

        {

          sndPID = execl("/usr/bin/mplayer", "mplayer", "-quiet", radiolist[radioIdx], NULL);

        }else{

          ++radioIdx;

          if(radioIdx >= count)

            radioIdx = 0;

        }

    }

  }

  return 0 ;

}

18번 핀의 입력을 받으면 저장한 라디오 주소를 바꿔주도록 했다.

 

결과는 아래와 같다. 

 

 

 

 

다음에는 볼륨 조절, 종료 코드를 추가해 볼 예정이다. 

이후 블루투스 스피커 연결, 외형 제작, 실기 테스트 순서로 진행되어 마무리 될 예정. 

 

다들 좋은 하루 되세요. ^^

 

 

 

 

반응형