2019년 4월 23일 화요일

[시험] 네트워크 (3)

3장

- 회선 교환 시스템과 패킷 교환 시스템의 차이와 원리를 이해
- 가상 회선과 데이터 그램의 차이와 원리를 이해한다.
- LAN,MAN,WAN의 구조를 알아본다.


  • 교환 시스템
데이터를 최종 목적지까지 올바른 경로로 중개하는 교환(Switching) 기능을 제공한다.
데이터가 한 곳으로 집중되지 않고, 효율적인 경로를 선택할 수 있도록 하는 역할.

- 회선 교환 방식
연결형 서비스를 제공, 고정 대역폭의 전송률을 지원, 네트워크의 구조가 단순


- 패킷 교환 방식
비연결형 서비스를 제공, 가변대역의 전송률을 지원해 네트워크 구조가 복잡


- 교환시스템의 종류

# 전용 회선 방식 : 송신, 수신 호스트가 전용 통신 선로로 데이터 전송
# 교환 회선 방식 : 전송 선로 하나를 다수의 사용자가 공유

# 회선 교환 :
데이터 전송 전에 양단 사이의 연결을 설정, 모든 데이터가 같은 경로로 전달, 고정대역의 전송선로를 전용으로 할당 받아 안정적인 데이터 전송률 지원

# 메세지 교환 :
데이터 전송 하기 전에 연결 경로를 미리 설정하지 않고, 전송하는 메시지의 헤더 마다 목적지 주소를 표시 하는 방식. 송신 호스트가 전송하는 전체 데이터가 하나의 단위로 교환 처리된다. 축적 후 전달(Store and Forward)방식.





# 패킷 교환
일정한 데이터 블럭인 패킷을 교환기가 수신측 주소에 따라 적당한 통신경로를 선택하여 전송하는 교환방식. 전송하고자 하는 데이터를 일정한 크기의 패킷으로 나누어 송수신 주소인 헤더를 각각 부가 하여 패킷단위로 전송하는 방식이다.

- 패킷 교환 방식은 축적교환방식의 일종으로 송신 DTE가 보낸 데이터를 교환기에 저장한 다음 수신 DTE에 고속으로 전송하게 되는데 이때, 단말기가 메시지를 패킷으로 분해하고 수신측에서는 이 패킷을 합치는 기능이 있어야한다. 패킷교환 방식에는 가상회선과 데이터 그램 두 가지 방식이있다.

- 패킷 교환 방식의 장점은 전송대역의 효율적 이용, 호스트의 무제한 수용, 패킷에 우선순위를 부여 할수 있다. 다만 단점으로는 패킷의 도착 지연 시간이 가변적이며, 각 패킷들의 지연시간 분포를 의미 하는 지터라고하는 단점이 있다.
&&Jitter : 넓은 의미에서 시간의 이상적인 위치에 대하여 짧은 시간에 나타나는 신호의 차이

- 패킷의 경로를 선택하는 방식은 정적 경로동적 경로가 있다. 정적경로는 호스트 사이의 전송 경로를 미리 고정(설정)하는 것이고, 동적경로는 네트워크 혼잡도 및 주변 상황에 따라 전송 경로를 지속적으로 변경하는 것이다.

- 가상회선 (Virtual Circuit)
연결형 서비스를 지원하기 위한 기능. 연결을 통해 전송되는 모든 패킷의 경로가 동일하고, 패킷 도착 순서가 일정하다.


위 그림과 같이 패킷의 경로가 동일하고 도착순서또한 보낸것과 받는것이 일치 한다.

- 데이터 그램 (DataGram)
비연결형 서비스이다. 패킷을 독립적으로 전송, 네트워크 혼잡도에 따라 서로 다른 경로로 전송된다. 이 방식은 정보량이 작거나 상대적으로 신뢰성이 덜 중요한 환경에서 사용한다.


위 그림과같이 패킷이 같은 경로로 전송되지 않고 수신 호스트에서는 보낼 때와 같은 순서로 받지 않는다


- 교환방식의 비교





# 프레임 릴레이 

동일한 속도의 전송 매체로 고속 데이터 전송을 지원 할 수 있도록 고안된 기술, 데이터 링크 계층의 기능을 단순하게 설계 가능



위 그림과 같이 패킷 교환망에서는 라우터를 지날때 마다 데이터를 잘 받았다는 응답을 받아야한다. 신뢰성이나 안정성에는 좋을지 몰라도 데이터가 많으면 부하가 많이 걸린다. 이 점을 개선하고자 프레임 릴레이망 방식이 등장했다. 데이터를 한번에 쭉 받고 확인 응답을 한번에 보내어 속도 측면에서 개선되었다.



[시험] 네트워크 (2)

2장

- 모듈의 개념을 알아보고, 계층 구조의 필요성을 이해한다.
- 프로토콜 설계 시 고려할 사항을 알아본다.
- OSI 7 Layer 모델의 동작 원리와 데이터 전달 방법을 이해한다.
- TCP/IP의 계층 구조와 관련 프로토콜을 이해한다.



  • 계층적 모듈 구조
복잡한 시스템을 기능별로 모듈화 하면 시스템 구조가 단순해진다.

- 복잡하고 큰 시스템은 기능을 작게 모듈로 나누어 설계가 가능하다
- 전체 시스템을 이해하기 쉽고, 설계 및 구현이 용이
- 모듈간의 표준 인터페이스가 단순하면 모듈의 독립성을 향상 시킬수 있으며, 이는 시스템 구조를 단순화 시키는 장점이 된다.
- 각 계층의 기능 오류를 수정 하거나 향상 시켜야할 때, 전체 시스템을 재 작성하지 않고도 계층의 모듈만 교체하는 것으로 완료 할 수 있다.




  • 프로토콜 설계 시 고려사항
- 주소 표현

주소는 각각의 Device를 구분하는 역할을 한다. 활용도를 높이기 위하여 구조적 정보를 포함한다.  1:다 통신을 지원한다 (Broad casting, MultiCasting)

-오류 제어

오류제어 기능은 통신 프로토콜의 가장 기본적인 기능이다. 전송 결과 유형에는 정상적인 전송, 데이터 변형 오류(데이터가 깨져서 도착함), 데이터 분실 오류(데이터가 도착하지 못함)가 있다.


- 흐름제어

수신 호스트의 버퍼 처리 속도보다 송신 호스트가 데이터를 전송하는 속도가 빠르면 논리적인 데이터 분실 오류가 발생 할 수 있다. 즉, 송신 호스트의 전송 속도를 조절하는 흐름제어 기능이 필요하다.
-수신단에서 데이터 처리 속도가 늦으면 버퍼에 저장하게 되지만 버퍼 용량에 한계가 있어서 용량이 다 차게 되면 송신단에서 데이터의 손실이 발생한다.-

- 데이터 전달 방식

단방향 >> 데이터를 한쪽 방향으로만 전송
전이중(Full Duplex) >> 데이터를 양쪽에서 동시에 전송
반이중(Half Duplex) >> 데이터를 양방향으로 전송이 가능하지만 특정 시점에서는 한쪽 방향으로만 전송이 가능하다. 예) 무전기 

  • OSI Model (Open Systems Interconnection)
OSI 7 계층은 7개의 계층으로 구성된 계층 구조를 갖는 개방형 시스템이다. 이 개방형 시스템은 다양한 표준화와 관련된 기본 골격을 제공하는 것이 목적이고, 특정 시스템에 대한 프로토콜의 의존도를 줄이고 향후 기술 진보에 따른 프로토콜의 확장성 들을 고려하여 보편 적인 개념과 용어를 사용하여 표준화 되었다.

- OSI 7 계층은 서로 다른 계층 간의 통신은 불가하다. 같은 계층 모듈만 통신을 할수가 있다.
송신 호스트는 데이터가 상위에서 하위계층으로 이동할 때마다 데이터 프레임에 헤더가 추가되고, 수신 호스트는 반대로 하위계층에서 상위계층으로 이동 할때마다 헤더가 제거 된다.
이 헤더에는 각 계층에 대한 정보가 있다. 


  • 각 계층 별 기능
- L1 - 물리계층

사용자 데이터를 물리 매체상에서 소통이 가능한 통신 신호로 변환하여 전송하는 역할을 담당한다. 또한 데이터 링크 계층의 데이터 통신 기능을 원활하게 수행하도록 물리적인 연결 설정과 유지 및 해제 기능과 관계되어있다. 데이터 전송 속도, 송수신 호스트 사이의 클럭 동기화 방법, 물리적 연결 형태 등 물리적 인터페이스에 관한 사항과 관계됨.


-L2 - 데이터 링크 계층

물리적인 연결을 통해 보다 신뢰성 있는 데이터 전송 수단을 제공하는 계층이고, L2에서 데이터의 물리적 전송오류를 해결한다. (오류 감지 및 재전송기능)
대표적인 장치로는 스위치가 있다.

- L3 - 네트워크 계층

송신 호스트가 전송한 데이터가 어떤 경로를 통해 수신 호스트에 전달되는지를 결정하는 라우팅 문제를 처리 >> 쉽게 말해 전송하고자하는 데이터의 경로를 정하는 계층(혼잡제어 기능)
이때 호스트 구분을 위한 IP 주소와 같은 주소의 개념이 필요하다.

- L4 - 전송계층

헤더에 송수신지 포트번호를 포함하여 올바르게 전달 될 수 있게 하는 계층 전체 메시지를 종단 대 종단간 제어와 에러를 관리 패킷의 전송이 유효한지 확인, 전송에 실패된 패킷을 재전송 하는 등 신뢰성 있는 통신을 보장 주소 설정, 오류 제어, 흐름제어, 다중화 수행  

  • TCP/IP




OSI 7계층을 4계층으로 간소화함. IP는 사용자 데이터를 전송하는 네트워크 계층 프로토콜 기능을 수행한다. TCP,UDP는 사용자 데이터를 전송하는 전송 계층 프로토콜 기능을 수행한다.
오류 정보를 전송하는 목적으로 ICMP를 사용한다. 


- ARP는 IP 주소를 MAC주소로 변환.
- RARP는 MAC주소를 IP주소로 변환.
- ICMP는 오류메시지를 전송하는 프로토콜.









[시험] 네트워크 (1)

1장

- 네트워크와 관련된 기초 용어를 이해한다.
- OSI 7Layer 모델의 필요설을 이해하고, 각 계층의 기능을 살펴본다.
- 네트워크 프로토콜의 기초 의미와 역할을 이해한다.
- 주소의 역할과 기호로 된 이름의 차이와 필요성을 이해한다.
- 주소와 이름을 변환하는 DNS의 필요성을 이해한다.


  • 데이터통신 (Data Communication)
pc와 같은 통신 기능을 갖고 있는 두 개 이상의 Communication device 사이에서 동선이나 광섬유 혹은 무선 링크 등을 포함하는 전송 미디어를 사용하여 정해진 규칙, 통신 프로토콜에 따라 데이터로 표현되는 정보를 교환하는 과정 

  • 프로토콜(Protocol)
전송 매체를 통해 데이터를 교환 할 때의 임의의 통신 규칙 
- 상호 연동되는 시스템이 전송매체를 통해 데이터를 교환할 때는 특정규칙을 따른다. 프로토콜의 역할은 프로토콜에 정의된 기능을 수행하면서 필요한 정보를 서로 교환 하는 것 (즉, 무엇을 언제 어떻게 통신할 것인가?에 대한것)


  • 노드(Node)
인터넷에 연결된 시스템의 가장 일반적인 용어
  • 호스트(Host)
컴퓨팅 기능이 있는 시스템
  • 클라이언트(Client)
서비스를 요청하는 시스템
  • 서버(Server)
서비스를 제공하는 시스템

  • 인터네트워킹(Internetworking)
서로 다른 종류의 네트워크를 연결시키고 하나의 데이터통신 기준을 둠으로써 다양한 하드웨어 기술의 결합을 가능하게 해주는 기술

- 서로 독립적으로 운영되는 두 네트워크가 연동되어 정보를 교환하려면, 이를 적절히 연결하여 데이터 중개를 할수 있다. 이 인터네트워킹 기능을 수행하는 시스템을 일반적으로 게이트웨이 (Gateway)라고 부른다.

  • IP
IP 주소는 네트워크 계층의 기능을 수행하는 IP 프로토콜이 호스트를 구분 하려고 사용하는 주소체계

IPv4는 32bit 크기의 주소체계를 사용한다. 

예) 211.223.201.30





OSI 7 Layer

L1 - PHY (물리계층) 
물리적으로 데이터를 전송하는 역할을 수행
L2 - Data Link (데이터 링크 계층)
물리적 전송 오류를 해결 (오류감지/재전송 기능)
L3 - Newwork (네트워크 계층)
올바른 전송 경로를 선택 (혼잡제어 기능)
L4 - Transport (전송계층)
송수신 프로세스 사이의 연결 기능을 지원
L5 - Session (세션 계층)
대화 개념을 지원하는 상위의 논리적 연결을 지원
L6 - Presentation (표현 계층)
데이터의 표현 방법 (압축/암호화)
L7 - Application (응용 계층)
다양한 응용 환경을 지원




2019년 4월 22일 월요일

[프로젝트]ESP8266 Spec 요약



- ESP8266이 지원하는 프로토콜은 802.11b/g/n이다

- 2.4Ghz 대역을 지원한다.

- TX power: 사용자가 신호를 보낼때 신호의 세기?를 말하는 것 같다.
802.11b의 경우 +20dBm, 802.11g는 +17dBm, 802.11n은 +14dBm를 지원한다.

-RX sensitivity: 받을때 멀리서 온 무선신호를 받아야하므로 채널을 통과하는 과정에서 간섭과 왜곡으로 인해 신호의 전력이 작아지게 되고 이 작은 신호를 받아야 하므로 RX Sensitivity라고 표현한것 같다.
802.11b의 경우 속도가 11Mbps인데 이는 CCK변조를 할 경우의 속도이고
802.11g는 기본적으로 OFDM으로 다중화를 하기 때문에 54Mbps(이론치)의 속도가 나온다.

- dBm은 무엇인가?



ESP 8266 Block Diagram


 *RF balun은 RF Balance/Unblance를 말한다.

변압기의 개념 balun

들어오는 신호를 받아 ic에 맞는 신호로 증폭/감쇠를 하여 ADC해주는 단으로 넘겨준다.

중간에 스위치는 송/수신을 변환하는 스위치이다.

RF Recive에서는 받은 신호를 기저대역 신호로 복조하는 단계이다.

RF Transmit은 기저대역 신호(Baseband signal)을 2.4Gghz로 Up-Convert시켜준다. CMOS의 출력을 높은 출력으로 증폭시켜 안테나에 태워 전송하게 된다. 출력의 증폭이 선형적으로 더 개선되었고 802.11b는 19.5dBm을, 802.11n은 18dBm의 출력을 낸다.

receive에서는 받은 신호를 검출하기 위해 아날로그 receive를 믹서해서 1/2하고 vco와 pll을 거쳐 수신한 신호를 복원(PLL로 동기검파를 하게된다, 수신단에서 송신할때 주파수와 같은 반송파를 만들어서 수신된 신호에서 위상을 추출하여 신호를 복원)하고, transmit에서는 보내기 위해 아날로그 transmit과 믹서해서 2.4Ghz대역으로 변조하게된다. (아날로그와 믹서를 하는 것은 송수신 할때 일종의 신호를 잘받았다, 이런 신호를 보낼것이다 하고 확인을 하는 헤더?프레임을 덧붙이거나 확인하는 과정인듯하다)


ESP 8266 UART
- ESP 8266의 기본 보레이트는 OSC 26Mhz 기준으로 74880의 보레이트를 갖는다. UART1의 TX로 (UART1의 RX는 flash할때 사용해서 따로 사용할수 없다) 초기 상태의 오실레이터 값과 보레이트 값을 알려준다.
- 최대 115200 보레이트에 한번에 40비트를 보낼 수 있다. 따라서 UART로는 최대 4.5Mbps의 속도가 나온다 (115200*40)

-RF의 소비전력




*https://m.blog.naver.com/PostView.nhn?blogId=mdkd&logNo=20005590405&proxyReferer=https%3A%2F%2Fwww.google.com%2F

[시험] 802.11프로토콜 및 Wifi


출처: https://markspeople.tistory.com/97

OSI 7 Layer에서 802.11은 물리계층(PHY)과 데이터링크(MAC) 계층에 대해서 정의를 해둔 규격임.
물리계층에서는 신호를 검출하여 데이터를 전송하는 기능을 하고 데이터 링크 계층에서는 여러 방법으로 데이터가 정확히 전송되었는지 확인하는 계층이다.

- 물리계층에서는 들어오는 신호를 검출한다. 그리고 무선매체가 사용중인지 아닌지 (busy or idle이라는 표현 사용)를 MAC 부계층에 알려준다. 그 후에 데이터 프레임을 전송하게 된다. (8비트 단위로)


- 데이터 계층은 MAC과 LLC계층으로 나뉘는데 MAC에서는 CSMA/CA 프로토콜이 사용된다.이 CSMA/CA는 무선매체에 접근에 대한 제어를 한다. 그리고 네트워크를 탐색하고 합류, 즉 무선네트워크에 접속을 하게된다. 후에 3단계의 인증 및 보안을 거친다. 

CSMA/CD는 유선환경에서 버스에 연결된 여러 통신 주체들이 동시에 통신을 할때 데이터 간에 충돌을 막기위해 사용되는 프로토콜이다. 유선환경에서는 전송로가 비었는지 확인(Carrier sensing)을 하고 비어있다면 데이터 전송(Multi Access)을 하고, 전송 후 충돌이 있나 없나 검사(Collision Detection)를 한다. 있다면 대기시간(Back off)을 갖게 한다.

CSMA/CA는 무선환경의 CSMA/CD라고 생각하면 되는데 무선환경에서는 충돌여부의 감지가 어려워서 충돌을 회피 하는 방식으로 프로토콜이 구현되어있다. 전송 절차는 일정시간만큼 대기(DIFS)하고 있다가 수신단이 idle상태이면 데이터를 전송한다. 전송후 일정시간 후에 (SIFS)수신단은 송신단으로 ACK신호를 보내 데이터를 잘 받았다라고 알린다.

IFS(Inter-Frame Space)이 있는 이유는 station이 idle상태 처럼 보일지라도 멀리 떨어진 station에서 데이터를 전송했을 지도 모르기 때문이다. 이런경우 IFS시간없이 바로 데이터를 전송하면 충돌이 일어나기 때문에 IFS만큼 일정시간 대기를 한다. 또한 이 IFS를 가지고 우선순위를 정할수있다. IFS를 짧게 줄수록 우선순위가 높은식으로 정할 수 있다.



출처: https://needjarvis.tistory.com/156




MAC계층의 주요 프레임으로는 관리 프레임, 제어프레임, 데이터 프레임이 있다.
관리 프레임은 초기 통신을 확립한다. >> 어떤 와이파이/무선네트워크에 연결할 지에 대한 프레임을 말하는것 같다.
제어 프레임 >>신뢰성있는 데이터 전송을 위해 데이터 프레임에 수신 데이터의 확인,긍정등의 헤더가 붙는 것을 말한다.
데이터 프레임은 전송하고자 하는 데이터를 말한다.

LLC(논리적 링크 제어)는 상위계층과 인터페이스 기능을 제공하고, 오류제어 흐름제어의 기능이 있다. LLC의 프레임은 DASP, SSAP, Control, DATA로 구성되어있다. 즉, 발신지가 어디이고 목적지가 어디인지, 프레임의 종류와 역할이 무엇인지, 보내고자하는 데이터로 프레임이 구성되어있다.

질문거리:(간단하게 말하자면 와이파이에 접속하는 단계를 말하는 것 같은데 내 생각에는 네트워크에 먼저 접속을 하고 데이터를 주고받고 해야하는 것 아닌가 의문이 든다...)>>MAC이라는 것이 매체접근방식(Media Access Control)을 이야기하는 것임

-802.11xx 요약

*802.11b

1. 802.11은 무선 인터넷용 프로토콜임.
2. 2.4GHz ISM대역의 기존 IEEE802.11 규격 무선 LAN의 변복조 기술을 일부 변경하여 11Mbps까지 지원한 것이 IEEE802.11b 표준임.
3. IEEE802 계역 기술은 일련의 LAN 기술집합에 대한 사양임.
4. 모든 802 네트워크는 MAC과 PHY 구성요소를 가짐.
5. MAC은 매체 접근과 데이타 전송방법을 결정하는 집합임.
6. PHY는 전송과 수신에 대한 구체적인 방법을 의미함.
7. 상용화 제품중 주류를 이루고 있으며 CCK 변조방식을 사용하여 최대 11M까지 전송이 가능함.
8. 802.11 표준의 매체 접근 제어계층과 DSSS 물리계층 규격을 그대로 사용하면서 기존 DSSS방식, 장비와 호환성을 유지함.
 9. 802.11b 이전의 FHSS방식과 호환되지 않음. 0. S/N비 요구사항을 충족하기 위해 전송거리가 802.11의 절반 이하로 줄어듬.

802.11g

1. 차세대 무선랜 표준으로 DSSS와 OFDM을 모두 사용하여 전송률은 802.11a와 비슷하며 802.11b 와 호환이 가능함.
2. 무선부분은 802.11a와 802.11b 무선규격의 필수항목을 포함하면서 주파수 채널만 802.11b의     2.4GHz대역을 사용함.
3. 802.11a의 OFDM변조와 802.11b채널과 타이밍을 사용함.
4. 802.11b의 CCK를 이용 5.5M와 11Mbps를 지원함.
5. 802.11a의 6, 9, 12, 24, 36, 48, 54Mbps를 지원하며 6, 12, 24는 필수임.
 6. CCK-OFDM은 선택사양으로 802.11b와 호환성을 보장하기 위한것임.
7. 단일 캐리어로 전송되는 CCK와 다중캐리어로 전송되는 OFDM을 동일대역에서 사용하기 위해서는 동일 패킷의 신호부분 설계가 중요함.
8. CCK로 변조된 동일한 구조의 헤더를 사용하여 연속되어 전송될 변조방식을 구분함.
9. 8bit로 구성된 헤더 부분의 서비스필드에서 데이터가 어떤 변조방식을 사용할 것인지를 알려줌.

802.11n

1. 802.11a, 802.11g의 대역폭을 향상시키고자 내놓은 개정판
2. 기존 20Mhz의 대역폭에서 40Mhz의 대역폭으로 증가, 54Mbps에서 600Mbps로 속도 증가.
3. MIMO 기술의 적용 (하나의 안테나에서 송수신을 하는 것이 아닌 여러개의 안테나로 송수신)
4. 2.4Ghz와 5Ghz대역을 하나의 장비에서 사용가능


OFDM  (Orthogonal Frequency Division Multiplexing)


직교분할 주파수 다중화라고 한다. 데이터를 여러개로 나누어 직교하는 일정 간격의 반송파에 실어 데이터를 병렬로 보내는 방식이다. FDM방식은 데이터를 실어 보내는 반송파에 guard interval이라 하는 보호대역을 두어 데이터를 전송하는데 이러한 방식은 대역폭 효율성이 떨어진다.  OFDM은 직교하는 반송파를 간섭없이 오버랩시켜서 대역폭의 효율성을 극대화 하여 데이터를 전송하는 방식이다. 802.11 뿐만 아니라 LTE에서도 사용하는 방식이다.
OFDM은 효율적인 데이터 전송방식으로 많이 사용하는 기법이다. 우선은 주파수 변조방식이어서 간섭에 강하고, 대역폭을 효율적으로 사용가능한 점, Single Carrier Moudulation(단일 반송파 변조)에서는 채널을 통과하면 왜곡이 심해서 이것을 다시 복원하기 위해 복잡한 이퀄라이징이 필요하지만 OFDM에서는 단순히 gain의 차이 정도로 왜곡이 발생하여 복잡한 이퀄라이징 없이 복원이 쉽게 가능한 것 등의 장점이 있다.

DSSS (Direct Sequence Spread Spectrum )

 디지털 신호를 매우 작은 전력으로 넓은 대역으로 분산하여 동시에 송신하는 것이다.
통신 중에 노이즈가 발생하더라도, 복원 시에 노이즈가 확산되기 때문에 통신에의 영향은 작다. 또한 강한 신호를 발생하지 않기 때문에 좀처럼 다른 통신을 방해하지 않는다.
데이터 비트를 무작위 패턴으로, PN시퀀스와 곱해서 데이터를 해당 대역폭 전체를 차지 하여보내는 방식.

CCK는 DSSS를 코딩하는 방법 중하나로 802.11b에서 사용되는 코딩방법이다. 더 많은 데이터를 TDM방식으로 직렬 전송한다.


*https://blog.naver.com/hts8376/100006806688

2019년 4월 8일 월요일

[프로젝트]ESP8266을 이용한 IOT 기기 구현! (1)

0. 


ESP 8266을 사용하여 IOT 기기를 구현 하는 프로젝트를 시작하였습니다.

학부 캡스톤 디자인 프로젝트로써 시작하게 되었습니다.

과연.. 잘 마칠수 있을지 의문입니다 ㅜㅜ

우선 기능적으로 ESP 01 모듈을 사용하여 Atmega 128의 기능을 웹사이트에서 제어하는 큰 틀

을 가집니다.

상세적으로 ESP 01로 웹페이지를 생성하여 128과 UART 통신을 이용하여 LED를 제어하거나

모터를 제어합니다.



1. 


필요한 부품으로는  Atmega 128 보드, ESP 01 모듈, 5v-3.3v 레귤레이터, cp2102(USB to TTL)

혹은 아두이노 우노 보드 정도 되겠습니다. (LED와 모터는 추후에 포스팅)

데이터 시트를 찾아보니 와이파이 모듈에 펌웨어나 소스를 올리기 위해서 추천하는 툴이

cp2101이 있었으나, 이것을 아두이노 우노 보드로 대체 하여 펌웨어를 올리고 소스를 업로드

하게 되었습니다.


2. 


개발환경으로는 여러가지가 있었습니다. Lua언어, 이클립스를 이용한 c언어 개발환경,

아두이노 IDE, 마이크로 파이썬(SDK가 아직 개발중이라고함) 정도가 있었으나 아두이노

보드가 있어서 아두이노 IDE를 사용합니다.


3.  


우선 아두이노를 설치 합니다. (저는 Mac OS Mojave입니다 / 버츄얼 박스로 윈도우 10 환경)

 아두이노 버전은 1.8.9를 설치하였습니다.* 다음으로는 펌웨어와 ESP에 펌웨어를 올리는

다운로드 툴을 설치 합니다.

** 데이터 시트에는 루분투 환경에서 하는 걸 추천하지만 윈도우에서 펌웨어 업로드를 해도

무관합니다.

* https://www.arduino.cc/en/Main/Software
** https://www.espressif.com/en/support/download/other-tools?keys=&field_type_tid%5B%5D=14


3-1. 


아두이노를 설치 하였으면 다음은 하드웨어를 준비합니다.

*ESP 8266 데이터 시트를 보시면 펌웨어 모드와 프로그램 실행하는 (러닝모드..?)가 있습니다.

우선적으로 펌웨어를 올려야 하니 펌웨어 모드로 꾸며 줍시다.

펌웨어 모드는 사진과 같이 구성합니다. 여기서 좀 삽질(?)을 많이 했는데 가지고 있는 ESP01

세대 모두 성공 하였습니다.


위의 사진과 같이 결선을 하는데 GPIO0 와 GND 사이에 1k옴의 저항을 연결하여 펌웨어 

모드로 잡았습니다.


* https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf

3-2. 


**firmware upload하기

*git hub에서 펌웨어를 다운 받습니다. 여러 버전이 있는데 0.9.2.2버전을 받습니다.

이때 유의 하실 사항이 경로에 주의 하셔야합니다.  PC 계정이 한글로 되어있고 바탕화면이나

다운로드 디렉토리에서 펌웨어를 올리게 되면 잘 되지 않는데,  /C: 디렉토리에 펌웨어를 다운

받아서 펌웨어를 업로드 하시면 되겠습니다. 펌웨어를 업로드 하게 되면 아래 사진과 같이

진행됩니다.



펌웨어가 성공적으로 업로드 되면 다음과 같은 문구가 나옵니다.



*** 아두이노를 실행 한후 환경설정에 들어가서 '추가 적인 보드 매니저 URLs'에 다음과 같이

추가합니다.



 탭에 '툴' - '보드' - '보드 매니저'에서 검색창에 'esp 8266' 혹은 '8266'을 검색하면 다음과 같이

나옵니다. 좌측하단에 버전을 선택한 후 설치를 해줍니다.

(버전은 가장최신 버전으로 하였습니다.)

그러면 탭에 '툴'을 보시면 다음과 같이 나오는데 여기서 "generic esp 8266 module"을 선택하고



좌측에서는 다음과 같이 설정합니다. (이 설정은 환경마다 약간은 상이 한것 같습니다.)



이제 환경설정이 마무리 되었습니다. 


* https://github.com/mlwmlw/esp8266-workshop/tree/master/firmware
** https://drive.google.com/file/d/0B3dUKfqzZnlwVGc1YnFyUjgxelE/view
*** http://arduino.esp8266.com/stable/package_esp8266com_index.json


4.


아두이노를 실행 한 후 툴 - 시리얼 모니터를 실행합니다. 

우측 하단에 Both NL& CR / 9600 (혹은 115200)으로 설정합니다. 

입력창에 AT라고 쳤을 때 "OK"라고 나타나면 정상적으로 펌웨어가 올라갔음을 확인

할 수 있습니다!










2018년 10월 21일 일요일

[서평] 마음의 탄생 -알파고는 어떻게 인간의 마음을 훔쳤는가?-

마음의 탄생 

-알파고는 어떻게 인간의 마음을 훔쳤는가?-

레이 커즈와일


0. 들어가는 글
-어쨌든 마음은 뇌의 작용 일 뿐-

 최초부터 지금까지 원자, 분자, DNA를 거쳐 뇌가 발생 하였고 생존에 능할 수 있는 방향으로 진화를 거듭하여 '생각'하는 인간이 탄생하였다. 인간은 도구(기술)의 발명으로 더욱더 진화 하였고, 현재에 이르러 도구의 발전을 디딤돌 삼아 Revers engineering을 할수 있는 과정에 이르렀다. 뇌라는 것은 기존의 복잡하고 해석하기 어렵다는 통념을 뒤집는다. 뇌라는 것은 복잡하지 않고 단순하고 반복적인 구조이다. 즉, 우리가 쉽게 카피가 가능하다고 주장한다.  생각이라는 것, 마음, 문제 - 해결능력이라는 것은 결국엔 뇌의 작용일 뿐이라 말한다. 
"진화라는 것은 추상성을 높이는 방향으로 진행되어 왔다. 동시에 진화의 속도도 점점 빨라졌다. 저자는 이를 LOAR(Law Of Accelerating Returns), 수확가속법칙이라 정의하였다. 이 LOAR의 사례 중 하나는 정보기술 제품의 가성비가 매우 좋아졌다는 점이다."

1. 생각의 역사
-다윈과 아인슈타인의 생각실험-

 아인슈타인, 다윈 등 역사적으로 위대한 과학자들은 '생각 실험'을 즐겨 하였다. 
이러한 생각 실험들은 인간의 뇌의 장/단점을 명확히 보여준다. 그들이 행한 '생각실험'과 같은 방법으로 신피질이 어떻게 작동하는 지 알아 볼것이다.


2. 어쩌다 마주친 그녀
-우리 뇌가 작동하는 방식-

 "알파벳을 순서대로 말해보자. 그리고 다시 알파벳을 거꾸로 말해보자. 이와 같이 우리의 기억은 순차적으로 이루어진다."
"우리의 기억은 패턴의 나열로 저장된다. 우리 뇌는 패턴을 인지한다 정보의 일부분만 인지하더라도, 변형이 되어도 이지능력은 패턴의 변하지 않는 특징을 잡아낸다."
"특정행동을 할때에 그 단계들을 무수히 작은 단계들로 나눌 수 있다."
"우리의 생각은 '계층적'으로 생각하게 된다"
"대상, 상황을 인식할때 쭉 나열된 리스트가 아닌 정교하게 포개어진 계층으로 기억한다"
 

3. 패턴인식 마음이론
-뇌의 정보처리 알고리즘-

 신피질의 작동원리에 대해 설명하였음.(사실 너무 어려워서 온전히 이해를 못함)
이해한 바로는 글자든 이미지던 패턴의 학습을 통하여 인식, 추론, 예상을 하고 이것들이 동시다발적으로 수행된다는 것이다. 이것이 컴퓨터와는 다른 뇌의 작동 방식이다.

4. 생각하는 기계 분해하기
-뇌과학이 밝혀낸 사실들-

 오랜 시간 전 부터 뇌의 발전은 어떤게 좋다, 나쁘다의 인식으로 발전 한 것이 아니라 그저 '생존'에 유리한 방향으로 진화 되어왔다.
"생물학적 진화도 마찬가지이다. 우연히 계층적 학습능력을 갖춘 신경 메카니즘을 갖게 되었는데, 이러한 신경 메카니즘이 진화의 가장 중요한 목적, 즉 생존에 지극히 유용하다는 것이 입증된 것이다."
"어느 종이 급변하는 환경에 처했을때, 그 종의 한 개체가 변화에 적응할 수 있는 방법을 우연히 접하거나, 발견하거나, 발명했을때 (이것이 혁신의 세 가지 길이다.) 다른 개체들이 그것을 알아보고 학습하고 복제 할 수 있다면 종 전체가 살아 남을 수 있다. 신피질은 곧 생존과 직결되는 것이다."
"마크램의 연구는 신피질 전체에 뉴런들의 집합체 모듈이 반복적으로 퍼져있다. 웨딘의 연구는 모듈 간의 연결 방식이 놀라울 정도로 규칙적이다."
"우리 뇌는 처음부터 개개의 패턴인식모듈이 '언제든 연결될 수 있도록' 인프라 구조를 미리 깔아 놓는 것이다 ... 언제든 연결될수 있는 상태이기 때문에, 전기 플러그를 꽂듯이 축삭하나를 신경섬유의 말단에 꽂기만 하면 되는 것이다."
"하지만 신피질에서 사용되지 않는 장거리 연결은 결국 끊어진다."


5. 싸우거나 도망치거나-생존과 번식을 위한 원초적인 욕망-

'시상의 기능 중 하나는 몸에서 올라오는 감각정보를 신피질로 들여 보내는 관문역할을 하는 것이다.'
'무엇보다 중요한 시상의 역할은 신피질과 끊임없이 소통하는 것이다.'
해마 - '이 영역의 핵심 기능은 새로운 사건을 기억하는 것이다. 시상을 거쳐 신피질로 들어간 감각정보가 새로운 정보라고 판단 되면 이는 다시 해마로 전달된다. 특정한 특징들의 집합을 인식하지 못하였거나(예컨대 낯선 얼굴 같은), 원래 익숙한 상황에 새로운 속성이 덧붙여 졌음을 인식 했을 때 신피질은 그것을 새로운 경험이라고 판단하고 해마로 내려보낸다.'
쾌감과 공포 - '오늘날 현대인들은 이처럼'싸우거나 도망치는' 메커니즘이 활성화 된 상태를 만성적으로 유지해야하는 사회에서 살아간다.'

6. 사랑의 세레나데
-적성과 창조성과 사랑의 진화-

"우리가 적성이라고 판단하는 것의 일부는 교육의 산물이라는 것이다. 성장한 환경과 다른 사람에게서 영향을 받는 다는 뜻이다."
"창조성의 핵심 요소는 위대한 은유, 즉 다른것을 재현하는 상징을 찾는 과정이다. 신피질은 위대한 은유를 생산하는 기계이며, 이는 인간이 왜 유일하게 창조적 동물인지를 설명한다."
"은유를 찾는 과정은 세세한 내용과 맥락이 다름에도 둘 사이에 존재하는 어떤 공통된 틀을 인식하는 것이다. ... 창조성 역시 다른 분야 사이의 간극을 이어주는 이러한 은유적 도약에서 나온다."
"신피질의 활용도를 높이기 위한 한가지 방법은 다양한 사람들과 공동 작업을 하는 것이다."

7. 소프트웨어 뇌 만들기
-뇌의 알고리즘을 디지털 공간에 시뮬레이션 하는 법-

"동물에게 이러한 행동의 진화는 하나의 학습과정으로 개별적인 개체의 학습이 아니라 종 차원의 학습이라 할 수 있다. 무수한 세월에 걸친 학습과정의 결실이 DNA에 코딩 된 것이다. ... 신피질이 진화에서 얼마나 중요한 의미를 갖는 지 이해하려면 신피질로 인해 이러한 학습과정이 수천년에서 수개월로 대폭 단축되었다는 사실을 떠올리면 된다. ... 해결방법은 곧바로 신피질에 의해 복제되어 전체 개체 사이에 급속도로 퍼져간다."
"신피질은 스스로 프로그래밍하여 자신의 경험 또는 자신의 피드백 루프에서 찾아낸 의미 있고 실천 할수 있는 정보로 자신의 list를 채운다. 이것이 신피질이 작동하는 핵심원리다."

8. 하드웨어 뇌 만들기
-컴퓨터 아키텍처 발전의 역사-

"끝없이 가속하는 기술의 진보와 인간의 생활양식의 변화는 인류역사에 어떤 본직적인 특이점, 즉 우리에게 당연한 것 처럼 보이는 인간의 발전이 더 이상 지속 될수 없는 시점이 다가오고 있다는 것을 일깨워 줄 것이다. ... 특이점이란 기존의 해석이나 기준이 더이상 적용되지 않는 단계로 넘어가는 시점으로, 급속도로 이루어지는 기술발전이 인간의 인지능력을 넘어서는 순간을 말한다."

9. 마음을 지닌 기계의 탄생
-의식, 자유의지 정체성의 재발견-

"어떤 측면에서 철한이란 과학이 아직 완벽하게 밝혀 낼 수 없는 문제들이 잠시 머무르는 대피소와 같은 곳이다."
"현실은, 이러한 가설들 모두 믿음의 도약을 요구 한다는 것이다. ... '의식이 있는 존재인가, 의식이 없는 존재인가?', '의식이 있는 존재로서 나는 누구인가? 무엇인가?' 같은 질문에 답하기 위해서는 믿음의 도약을 해야한다는 뜻이다."
"... 의식은 어떤 존재의 전체적인 구조 속에서 발현되는 하나의 속성 일 뿐 그 존재가 작동하는 토대가 되는 기질이 아니라는 것이다."

"(한 쪽뇌를 절제하는 수술을 한 사례를 들면서)... 한 쪽 뇌만 가지고 별다른 문제 없이 살 수 있다는 것은 우리 머릿속에 뇌 두 개가 동시에 돌아가고 있는 것 아닌가 하는 의심을 하게 만든다."
"각각의 반구가 실제로 자신이 하지 않은 행동을 자신이 했다고 생각하는 것이다."
"우리가 어떤 행동을 한 이유를 설명하거나 합리화 하고 싶어하는 것은 분명하다. 심지어 그 행동을 하도록 직접 결정하지 않았을 때에도 마찬가지다."
"나의 성격, 능력, 지식을 규정하는 신피질의 모든 계층적 구조는 나 자신의 생각과 경험의 결과이다. 내가 상호작용하기로 선택한 사람들, 내가 수용하기로 선택한 생각과 프로젝트는 모두 나라는 사람이 되기 위한 1차적인 결정 요인들이다. ... 그것은 나라는 사람이라는 결과로 이어진 나 자신의 결정이다."


10. 특이점이 온다
-우리 눈 앞에서 평쳐지는 인공지능 혁명-

"발명가로서 성공하기 위해 갖춰야 하는 가장 중요한 감각은 타이밍이라는 사실을 깨달았을 때다. ... 어떤 기술이 정보기술의 형태로 바뀌는 순간, 가격대비 성능과 용량의 기본적인 지표는 (시간당,자원당... 등등) 기하급수적인 궤도를 따라 성장한다. ... 정보기술이 특별한 패러다임의 한계를 초월하여 계속 발전 할 수 있는 이유는 정보 1bit당 계산하거나 기억하거나 전송하는 데 필요한 자원이 눈에 보이지 않을 정도로 작기 때문이다."


11. 반론
-불신과 비관적 전망을 넘어서-

MS 부사장 출신 앨런의 주장을 반박하는 내용이다. 


*그외 구절들.. 
"우리는 앞으로 더욱 겸손해져야만 한다. 다른 인간의 주관적 입장에 서는 것도 어려워하는 우리가, 하물며 우리와는 극단적으로 다른 지능의 입장에 서는 것은 또 얼마나 어려운 일인가?"
자유의지 - "의식의 핵심기능은 앞을 내다보는 '예측'이라고 하는 능력이다. 예측이란 계획하는 능력이자 사회적 맥락에서 앞으로 일이 어떻게 전개될지, 무슨일이 발생할지 시나리오를 짜는 능력 또는 아직 발생하지 않은 사회적 상호작용을 계획하는 능력이다. ... 이러한 능력을 발휘 할 수 있는 기회를 높여주는 체계는 당연히 인간의 최고 관심사라 할 수 있다. 나는 그러한 체계가 바로 '자유의지'라고 생각한다. 무엇이든 가장 유용하거나 적절해 보이는 것을 선택하고 그에 따라 행동 할 수 있는 명백한 능력이자, 그러한 선택이 나 자신의 것이라고 고집 할 수 있는 근거다." -Richard D. Alexander-
"집중은 어느 하나를 효과적으로 다루기 위해 다른 것들을 떨쳐 낸다는 뜻이다."
"... '진실에 이르는 데는 많은 길이 있다'는 것이다. 외견상 상반되는 것 처럼 보이는 여러 전통사이에 모순을 해결하는 것은, 어떤 것은 맞고 어떤 것은 틀리다고 판단하는 것이 아니라는 것을 의미한다. " 



# 나의 생각
 오랜만에 책을 읽었는데 생각보다 많이 어려운 책이었다. 무엇보다 전자, 컴퓨터, 생물학, 물리학등 과학 전반적인 지식이 있어야 저자의 말하고자하는 내용을 충분히 이해하고 생각 할수 있을 것 같다. 
 책을 읽으면서 나는 학습과 학습을 할때 뇌의 작용에 대한 내용에 포커스를 두고 읽었다. 이러한 점에서 보자면 "우리 뇌는 처음부터 개개의 패턴인식모듈이 '언제든 연결될 수 있도록' 인프라 구조를 미리 깔아 놓는 것이다 ... 언제든 연결될수 있는 상태이기 때문에, 전기 플러그를 꽂듯이 축삭 하나를 신경섬유의 말단에 꽂기만 하면 되는 것이다." 라는 구절이 있다. 이 구절을 보고 우리의 뇌는 언제든 준비가 되어있구나, 정말 정말로 마음먹기에 달린 일이 구나 하는 생각이 든다. 또한 책을 읽으면서 뇌의 저런 구조들이 뭔가 되게 어렵고 추상적이고 복잡하게 되어 있을 거란 생각이 었는 데 꽤나 단순하고 반복적인 구조라고 저자는 설명한다. 우리가 학습을 하던 운동을 하던 뭘 하던 수없이 반복을 하면 신피질의 리던던시가 높아져 결국엔 그 기능을 담당하는 축삭이 연결이 되면서 공부라면 공부를, 운동이라면 운동을, 한 단계 더 높아진 수행 능력, 습관을 가지게 되는 것이라는 생각이 들었다. 결국엔 내 몸은 모든 가능성? 까지는 아니더라도 수많은 가능성에 대해서 준비가 되어있다는 생각이 들었고, 결국엔 환경등의 영향이 있겠지만 뭐든 반복적으로 의식적으로 노력하면 될 거란 생각을 했다.