ESP8266/ESP32-CAM利用I2C(IIC)方式与MEGA2560通信遥控小车
本帖最后由 LegendYang 于 2021-12-25 20:39 编辑写这篇帖子的原因是自己是个妥妥的外行,只是为了给孩子做玩具玩,接触了这个领域,由于身边缺少这个领域的朋友,所以自己在做的过程中查了很多资料,来回折腾不少时间,希望以自己的经历,能给后来的朋友提供一些小小的帮助。一、硬件包括:坦克底盘一个(包含两个带霍尔感应器电机),weMos D1(ESP8266开发板)一个,L298N一个,8路光耦一个,电源模块一个,arduino mega2560一个,电机12V电源一个,电源模块电源7.4V一个,面包板一个。
二、基本思路: 利用点灯平台,采用ESP8266联网,与手机通信。ESP8266采用I2C(IIC)和mega2560通信,由mega2560控制电机。之所以这样,是因为想以后用mega2560能控制更多的元件。
四、ESP8266代码详见附件
五、mega2560代码详见附件
六、一些说明
[*]这个代码仅仅是能用,各位朋友可以根据自己的喜好进行调整。
[*]使用的编程环境是arduino IDE。具体的编辑环境网上有很多,这里就不写了。
[*]光耦很重要。动力电源和控制系统电源,最好是独立开,各干各的。我刚开始没有独立,而且还傻呵呵的让两个电源共地,导致系统经常莫名其妙的出问题,后来想明白了,加了光耦,经过测试,系统很稳定了。
[*]I2C的通信方式参考:https://blog.csdn.net/csdn35772148/article/details/111411587
[*]车辆采用差速工作的方式进行调整方向。
[*]mega2560中写的接线方式,仅供参考,附件有线路连接图。
[*]文章里面写I2C还要再啰嗦个IIC,是因为我自己找资料的时候,IIC和I2C找出来的资料不一样,费死劲了,希望别人搜的时候能方便些。
[*]文章写在这里,是因为blinker真是个很好用的工具,太省事了。
[*]设备使用时候有延迟,在点按停止按钮后,有个400ms的反转,时间可以自己调整
[*]其他有想到的后期再补充。
七、ESP32-CAM和mega2560
[*]如采用ESP32-CAM代替ESP8266,采用I2C方式和MEGA2560进行通信,ESP8266的主要程序是可以通用的。但是重点在于ESP32-CAM需要采用虚拟I2C。具体不同处在于wire函数的初始定义,需要在setup中采用如下方法才行。虽然很多人觉得这不是问题,但为了这个问题,我查了两天资料。SDA和SCL引脚可以根据自己情况调整,不过ESP32-CAM上可用引脚也没几个。
Wire.begin(15,14);//SDA,SCL
[*]ESP32-CAM采用用蓝牙与MEGA2560通信也是可以的,但是使用蓝牙后,点灯APP显示设备离线,但是在APP上按键是有正常反应的,也就是说,蓝牙和wifi在同时工作。不过此时点灯APP显示不正常,同时也无法显示视频。具体原因不知。
[*]I2C的连接测试,刚开始老有问题,我一直以为是我哪里搞错了,因为我手头有个正版的arduino mega2560板子,用这个正版的板子随便测试了一下,发现成功了,但是图片中的那个很便宜的蓝色mega2560就是不行,两个用的同样的插口(SDA1和SCL1),后来我把蓝色mega2560的接口换到了SDA和SCL接口,就正常工作了。但是我用wemos D1采用I2C和蓝色的mega2560通信,就是SDA1和SCL1,就没有问题,我真是百思不得其解。
[*]因为ESP32-CAM使用blinker软件时,只能在局域网内进行视频传输,因此就后面懒得弄了
八、版本修改说明: 车辆内容太粗糙,有很多问题,修改了一下,重新上传了代码,并上传了电路连接图
页:
[1]