之前寒假期间趁着有时间学习了一下物联网的基础器件——ESP8266 WiFi模块,即上面的前期教程,没想到看得人不少,挺多人收藏了,可见物联网的火热~
最近在做一个小物件,想要在里面添加WiFi模块,实现联网获取实时时间,这算是很普通的需求,而且网上相关的资料也是一大把。但是当我翻开自己写的博客时,突然发现写得有点不太详细(估计是当时正值假期尾声~),很多内容只是一个概述,而且感觉给出的资料有点乱,对于完全没有接触过的人来说看起来还是有点费劲的,于是想着再补一遍博客,老规矩,尝试“授人与渔”。
对于硬件学习,我最推荐的就是自己去官网找资料,而不是疯狂地找各种博客,因为很有可能出现资料下了一大堆,结果能用的却没几个的尴尬情况。官网资料最主要的好处就是全且新。
对于ESP8266(或者ESP32)来说,一般说的官网有这么几个:
对于这几家,乐鑫是做芯片的,其ESP8266EX芯片据说是物联网领域里程碑式的突破,将搭载WiFi的成本大大降低,而其他的商家则是基于这个芯片开发固件并组装系统,也就有了模组(即那个板载天线引脚是小缺口的小板子)和开发板。当然,现在乐鑫也有它的模组和开发板。
所以,很显然,如果买来一个开发板或模组,首要的肯定是找开发板或模组的厂家给出的资料,如果是固件开发和代码编写的话,就得要参考芯片厂家资料了。
现在,你已经掌握了资料查找的方法,所以建议首先将开发板或模组的手册通读一遍,建立基本印象。
在上一篇博客里面,我重点区分了一些常见(且我有的)WiFi模块,但实际上更应该区分的是芯片的型号,基于同样的芯片的不同型号的模组,一般来说大同小异,基本能够支持相同的固件烧录。

友情提示:这个链接的资料非常完善,建议反复阅读。

这一块本人实践不多,不再多讨论,以后有机会继续更新!
区分完了型号,确定了手里拿着的到底是啥板子,接下来就是根据需求确定开发方式了,这里也需要根据板子的型号来选择。
ESP8266的开发方式非常多。但是其本质就是编写能够在ESP8266中运行的代码,最后生成一个bin文件,烧录到ESP8266中,因为ESP8266本身就是一个单片机,但是这个单片机可以有多个集成开发环境,下面一一介绍。
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
https://dl.espressif.com/dl/package_esp32_index.json【实测发现是字体的问题,不能使用Fira Code Retina,而要用Fira Code Medium】
个人觉得使用Arduino开发入门的最快方法就是看它附带的例程
一般我们常用的AT指令是统一的,都是参考乐鑫官方的AT指令,这个是链接,可以作为AT指令使用的参考。所以如果AT指令没有响应不要去找与固件相对应的AT指令,而应该马上换固件。
关于AT固件,只推荐乐鑫官方和安信可官方的固件,不过需要注意的是,下载的固件大小要和ESP8266型号相对应,一般就是两种:1M的固件对应8Mbit的EEPROM;4M的固件对应32Mbit的EEPROM,这个也是在使用FLASH DOWNLOAD TOOLS下载固件时需要设置的参数。至于型号的EEPROM的大小可以参考安信可的官方选型表,链接还是上面那个安信可官网。

使用AT指令的时候,后面一定要加换行,或者\r\n,如果是在使用过程中需要传数据,就不需要加换行,而且AT指令在返回时还会重复一遍AT指令,使用时不要觉得奇怪。
前面提到,ESP8285是自带FLASH的ESP8266EX,代表的产品系列就是四博智联的DT-06和ESP-M系列,虽然官方给了很多烧录固件的方法,但不知道为啥给的都是ESP-12的附图,总之烧录固件就没成功过,令人迷惑。最终我得出的结论就是,DT-06和ESP-M系列的WiFi模块是TTL-WiFi,这也是他们数据手册的大标题,也就意味着它不能组网!!! 最明显的体现就是它不能烧录固件,只能用它自带的固件,而且支持的所谓AT指令也仅有几条而已,它的设置方法是登录一个网站,然后在网站中设置,具体操作建议参考官方的手册,总而言之,DT-06和ESP-M系列WiFi为TTL-WiFi,主要作用是串口透传。基本可以和HC-05的蓝牙模块划等号。
说了这么多,最后回到本次的需求上来:通过ESP8266联网实现实时网络时间的获取。这个网上的资料很多,这里给两个教程链接:
然后总结几个要点:
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or
我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c
我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的
我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模