完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
2 系统总体方案设计
2.1 设计主要工作及基本要求 本次课程设计的主要任务是通过设计软硬件以及相应蓝牙控制APK程序,远程控制两轮小车实现各种自平衡运动,运动状态包括前进、后退、左转、右转,同时带有进行转弯提示的蜂鸣器和进行运动状态指示的LED灯。 主要工作包括:主芯片、驱动芯片、稳压芯片、蜂鸣器以及其它元器件的选型;原理图PCB的绘制;元器件检测和焊接;手机APP的编写;蓝牙通信调试;编码器测速算法编写; 滤波算法编写;串级PID算法编写及相应参数调试;状态指示灯和蜂鸣器等其它外设的程序调用;直立车组装和整体调试。 基本要求: 直立智能车可以保持长时间的自平衡 手机软件可以和智能车进行双向通信 直立智能车可以前进、后退、左转、右转、停车 状态变化时有蜂鸣器提示和LED灯提示 2.2 方案论证与选择 关于滤波算法 方案一: 卡尔曼滤波,可以在有大量干扰的情况下,从已知测量方差的存在噪声的数据中预测估算出系统的最优状态,利用卡尔曼滤波可以从MPU6050的原始数据中得到一组接近真值、较为准确的智能车姿态数据。 方案二: 经典数字滤波器,主要包括低通、高通、带通滤波器,互补滤波器属于带通滤波器的变种。计算角度时,一般通过角加速度和角速度两种方式计算得到角度,因为两种角度的得出方式不同,在融合原始数据时需要一个融合系数。在将两种方式得到的角度进行互补滤波后即可得到一个反应迅速、角度跟踪较为准确的姿态数据。 在进行两种方案的对比选择中,发现MPU6050芯片内部自带运动数据处理运算单元(DMP),通过DMP可以直接输出芯片的姿态角,包括俯仰角、偏航角和滚转角,而俯仰角即芯片所在平面与水平面的夹角,也就是上文提到的角度值。这样,通过使用MPU6050的DMP既可以得到一个较为准确的角度值,又可以减轻微处理器的运算负担,但为了使最后的数据更接近真值,在速度控制上仍然使用了低通滤波算法。最后采用的方案是在方案二的基础上调用了MPU6050的DMP,虽然程序上要移植大量的MPU6050的固件库,但数据更加准确。 关于控制算法 控制算法采用的是久经工业现场考验的PID算法[5],其控制算法较为简单但控制性能比较可靠稳定、鲁棒性较强、参数整定的方案较为成熟并且无需建立数学模型,因此为了实现智能车的自主平衡,控制算法采用的是PID算法,涉及到直立PID、速度PID和转向PID[6]。 关于测速算法 方案一:位置差分法(即M法),测量规定时间内齿轮转过的角度值 方案二:定角测时法(即T法),测量齿轮转过固定角度所用的时间 M法的程序编写简单,虽然测量低速脉冲时可能会有一些误差,但是测量高速时平稳性和精度都较高;T法一般是测量两个脉冲之间的时间间隔确定被测速度,适合测量低速情况,但车轮转一圈会产生几十上百个脉冲,使用T法不太方便,采用方案一。 关于下位机开发工具 方案一:使用德国Keil公司的Keil MDK-ARM 方案二:使用IAR Systems的IAR Embedded Workbench KEIL和IAR都是针对各种嵌入式处理器的软件开发工具,主要用来编译程序。两者相比KEIL不支持层叠文件夹,而IAR不仅支持层叠,而且编译器高度优化,即编译速度要比KEIL快,但是IAR生成的工程文件用其它版本IAR打开会出现一些错误,即存在版本不兼容问题,而KEIL不存在这种问题,考虑到下位机程序以后迭代过程中会出现版本间移植的情况,并且STM32 CubeMX软件的使用者大多数使用MDK-ARM-V5,学习资料较为丰富,因此选用方案一。 关于库函数 方案一:使用标准库函数开发 方案二:使用hal库函数开发 意法半导体集团(ST)为开发者提供的开发库除了上面两种,还有LL库,但因为目前支持的芯片类型太少而舍弃。标准库较hal库出现的更早,两者互不兼容但结构和接口调用方式都类似;虽然标准库使用者更多,但HAL(Hardware Abstraction Layer)面向硬件抽象层,搭配ST公司新推的STM32 CubeMX图像化代码编辑生成软件,可以很大程度的方便开发者,实现了最大跨度的不同产品间的可移植性,并且带有一套用户友好的API函数接口。虽然初期阶段,HAL仍然存在一些小问题,但出于渴望学习新工具新技术的探索精神,智能车所有的下位机程序开发都是基于hal库函数。 关于上位机开发工具 方案一:使用Qt Company公司的Qt Creator 方案二:使用谷歌的Android Studio Qt Creator相对于比较主流的集成开发工具Android Studio,Qt Creator显得比较小众,而且在一些复杂的操作上Qt Creator可能存在不稳定性,但是对于本次课程设计而言并没有涉及到复杂的操作,一款轻量级、易上手的软件开发工具足够实现功能,而且Qt Creator可以跨平台,即开发出的软件稍加改动即可运行在Windows、Mac OS、Android甚至Linux等平台上[7],减轻了以后上位机移植的工作量,故选用方案一。 2.3 系统框图分析 系统框图如下图所示,本智能车电路板采用7.2V镍铬电池,通过电压转换模块中的2个元器件将7.2V转换为2种电压,分别给电路板上的其它芯片供电;主芯片和姿态检测传感器MPU6050进行I2C通信,获得当前的智能车倾角,为下一步的调整智能车角度提供数据支持;主芯片通过对编码器数据的正交解码实时检测当前小车真实速度,为控制智能车速度提供数据支持;通过下载接口向主芯片下载程序;主芯片和蓝牙模块进行双向通信,蓝牙模块和手机程序双向通信,进行数据交换,主芯片接收到手机指令后通过PWM信号控制电机转动,继而进行直立智能车的姿态调整;同时也可在进行状态控制时有相应的蜂鸣器和led灯指示,软件看门狗时刻保证程序正常运行。 图2-1 系统框图 2.4 系统总体方案设计 芯片选型方面 主芯片:因为和MPU6050通信过程中要移植其固件库,而库函数内容较多,单片机的ROM,考虑到以后可能要加的外设,单片机的引脚数,故放弃了类似51单片机的小单片机;考虑开发周期,使用ARM架构的单片机;本智能车电路板虽然用镍铬电池供电,但只是用来实验模拟,2000mAH的镍铬电池完全够用,放弃了一般用在低功耗或超低功耗的场合的MSP430;而随着智能互联终端成为国内外研究的热点后,基于STM32的应用方案也越来越成熟[8]。所以最终选用市场上较为主流的STM32单片机。 驱动芯片:选用的是驱动电流达43A的大电流集成芯片BTN7960,内部集成的驱动Ic具有逻辑电平输入功能,因此主芯片可以直接给驱动芯片PWM信号即可控制电机转动,不过因为是半桥驱动芯片,所以需要两片芯片控制一个电机。实测过程中,电机全速运转消耗电流不超过500mA,驱动能力完全够用,并且其控制简单,电路成熟,性能稳定[9],所以选择BTN7960驱动芯片。 电源方面 7.2V给智能车电路板供电后,被两个稳压电路转换为两种电压,其中两颗LDO分别是将7.2V降到5V的LM2596和将5V降到3.3V的AMS117_3.3。LM2596是TI生产的可输出3A电流稳压降压芯片,输入电压可达37V,外围器件较少,其输出的5V电压给智能车电路板上的蜂鸣器、蓝牙、MPU6050和其它一些外设供电;AMS117_3.3是一种正向低压降稳压器,输出电流为1A,智能车电路板用的是3.3V固定输出版本,精度为1%,输出电压给主芯片STM32F103、74lvc245、霍尔编码器和LED灯等的其它外设。 下载方面 STM32的下载方式主要有两种,ISP下载(串口下载)、JLINK下载和STLINK下载。串口下载不可以在线仿真,会对后期的软硬件调试造成不便,故舍弃;JLINK下载方式和STLINK下载方式都支持仿真调试且支持市面上的大部分ARM内核芯片,不同的是主流的JLINK下载工具有20个引脚,而STLINK只需4个引脚,出于对智能车电路板体积不易过大和要安装调试方便的考虑,选择使用STLINK下载工具对主芯片进行程序下载和后期仿真调试。 通信方面 在早期物联网应用中,出于对嵌入式系统安全的考虑,设备之间的连接大多采用有线方式,但随着技术的发展和设备安装位置的增多,无线传输被应用的更加广泛,其中蓝牙模块化繁为简,只需一个接受模块和一个发送模块即可实现数据无线透传[10],因此智能车通过一个蓝牙模块和手机app进行通信。 3 系统的硬件设计及系统流程 3.1 单片机控制电路 ARM公司推出的 Cortex-M 系列微处理器是市场上较为主流的芯片,经多方比较,本实验平台选择 STM32F103C8T6作为核心芯片,该芯片是新一代 Cortex-M3内核的微处理器,具有 72 MHz 主频、20K字节SRAM、128K字节闪存,提供两个12位adc(16通道),三个通用16位定时器加上一个PWM定时器,多达两个I2Cs和SPIs,三个usart[11],一个USB,一个CAN, 2个看门狗定时器, CRC计算单元,7通道DMA控制器。而且有官方提供的专门的开发库,操作调试更加方便简单[12] 。外围电路模块部分围绕主芯片设计,主要组成及功能如下: 晶振电路:智能车电路板采用的是高速晶振电路,晶振起振为单片机提供时钟信号流。 复位电路:采用自动复位电路,上电后单片机自动复位,复位之后单片机程序重新运行。 启动方式设置电路:通过配置STM32的BOOT0和BOOT1引脚设置单片机的启动模式,即从哪个区域启动单片机,本实验板主芯片从主闪存存储器区域启动。 具体电路参见下图 图3-1 单片机控制电路 3.2 电源模块电路 图3-2 电源模块电路 3.3 电机驱动模块电路 因为主芯片引脚驱动电流太小,且直接控制驱动芯片容易被反相电流损坏引脚,所以在主芯片和驱动芯片之间加了一个三态输出的八路总线收发器74LVC245,进行驱动隔离,如下图。 图3-3 74LVC245电路 主芯片输出的PWM信号在经过隔离芯片后,到达BTN7960的逻辑信号输入引脚,进行驱动芯片输出电压的调整,通过给两个驱动芯片发送不同的PWM信号,保证电机之间出现规定的电压差,即可控制电机进行不同程度的正反转,如下图所示为驱动智能车一个电机的电路图。为了防止芯片损坏或其它异常情况导致电路输出一个特别大的电压,进而烧毁电机,在电机两端加了一个压敏电阻,当电机间电压超过12V时,压敏电阻吸收多余的电流,进行电压钳位保证电机不被烧坏。 图3-4 电机驱动电路 3.4 其它外设 蜂鸣器:使用的5V有源蜂鸣器,通电就响,控制方便。如图,蜂鸣器正端接5V,负极接一个NPN三极管,三极管基极通过一个电阻接到主芯片引脚上,当引脚置为高电平时,三极管导通,蜂鸣器工作,反之,蜂鸣器不工作。 图3-5 蜂鸣器电路 MPU6050模块接口:MPU6050没有单独做电路,直接用的是GY-521三轴加速度电子陀螺仪,不过该模块并未添加任何多余的电路,单片机和其通信得到的就是MPU6050的原始数据。单片机和MPU6050通过I2C方式进行通信,如下图所示,四根接口线分别为电源、地、数据线和时钟线。 图3-6 MPU6050接口 LED指示灯:如下图所示,为智能车电路板上的前后左右四个方向上的指示灯,分布在电路板四个角上,1k电阻起限流作用,如果LED灯不太亮,可以替换为小阻值电阻。 图3-7 LED指示灯电路 下载接口:如图所示,下载接口的四根线分别是给主芯片供电的电源和地,和单片机进行通信的SWCLK和SWDIO。 图3-8 下载电路 测速接口:电机测速采用的是霍尔编码器,可以将角位移转换为一串数字脉冲输出。当齿轮转过一圈编码器A相会输出固定的脉冲数,编码器B相输出转向,编码器AB相接到到单片机引脚上,单片机对信号进行捕获然后正交解码,通过M法,即计算固定时间内接收到的脉冲数可以换算出速度。如下图所示,四根接口线分别为编码器供电电源、地、编码器A相和B相。 图3-9 测速接口 蓝牙接口:蓝牙模块选用的是主从一体的HC05蓝牙串口模块,蓝牙参数、单片机串口参数和手机程序蓝牙接收参数都是9600bits/s、停止位1位、无校验位,单片机通过串口2和蓝牙模块进行通信,蓝牙将单片机指令以TTL电平发送到手机上,数据反相传输同样类似。如下图,蓝牙模块采用5V供电,模块RX引脚接TX2,TX引脚接RX2。 图3-10 蓝牙接口 避障接口:当光电传感器模块遇到障碍物时会输出一个高电平,将其输出引脚接到下图接口上,单片机检测到高电平,进行避障处理。 图3-11 避障接口 舵机控制接口:采用的9g舵机SG90属于模拟舵机,5V供电后,有PWM信号即可控制舵机转向。 图3-12 舵机控制接口 智能车电路板通过添加合适的电阻、电容、电感、二极管、保险丝等元器件,进行滤波、去耦、防大电流等操作,同时消除一些小概率干扰[13] 。同时在设计电路板过程中除了进行抗干扰方面的处理,在焊接元器件过程中也对焊接位置、焊接温度和焊接材料进行了严格把控[14],在根源上杜绝了电路板可能出现的安全隐患。 4 系统的软件设计及系统流程 4.1 下位机程序 下位机使用的编译开发工具是Keil Software公司的Keil μVision5 IDE;开发语言是C语言;搭配的开发工具是可以和Keil μVision5 IDE关联到一起的图形化配置工具STM32CubeMX;使用的库函数是HAL库函数;程序从主闪存存储器区域启动;下载工具是STLINK。 程序中对STM32进行的主要操作:和MPU6050进行I2C通信获知当前姿态;通过PWM控制电机转动;检测当前电机转速;控制蜂鸣器和LED等的GPIO;软件看门狗;和蓝牙双向通信。 4.1.1 下位机程序流程图 程序首先系统初始化,系统初始化包括时钟初始化、GPIO初始化、I2C初始化、定时器初始化、正交解码初始化、串口初始化、MPU6050及其DMP初始化、看门狗初始化和PID参数初始化,以上程序在while(1)之前,开机后只顺序执行一次,在下面流程图中用系统初始化统一代称。 所有的控制都在一个外部中断程序里面进行处理,此外部中断由MPU6050触发。因为设置的DMP中数据每隔10ms更新一次,所以配置MPU6050模块的中断输出引脚每隔5ms进行一次电平转换,当单片机捕获到该引脚的下降沿时进行数据处理,保证数据的准确性和处理的及时性。 中断内部的处理步骤参见下图中的读取倾角到驱动电机,蓝牙接收后的相应处理包括前进、后退、左转、右转、蜂鸣器提示和LED指示等。 图4-1 下位机程序流程图 4.1.2 算法介绍 低通滤波器算法:Encoder_Least =(speed_left+speed_right)-0; Encoder *= 0.8; Encoder += Encoder_Least*0.2; 上式中Encoder_Least是最新速度偏差; 第2、3个程序可以理解为Y(n)=αX(n)+(1-α)Y(n-1),其中X(n)等同于Encoder_Least,代表本次采样值;Y(n-1)等同于Encoder,代表上次滤波输出值;α是滤波系数,在上式中是0.2。 一阶互补滤波算法:g_fAngle = 0.02 * Angle_ax + (0.98) * (g_fAngle + GY * dt); 上式中左边的g_fAngle为实际得到的角度;Angle_ax为角加速度换算后的角度值,因为角加速度受车体震荡等因素会产生高频噪声,所以对其进行低通滤波,滤除高频信号,因此融合系数较小;右边的g_fAngle可以理解为上一次的角度;GY是角速度,dt是时间,GY *计算dt时间段内通过的角度,通过对角度的不断积分得到一个较为准确的角度,可信度和融合系数较大,有点类似高通滤波。 PID算法:balance=CarAngle.Kp*Bias+CarAngle.Kd*Gyro; Velocity=Encoder*CarSpeed.Kp+Encoder_Integral*CarSpeed.Ki; Turn = -Turn_Target * Kp - gyro * Kd; 上面第1个程序是直立PD算法,即角度环控制算法,属于位置PD算法[15]。通过此算法可以实现智能车短时间的直立平衡状态,其中Bias是小车偏离水平面的角度,数值为0时即与地面平行;Gyro是角速度值,通过调节Kd可以减缓小车震荡;具体调节步骤如图4-2,当小车向前倾倒时,车轮跟随小车前进的方向,使其有一个向后的力,反之亦然,调参数时的最好现象是小车对角度变化反应敏感且没有震荡。 图4-2 直立小车运动模型 第2个程序是速度PI控制,Encoder是经过低通滤波输出的当前速度值,因为速度控制和直立控制输出值是要加到一起的,低通滤波可以减缓速度差值对直立控制的干扰;Encoder_Integral是对速度的积分,即位移,积分控制的是速度的静差,对Encoder_Integra的限幅就是对速度的限幅;直立环和速度环一起调试,即可实现小车的长时间直立[16],直立环是负反馈,速度环是正反馈,即小车因为直立环原因向一个方向加速时,速度环的作用是产生一个同方向更快的速度。 第3个程序是转向PD算法,Turn_Target是转向速度值,数值较大时转向速度块,反之慢,数值大小和转向前小车的速度有关,即小车的旋转速度可以跟随实时速度,增加小车的适应性;gyro是角速度值,gyro * Kd可以减小小车转向时的震荡;据体控制方法就是将小车的左轮PWM输出值减去转向PD输出值,小车的右轮PWM输出值加上转向PD输出值,利用小车车轮的差速进行转向。 4.2 上位机程序 上位机开发工具使用的是由Qt Company在1991年开发的跨平台的图形界面应用程序开发框架- Qt Creator;软件功能是进行开关蓝牙、蓝牙状态检测、搜寻和配对连接等,最主要的是通过蓝牙模块和单片机进行无线数据透传。 4.2.1 上位机程序流程图 系统初始化包括创建动画、设置动画、动画自适应、启动动画;设置定时器;设置滚屏显示的字符、颜色、显示时间、滚屏方向;设置蓝牙UUID码、分配socket内存、限定套接字协议;设置显示背景的大小、位置、透明度;编写按键信号对应的槽函数和其它回调函数。 初始化之后的操作如图所示。 图4-3 上位机程序流程图 4.2.2 上位机功能介绍 本上位机使用应用程序开发框架Qt Creator开发,在用其自带的界面设计器进行页面设计之后,在代码管理编辑页面进行C语言的程序编写、逻辑实现。在调试过程中进行了图形化调试,即程序和页面相关联之后进行全方位调试。在debug模式对程序进行实时观察跟踪,定位到问题并对其解决或者修改相应配置后,在最后实验阶段进行实际应用,效果良好。 使用Qt Creator进行开发,首先进行编译环境的搭建,主要步骤为:(1) 选择合适的编译器;2) 配置环境变量;(3) 选择Qt文件系统的编译器;(4) 选择库文件,因为本课程设计的上位机是在Windows系统下开发Android软件,所以需要交叉编译器[17]。主要功能如下: 扫描刷新附近的蓝牙设备 将蓝牙设备显示在手机上 进行控制时左上角显示有按键按下指示 4.2.3 上位机使用说明 首次打开软件时,按照手机提示打开蓝牙,之后app会自动搜索周围的蓝牙设备,并显示在屏幕上,如果有新设备,可以点击页面下方的刷新按键,如果已经配对过的设备手机会高亮显示,双击设备即可进行连接,如图4-4。这时打开蓝牙按键会显示“正在连接…”,连接失败会显示连接失败,连接成功会自动进入440ms的小车启动动画,动画上面滚动显示“启动中…”,如图4-5。 动画播放完毕,进入控制页面,如图4-6,按下某个按键会发送相应的指令,例如按下“上”,发送0x31、0x32,按下“下”,发送0x33、0x34,按下同时左上角变成小红点,松开手恢复原样。可以发送的指令有上、下、左、右、停车和蜂鸣器,按下右上角的蓝牙图标,APP页面跳转到蓝牙连接页面。 上位机每进行一次指令更新,蜂鸣器会响一下,前进时前面两个led灯点亮,后退时后面两个led灯点亮,左转时左面两个灯点亮,右转时右面两个灯点亮,响一下蜂鸣器,点击一下停止按键,小车停止所有指示灯点亮,并且当前指示灯状态全部反转,蜂鸣器开始长响,再次点击一次,蜂鸣器停止发出发出声音,当前所有指示灯状态再次反转。 5 开发中遇到的问题和成果图 5.1 硬件上的问题和解决方法 由于驱动芯片是从其它电路板上吹下来的,导致第一次温度没控制好把芯片吹坏 手工焊接STM32F103C8T6时,引脚间间距只有0.5mm,把引脚焊短接;为了避免出现引脚间再因滚进锡球而短路,将主芯片用透明胶带粘起来 固定孔的直径设置成2.54mm,固定用的塑料螺柱买的是3mm的,只能用胶棒固定 指示灯的亮度偏暗,因为选用的限流电阻过大 PID调参时,长时间的高频大幅抖动将芯片烧坏 蜂鸣器不太响,是因为上面的贴纸没有揭下来 先给主芯片供电,再给驱动芯片供电,否则供电主芯片初始化的时候容易出现轮子乱转的情况 下图是电路板PCB图,在Altium Designer软件中先画出原理图,再把原理图转换为PCB,通过把PCB中杂乱的元器件布局并进行电气连接后即为下图。 图5-1 电路板PCB图 5.2 下位机开发中的问题和解决方法 蓝牙不能进行数据收发:蓝牙模块的默认波特率是115200bits/s,和单片机不一样,要用AT指令将其设置成一样 有时候接收不到MPU6050的外部中断:外部中断被其它中断打断了,将对应的外部中断的优先级放到第一位 小车完全倒地时还会瞎转:判断MPU6050倾角是否超出正负25度,超出后就不进行控制 PID调节有直立环、速度环、转向环,调试时要直立环和速度环一起调,否则不能保持直立 I2C地址的通信地址和MPU6050的某个引脚是否接地有关,默认悬空是0X68 速度发生迟滞:速度要限幅,否则当变量超调的时候容易出现速度降不下来或者升不上去的情况 小车总是向一个方向跑偏:程序上设置的机械中值和MPU6050的实际安装位置有差别。 在STM32cubeMX中uart2的tx引脚模式默认只有PP(复用推挽)一种,要改成OD(开漏)模式,可以直接在源程序里面改 STM32cubemx HAL的硬件I2C有一个BUG,就是要把__HAL_RCC_I2C2_CLK_ENABLE()这句时钟初始化代码放到GPIO初始化之后。 修改STM32cubemxUSER生成的程序,内容要写在 “CODE BEGIN x”和“CODE END x”之间,否则下次再次生成后自己的程序会消失 下图为PCB电路图经过工厂加工并焊接上元器件的成品图,通电并将相应的线路连接正确后即可使用。 5.3 上位机开发中的问题和解决方法 无法添加背景图:listWidget添加背景图,必须先设置成透明 手机扫描不到蓝牙:Android 6.0以上设备扫描Ble设备前要开启位置权限 无法显示不规则图标:使用专门的图标按钮 兼容性不太好,初次打开软件时会出现android detected problems with API compatibility Android ,原因是手机系统升级到Android 9.0以后谷歌后台限制了开发者调用非官方公开API,这个问题因为手机系统更新导致出现的比较晚,尚未解决,但是点击确定后不影响使用。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1614 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1541 浏览 1 评论
970 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
682 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1592 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 22:58 , Processed in 0.675089 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号