生子当如哈士奇 发表于 2018-5-7 20:14:52

物联网教程 Part1

教程是下载到本地看的,包含源码:教程网盘分享
如果是第一次阅读本系列教程,可先看一下前言。

[*]Part1

[*]demo1项目介绍
[*]服务器&客户端

[*]安装nodejs
[*]启动服务器程序
[*]验证TCP服务器
[*]通信

[*]ESP8266 验证AT指令
[*]服务器与通信之间的联调

[*]联调
[*]硬件

[*]STM32串口调试
[*]硬件与通信之间的联调
[*]整个demo1联调
[*]Part1 调试总结
* 牢记1:物联网项目出现异常时,确保能让调试人员在3分钟内正确定位到问题所在环节。
* 牢记2:每一环节必须拥有快速自证的能力。
[*]**
[*]下一个demo项目

Part1这一部分主要是让项目运行起来~
最后修改时间:2018/4/30demo1项目介绍
https://img-blog.csdn.net/20180506172045422整个包括四个部分,从左往右包含了硬件部分、通信部分、服务器部分、客户端部分。
[*]硬件:STM32。
[*]通信:ESP8266 通过WIFI连接到TCP服务器。
[*]服务器:包含HTTP服务器与TCP服务器。
[*]客户端:用浏览器打开Web页面,本质就是连接到HTTP服务器。
[*]硬件与通信之间:就是通过UART串口通信,STM32用AT指令控制ESP8266。
[*]通信与服务器之间:STM32能过AT指令控制ESP8266,连接WIFI并与服务器建立TCP连接。
[*]服务器与客户端之间:浏览器打开网页(即建立HTTP连接)。
各部分其实并不是固定死的,如硬件部分STM32可以换成STC89、aduino等。通信部分可以换成以太网、NB-IOT(这个必须要对接运营商的平台)。服务器部分本质就是系统要用window还是linux,语言要用php还是nodejs还是其它的。客户端就是PC、手机等。当然我不可能所有都讲,我就选择一些来讲,大家学习之后明白了思路,就可以根据实际要求自己定义实现方案。为了大家能更好地“傻瓜式”运行起来,大家都使用nodejsV8.x,编辑器vscode,浏览器Chrome。服务器&客户端
服务器&客户端调试,基本证明软件部分能正常运行。服务器左侧数据全部由网络调试助手模拟。https://img-blog.csdn.net/20180506172106227
安装nodejs
[*]搜索nodejs官网
[*]下载nodejs,为了保持一致,大家下载稳定版本V8.x。(LTS: Long Term Support )
https://img-blog.csdn.net/20180506172118230
[*]在cmd里运行node -v与npm -v验证nodejs安装成功
https://img-blog.csdn.net/20180506172130955
这个验证很常见,有两个用途:1.程序安装成功。2.环境变量(PATH) 设置正确。
启动服务器程序
[*]获取内网IPv4地址,在cmd里输入ipconfig,找到内网IPv4址。
https://img-blog.csdn.net/20180506172232540
[*]修改配置文件Part1/demo/config/config.js,将你的内网IPv4地址填入HOST。
https://img-blog.csdn.net/2018050617224286
如果是家里的WIFI一般是192.168开头的,比如我现在的是192.168.1.121,校园网我就不知道了~
[*]点击Part1/demo/运行.bat
https://img-blog.csdn.net/20180506172253890
脚本运行起来会自动打开浏览器对应的页面http://${HOST}:{HTTP_PORT}/tcp-page(我的环境就是http://192.168.1.121:8888/tcp-page,${variable}这种样式代表的是变量,大家需要根据自己的情况修改这个变量的值),顺手就把HTTP服务器验证完毕。
[*]手机连接同一个WIFI,使用浏览器访问相同的网址。
https://img-blog.csdn.net/20180506172322253
注意符号要用英文符号,中文符号是不行的。(两者区别就是,中文符号占两个空格位置,可自行搜索全角与半角的区别)

配置错误会导致报错强制退出,请重新核对内网IP地址:https://img-blog.csdn.net/20180506172340211
验证TCP服务器要验证TCP服务器,你需要网络调试助手。网盘分享(点击右键 在新标签页中打开链接)
[*]运行网络调试助手,风络设置:协议类型TCP Client、本地主机地址:内网IP、远程主机地址内网IP:端口。点击连接。
https://img-blog.csdn.net/20180506172413198
连接成功会返回OK,并且网页上会有显示建立连接。
[*]联调效果,网页上点击按钮,能发送字符串到网络调试助手,而网络调试助手发送的字符串,能在网页上显示出来,如果发送的是LED1:1,还能改变网页LED状态。
https://img-blog.csdn.net/20180506172428401
通信接下来要做的就是,将网络调试助手替换成ESP8266。或许有人会问,为什么不直接用ESP8266直接联调,中间还搞个网络调试助手来模拟ESP8266浪费大家的青春年华?那是因为物联网项目的战线实在太长,光是软件部分就要搞这么久,引入硬件(近乎玄学)就需要更久了,直接整个demo1联调,只要出一个问题都不想继续搞下去了。所以必须保证每一环节能自己证明自己是正常运行的,才能安心地与其它环节对接联调,对接联调出现问题时能够回到自证调试,从而快速确定问题位置。
在项目中,ESP8266作为通信部分,左边与STM32相连通过串口通信进行数据交互,右边通过WIFI连接TCP服务器进行数据交互。所以自证的时候,左侧在电脑上用串口调试助手模拟STM32,右侧用网络调试助手模拟TCP服务器。https://img-blog.csdn.net/20180506172453633
ESP8266 验证AT指令
[*]ESP8266接线
ESP8266都不知道火了多久了,文档还是一样的散乱,对新手还是那么的不友好,至少是不知道入口在哪里,怎么进行最简单的验证~
首先我们在代理商安信可的文档中心里找到用户手册。里面可以找到esp8266-01的接线图,使用USB转TTL模块连接到电脑里。
https://img-blog.csdn.net/20180506172504899
https://img-blog.csdn.net/20180506172533680
因为有多个地方要接3.3V,大家可以用开发板与usb转串口配合着接线,反正我是用面包板加电源模块接的。
[*]串口调试助手 验证AT指令 网盘分享
第一个文档有AT指令的介绍,根据第二个文档做一下AT指令的最简单的验证,比如连接WIFI、连接TCP等都有讲,我就不多加搬运了~
https://img-blog.csdn.net/20180506172626484
[*]一样是使用网络调试助手,不同的是这次使用网络调试助手充当TCP服务器端。通过AT指令成功连接WIFI,连接TCP服务器,就验证成功了。后面就是将TCP服务器换成我们之前运行的服务器。
https://img-blog.csdn.net/20180506172652114
若验证AT指令失败,请尝试重新烧录AT固件 ESP8266 烧录固件服务器与通信之间的联调
完成以上步骤,服务器与ESP8266分别都自证成功,现在将两者联调起来。相对于服务器自证来说,就是将TCP客户端从网络调试助手替换为ESP8266,相对于通信自证来说,就是将TCP服务器从网络调试助手替换为我们编写的服务器。联调的效果就变成了:https://img-blog.csdn.net/20180506172713377
联调
[*]点击 运行.bat,运行服务器。
[*]通过串口调试助手向ESP8266发送AT指令。
因为我知道我们都很懒,我把指令都复制过来了。

[*]AT+CWJAP="${WIFI_SSID}","${PASSWORD}" 输入WIFI账号密码
[*]AT+CIPSTART="TCP","${HOST}",${PORT} 输入你的内网IP地址与端口,像我就是AT+CIPSTART="TCP","192.168.1.121",2424 ,大家肯定跟我不一样的,要自己换。
[*]AT+CIPSEND=6 向TCP发送六个字节,然后就可以发LED1:0,这样的数据。
[*]AT+CIPCLOSE 关闭TCP连接
https://img-blog.csdn.net/20180506172731493
我手上测试的AT固件是1.6版本的,AT+GMR查看版本。
硬件
现在就是要自证硬件环节没问题,使用串口调试助手模拟ESP8266,手动模拟出TCP服务器的数据交互。特别注意,对于STM32我们将会使用两个串口,串口0用于调试。串口1用于与ESP8266连接(用串口调试助手代替模拟)。https://img-blog.csdn.net/20180506172747898

对于STM32来说,它要做的就是三件事:
[*]串口0打印debug信息(用于连接电脑调试),串口1与ESP8266连接(用串口调试助手代替模拟)。
[*]使用AT指令操作ESP8266,保证与服务器建立起TCP连接,并且在掉失连接时重新连接。
[*]采集传感器数据(可以用悬空的ADC来生成随机数据,同时连接到地或电源,就能得到0与3.3数据)并发送到串口1里,从串口1中接收数据,根据数据开关LED0、LED1。
我比较懒,这部分代码暂时没实现,只提供了思路,我都有一年多没写stm32,况且手上没什么好板子~如果哪位网友愿意写一份原子开发板与野火开发板的stm32代码,请分享给我,我分享给大家用。STM32串口调试~ 待更新,你们可以自己动手~硬件与通信之间的联调相对于硬件自证来说,无非就是将串口1把串口调试助手更换为ESP8266。
整个效果回到了demo1项目图:https://img-blog.csdn.net/20180506172801734

整个过程包含以下过程:STM32STM32ESP8266ESP8266TCP与HTTP服务器TCP与HTTP服务器手机或电脑手机或电脑LED1LED1AT指令连接TCP服务器通过WIFI将数据转发到服务器连接成功,返回'OK'转发'OK'发送实时数据转发实时数据打开网页网页显示实时数据点击开LED1按钮发送'LED1:1'转发'LED1:1'打开LED1整个demo1联调~ 我都还没写STM32代码,这部分当然是还没有啦~Part1 总结由于物联网项目战线很长,一旦出了问题排查很费时间的,所以在设计与开发时都要最大程度上方便排查。牢记1:物联网项目出现异常时,确保能让调试人员在3分钟内正确定位到问题所在环节。牢记2:每一环节必须拥有快速自证的能力。**保留一切权利,禁止商业转载,非商业转载时必须保留此**与网址:https://github.com/alwxkxk/sofe-and-hard下一个demo项目demo1只是用来引大家入门的,真正能拿得出手的是下一个demo项目。但在做下一个demo项目之前,我们先学习完demo1里涉及到的知识,开始Part2阅读
下一个demo项目大约在Part4出现,会引入数据库,添加数据可视化,优化数据传输实时性(web方面引入websocket,硬件通信引入MQTT协议,所以ESP8266会使用自己编写的固件取代AT固件),并且做出PC端软件(就是.exe文件,点击就可运行的那种,不需要浏览器,不需要客户自己安装nodejs,还能定制出自己的图标,使用.exe方显是大企业产品)。
页: [1]
查看完整版本: 物联网教程 Part1