史上最简单的开发ESP8266物联网小项目的方法
自己学习ESP8266好久了,从AT指令集到SDK到lua开发也都学习了很多方法。想要切实的完成一个物联网作品大致需要几部分:MCU控制程序+ESP8266开发+服务器选择搭建+app程序设计
对于和我一样的小白而言,可能只对其中一部分比较了解,譬如说我仅仅了解MCU的设计编程,对于服务器和app基本掌握的知识为0.这时想要快速完成一个物联网小产品就成了一件很难的事情。
所以我将给大家提供一种我在学习过程中发现的一种最简单的方法,仅需3小时。就能完成一个简单的物联网设备。
首先列出本文章的关键词 IOTECHN
好的从现在开始计时,我要在3小时内让你完成一件物联网的小项目
第一步:明确项目任务
这里我用我的项目举例子! 我要完成的任务是,做一个远程的温度检测报警系统。
mcu涉及到的功能是,点灯,蜂鸣器,测温(这里我用的不是DS18B20,是一种非接触式的红外温度传感器MLX90614)
第二步:选择确定硬件及开发环境
说了要做最简单的,所以我MCU选用51单片机。wifi模块选用ESP8266,服务平台选择iotechn。
第三步:登陆IOTECHN网站
IOTECHN网站,登陆后先注册一个账号。
然后点击添加设备
输入你设备的名字和密码,名字呢最好不要出现中文也不要用特殊字符,密码按照你的心情设置就行了,点击确定。你就会发现你设备的名字出现在下方。
其中包括几个重要的地方,
1secretkey 这是之后8266和你设备连接的重要秘钥;
2添加/查看命令 通过这个操作可以操作单片机
3添加/查看参数 通过这个操作单片机可以将参数反馈给8266和服务器
知道这些之后我们就开始设定一些我们想要的参数吧。
还记的我要完成的任务么,1开关灯 2开关蜂鸣器 3反馈温度。 这个任务里面其实就两部分 一个是让8266告诉51单片机该做什么,一个是让51单片机把检测到的数值发送给我们可爱的8266。所以我们要添加命令和参数。
点击添加命令
这里会出现三个可以填写信息的地方 譬如说我要完成开灯这件事情,那么我就就如下输入
其中命令是以十六进制的报文的形式传送给单片机的,因为有帧头和帧尾所以大家尽量不要把命令设置的太复杂,这里我就用了一位字符表示(注意:这个1是字符1而不是数字1,一会写单片机程序的时候可以体会到)
将我所有的命令都依次输入确定后 可以点击查看命令
这些就是我所有要发送给单片机的数据信息了O(∩_∩)O
然后添加一个参数 并查看 这里注意 name是编程时候要用到的 一会再说
现在呢我们服务器的参数就设置好了。
第四步:连接手机
同时这个服务器是直接连接在微信上的,大家打开微信搜索公众号 iotechn控制器
关注后点击添加设备,会让你扫描一个二维码,打开你的iotechn网页上找到二维码选项,扫描后就会出现你的设备
、
然后进入到你的设备里 就会出现你设置的命令
到这里 你的手机已经可以通过微信和服务器连接了。目前为止你是不是只用了半个小时呢?好的,还有两个半小时!
第五步:配置8266
这里要用到两个工具,固件烧录工具烧录工具点击下载和串口工具
同时,大多数同学可能只用过AT指令集开发,所以可能没有注意到8266有一个下载模式,查看8266的数据手册
这个下载模式是进行固件烧录的时候用的。固件是做什么的呢,顾名思义就是固定在8266里的程序,之前我们用的AT指令集就是一个AT固件。
因为我们要烧录一个新的固件所以大家要焊接一个新的电路,能够控制gpio的状态。这是我的电路图
接下来我们要进行SDK开发。这是SDK开发包下载地址。对于不懂SDK开发的小伙伴先不要着急,这个包里已经配置好对应的bin文件,我们直接烧录bin文件就好了。SDK开发我们可以以后慢慢学习。
在下面这个路径下可以找到对应的bin文件
/iot-esp8266/ESP8266_NONOS_SDK/bin
/iot-esp8266/esp8266_mqtt/bin/upgrade
会在bin下面有一个 user1.1024.new.2.bin 这是用户唯一的文件,其他的都使用官方的bin文件。配置地址如下
C:\develop\AiThinkerIDE_V0.5\cygwin\home\aithinker\project\ESP8266_NONOS_SDK\bin\boot_v1.6.bin 地址0x00000
C:\develop\AiThinkerIDE_V0.5\cygwin\home\aithinker\project\esp8266_mqtt\bin\upgrade\user1.1024.new.2.bin 地址0x01000
C:\develop\AiThinkerIDE_V0.5\cygwin\home\aithinker\project\ESP8266_NONOS_SDK\bin\esp_init_data_default.bin 地址 0xfc000
C:\develop\AiThinkerIDE_V0.5\cygwin\home\aithinker\project\ESP8266_NONOS_SDK\bin\blank.bin 地址 0xfe000
打开我们下载好的固件烧录软件
其中需要我们配置的有几部分 首先是上面绿的部分需要打钩并将bin文件地址和烧录地址按上面我的配置地址填入。
然后中间部分的选项有三个比较重要 1.flash size 需要按照你手上eso8266型号调整,不同型号的内存大小不同产看数据手册就能知道自己的型号内存大小了。2.spimode 和你电脑驱动有关,如果烧录不进去 可以试着调整这个选项 3.其次是你的波特率,一般来说新到手的8266波特率会有三种 9600 115200 或者144000 之前用过AT指令的同学 一定不会不知道自己的波特率吧。
上面的选项设置好之后直接点start是下载不进去的,因为刚才我们提到了下载模式,所以要先把gpio0拉低,然后点击start 这个时候就可以把固件烧录完成了。
到此8266的配置完成了一半,接下来我们要让8266连接上我们的热点和设备
这个时候我们要打开串口助手,并将gpio悬空进入工作模式
注意:我们的串口助手最好选用自带输入新行功能的,因为我们要发送一个带有回车的字符串。但回车在不同系统下不兼容,对于单片机编程一会也要注意这点 具体区别可以看我这篇文章串口和发送新行不同系统下的区别
这是我的串口工具 带有发送新行的串口助手 提取码hqqe
接下来要输入 set wifi 你的ssid 你的wifi密码\r\n 中间只能有一个空格。
set mqtt “your scretKey” “name” “pwd”\r\n 中间只能有一个空格。
sretkey是刚才在iotechn网站上自动生成的 name 和pwd是你设置的设备名称
做完这两部,就配置完成了,重启模块之后,我们输入show命令
到此为止 8266的设置已经完成
到此已经过去了一个小时,不急我们还有两个小时呢!所以可以喝杯茶冷静一下 刚才一共做了几件事?
第六步:esp8266和单片机的通信
我的51单片机是5v 而8266是3.3v 所以无法直接连接进行通信。大家可以产看我这篇文档5v与3.3v串口通信
在这里贴出我的电路原理图
第七步:单片机的编程
我有理由相信大家对单片机的编程十分过关。
我直接贴上我的程序点此下载 提取码2e16
这里要说一下报文格式,根据我刚才设置的命令参数,我在手机app上按下各个按键的时候收到的返回值是这样的
所以我接受报文的时候程序作出了如下调整
if(RI_flag){for(i=0;i<15;i++){if(UsartReceive[i]=='$'&&UsartReceive[i+4]=='}'){switch(UsartReceive[i+5]){case 0x31:P1=0;break;case 0x32:P1=0xff;break;case 0x33:P2_3=0;break;case 0x34:P2_3=1;break;case 0x35:TI_flag=1;break;case 0x36:TI_flag=0;break;}}}
还记的刚才我说的命令是字符型的么? 所以这里我命令中设置的1正式其ascll码 0x31或者直接写成case '1':
都是可以的
同时如果想让单片机发送温度参数的时候需要发送如下报文
param tem 正文 这里的tem是刚才设置的参数的name
对此我代码中只这样发送的
if(TI_flag){TI_flag=0;temperature=temperature_read();ES=0;TI=1;printf("param tem %4.2f°C\n",temperature);while(!TI);TI=0;ES=1;}
要注意的是 param 后面 tem后面都要加一个空格。 且上面我也说道了,要注意/r/n的使用。这里我们使用/n就可以了。
如果你对单片机的操作很熟练 或者你的项目并不是很复杂的话,我认为可能你对单片机程序只需要一个小时就能完成。现在来看,你已经学会了一种物联网的接入方法了是吧O(∩_∩)O
最后我就能通过手机控制led灯 蜂鸣器 并能显示温度数据了
最后的最后,非常感谢平台开发者 IO行者cz@iotechn.com 他的开源奉献给我们提供了很多的便利
这里贴出我的邮箱923158761@qq.com 希望大家共同讨论学习
史上最简单的开发ESP8266物联网小项目的方法相关推荐
- 史上最简单的rar压缩包文档解密方法,rar压缩包权限密码如何解开?
wps解密rar压缩包文件,忘记rar压缩包密码怎么找回?rar压缩包解密密码,还在下载软件解密?过时了!!!用「密码帝」 可以轻松在线解密,百度搜索密码帝就可以了,手机电脑都可以用!不用下载安装任何 ...
- 史上最简单的spark教程第十七章-快速开发部署第一个sparkStreaming+Java流处理程序
第一个流处理程序sparkStreaming+Java 史上最简单的spark教程 所有代码示例地址:https://github.com/Mydreamandreality/sparkResearc ...
- 手把手教你配置linux下C++开发工具——vim+ycm(YouCompleteMe),支持基于语义的自动补全和第三方库补全(史上最简单、史上最透彻、史上最全的终极解决方案)
截止到目前,vim稳定版本已经到了8.2+,ycm(YouCompleteMe的简称)最新版本与几年前的安装配置截然不同了.之前网上很多教程也教不得法,生搬硬套,没有讲透彻.所以,才下定决心写一篇自认 ...
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
最新Finchley版本请访问: https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f1-eureka/ 或者 http://blog.csd ...
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
转:https://blog.csdn.net/forezp/article/details/70037291 最新版本: 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spr ...
- 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)
转:https://blog.csdn.net/forezp/article/details/69939114 最新版本: 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)( ...
- 史上最简单MySQL教程详解(进阶篇)之存储引擎介绍及默认引擎设置
什么是存储引擎? MySQL存储引擎种类 MyISAM 引擎 InnoDB引擎 存储引擎操作 查看存储引擎 存储引擎的变更 修改默认引擎 什么是存储引擎? 与其他数据库例如Oracle 和SQL Se ...
- 玩转直播+短视频 京东打造“史上最简单618”
疫情之下,直播+短视频成为新时代的"弄潮儿",也成为本届"618"的最大看点之一! 与往年不同,本届"618"购物节,京东在站内站外联动布置 ...
- 史上最简单的spark教程第十三章-SparkSQL编程Java案例实践(终章)
Spark-SQL的Java实践案例(五) 本章核心:JDBC 连接外部数据库,sparkSQL优化,故障监测 史上最简单的spark教程 所有代码示例地址:https://github.com/My ...
最新文章
- 大型企业网络运维,ACL,VTP,NAT,vlan.总合。
- 一周小程序学习 第1天
- a链接的四个伪类顺序
- hdu4279 找规律+小想法
- 这篇博士论文致谢句句诛心......
- maven release插件将一版本发布到仓库中时Return code is: 401, ReasonPhrase:Unauthorized
- android小应用,只能播放一首歌的应用
- Microsoft® Deployment Toolkit 2010之快速部署Windows 7
- 与其临渊羡鱼,不如退而结网
- 阿里财报揭秘:阿里巴巴最忙的人这一年都干了啥
- 0514JS函数练习
- VBA单元格、工作表、工作簿
- 谷歌工程师深度技术分析“为什么ios比android流畅
- 云防护当道,如何绕过云防护来进行渗透测试
- 视频(mp4文件)批量转换成动图(gif文件)
- 逆向工程-查壳去壳和加壳的基本原理
- 基于 abp vNext 和 .NET Core 开发博客项目 - 接入GitHub,用JWT保护你的API
- 【年度总结】满船清梦压星河
- PostgreSQL提示:‘psql: FATAL: ”Peer authentication failed for user ”postgres“’错误#将文件Database administ
- HTML5 定位的使用
热门文章
- BZOJ 1226 [SDOI2009] 学校食堂Dining
- Telnet 控制智能灯泡
- LeetCode 从零单刷个人笔记整理(持续更新)
- C# 关于Microsoft.Office.Interop.Word中app.Documents.Add/Open报错
- 2022-2028全球谋杀悬疑游戏行业调研及趋势分析报告
- HTML常用标签或属性 英文全称和中文释义
- 独特的电子邮箱地址-LeetCode练习(Java实现)
- 对话驴评网CEO崔继蓉:在线旅游的前途在移动端
- 计算机自带纸牌游戏卸载,如何彻底删除windows系统自带的游戏蜘蛛纸牌
- 毕业旅行下 徒步穿越腾格里沙漠