使用LM35制作一个Web服务器

在本教程中,我们将探索有关这个有趣的mcu的更多信息,并通过将nodemcu与互联网连接来慢慢地潜入物联网世界。在这里,我们将使用此模块在web浏览器上获取室温,即我们将制作一个web服务器以lm35作为温度传感器显示温度。
所需组件:
节点单片机 - esp12
lm35 温度传感器
面包板
公母连接器
lm35 温度传感器:
lm35是一款模拟线性温度传感器。其输出与温度成正比(以摄氏度为单位)。工作温度范围为 -55°c 至 150°c。 输出电压变化 10mv 以响应oc 温度升高或下降。它可以采用 5v 和 3.3 v 电源供电,待机电流小于 60ua。
请注意,lm35 有 3 个系列变体,即 lm35a、lm35c 和 lm35d 系列。主要区别在于它们的温度测量范围。lm35d 系列设计用于测量 0 至 100 摄氏度,而 lm35a 系列设计用于测量 -55 至 155 摄氏度的更宽范围。lm35c 系列设计用于测量 -40 至 110 摄氏度。
将 lm35 与 nodemcu 连接:
下面给出了将lm35与nodemcu连接的电路图:
lm35 是一个模拟传感器,因此我们必须将此模拟输出转换为数字输出。为此,我们使用定义为a0的nodemcu的adc引脚。我们将 lm35 的输出连接到 a0。
我们在nodemcu的引脚上有3.3 v作为输出电压。因此,我们将使用 3.3v 作为 lm35 的 vcc。
代码说明:
本文末尾提供了带有演示视频的完整代码。在这里,我们将解释代码的几个部分。
首先,我们必须包含 esp8266wifi 库才能访问 wi-fi 功能。
#include
然后在 ssid 和密码字段中输入您的 wi-fi 名称和密码。还初始化了变量并在波特率为 115200 的端口 80 上启动服务器。
const char* ssid     = *********; // your ssid
const char* password = ***********; // your password
float temp_celsius = 0;
float temp_fahrenheit = 0;
wifiserver server(80);
void setup() {
serial.begin(115200);
通过调用这些函数建立 wi-fi 连接。
serial.println();
serial.println();
serial.print(connecting to );
serial.println(ssid);
wifi.begin(ssid, password);
连接可能需要几秒钟才能建立,因此请继续显示“...”直到连接不会建立。然后系统将继续等待并检查客户端连接...
while (wifi.status() != wl_connected) {
delay(500);
serial.print(.);
}
serial.println();
serial.println(wifi is connected);
server.begin();
serial.println(server started);
serial.println(wifi.localip());
}
在循环部分中,读取传感器值并将其转换为摄氏度和华氏度,并在串行监视器上显示这些值。
void loop() {
temp_celsius = (analogread(a0) * 330.0) / 1023.0;   // to convert analog values to celsius we have 3.3 v on our board and we know that output voltage of lm35 varies by 10 mv to every degree celsius rise/fall. so , (a0*3300/10)/1023 = celsius
temp_fahrenheit = celsius * 1.8 + 32.0;
serial.print(  temperature = );
serial.print(temp_celsius);
serial.print( celsius, );
在网页上显示温度的 html 代码:
我们在网页上显示温度,以便可以通过互联网从世界任何地方访问它。html代码非常简单;我们只需要使用 client.println 函数来回显 html 代码的每一行,以便浏览器可以执行它。
这部分显示用于创建显示温度值的网页的html代码。
wificlient client = server.available();
client.println(http/1.1 200 ok);
client.println(content-type: text/html);
client.println(connection: close);  // the connection will be closed after completion of the response
client.println(refresh: 10);  // update the page after 10 sec
client.println();
client.println();
client.println(
);
client.print(
digital thermometer
);
client.print(
temperature (*c)= );
client.println(temp_celsius);
client.print(
temperature (f) = );
client.println(temp_fahrenheit);
client.print(
);
client.println();
delay(5000);
}
加工:
使用 arduino ide 上传代码后,打开串行监视器并按 nodemcu 上的重置按钮。
现在,您可以看到该板已连接到您在代码中定义的wi-fi网络,并且还获得了ip。复制此 ip 并将其粘贴到任何 web 浏览器中。确保运行 web 浏览器的系统应连接到同一网络。
您的数字温度计已准备就绪,温度将在每 10 秒后在网络浏览器中自动刷新。
#include
const char* ssid = *********; // your ssid
const char* password = ***********; // your password
float temp_celsius = 0;
float temp_fahrenheit = 0;
wifiserver server(80);
void setup() {
serial.begin(115200);
pinmode(a0, input);
serial.println();
serial.println();
serial.print(connecting to );
serial.println(ssid);
wifi.begin(ssid, password);
while (wifi.status() != wl_connected) {
delay(500);
serial.print(.);
}
serial.println();
serial.println(wifi is connected);
server.begin();
serial.println(server started);
serial.println(wifi.localip());
}
void loop() {
temp_celsius = (analogread(a0) * 330.0) / 1023.0; // to convert analog values to celsius we have 3.3 v on our board and we know that output voltage of lm35 varies by 10 mv to every degree celsius rise/fall. so , (a0*3300/10)/1023 = celsius
temp_fahrenheit = celsius * 1.8 + 32.0;
serial.print( temperature = );
serial.print(temp_celsius);
serial.print( celsius, );
serial.print(temp_fahrenheit);
serial.println( fahrenheit);
wificlient client = server.available();
client.println(http/1.1 200 ok);
client.println(content-type: text/html);
client.println(connection: close); // the connection will be closed after completion of the response
client.println(refresh: 10); // update the page after 10 sec
client.println();
client.println();
client.println();
client.print(
digital thermometer
);
client.print(
temperature (*c)= );
client.println(temp_celsius);
client.print(
temperature (f) = );
client.println(temp_fahrenheit);
client.print(
);
client.println();
delay(5000);
}

GPRS型温湿度监测解决方案的详细介绍
NVIDIA宣布向全球所有COVID-19新型冠状病毒研究人员免费提供90天的Parabricks软件使用权
北师大整合VR资源成立VR教育合作体
贴片电感的运用及贴片滤波电感的品质说明
江西景旺二期智能工厂释放产能,人均产值有望超160万元
使用LM35制作一个Web服务器
安捷伦推出符合3GPP的MSR信号分析解决方案
华为畅玩6X“超给力”:绝对的“性能巅峰”仅1599元
如何为混合动力汽车或电动汽车设计暖通系统
Intel重磅发布50多款CPU处理器
启攀微专注而灵活,连续多年增长率超30%
电磁继电器选用_电磁继电器应用
DoIP介绍 DoIP应用场景
众芯片商争出头 大陆低价机硝烟弥漫
首例国行爆炸Note7检测报告出炉!三星让人愤怒
基于Zigbee技术的室内照明系统设计研究
第四代核电蓄势待发
Python 不可变对象真的不可变吗
三十而立的Cadence与IC产业携手向前
基于多场景化解决方案,华为云助力制造业企业走出数字化转型困境