2016-09-17 6 views
0

나는 NodeMCU (ESP8266)를 사용하여 로봇을 코딩하고 원격 제어하려고합니다. 현재 솔루션은 가까운 라우터, 인터넷 및 TCP HTTP 서버를 만드는 중입니다. 데이터는 HTTP 요청을 통해 모바일 장치 (원격)에서 NodeMCU (로봇)로 스트리밍됩니다. 리모콘은 HTML/CSS/JavaScript가있는 브라우저를 통해 모바일 장치에로드됩니다. 라우터는 보드에 의해 생성 된 액세스 포인트를 통해 NodeMCU에 HTTP 서버 만들기

  • 필요 연결이

  • 내가 같은 TCP를 직접 원하는 더되지

    • 다음 NodeMCU가 자신의 핫스팟을 생성하기 때문에

      내가 대신 원하는 것은입니다 HTTP 솔루션이지만 사용자 정의 핫스팟을 통해 웹 페이지를 제공하는 방법을 모르겠습니다.

      -- Connect to router 
      wifi.sta.config("ssid","password") 
      wifi.sta.connect() 
      
      -- Code for waiting for connection 
      
      -- Create server 
      srv = net.createServer(net.TCP) 
      srv:listen(80,function(conn)  
      conn:on("receive",function(conn,payload) 
          for line in string.gmatch(payload,'[^\r\n]+') do 
           s = string.find(line, "GET /&") 
           -- If query is there, control robot 
           if s ~= nil then 
            -- Do stuff with query 
            break; 
           -- If no query, serve webpage 
           else 
            file.open("index.html", "r") 
            while true do 
             s = file.read(1460) 
             if s == nil then 
              break 
             end 
             conn:send(s) 
            end 
            file.close() 
           end 
           break 
          end 
          conn:on("sent", function(conn) conn:close() end) 
      end) 
      end) 
      

      만들기 사용자 정의 핫스팟 :

      wifi.setmode(wifi.STATIONAP) 
      cfg={} 
      cfg.ssid="custom_ssid" 
      cfg.pwd="custom_password" 
      wifi.ap.config(cfg) 
      

      그래서 어떻게 그렇게 이동국은 서버에 액세스 할 수 있도록 할

      이 내 코드? 서버의 IP를 가져 오거나 설정하는 방법은 무엇입니까? 기본적으로, 나는 단지 그것이 작동 할 필요가 있습니다. 감사!

    답변

    1

    잘 모르겠습니다. 저는 완전히 이해하지만, 당신이 정말로 가깝다고 생각합니다. AP 기능에 대한 설명서를 http://nodemcu.readthedocs.io/en/latest/en/modules/wifi/#wifiap-module에서 확인하십시오.

    wifi.ap.config(cfg)은 언급 한대로 SSID와 pwd를 설정합니다. 그런 다음 클라이언트는 네트워크에 가입하여이 AP에 연결합니다.

    wifi.ap.getip()을 인쇄하면 기본적으로 장치의 IP 주소는 192.168.1.4입니다. 따라서이 네트워크에 연결된 클라이언트의 경우 사용자 지정 IP를 명시 적으로 설정하지 않으면 서버가 192.168.1.4:80에 도달 할 수 있습니다.

    그러나 데이터 전송이 중단 된 것처럼 보입니다. 복수 conn:send(s) (회 돌이에서) 아직 conn:on("sent", function(conn) conn:close() end)도 있습니다. 즉, 첫 번째로conn:send 뒤에 연결이 닫힙니다. http://nodemcu.readthedocs.io/en/latest/en/modules/net/#netsocketsend에있는 문서를 확인하여 올바르게 수행하는 방법에 대한 예를 확인하십시오.

    +0

    무슨 뜻인지 확실하지 않지만 제대로 작동합니다. upvote 가져 가라. –