蓝冠注册《Q374919 》本教程演示了如何从工作在桌面、iOS和Android上的自定义多平台应用程序中控制ESP8266 NodeMCU板。示例应用程序将允许我们打开和关闭ESP8266 NodeMCU内置LED。
我们将在Arduino概要中配置一个异步web服务器并开发一个API REST。然后,我们将使用Felgo标准开发工具包(SDK)开发一个多平台app。Felgo利用Qt (Qt Creator, QML, Qt Quick, JavaScript等)开发多平台应用程序。
这个示例是介绍性的,蓝冠注册 很容易理解。如果您不熟悉前一段的所有术语,不要感到不知所措!下面你可以找到一些对你有帮助的教程。如果您不熟悉Arduino IDE或Felgo,请检查它们。
ESP8266 NodeMCU编程:第一步
Qt, QML和Felgo教程。美国宇航局天文图片的一天应用程序桌面,iOS和Android
硬件
NodeMCU V2
NodeMCU V3
这些是附属链接。这意味着如果你点击链接,蓝冠官网 购买推广项目,我们将收到一个小的附属委员会在没有额外的成本给你,产品的价格是相同的。如果您觉得没问题,我们将非常感谢您对我们工作和网站的支持。
ESP8266 NodeMCU草图
自定义应用程序桌面,iOS和Android
ESP8266 NodeMCU草图
我们可以使用默认的ESP8266WebServer,蓝冠 但是ESPAsyncWebServer比上一个有一些优势,因为它是一个异步web服务器,因此它可以处理多个客户端。而且,API调用可以更精确地定义。所以,让我们看看如何利用它。
我们需要为我们的草图安装以下库。如果你不知道如何在Arduino IDE中安装它们,看看ESP8266 NodeMCU编程的最后:第一步。
ArduinoJson(版本5),可以从Arduino IDE库管理器中安装。
ESPAsyncTCP。下载存储库的zip文件,并通过Arduino IDE安装它。
ESPAsyncWebServer。下载存储库的zip文件,并通过Arduino IDE安装它。
让我们看一下草图代码。第一部分包括一些头文件,定义一些常量(WiFi标识符和密码,服务器端口,请求URL和参数),声明我们的服务器对象。
include < ESP8266WiFi.h >
include < ESPAsyncTCP.h >
include < ESPAsyncWebServer.h >
include < ArduinoJson.h >
const char [] = “WiFi_SSID”;
const char pass[] = “WiFi_password”;
const int port = 2390;
REQUEST_LED = “/led”;
const字符串PARAM_STATE = “state”;
AsyncWebServer服务器(港口);
接下来,我们定义两个helper函数来获取和设置内置的LED状态。请注意,内置的LED在低状态下是亮的。
void setLEDstate(bool state) {
digitalWrite (LED_BUILTIN状态?低:高);
}
bool getLEDstate () {
回报! digitalRead (LED_BUILTIN);
}
我们的web服务器是异步的,因此我们必须在setup函数中定义它的所有行为,因此在本例中我们的loop函数是空的。设置功能的第一部分设置数据传输速率,声明内置LED引脚为输出,关闭引脚,连接我们的WiFi网络,将WiFi SSID和IP地址打印到串行监视器上。
无效的设置(){
Serial.begin (115200);
pinMode (LED_BUILTIN、输出);
digitalWrite (LED_BUILTIN、高);
WiFi.mode (WIFI_STA);
WiFi。开始(ssid,通过);
系列。打印(“连接”);
while (WiFi.status() != WL_CONNECTED) {
并同时(“。”);
延迟(300);
}
以(” “);
系列。打印(“WiFi连接到:”);
以WiFi.SSID ());
系列。打印(“IP地址:”);
以WiFi.localIP ());
…
…
}
无效循环(){}
我们可以声明server。在我们的草图中拦截请求的语句。下面的代码显示了我们如何拦截GET (HTTP_GET)对/led的请求。REQUEST_LED是一个字符串常量(” /led “),使用c_str函数将其转换为char *常量。
然后,我们检查PARAM_STATE参数(“state”)是否在请求(has_param)中。如果是这样,我们将获得它的值(getParam)作为字符串,并将其转换为整数值(toInt)。整数值会自动转换为布尔值。