入坑物联网芯片ESP8266随笔

687 阅读7分钟
(需要直接关注入门笔记略过这部分引用)今年大二上期,专业课只有数据结构,C语言进阶,和简单的面向对象,自学比较多,拿学校教的东西几乎什么也做不了,有感兴趣的技术都会去学,学校的一些比赛也因为一些原因就去参加了,一个团队的比赛,我被推到其他学院的一个比赛小组,起初以为过去写App就好了,结果要做微信小程序,没学过,要做一些物联网控制,也没学过,平时写代码也花了所有空余的时间,都没有时间记一些学习笔记,从学安卓原生开发,安卓逆向,java,python,最后一直在学习的Flutter框架,dart,整个过程也很少记下东西,以下是我入门简单的物联网笔记,简单的学习笔记,该篇纯文字,之后几篇会是图文入门
  在接触到这个之前我对于单片机、物联网、嵌入式可以说是一个百分百的小贝,纯软件方向的我从来没有接触过这些东西,大概就是需要通过WIFI或者蓝牙去更改一些实际电路的状态,整个小组只有我唯一一个技术人员,不像我计科的很多可能就是里面会有5,6个本专业的人,最后做什么东西也可以一起互相帮助,老师给我们小组也提供了一些大四学长的帮助,起初在跟队友还有大四同学商讨方案的时候就犯了一个很大的错,我不了解任何的单片机,所以方案就直接变成了通过手机USB去更改一些电路的状态,往这个方向下去就遇见了各种的问题。

大致如下:

1.完全没有做过ios原生开发,根本不清楚ios能否进行串口设备的通信

2.我本就作为一个安卓开发者,技术上的时间迁移成本可能根本是我想不到的,时间只有短短几个月

3.控制电路的东西不能是App,只能是微信小程序,微信小程序怎么会提供一个这样的接口,进行串口通信

  如果是网络通信的话,App方面可以用Flutter做Android跟ios,微信小程序也一定有网络通信的接口,所以最后往物联网方向考虑了,起初没有直接考虑,也完全是很大的受限与自己的技术,我对我完全不了解的技术,任何的操作实现都是我无法保证的,直接去淘宝搜了带WIFI的单片机开发板,搜这些板子都是模模糊糊的,也不知道买啥,都不是很贵,就先随便买了几块,之后问到电子的同学借来了一整套Arduino的开发套件,一个大的合资,里面有挺多的小物件,然后就面向搜索引擎入门这个大的板子,同时浏览了好几十个帖子,大致流程,直接传统安卓数据线供电,下载Arduino的开发IDE,跟着帖子跑了一个示例的教程,简单的几行C语言程序,最后运行板子上的灯一闪一闪的,还可以主动向串口发送一些消息,最后发现这个大的Arduino的盒子里面有一个WIFI模块(问的同学),又搜索一堆帖子,要连线,盒子里面线也挺多,大概就是,完全看不懂,什么引脚啊什么的,高中物理几乎没用上,反正比着一些帖子一点一点连,连了5根线的样子,需要接一个10k的电阻,我确认电阻的大小还花了半天,盒子里面电阻很多,找半天没见哪儿标了它的大小,后来就找不见引脚了,线没连上,帖子后面写的也是完全看不懂,什么AT指令啊,还因为最后做出的电路成本不能太高,果断先把板子收回去,继续浏览帖子,挺多帖子都看不懂,初步确认了这样的WIFI模块被称为ESP8266,然后进一步浏览关于这个的资源,再回淘宝瞅了我买的那个模块,也是纯模块,需要连线或者焊接的,果断退掉,最后在ESP8266相关的帖子中发现了一个跟Arduino盒子不一样的板子,带有一个传统的安卓充电接口,确认了这个东西是ESP8266 NodeMcu模块,去淘宝也搜见了,12块钱一个的样子。
  这种板子还有两种,内部芯片有不一样,尺寸也不一样,我都买了一个,随后浏览一堆关于这些板子的入门,大致了解到,这个玩意可以烧写一个lua的解释器进去,可以直接用lua脚本语言进行开发。.
  板子到的时候是周六上午十点的样子,起床后先去申请了微信的小程序,一系列通过官方文档没有遇见什么坑,大致看了项目结构,有Json,Wxml,Wxss,Js,差不多对应传统网页的Html,Css,Js,Json里面是一些导航栏颜色,tab的一些配置,当下我没怎么动这个文件,Wxss里面好像是一些具体的交互效果,我后面写的按钮的按压效果是写在这里面的,因为我需要用微信小程序改变电路,我不能将控制的业务逻辑写在小程序的生命周期里面,所以当然是按钮触发,简单写了一个按钮,按压事件写了一个空的函数预留,然后就出去把开发板拿了回来。
  继续同时浏览一堆帖子入门这个板子,大致得出结论,传统usb供电,烧写固件,IDE上手开发,想着跟之前那个Arduino简单的控制灯的熄灭应该差不多,9成以上的教程是Windows环境,还需要Java环境,下意识到还得在这上面花时间了,Windows系统上几乎什么环境都没有,先去官网找到了这个板子的烧写固件,这个不需要环境,正常烧录,然后去Oracle下Java环境,一年前用Windows装过Java,直接就能下,这次不管怎么下都要求我登录账户,我老老实实的注册账户发现我根本不能注册,因为看了Esploer这个俄罗斯开发的IDE,用Java8肯定没问题,结果死活下不下来,百度云记得有一份,速盘也下载巨慢,然后就了解到下java13以下的都不方便,我就下了Java13,环境装上,IDE能打开了,最后点一下上面的open按钮就闪退,log记录到awt的包什么错误,估计是java版本变动吧,不兼容了,先问群里同学要要看有没有然后继续浏览相关帖子。
  最后同学真把Java的jdk发来了,安好后,IDE也不闪退了,然后就直接搜了一些lua控制上面灯的代码,跑上去终于能控制了,继续找到一些通过局域网连接TCP通信的轮子,好几个都跑不上,还有的就是连接成功无法获取到板子的wifi地址,打印出来是nil,在lua语言是跟null差不多的东西,又花上半天,终于跑上了,是一个判断WEB请求参数值更改灯的熄灭的,写上微信小程序也能控制了。因为就用到代码的上传,在那个时候就想着用Flutter简单重写一些刷入的工具,看之后时间安排了,有时间一定会。