2019년 6월 3일 월요일

DIY 5.1ch amplifier

처음 인터넷 글을 따라 DIY했을 때는,
이게 맞는건지, 구매한 제품이 이상 없는지 등
사전 지식이 없이 자신이 없었다.
결국 초기 구매한 물품들로 DIY를 하고 테스트를 했을 때, 제대로 된 SOUND가 나오지 않아 실망도 컸었다.

해서 여러분이 이 글을 참고해서 직접 HOME THEATER를 구축한다면,
몇가지를 고민을 해서 제대로 구축하기 바란다.

1. SPEAKER는 어떤것을 사용할것인지(출력, IMPEDANCE 등)
2. 1이 결정이 된다면 적당한 AMPLIFIER BOARD를 선정해야한다.
3. 2.가 결정이 되면 그에 맞는 POWER SUPPLY를 선택해야한다.

여러분이 아래 구현한것을 본다면, 현재 내가 구성 한 것이 잘못 구성되어 있다는것을 알수 있을 것이다.

 A. 보유하고 있는 FRONT SPEAKER는 200w이지만 amplifier의 출력은 100w이고
 B. 심지어 center speaker는 140w 이지만 amplifier의 출력은 50w이다.
 C. 그래서 center speaker가 front speaker에 비해 sound가 현저히 낮다.
 D. C를 보완하기 위해 100w의 amplifier board를 주문하긴 했지만 rear speaker를 갖추게 된다면
   총 400w(front 100w * 2, center 100w * 1, rear 50w * 2 )의 전력 공급이 필요한데 지금 보유한 power supply는 360w(24v * 15A)이다.
(A부터 D까지의 잘못된 사항에 대해 지적이나 조언이 있으면 언제든지 알려주세요~ 감사히 듣고 바로잡겠습니다.)

잘못된게 많지만, 그래도 만족스러운것은
15만원 가량 투자로 그전에 구매했던 4~50만원대의 AV RECEIVER를 대신할 수 있다는것과
뭔가 문제가 발생했을 때 문제되는 부분만 교체를 해서 HOME THEATER 유지보수 비용을 절감할 수 있다는 것이다.

여러분도 저렴한 비용으로 만족스러운 HOME THEATER를 구축하기 바란다.


I. 전체 구성도
구성도에서 파란색 점선 부분이 DIY한 것이며 AV RECEIVER에 해당한다.

HDMI INPUT에 해당하는 TV SETUP BOX, XBOX360, MEDIA CENTER는 기성품이거나 이미 구축한 것이다.
HDMI OUTPUT은 집에 있는 TV.
SPEAKER는 예전에 구매해서 보유하고 있는것이다.

II. 구매 물품
AV RECEIVER에 해당하는 부품들의 사진, 스펙, 가격이다.
아래는 부품별 aliexpress link 정보이다.
시간이 지나면 없어질 수도 있고, 각자의 needs에 따라 품목은 변경 될 수 있을 것이다.

 * audio decoder : https://s.click.aliexpress.com/e/bL8YlkZ2
 * amplifier(100w) : https://s.click.aliexpress.com/e/c00sOxsy
 * amplifier(50w) : https://s.click.aliexpress.com/e/bW5pgevi
 * power supply : https://s.click.aliexpress.com/e/7zNDP4k
 * cable(RCA TO 3.5 AUX : https://s.click.aliexpress.com/e/b4o6Nl3a
 * Hex Screws Nut : https://s.click.aliexpress.com/e/chrAmX9I

III. DIY AV receiver
AV receiver를 구축하는데 있어서 제일 중요한 것은 나의 needs에 맞는 구성을 하는것이다.
나의 경우, 이미 위에 언급했듯이 sound는 나오지만 최적으로 구성되어 있지는 않다.
그리고 부품들이 별개로 되어 있기 때문에, 어떻게 조화롭게 배치하는지 일것이다.
나는 power supply에 나사 구멍을 amplifier 보드 구멍에 맞춰 뚫고 Hex Screw로 고정하여 power supply와 amplifier board를 일체형으로 만들고 audio decoder위에 얹었다.


a. screwed amplifier board on power supply

b. connected power supply

c. connected amplifier board

<완성된 모습>


IV. Connect speakers with amplifier


V. Connect HDMI(IN/OUT) on RH-HD951A



* 테스트 동영상
RH-HD951A의 문제점
특정 음원(AAC, DD)에 대해
문제1. 동영상 실행 후 9초 뒤 소리 나오는 점
문제2. 동영상 실행 시 소리가 안나는 점
현재 이문제로 DISPUTE 중이다.







DIY 5.1ch amplifire (INTRO)

결혼 초기 집에서 홈시어터를 구축해서 웅장한 사운드로 영화를 보고싶은 마음에
약 100만원의 거금을 들여, AV 리시버, 5.1채널 스피커를 샀었다.

둘다 약 50만원 내의 제품으로 입문자용을 구매해서 사용을 했는데
이놈의 리시버가 1년이 멀다하고 고장이 나는거다.

두번의 실패로 와이프에겐 리시버를 새로 사자고 말꺼내는 즉시 반려를 당하는 통에
5.1채널의 스피커만 덩그러니 거실에 악세사리로 방치되고 있었다. 

그러던 중 2년전 인터넷을 뒤지다가 보니 부품을 사서 직접 만드는 글을 보고 
나도 한번 따라 하기로 했다.
(그 당시 내게 희망을 준 사이트 : https://www.instructables.com/id/DIY-300-Watt-51-Channel-Amplifier/)
그당시에는 지식이 전무해서 진짜 그대로 따라하기만 했다.
하지만 일에 치여 주문한 부품이 도착하고 근 1년 6개월을 방치해뒀다가 최근에 제작을 하게 되었는데, 웬걸....
내 스피커 스펙하고 위 따라한 스펙이 안맞아 소리는 작고 소음은 크더라.. OTL

그때부터 인터넷을 뒤져 이것 저것 궁금한거 찾아보고 하면서 조금 씩 보완해 
완벽하지는 않지만 그럭저럭 들을만한 앰프를 구성했다.


이제는 비싼(적어도 50만원은 우리 가정엔 비싸다) 리시버를 살일도 없지만
사서 1,2년 사용하다 버릴 일도 없을거 같다.
고장난 부품만 갈아끼면 될테니...

제작기는 좀있다 작성하기로 하고, 이글에서는 부품에 대해서만 적어보기로 하자.

0. 음원(영상 포함)
 A. TV SETUP BOX (KT - GENIE)
 B. MEDIA CENTER(OSMC - RASPBERRY PI B 3+)
 C. XBOX360


1. AUDIO DECODER
  A. HD AUDIO RUSH
처음 구매를 했을 때는 아래 제품이었다.
하지만 위 음원들이 모두 HDMI로 SOUND 및 영상을 전송해야하고 SWITCH역할을 해야해서 아래 재품으로 재구매를 했다. 물론 이 제품과 SOUND 추출 가능한 HDMI SWITCH를 연결해서 사용할수도 있지만 별도 전원 공급을 해야하므로 전선이나 배치등의 번거로움으로 두개의 기능이 다되는 아래 제품으로 결정.
 B. RH-HD951A
  HDMI INPUT 3개 지원. 위 음원(영상포함) 3개를 지원하는 제품으로 최근 ali에서 구매 함


2. SPEAKERS
 이전 있던 제품 5.1ch speaker 재 사용
 현재 rear는 없고
 8ohm front 2EA 200w, center 140w, sub woofer가 있다.

3. AMPLIFIER
 A. TPA3116D2 * 3EA 
  

  출력 50w *2 amplifier board.
  내가 가지고 있는 speaker들의 출력에 못미치는 제품.
  초기 설치 시 front speaker에 많은 소음과 낮은 음량으로 실패.

 B. tda7498 
  출력 100w *2 amplifier board  
 시험삼아 구매해서 구동을 했는데 잡음 없이 잘 나옴
 center speaker를 위해 하나 더 구매 함.
     


대략적인 구성은 아래와 같다

















2019년 6월 2일 일요일

마리모 생존 수온 체크(arduino, water temperature ds18b20, buzzer)

최근들어 아들에게 프로그램을 재미있게 알려주고싶었다.
그러던 와중 예전부터 한번 해봐야지 했던 라즈베리 파이와 아두이노를 접하게 되었고,
실생활에 쓰이는 아이템을 골라 프로그램에 대한 흥미를 유발하고자 했는데
최근 "마리모"라는 담수에서 자라는 녹조를 학교 근처 서점에서 사왔다.
그런데 이 친구는 물이 35도가 넘으면 죽는단다.



<아들이 사온 마리모가 담긴 병>

오~ 그래? 그럼 수온을 재는, 그리고 특정 온도가 넘으면 알람을 주는걸 한번 만들어보자~ 해서 아래 프로젝트가 진행이 됐다.

결론부터 말하자면, 나만 재밌었던거 같다.
아들은 중간중간 보여줄때 마다 신기함과 놀라움의 리액션은 있었으나 그때 밖이었으니...
지금은 마리모 옆 반창통 안에서 열심히 마리모가 담긴 물의 온도를 측정하지만, 아들의 관심 밖에 있다.



초기 아들과 논의를 해서 구상한 구상도이다.
1. 아두이노에 스피커와 방수온도계를 연결
2. 상시 수온을 측정하여 30도 이상이면 부저 알림
 (초기엔 scratch를 이용해서 야옹이 소리를 내려고했으나, 스피커가 아닌 buzzer를 이용하여 구현하다보니 제외)

이렇게 초기 계획으로 시작을 해서 아래 제품을 ali에서 구매를 했다.

1. arduino uno board(나중에 nano board로 교체)
  1.1 uno
    https://s.click.aliexpress.com/e/b65Vs4DK
  1.2 nano
     https://s.click.aliexpress.com/e/b9ouQx3i
2. 수온계
     https://s.click.aliexpress.com/e/nUCJAFO
3. 부저(기초 패키지 내 있던 것으로 사용)
4. jump 선
5. 4.7k 저항
6. bread board(나중에는 제외)


<arduino uno board이용하여 완성한 모습>
센서와 보드를 연결하고 프로그래밍한 후 테스트한 사진

<arduino nano board와 캡슐화를 위한 통>
센서의 선이 bread board에서 자꾸 빠져서, 납땜하기 전 배선을 참고하기위해 찍은 사진

<납땜한 최종 모습>
부피도 적고 소모전력도 낮음





<테스트 동영상>


코드 및 특징(파란색 주석 참고)

/* YourDuino Electronic Brick Test
Temperature Sensor DS18B20
- Connect cable to Arduino Digital I/O Pin 10
 */

/*-----( Import needed libraries )-----*/
#include <OneWire.h>
#include <DallasTemperature.h>

/*-----( Declare Constants )-----*/
#define ONE_WIRE_BUS 10 /*-(Connect to Pin 10 )-*/
#define SPEAKER_BUS 8

/*-----( Declare objects )-----*/
/* Set up a oneWire instance to communicate with any OneWire device*/
OneWire ourWire(ONE_WIRE_BUS);

/* Tell Dallas Temperature Library to use oneWire Library */
DallasTemperature sensors(&ourWire);

/*-----( Declare Variables )-----*/


void setup() /*----( SETUP: RUNS ONCE )----*/
{
/*-(start serial port to see results )-*/
delay(1000);
Serial.begin(9600);
Serial.println("YourDuino.com: Electronic Brick Test Program");
Serial.println("Temperature Sensor DS18B20");
delay(1000);

/*-( Start up the DallasTemperature library )-*/
sensors.begin();
}/*--(end setup )---*/


void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
Serial.println();
Serial.print("Requesting temperature...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");

Serial.print("Device 1 (index 0) = ");
Serial.print(sensors.getTempCByIndex(0));
Serial.println(" Degrees C");
Serial.print("Device 1 (index 0) = ");
Serial.print(sensors.getTempFByIndex(0));
Serial.println(" Degrees F");

if(sensors.getTempCByIndex(0) > 35) /* limit */
{
  // 수온 35도는 극한이다. 0.5초 간격으로 빠른 알람을 주자.
  // buzzer
  tone(SPEAKER_BUS,200,500);  //500: 음의 높낮이(주파수), 500: 음의 지속시간(0.5초)
  delay(500);
}
else if(sensors.getTempCByIndex(0) > 30) /* buffer */
{
 //수온 30도를 임계치 설정하여 이때부터 인지를 하도록 알람을 주자. 1초 간격 알람.
  tone(SPEAKER_BUS,500,1000);  //500: 음의 높낮이(주파수), 1000: 음의 지속시간(1초)
  delay(1000);
  // buzzer
}
else
{
  //온도 체크 후 이상이 없으면 1분 후 체크하도록 DELAY 설정.
  //잘때 불을 다 끄고 있을건데 센서가 체크할때마다 깜빡이면 신경쓰일듯하여...
  delay(60000);
}



}/* --(end main loop )-- */

/* ( THE END ) */