本文是基于自主设计的CA-02模块编写的基础教程系列的第一篇,在接下来的一段时间里我会继续围绕CA-02模块做一些基础教程和工程上的应用。
可能会有人对CAN总线比较陌生,在之前的博文中,我已经简单介绍了关于CAN总线的特殊性及和其他通信方式的对比,这里就不再赘述了。
这里我们为什么要用ESP8266而不是其他MCU,比如51单片机,stm32单片机等,其实实现原理上都是一样的只不过我们在使用ESP8266的时候可以使用Arduino进行编写程序,这就意味着我们可以引用其他人编写好的代码库,所谓库,就是将底层寄存器的操作封装起来,我们无需关心具体寄存器是怎么操作的,直接使用API函数编程就可以了,这对于入门来说非常容易。使用ESP8266的原因还有一个就是ESP8266自带WIFI,这就意味着我们可以做一个CAN总线的网关,无论是在智能家居、工业控制还是其他物联网的应用中,网关是必不可少的组件,所以我们只要学会使用这些,基本上实现一个智能网关就非常容易了。
预告一下ESP32的相关教程,目前来说使用ESP32作为网关的话性价比要比ESP8266要高一些,这里暂不阐明原因,后面也会有关于ESP32的教程,会具体说明原因,ESP8266作为终端设备的性价比基本上是物联网应用中最高的,所以ESP8266的学习应用是必须的
接下来我们通过一个简单的实例去看一下我们如何轻松实现CAN总线的通信
接线图
我们按照下面的图纸连接ESP8266和CA-02模块,ESP8266的开发板和最小系统板有很多种,可以使用我设计的这种开发板,也可以使用D1mini、NodeMCU等等都可以,可以购买CA-02模块,也可以使用其他基于MCP2515方案的模块,这里还是建议大家使用CA-02模块,模块板载指示灯,做了多重防护,使用比其他的要方便可靠
示例程序
下面的程序是使用基于Seeed_Arduino_CAN这个库编写的发送程序,使用ArduinoIDE或者VSCODE编译都可以,具体如何编译可以查看博客中关于Arduino的相关教程,实现也是很简单的
库连接 https://github.com/Seeed-Studio/Seeed_Arduino_CAN.git
1 |
|
效果
下面的展示效果是使用CA-02模块与ESP32CAN网关通信效果
下面是接入home-assistant后的示例,取can总线数据的高4字节作为温度显示