Open hjh4638 opened 9 years ago
전압 레벨 시프트 회로
오프셋 결과
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 문서 참조
Capacitor 값을 선정할 때 고려할 점
Specification of MCP3204
전류는 Vdd = Vref = 5V 일때, 최대 400uA가 인가되어야함. 하지만 Vdd = 5V 이고 Vref = 500mv이므로 정확한 한계치는 모름
Vref를 500mv로 준 상태에서의 ADC 값
적용하기 전보다 평활화된 값을 얻게 됨
현재 negative Voltage가 인가되었을 때는 ADC 값이 0이 나옴. 이를 해결하기 위해선 전압 레벨 시프트가 필요
[입력 파형]
[전압 레벨 시프트 회로 적용 후 파형]
캐패시터 C1 = 1000pf, C2 = 10pf으로 함 (-)전압이 사라지지 않음
http://egloos.zum.com/sunnmoon/v/1833613 https://wiki.kldp.org/wiki.php/LinuxdocSgml/Sound-HOWTO USB 사운드 카드를 장착 후 리눅스 open() 명령어를 통해 읽어오는게 좋을듯함.
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
연결된 사운드 카드 확인 cat /proc/asound/cards
리눅스에 외부 장치를 연결하면 /dev에 파일 생성됨
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 덕일이형
TV, PC 아날로그 신호 검출 회로 설계