ESP32读取串口传感器数据
最近拿到一个九轴陀螺仪传感器,如图:
该设备通过串口方式输出九轴数据,可用官方自带得上位机或者是sscom看到数据,官网提供了很多例程,但唯独没有ESP32的
既然提供了Arduino Mega2560的例程,那么ESP32应该也可以使用。
先说一下ESP32的串口通信方式。
ESP32基于硬件的串行通信接口总共有三个,分别定义在了如下的GPIO口:
针对三个硬件串行通信接口,ESP32已预先对应的建立了三个对象系列、系列1、系列2 .
因此我们才可以在开发时直接上来就写连环杀手。开始(9600);连载印刷("你好,世界!");这样使用串口。
当然了,如果想使用UART2串口,我们就可以直接写系列2。开始(9600);Serial2.print("你好,世界!")。
我在ESP32板子上找到了rx0、tx0和rx2、tx2、原来rx0、tx0是拿来下载程序用的,只有板子上的RX2和TX2才能拿来用。所以这个设备和ESP32要这么接线:
陀螺仪VCC ESP32的车辆识别号(5v供电)(这里有个大坑,这个设备必须5V供电,3.3V收不到数据)
陀螺仪GND ESP32的GND
陀螺仪TX ESP32 RX(D16)
陀螺仪RX ESP32 TX(D17)
进入官网:https://dl。机智的动作。com :2103/index。html #/wit-service/product documents/details product id=41903864 EC 49452495992 a0e 663 bbe 71
下载:"7.Arduino Mega2560读取维特智能标准协议"。
然后将文件夹复制到阿尔杜伊诺的图书馆文件夹下。上代码:
#包括电线
#包括JY901.h
无效设置()
{
连环杀手。开始(9600);
系列2。开始(9600);
}
无效循环()
{
//打印收到的数据。串行事件中收到数据;
连环杀手。print(' time :20 ');连环杀手。印刷品(JY 901。时间。UCyear);连环杀手。打印('-');连环杀手。印刷品(JY 901。时间。UCmonth);连环杀手。打印('-');连环杀手。印刷品(JY 901。时间。UCDay);
连环杀手。print(');连环杀手。印刷品(JY 901。时间。uchour);连环杀手。print(' : ');连环杀手。印刷品(JY 901。时间。UCminute);连环杀手。print(' : ');连环杀手。println((float)jy 901。STctime。UCsecond(float)jy 901。STctime。usmilissecond/1000);
连环杀手。print(' Acc : ');连环杀手。JY 901。STcacc。a[0]32768 * 16;连环杀手。print(');连环杀手。JY 901。STcacc。a 32768 * 16;连环杀手。print(');连环杀手。JY 901。STcacc。a[2]32768 * 16;
Serial.print('陀螺仪: ');连环杀手。打印((浮动)jy 901。stcgyro。w[0]32768 * 2000;连环杀手。print(');连环杀手。打印((浮动)jy 901。stcgyro。w 32768 * 2000;连环杀手。print(');连环杀手。println((float)jy 901。stcgyro。w[2]32768 * 2000;
连环杀手。打印('角度: ');连环杀手。打印((浮动)jy 901。斯特坎勒。角度[0]/32768 * 180;连环杀手。print(');连环杀手。JY 901。斯特坎勒。角度[1]/32768 * 180;连环杀手。print(');连环杀手。println((float)jy 901。斯特坎勒。角度[2]/32768 * 180;
连环杀手。打印(' Mag : ');连环杀手。打印(jy 901。stcmag。h[0]);连环杀手。print(');连环杀手。打印(jy 901。stcmag。h[1]);连环杀手。print(');连环杀手。println(jy 901。stcmag。h[2]);
连环杀手。打印('压力: ');连环杀手。打印(jy 901。stcpress。lppressure);连环杀手。print(');连环杀手。println((float)jy 901。stcpress。laltutide/100);
连环杀手。print(' dstatus 3360 ');连环杀手。打印(jy 901。stcdstatus。SD status[0]);连环杀手。print(');连环杀手。打印(jy 901。stcdstatus。SD status[1]);连环杀手。print(');连环杀手。打印(jy 901。stcdstatus。SD status[2]);连环杀手。print(');连环杀手。println(jy 901。stcdstatus。SD status[3]);
连环杀手。打印('经度: ');连环杀手。打印(jy 901。斯特克隆拉特。llon/1000000);连环杀手。打印(' Deg ');连环杀手。打印((双)(jy 901。斯特克隆拉特。llon % 1000000)/1e 5);连环杀手。print(' m lattity : ');
连环杀手。打印(jy 901。斯特克隆拉特。llat/1000000);连环杀手。打印(' Deg ');连环杀手。打印((双)(jy 901。斯特克隆拉特。llat % 1000000)/1e 5);连环杀手。println(' m ');
连环杀手。print(' GPSheig : ');连环杀手。打印((浮动)jy 901。stcgpsv。sgps height/10);连环杀手。print(' m gpsyaw : ');连环杀手。打印((浮动)jy 901。stcgpsv。sgpsyaw/10);连环杀手。print(' Deg GPSV : ');连环杀手。打印((浮动)jy 901。stcgpsv。LG psvelocity/1000);连环杀手。println('公里/小时');
连环杀手。打印(' SN: ');连环杀手。打印(jy 901。stcsn。ssv num);连环杀手。印刷体(' PDOP : ');连环杀手。打印((浮动)jy 901。stcsn。spdop/100);连环杀手。印刷体(' HDOP : ');连环杀手。打印((浮动)jy 901。stcsn。shdop/100);连环杀手。印刷体(' VDOP : ');连环杀手。println((float)jy 901。stcsn。svdop/100);
连环杀手。println(');
延迟(500);
while (Serial2.available())
{
JY901 .协同串行数据(串行2。read());//调用JY901数据应对函数
}
}
参考:
阿尔杜伊诺的ESP32的3个硬件串行
(ESP32学习11)串口的使用(发送和接收)
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/139157.html