在之前的NodeMCU入门教程中,我们了解了 什么是NodeMCU 以及 如何使用Arduino IDE对其进行编程 。如您所知,NodeMCU内部具有Wi-Fi芯片,因此它也可以连接到Internet。构建物联网项目非常有用。我们之前使用ThingSpeak和Arduino来制作IoT温度计,但是这里我们将创建自己的网页来显示温度。
在本教程中,我们将探索有关此有趣的MCU的更多信息,并通过将NodeMCU与Internet连接,慢慢进入物联网世界。在这里,我们将使用此模块在Web浏览器上获取室温,即,我们将使Web服务器使用LM35作为温度传感器来显示温度。
所需组件:
- NodeMCU-ESP12
- LM35温度传感器
- 面包板
- 公母连接器
LM35温度传感器:
LM35 是一个模拟线性温度传感器。其输出与温度成比例(以摄氏度为单位)。工作温度范围为-55°C至150°C。输出电压通过10mV的响应于每一个而变化 Ò C的温升或下降的温度。它可以采用5V和3.3V电源供电,待机电流小于60uA。
请注意,LM35有3个系列变体,分别是LM35A,LM35C和LM35D系列。主要区别在于它们的温度测量范围。LM35D系列旨在测量0至100摄氏度,而LM35A系列旨在测量-55至155摄氏度。LM35C系列设计用于-40至110摄氏度的测量。
我们已经将LM35与许多其他微控制器一起使用来测量温度:
- 使用LM35和8051微控制器的数字温度计
- 使用LM35和AVR单片机进行温度测量
- 使用Arduino和LM35温度传感器的数字温度计
- 使用Raspberry Pi进行室温测量
将LM35与NodeMCU连接:
下面给出了将LM35与NodeMCU连接的电路图:
LM35是模拟传感器,因此我们必须将该模拟输出转换为数字。为此,我们使用定义为A0的NodeMCU的ADC引脚。我们将LM35的输出连接到A0。
NodeMCU引脚上的输出电压为3.3V。因此,我们将使用3.3V作为LM35的Vcc。
代码说明:
本文末尾提供了演示视频的完整代码。在这里,我们解释了代码的几个部分。我们已经说明了使用Arduino IDE将代码上传到MCU。
首先,我们必须包括ESP8266wifi库以访问Wi-Fi功能。
#包括
然后在 ssid 和 密码 字段中输入您的Wi-Fi名称和密码。还初始化变量,并以波特率115200在端口80上启动服务器。
const char * ssid =“ *********”; //您的ssid const char *密码=“ ***********”; //您的密码 float temp_celsius = 0; float temp_fahrenheit = 0; WiFiServer服务器(80); void setup(){ Serial.begin(115200);
通过调用这些功能可以建立Wi-Fi的连接。
Serial.println(); Serial.println(); Serial.print(“正在连接”); Serial.println(ssid); WiFi.begin(ssid,密码);
建立连接可能需要几秒钟,因此请一直显示“…”,直到建立连接为止。然后系统将继续等待并检查客户端是否可以连接…
而(WiFi.status()!= WL_CONNECTED){ delay(500); Serial.print(“。”); } Serial.println(“”); Serial.println(“ WiFi已连接”); server.begin(); Serial.println(“服务器已启动”); Serial.println(WiFi.localIP()); }
在 循环 部分,读取传感器值并将其转换为摄氏和华氏温度,并在串行监视器上显示这些值。
无效loop(){ temp_celsius =(analogRead(A0)* 330.0)/ 1023.0; //将模拟值转换为摄氏温度我们板上有3.3 V电压,并且我们知道LM35的输出电压每升高或降低摄氏温度变化10 mV。因此,(A0 * 3300/10 )/ 1023 =摄氏度temp_fahrenheit =摄氏度* 1.8 + 32.0; Serial.print(“ Temperature =”); Serial.print(temp_celsius); Serial.print(“摄氏,”);
在网页上显示温度的HTML代码:
我们正在网页上显示温度,以便可以通过Internet从世界任何地方进行访问。HTML代码非常简单;我们只需要使用 client.println 函数 来回 显HTML代码的每一行,以便浏览器可以执行它。
此部分显示HTML代码,以创建显示温度值的网页。
WiFiClient客户端= server.available(); client.println(“ HTTP / 1.1 200 OK”); client.println(“ Content-Type:text / html”); client.println(“ Connection:close”); //响应完成后,连接将关闭 client.println(“ Refresh:10”); // 10秒后更新页面 client.println(); client.println(“”); client.println(“”); client.print(“
数字温度计
“); client.print(”温度(* C)=“); client.println(temp_celsius); client.print(”
温度(F)=“); client.println(temp_fahrenheit); client.print(”
“); client.println(”“); delay(5000); }加工:
使用Arduino IDE上传代码后,打开串行监视器,然后按NodeMCU上的Reset按钮。
现在,您可以看到开发板已连接到您在代码中定义的Wi-Fi网络,并且还获得了IP。复制此IP并将其粘贴到任何Web浏览器中。确保运行Web浏览器的系统应连接到同一网络。
您的数字温度计已准备就绪,并且每隔10秒将在Web浏览器中自动刷新温度。
要使该网页可从Internet访问,只需在路由器/调制解调器中设置端口转发。查看下面的完整代码和视频。
还要检查:
- Raspberry Pi气象站:通过Internet监视湿度,温度和压力
- 使用Arduino和ThingSpeak通过Internet进行实时温度和湿度监控