基于NodeMCU的物联网教学平台设计与实现
2021-12-27苏神保刘丹湖南商务职业技术学院湖南省长沙市410205
苏神保 刘丹 湖南商务职业技术学院 湖南省长沙市 410205
0 NodeMCU介绍
NodeMCU是基于乐鑫ESP8266芯片二次开发的物联网开源平台[1],由USB转串口芯片CP2102或者CH340与ESP-12E物联网模块构成。烧录不同固件可以满足不同的集成开发环境。目前NodeMCU的开发方式主要有三种:一是AT指令方式 ,通过烧录AT的固件包,使用AT指令与ESP8266交互,执行相应指令,本教学平台串口WIFI模块的透传就是通过这种方式开发的;二是Lua开发,通过烧录NodeMCU的固件包,使用Lua语言开发,且使用ESP内部资源;三是Arduino IDE下的开发,相当于直接编写固件,编译之后,烧录进ESP,本教学平台NodeMCU下位机程序设计就是在Arduino集成开发环境下安装ESP8266资源包来实现的。
1 教学平台总体框架
为了满足物联网课程日常教学及实验项目需要,本平台使用51单片机及传感器课程教学所用器件,如使用光敏传感器(模拟值)来获取当前环境光线强度,使用DS18B20温度传感器来获取当前环境温度,使用DHT11温湿度传感器来获取当前温度和湿度,使用SR04超声波传感器来获取障碍物距离,借助NodeMCU自身GPIO口和继电器来控制房间灯的开关,使用S90舵机来模拟房间开门关门动作。因NodeMCU可用于外接传感器的GPIO口有限,如需外接其它传感器,替换上述部分传感器即可。
教学平台总体设计框图如下图图1所示:
图1 物联网教学平台总体框架图
上述核心控制板也可以换成Arduino Uno作为入门级教学主控单元,需要中文显示可以将LCD1602替换为OLED12864,但为了体现NodeMCU和ESP8266在物联网领域的应用,建议核心控制单元使用NodeMCU。另外地,串口WIFI模块ESP-12E也可以直接用NodeMCU来取代。Android手机与Windows电脑上位机端程序可以网络下载,也可以自行开发。
2 子模块举例
Arduino集成开发环境作为物联网硬件开发工具得到广泛运用的一个主要因素就是具有开源性,用户只要下载相应的库文件即可,而不需要清楚的知道各个模块内部是如何驱动的。库文件是类库和函数的集合,库文件的使用可以提高代码编写效率及程序可读性[2]。
2.1 光敏电阻传感器(模拟)模块
光敏电阻传感器(模拟)模块的设计主要是为了让学生了解NodeMCU的模拟analog输入输出部分知识[3]。在NodeMCU中,有且仅有一个模拟输入管脚A0用于模拟输入,取值范围为0~1023,读取该管脚的模拟PWM值并显示在I2C1602液晶显示器和串口上,用于显示当前光照强度,同时将该PWM值映射(MAP)至模拟输出管脚(外接LED)上,实现感光灯的效果,加强实验的兴趣性。
2.2 DS18B20温度传感器模块
根据Arduino集成开发环境的开源性,可以在GitHub官网上下载该模块的库文件,并将该库文件拷贝至libraries目录,按照库文件的示例程序和实际情况来编写相应程序即可。但在实际开发过程中,库文件种类繁多,编译容易出错。为了提高教学效率,建议安装DFRobot图形化编程Mind+软件,该软件安装目录底下自身带有日常常见传感器库文件,按同样的方式拷贝至libraries目录,程序包含该头文件并创建对象即可。示例程序如下图图2所示:
图2 DS18B20库文件使用方法
教学实验平台中所使用的其余传感器如DHT11温湿度传感器、S90舵机、SR40超声波传感器以及I[2]C1602液晶显示器均可以采用同样的方法进行。如此一来,大大简化了程序设计的难度,提高其实用性。库文件的获取除了上述两种方式外,还可以利用Arduino IDE自带库管理器通过搜索关键字在线下载获得,对于学有余力的同学而言,可以按格式要求自己编写库文件。
3 串口蓝牙与串口WIFI模块
NodeMCU硬件电路自带有串行通信接口,外接串口蓝牙模块或者串口WIFI模块即可实现与上位机的交互通信,也是实现物联网的关键。串口蓝牙模块的AT指令配置相对较为简单,这里重点举例介绍一下串口WIFI模块。在使用AT指令与ESP-12E串口模块交互时,首先需要对模块烧录AT固件[4]。
//设置WiFi应用模式为AP热点模式
AT+CWMODE =2
//设置模块AP模式下的SSID号、密码、信道号、加密方式。
AT+CWSAP="ESP-12EAP","12345678",11,0
//设置单连接模式。
AT+CIPMUX=0
//设置为透传模式。
AT+CIPMODE=1
//进入透传模式,并保存。(进入后模块就一直为透传模式,IP地址为上位机连接模块所发出WIFI热点信号时获取的IP地址,一般为192.168.4.2。需要退出则取消发送新行,发送+++,返回CLOSED,然后执行AT+RESTORE命令恢复出厂设置。)
AT+SAVETRANSLINK=1,"上位机的IP",8080,"TCP"
执行完上述AT命令后,此时上位机IP做服务器,服务器端口号为8080,模块作为客户端上电后自动连接服务器,接收上位机发送命令并将下位机数据上传至手机或者电脑上位机端。
4 上位机端远程控制
蓝牙上位机一般通过Android手机APP实现,WIFI远程控制上位机则既可以是Windows电脑,也可以是Android手机。上位机程序涉及到Android和Windows程序开发,非本实验平台教学内容,学生可通过互联网下载相应程序安装调试即可。
给出本实验平台上位机Android蓝牙串口APP和Windows Socket Tool应用程序调试界面分别如图3、4所示:
图3 Android上位机蓝牙及WIFI调试界面
图4 Windows上位机WIFI调试界面
5 教学内容设计
本实验平台设计的目的是为了满足高等职业院校移动互联与应用技术专业物联网课程教学需要,在课程体系的设计中,遵循由浅入深、由易到难、由分到合原则,总体上可以分为基础模块、传感器模块、物联网模块三个部分开展教学。基础模块包含Arduino开发ESP8266环境的搭建、NodeMCU硬件介绍、板载LED及按键操作、模拟输入输出(光敏电阻传感器)、串口打印输出等内容;传感器模块包含I2C1602LCD、舵机、DS18B20温度传感器、DHT11温湿度传感器、SR04超声波传感器等内容;物联网部分主要介绍串口蓝牙模块和串口WIFI模块的使用方法。具体教学安排如下表表1所示:
表1 基于NodeMCU物联网实验平台教学内容安排表
6 结束语
本物联网IOT实验教学平台以NodeMCU为载体,利用常见物联网传感器获取相关信息,借助蓝牙和WIFI通信方式,达到了物联网的基本功能。但由于WIFI模块尚未接入云端,仅仅实现局域网内的控制与信息获取,云端远程控制有待进一步开展研究。
物联网是信息科技产业的第三次革命,是通过信息传感设备,按约定的协议,将任何物体与网络相连接,物体通过信息传播媒介进行信息交换和通信[5]。职业教育要紧跟时代发展需要,培养顺应时代发展趋势的综合性人才。