앱 인벤터 appinventor

앱인벤터 WiFi 에 의한 아두이노 NodeMCU LED ON OFF 예제:II

coding art 2017. 10. 5. 13:57
728x90


안드로이드 스마트 폰에서 앱 인벤터에 의해 WiFi 클라이언트 앱을 작성해 보자.
앱 인벤터 편집기에서 탭에서 Projects를 열어 Start new project 명령을 실행하여 nodemculedonoff 파일 명을 설정한다.


팔레뜨에서 필요한 요소들을 드래그하여 콤포넌트 창에 배치한다.

TextBox 1개를 드래그하여 txtbESPAddress로 Rename 한다. Text 내용에 http://192.168.0.5 와 같이 WiFi 연결할 가상ip를 적어 넣는다.

Layout의 HorizontalArrangement를 Screen1 창에 드래한 후에  User Inteface의 버튼(Button) 2개를 드래그 해서 넣는다. 각 버튼은 Width 박스에서 Fill parent를 선택하여 2 버튼의 크기를 동일하게 맞춘다. 아우러 버튼 명 btnOFF 와 btnON 으로 Rename 하였다.이 2개의 버튼은 블록 편집 단계에서 스마트폰 화면 클릭 즉 터치에 의해 on OFF 신호를 아두이노 NodeMCU에 보내는 역할을 하게 된다.






User Interface에서 1개의 라벨(Label)을 드래그하여 lblResponse로 명명하고 Text 박스에 ESP says: 로 입력해 둔다.
 라벨의 역할은 앞서의 ESP8266WiFi WiFiWebServer NodeMCU 예제에서 보았듯이 LED를 on 또는 OFF 하고 난 후 상태 정보를 HTTP1.1 200 ⚫⚫⚫ 프로토콜 로 송신하게 된다. 따라서 HTML Format의 내용이 전달되어 출력되므로 속성 창에서 반드시 HTML Format를 체크해 둔다. 아울러 WiFi 통신 결과가 성공인지 여부의 판단은 HTTP1.1 200 ⚫⚫⚫에서 200 이라는 성공 코드가 들어 있는지 여부에 따라 결정된다.

마지막으로 Connectivity에서 Web을 1개 드래그한다.
블록 편집을 시작하기로 하자.
ON 버튼 터치 시에 Url주소를 가진 Web을 설정한다. Url 주소는 TextBox에
http://192.168.0.5로 저장되어 있다. 이 둘 사이에 JOIN 이라는 빨간색 요소가 있는데 그 이유는 Url 주소 정보에 /gpio/1 이라는 정보를 추가할 필요가 있으므로 퍼즐 조각을 하나 더 JOIN 시킬 수 있는 즉 JOIN 이라는 요소가 필요한 것이다. 이렇게 준비가 되면 웹의 GET 통신을 호출하여 ASCII 문자들을 보낸다. OFF의 경우도 거의 대동소이하다.



수신과정은 웹이 HTTP1.1 200 ⚫⚫⚫ 프로토콜에 의해 문자를 수신(GotText) 받았을 경우이다. if then else로 이루어진다. 하지만 Built-in 의 Logic에서 퍼즐을 찾아 보면 if then은 있으나 if then else는 없다. 그 생성 방법은 푸른색 바탕에 흰색 치차(gear)  아이콘을 누룬 후 아래의 과정을 따르면 된다.




연두색 비교문은 그 내부에 비교할 2개의 오브젝트를 넣어야 한다. 하나는 바로 위의 responseCode 탭에서 GET 통신에 의한 통신 성공 여부를 확인하기 위한 코드를 획득하는 작업이다. 200 dlaus 성공이고 404면 실패이다.



성공이면 Successful Return 이라는 메시지와 함께 아두이노 NodeMCU로부터 송신된 HTML 문장을 합하여 iblResponse  라벨에서 출력하고 아니면 송신된 HTML 문장이 없으므로 Unsuccessful Return Error! 만 출력한다.