본문 바로가기

분류 전체보기215

아두이노 이더넷 웹서버 만들기 -#9 지금까지 따라 왔다면 큰 어려움은 없을것으로 보여지고, 지금의 소스코드는 클라이언트가 서로 다른 페이지를 요청해도 무조건 같은 페이지만 보여준다. select라는 변수가 1,2의 값에 따라 어떤 페이지를 보여줄지 선택하는것이다. 그러면 클라이언트의 요청된 메시지를 분석해서 변수값을 변경하면 모든것은 끝이난다. 우노의 기본메모리가 2k라서 2페이지 이상 넣기는 어렵지만, 아끼고 아끼면 3,4페이지도 가능하다는점을 참고하면 좋을것이다. 저는 그냥 메가보드로 연습하라고 합니다. 그리고 한개페이지는 온도값 5개를 보여주고, 한개 페이지는 온도평균값 하나를 보여준다. 혹시 소스코드를 이해하는데 어려움이 있다면 댓글로 물어 보면 될듯 합니다. 다음에는 클라이언트의 요청문장을 파싱하는것으로 할 것이다. 파싱은 좀 어.. 2020. 5. 1.
아두이노 이더넷 웹서버 만들기 -#8 자 그러면 두개 소스코드도 정리가 되었으니 두개 페이지도 나누고 링크의 개념도 적용해 보죠. 클라이언트가 보통은 웹 주소로 접근합니다. 요즘 사람들은 약간 생소할 수도 있죠. 그냥 포탈에서 링크로 클릭 하거나, 쉬리나 알렉사가 찾아 주니까요. 그러나 10년전, 지금도 주소로 접근하는 사람들이 있죠. 예를 들이, http://192.168.5.177/index.html http://192.168.5.177/page1.html http://192.168.5.177/page2.html 이렇게 접근하는것으로 모르는 사람도 있겠지만 이게 기본이라 알고는 있어야 겠죠. 웹페이지의 링크의 개념도 비슷합니다. p+=sprintf(p,"Page1 \n"); http://colorscripter.com/info#e" ta.. 2020. 5. 1.
아두이노 이더넷 웹서버 만들기 -#7 개인적으로 지난번 소스코드도 딱히 어려운 부분이 없어 보이는데, 설명을 약간 추가해야 할 부분이라면 loop과 wepPage정도 일듯 합니다. loop은 클라이언트가 요청하는 정보를 표시하는 부분 혹은 모으는 부분과 클라이언트에게 정보를 보내는 부분으로 나누어 있다고 보시면 될듯 합니다. 그리고 void read_temp(char*& p) 함수의 정의 부분도 유심히 보면 좋을듯 합니다. 콜바이 밸류, 콜바이 레프런스 부분인데, 주소값을 참고하기위해서는 콜바이 레프런스가 필요합니다. 쉽게 말해서 어디까지 문장을 작성했는지 모르기 때문에 그 주소값이 필요한거죠. 주소라도 복사기 되기 때문에 그렇겠죠. void loop() { // listen for incoming clients EthernetClient .. 2020. 5. 1.
아두이노 이더넷 웹서버 만들기 -#6 한참 시간이 지났지만, 저번에 못다한 이야기를 해야 할 것 같아서 계속 합니다. 저번에는 웹페이지를 그냥 빈화면, 그냥 텍스트로 구성했다면 이번은 5개의 온도값을 표시하는것으로 진행하며, 좀더 나아가 웹페이 링크라는 개념도 들어 가는것으로 구현 할 것이다. 추가로 이야기 하지만 이것은 ESP8266으로 구현해도 동일한 개념이라서 같은 방식으로 이해해도 될듯 합니다. 일단 지난번 소스코드 그냥 원제작자의 소스코드라면 이번에는 수정이 들어간 소스코드로 정리하는것으로 이해하면 될듯 합니다. 소스코드의 수정본과 원본 코드의 비교만 하더라도 차이가 뭔지 이해하면 될듯 합니다. 그리고 그렇게 어렵지 않으니 참고만 하시면 될듯 합니다. /*Web Server*/ #include #include // Enter a M.. 2020. 5. 1.
아두이노 이더넷 웹서버 만들기 -#5 여기서 한번 더 복습을 하자. My First Heading 나는 단순히 "My First Heading"이라는 글자를 보여주고 싶은데, 쓸데 없는 문장을 많이 붙여서 전송하고 있다. , , 등등 이상한 글자들이 많이 붙여서 보내고 있다. 왜 그럴까 ? 그렇다 이것은 형식이다. 이렇게 보내야 웹브라우즈가 알아 먹는 형식이다. 이런 형식들을 통틀어 프로토콜이라는 용어를 사용한다. 만약 나는 만사가 귀찮고, "My First Heading" , 이것만 보내고 싶다면 어떻게 해야 할까 ? 방법은 한가지 방법뿐이다. 본인이 직접 웹브라우즈를 만들면 된다. 물론 만들수 없다. 쉬운일이 아니기 때문이다. 본인이 형식을 직접 만들어 혹은 무형식이라도 만들어서 하고 싶다면 본인만의 웹브라우즈를 만들어야 한다. 반대로 .. 2020. 4. 7.
아두이노 이더넷 웹서버 만들기 -#4 복습 차원에서 중간 복습을 하자 소스가 복잡하고 어려워 보이지만 사실 별것은 없다, 가장 핵심은 텍스트 문장을 만들고, 시리얼 프린터로 출력하는게 끝이다. 시리얼 프린터 여러번 사용하는것은 본인을 별로 좋아 하지 않는다. 그냥 한번만 사용한다. client.println(buf); 결국 웹서버의 역활은 클라이언트, 접속자가 원하는 파일을 찾아서 읽어서 전송하는 역활을 하는것이다. 이번에는 그냥 코딩으로 만들어진 문장을 출력했다. SD카드에서 읽어서 한다면 좀더 다양한 웹서버가 구현이 될것이다. 아래 문장을 만든다면 다양한 방법이 있겠지만 본인은 이렇게 만든다. My First Heading char*p; char buf[100]; p = buf; p+=sprintf(p,""); p+=sprintf(p,".. 2020. 4. 5.
아두이노 이더넷 웹서버 만들기 -#3 그러면 W5100S Ethernet Shield 부터 살펴 보자. 라이브러리분석은 스스로 나중에 하기로 하고 일단은 기초 예제를 먼저 테스트 하자. 라이브러리설치 관련해서도 다른분이 올리신 예제가 많으니 별도의 설명은 하지 않겠다. 딱히 설명할 부분은 없을것 같지만, 몇가지만 언급한다면. 아이피 지정 부분이다. 본인의 공유기 아이피 대역에 맞게 사설 아이피를 변경해주는것이다. 본인은 192.168.5.xx 대역을 사용하고 있다. #include #include // Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network: byte mac[] = {.. 2020. 4. 5.
아두이노 이더넷 웹서버 만들기 -#2 아무래도 나처럼 귀찬아 하는 사람이나 기초가 없는 초보에게 쉴드 형태가 최고다. 일단 연결이 단순하기 때문에 납땝이나 기타가 필요 없다. 본인이 가지고 있는 쉴드는 2가지 종류인데, 하나는 아두이노 우노,메가 보드에 연결할 수 있는 W5100S Ethernet Shield 이고, http://www.wiznetian.com/w5100s-ethernet-shield%EB%A5%BC-arduino-ide%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%ED%95%B4-%EB%B3%B4%EC%9E%90/ https://github.com/WIZnet/Ethernet 또다른 하나는 아두이노 나노에 연결하는 ENC28J60 이더넷 쉴드 이다. https://github.com/njh/EtherC.. 2020. 4. 5.
아두이노 이더넷 웹서버 만들기 -#1 일단 기초가 없는 사람들을 위해서 개념 부터 설명하고 넘어가자. 우리는 웹서버를 만들것이다. 이 웹서버를 만들기전에 우리는 웹서버, 서버에 대한 정의 부터해야 한다. 만들고자 하는 서버가 네이버 서버 처럼 사용자 접속이 많은것이냐 ? 아니면 단순하게 비닐하우스의 온도,습도 같은 간단한 정보만 주는것이냐 ? 이질문의 답으로 사용자가 많지 않은 웹서버 같은 경우 아두이노도 충분하다. 다시말해서 본인이 만들고자하는 서버의 종류, 서비스의 용도에 따라 아두이노가 가능하고 안되고 판단 할 수 있다. 아두이노로 서버가 가능하나요 ? 아두이노로 웹서버가 되나요 ? 어찌보면 개념도 기초도 없는 어리석은 질문이다. 물론 본인이 개념이 없다고 자책은 필요 없다. 지금부터 기초부터 공부하면 된다. 웹서버의 기본인 HTML부.. 2020. 4. 5.