DegreeTeam / Sound-Streaming-System

0 stars 0 forks source link

4월 2주차 함준혁 일정 #10

Open hjh4638 opened 9 years ago

hjh4638 commented 9 years ago

TV, PC 아날로그 신호 검출 회로 설계

  1. -200~200mv로 스윙하는 입력에서 (-) 전압을 없애기 위해 offset 전압 인가
  2. ADV ARFF를 300mv 가량으로 맞추어 ADC 진행
  3. 아두이노를 통한 테스트 (SPI 통신 및 컴퓨터 출력)
hjh4638 commented 9 years ago

image 전압 레벨 시프트 회로

image 오프셋 결과

I = (C1 * C2) / (C1 + C2) * (dU / dt) U = 진폭(U) * sin(2 * pi * f * t) I = (C1 * C2) / (C1 + C2) * (dU / 2* pi * f * U * sin(2 * pi * f * t) Uout = U * C1 / (C1 + C2)

여기서 U는 입력 신호. 위 예제에서는 U가 주기 신호로 되어 있지만 이번 프로젝트는 비주기 신호인 음성신호. 하지만 음성신호에도 Max(진폭)이 있으므로 C1, C2의 비율을 구할 수 있음

http://www.trekinc.com/pdf/6001_Voltage_Level_Shifting.pdf 문서 참조

hjh4638 commented 9 years ago

Capacitor 값을 선정할 때 고려할 점

  1. C1 * C2 / (C1 + C2)과 C1 / (C1 + C2)의 값. 이는 커패시터의 전압 비율을 맞추는데 중요.
  2. 입력 신호의 주파수.
    • 주파수가 높아지면 Current Level이 변하므로 이 부분 고려해야함
    • IC 칩이 허용할 수 있는 전류치를 초과하지 않도록 디자인해야함 image [주파수 F = 100일때] image [주파수 F = 1000일때]
hjh4638 commented 9 years ago

Specification of MCP3204 image

전류는 Vdd = Vref = 5V 일때, 최대 400uA가 인가되어야함. 하지만 Vdd = 5V 이고 Vref = 500mv이므로 정확한 한계치는 모름

hjh4638 commented 9 years ago

Vref를 500mv로 준 상태에서의 ADC 값 image

적용하기 전보다 평활화된 값을 얻게 됨

현재 negative Voltage가 인가되었을 때는 ADC 값이 0이 나옴. 이를 해결하기 위해선 전압 레벨 시프트가 필요

hjh4638 commented 9 years ago

image

[입력 파형]

image

[전압 레벨 시프트 회로 적용 후 파형]

캐패시터 C1 = 1000pf, C2 = 10pf으로 함 (-)전압이 사라지지 않음

hjh4638 commented 9 years ago

http://egloos.zum.com/sunnmoon/v/1833613 https://wiki.kldp.org/wiki.php/LinuxdocSgml/Sound-HOWTO USB 사운드 카드를 장착 후 리눅스 open() 명령어를 통해 읽어오는게 좋을듯함. image

hjh4638 commented 9 years ago

https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/overview 라즈베리 AP

https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software 되는 URL!

hjh4638 commented 9 years ago

AP로 동작하기

sudo apt-get install hostapd isc-dhcp-server AP로 동작시켜줄 hostapd와 client에게 ip정보를 뿌려줄 isc-dhcp-server를 설치한다.

Wifi connection들이 자동으로 IP주소를 얻을 수 있도록 아래 파일을 수정한다. sudo nano /etc/dhcp/dhcpd.conf

option domain-name "example.org"; option domain-name-servers ns1.example.org, ns2.example.org;

위 두줄을 주석처리하고 authoritative;에 있는 주석을 제거한다.

//If this DHCP server is the official DHCP server for the local //network, the authoritative directive should be uncommented. authoritative;

그리고 아래 코드를 맨 아래에 추가한다. 아래는 라즈베리파이의 사설 IP 정보를 임의로 설정하는 부분이다. Client는 192.168.42.1의 IP로 접근을 하게되고 192.168.42.10 ~ 192.168.42.50 사이의 IP를 할당받게 된다.

subnet 192.168.42.0 netmask 255.255.255.0 { range 192.168.42.10 192.168.42.50; option broadcast-address 192.168.42.255; option routers 192.168.42.1; default-lease-time 600; max-lease-time 7200; option domain-name "local"; option domain-name-servers 8.8.8.8, 8.8.4.4; }

sudo nano /etc/default/isc-dhcp-server //INTERFACES="wlan0" 를 추가한다.

sudo ifdown wlan0 // wlan0 interface를 Off 시킨다.

sudo nano /etc/network/interfaces 실행후 아래를 입력한다.

auto lo

iface lo inet loopback iface eth0 inet dhcp

allow-hotplug wlan0

iface wlan0 inet static adress 192.168.42.1 netmask 255.255.255.0

아래 문장으로 wlan0에 아이피를 부여한다. sudo ifconfig wlan0 192.168.42.1

sudo nano /etc/hostapd/hostapd.conf를 실행하고 아래 문장을 넣는다. interface=wlan0 driver=rtl871xdrv ssid=Pi_AP hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=Raspberry wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP

sudo nano /etc/default/hostapd를 실행하여 DAEMON_CONF="/etc/hostapd/hostapd.conf"를 추가

이제 Network Address Translation을 설정하자 sudo nano /etc/sysctl.conf를 실행후 맨 아래에 net.ipv4.ip_forward=1를 추가한다.

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" 를 실행하여 활성화 시킨다.

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

위 문장으로 이더넷 eth0과 와이파이 wlan0 사이의 NAT를 생성한다.

sudo iptables -t nat -S sudo iptables -S 위 두 문장으로 테이블에 무엇이 있는지 확인을 할 수 있다. 이 과정을 리부팅때 자동 실행하기 위해서는

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat" 을 실행하고 sudo nano /etc/network/interfaces 실행 뒤 up iptables-restore < /etc/iptables.ipv4.nat를 추가한다.

마지막으로 hostapd를 wifi adapter를 지원하는 버전으로 업데이트 해야한다.

wget http://adafruit-download.s3.amazonaws.com/adafruit_hostapd_14128.zip로 다운받고 sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.ORIG로 백업후 sudo mv hostapd /usr/sbin를 이용해 옮겨준다. 그리고 sudo chmod 755 /usr/sbin/hostapd를 통해 권한 설정!

이제 테스트를 해보자

sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf 를 실행하여 콘솔창에서 확인할 수 있다.

이제 이들을 데몬으로 올리자!

sudo service hostapd start sudo service isc-dhcp-server start 를 실행하자

그리고 아래 실행시 부팅때마다 상태 보여준다. sudo update-rc.d hostapd enable sudo update-rc.d isc-dhcp-server enable

참고 자료 : https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software

hjh4638 commented 9 years ago

연결된 사운드 카드 확인 cat /proc/asound/cards

image

hjh4638 commented 9 years ago

리눅스에 외부 장치를 연결하면 /dev에 파일 생성됨 image

hidraw0이 오디오 어댑터임

http://lxr.free-electrons.com/source/samples/hidraw/hid-example.c https://stuff.mit.edu/afs/sipb/contrib/linux/samples/hidraw/hid-example.c

It was helped by 덕일이형

hjh4638 commented 9 years ago

wlan 못잡는 문제 해결 책 http://sirlagz.net/2013/02/10/how-to-use-the-raspberry-pi-as-a-wireless-access-pointrouter-part-3b/