[아두이노#398] (Socket.io#4) 소켓IO서버에서 ESP8266의 모터 제어해보기!(녹칸다/포로리야공대가자)
프로그래밍/ESP8266 & Websocket 2021. 12. 16. 22:29
(Socket.io#4) 소켓IO서버에서 ESP8266의 모터 제어해보기!
녹칸다의 소켓IO(Socket io) 시리즈이다!
(녹칸다의 Socket.IO는 노드레드(node-red)를 베이스로 하므로 노드레드가 설치되어야한다!)
녹칸다가 사용하는 사물인터넷보드(wemos d1r1/esp8266)를 서버에서 실시간 양방향 통신을 하기 위한 전략으로 소켓IO를 활용해보도록 한다!
가장 효율적으로 사용할 수 있는 MQTT와 활용방안이 유사하지만 동적으로 사물인터넷보드를 그룹핑해서 제어하는데는 Socket io가 더 강점이 많은듯하다!
Socket.Io로 할 수 있는것은 MQTT도 대부분 유사하게 구현할 수 있다!
소켓IO는 사물인터넷보드의 관리를 마치 카카오톡 톡방을 운영하듯이 할 수 있다!
공통으로 소통하는 톡방에서 모든 IoT보드들을 제어할 수 있고 일부 IoT보드가 참여하는 톡방을 별도로 만들어서 무리를 지어서 제어할 수 있도록 만들어져있다!
Socket.io에서는 이런 그룹관리를 룸(ROOM)을 이용해서 제어한다!
이번편에서는 서버에서 클라이언트들을 제어하는 것을 목표로 한다!
1.ESP8266보드 한대에 서보모터를 연결하고 서버에서 전송한 값으로 제어한다! 그리고 클라이언트쪽에서 업데이트된 서보모터의 각도를 서버쪽으로 회신한다!
2.(1)예제에서 보드에 버튼 2개를 추가해서 자기자신의 서보모터를 제어하고 변화된 각도값을 서버쪽으로 전송한다!
3.ESP8266보드 한대에 모스펫(IRF520)을 이용해서 DC모터를 연결한다! 그리고 서버에서 전송한 PWM값을 이용해서 DC모터를 제어해보자!
4.(3)예제에서 보드에 버튼 2개를 추가해서 DC모터의 속도를 증감시키고 서버에 값이 자동으로 업데이트 될 수 있도록 해보자!
5.ESP8266보드 한대에 워터펌프를 연결하고 펌프질한 물의 양을 유량센서(YF-S401)를 용해서 측정가능하도록 한다! 서버에서 워터펌프의 작동을 제어하고 그때 유량센서의 측정값을 서버쪽으로 전송하시오!
관련라이브러리(arduinoJSON/6.15.2)
https://arduinojson.org/?utm_source=meta&utm_medium=library.properties
관련라이브러리(socket.io)
https://github.com/Links2004/arduinoWebSockets
1.소켓IO서버에서 보낸 명령으로 DC모터를 제어하는예제
2.DC모터의 현재 상태를 서버쪽으로 양방향전송하고 보드에 달린 DC모터를 직접 제어할 수 있는 예제
3.서보모터를 서버에서 보낸 명령으로 제어하는 예제
4.서보모터의 현재 각도값을 소켓IO서버와 공유하는 예제
5.워터펌프를 양방향으로 제어하고 펌프가 펌프질한 물의양을 서버쪽으로 전송하는 예제