使用 STM32 在 ESP8266 上设置主机名

问题描述 投票:0回答:0

我目前在为 ESP8266 设置主机名时遇到问题。 我的 STM32 通过 Uart 连接到 ESP,连接正常。所以我可以使用 AT 命令设置接入点或连接到 Wifi。问题是我总是需要弄清楚我的 IP 并将 IP 放在浏览器中,这很不舒服。

我花了最后几天来解决这个问题,并查看了一些 Arduino/ESP 库,但没有成功。

在代码中,有一些行被我尝试使用的一些 AT 命令注释掉了。但那些没有工作或有问题。 我放在命令后面的 ESP 的回复

...some other code

    Uart_sendstring("AT+RST\r\n", wifi_uart);
    for (int i=0; i<5; i++)
    {
        HAL_Delay(1000);
    }

    /********* AT **********/
    Uart_flush(wifi_uart);
    Uart_sendstring("AT\r\nAT\r\n", wifi_uart);
    while(!(Wait_for("OK\r\n", wifi_uart)));

    Uart_flush(wifi_uart);
    if (AP == CONNECT_AP)
    {

        //test
        Uart_flush(wifi_uart);
        //Uart_sendstring("AT+MDNS=1, my_test, iot, 80\r\n", wifi_uart); ->reply: get hostname fail when mdns
        //Uart_sendstring("AT+CWHOSTNAME=my_test\r\n", wifi_uart); -> reply: ERROR
        //Uart_sendstring("AT+CWHOSTNAME?\r\n", wifi_uart); -> reply: ERROR
        while (!(Wait_for("OK\r\n", wifi_uart)));
        //test end


        /********* AT+CWMODE=1 **********/
        Uart_flush(wifi_uart);
        Uart_sendstring("AT+CWMODE=1\r\n", wifi_uart); // connect to AP
        while (!(Wait_for("OK\r\n", wifi_uart)));

        /********* AT+CWJAP="SSID","PASSWD" **********/
        Uart_flush(wifi_uart);
        sprintf (data, "AT+CWJAP=\"%s\",\"%s\"\r\n", SSID, PASSWD);
        Uart_sendstring(data, wifi_uart);
        while (!(Wait_for("OK\r\n", wifi_uart)));

        /********* AT+CIFSR **********/
        // Zum Anzeigen von IP und Mac-Adresse
        Uart_flush(wifi_uart);
        Uart_sendstring("AT+CIFSR\r\n", wifi_uart);
        while (!(Wait_for("CIFSR:STAIP,\"", wifi_uart)));
        while (!(Copy_upto("\"",My_IP, wifi_uart)));
        while (!(Wait_for("OK\r\n", wifi_uart)));
    }
    else if (AP == OPEN_AP)
    {

        //test
        Uart_flush(wifi_uart);
        //Uart_sendstring("AT+MDNS=1, my_test, iot, 80\r\n", wifi_uart);
        //Uart_sendstring("AT+CWHOSTNAME=my_test\r\n", wifi_uart);
        //Uart_sendstring("AT+CWHOSTNAME?\r\n", wifi_uart);
        while (!(Wait_for("OK\r\n", wifi_uart)));
        //end test

        /********* AT+CWMODE=2 **********/
        Uart_flush(wifi_uart);
        Uart_sendstring("AT+CWMODE=2\r\n", wifi_uart); // open AP
        while (!(Wait_for("OK\r\n", wifi_uart)));

        /********* AT+CWJAP="SSID","PASSWD" **********/
        Uart_flush(wifi_uart);
        sprintf (data, "AT+CWSAP=\"%s\",\"%s\",%d,%d\r\n", SSID, PASSWD, 11, 3);
        Uart_sendstring(data, wifi_uart);
        while (!(Wait_for("OK\r\n", wifi_uart)));
    }
        
    /********* AT+CIPMUX **********/
    Uart_flush(wifi_uart);
    Uart_sendstring("AT+CIPMUX=1\r\n", wifi_uart);
    while (!(Wait_for("OK\r\n", wifi_uart)));

    /********* AT+CIPSERVER **********/
    Uart_flush(wifi_uart);
    Uart_sendstring("AT+CIPSERVER=1,80\r\n", wifi_uart);
    while (!(Wait_for("OK\r\n", wifi_uart)));

如果有人能帮我解决这个问题,我将不胜感激。

我对 mdns 主题和设置访问点不是很深入。 我只是想打开一个网站进行连接。

致以诚挚的问候 最大

stm32 esp8266 hostname access-point
© www.soinside.com 2019 - 2024. All rights reserved.