- 博客(354)
- 资源 (2)
- 收藏
- 关注
原创 自定义数据集yolo识别图像准确率一例
自定义了一堆数据集,训练过后用来识别图片,发觉一个问题,明明很清晰没有什么遮挡的物体识别不出来,各种折腾后发觉问题根源在于有些图片的长宽比太大(1:2.5)导致的。最有效的方案是调整imgsz,在识别的时候尽量最大化这个imgsz,例如我调整到了2752,默认是640,调整这个数值是提升识别率最有效的方案。上面的方案1是有效的,2有明显效果,但是准确率降低,3也不明确。所以整体的方案就是 1,2,再加上imgsz尽量放大进行识别。也就是说在这三个条件下,能够识别出来的物体匹配度是最可靠的。
2025-04-02 15:06:02
230
原创 在人间少走弯路:ESP32 对Ti 功放芯片Tas5825m的功能开启
Ti芯片的DSP功能,是在一个PPC软件中进行各种参数调整,然后导出配置后写入,所以如果你要玩TI的dsp,或者说其他的dsp基本也一样,必须找到相应的软件调整参数导入。出于爱好,在用acm的芯片打了功放后,重新用ti的tas5825打了一块功放板,非常奢侈的用esp32做了主控:蓝牙接收音频信号和歌词信息。以下i2c的操作基本保证了功放能够正常运行,也算是打开了dsp的,只是涉及到具体dsp的调整还有十万八千里。和acm的芯片一样,ti的芯片并不是上电就能实现功放功能,必须通过mcu通过i2c进行控制。
2024-11-05 12:18:36
639
原创 自制esp32开发板,wifi和蓝牙工作不正常一例
怀疑过电流不够,但是使用的是500ma的ldo,监视发觉普通电流和rf上电电流都不大,不超过100,距离500ma还远,应该在ldo供电范围之内。参照标准打了一块esp32的板,烧录和运行各种基本程序(点灯)都正常,但是启用蓝牙功能的时候,出现了异常,串口中断了,类似于断电重启了。可能的元器件拆了后,上了万用表测电压,发觉在rf上电的时候,由3.3V发生了较大变化到了3.1v左右。网上找了一圈资料,并没有,还有人出现了类似情况,但是莫名奇妙好了的。各种找原因,各种拆元器件看可能的影响,找不到原因。
2024-11-02 18:55:09
406
2
原创 arduino/esp32 i2c 访问ACM8625M功放芯片DSP功能
ACM8625M这块芯片和其他功放类芯片不一样,必须通过控制 dsp才能实现放大功能,估计TI的芯片也可能是这样,TI的芯片已经到手,但是pcb还没到。I2C地址检测的代码请看arduino的相关示例,不过有趣的是arduino编译运行下没有找到地址,在Platformio编译运行后找到了。第三,在手册中提到了根据不同的电阻配置,实现不同的i2c访问地址,但是其实不可靠,所以简易大家对i2c地址自行检测;I2C访问首先有个地址,然后有个寄存器地址,然后每个寄存器是8位访问。// I2C地址访问。
2024-09-21 15:22:47
978
原创 少走弯路,ESP32 读取Micro SD(TF)播放mp3的坑路历程。
在好不容易解决了SD卡用1线sdmmc读取的问题,遇到了惊天大雷,esp32 s3 只支持ble 5.0 ,不支持a2dp,那就意味着esp32 s3不能用做蓝牙音频播放的接受端 ,除非哪天升级到ble 5.2的版本才有le audio.你们看,从sd库本身的示例,到audioi2s的示例,到各种网络上关于sdmmc的示例都是在一大抄,如果没有这些错误的引导,也就不会产生错误的各种情况。因此从头到尾问题都出现在spi上,但是不管那个SPI,对于SD的一般访问读写,都是正常的,这TMD的谁能想到啊!
2024-08-30 16:03:24
3066
原创 今日份意难平的ESP32 S3
结果今天才发觉esp32 s3 居然不支持 a2dp,esp32 是经典蓝牙方式支持的蓝牙音乐,而esp32 s3 只支持5.0 的le ,没有经典蓝牙,所以不支持a2dp, 有个le audio 是在5.2和后续版本。玩esp32 很久了,除了知道S2 是单核,一直认为S3 相对普通版本的esp32 是全面升级版本,更高的主频,更大的rom和flash空间,一切都是更好的。结果发现100万花出去得到的是个A。也就是说所有esp32 s3的版本都无法用蓝牙的方式接受音频信号!
2024-08-28 18:54:35
936
原创 少走弯路,ESP32 使用Micro SD(TF)的经验说明
最初看网上的资料说D0,D1,D2,D3,CMD 这些都需要接上拉10K的电阻, CLK不需要接。从arduino换成了idf,从arduino ide换成platformio,还是无果。后来做其他尝试,换成了 39,40,47 ,居然可以1线SDMMC访问了。网上有些说法是有些电阻可以不要,于是重新贴片,某些电阻不贴,还是不行。不过,SPI方式倒是验证通过了,sdmmc方式始终不行。怀疑卡座问题,飞线把引脚接地,最初是没有接GND的。出于保险,CLK设计了电阻位,最初没有放上电阻。
2024-08-27 13:25:27
4496
14
原创 少走弯路之:esp32 通过i2s 使用顺芯ES8156的说明
esp32是通过SBC大约60多k收取的音频数据,通过es8156 在耳机播放下的效果和电脑直插耳机播放的效果难以区分差别。由于GPIO 0,1,3 都是特殊端口,建议不独立使用mck,直接连接mck和bck,两者的音质没区分。ESP 32蓝牙接受音频数据通过i2s传递给es8156进行播放。2,如果不使用mck,那么画板的使用应该短接mck和bck。1,如果使用mck的话,只能接固定GPIO,注意,使用顺芯ES8156打了一块耳放的验证板。折腾的过程就不多说了,总结经验如下,
2024-08-10 13:16:46
795
原创 ESP-12F 异常烧录一例
flash工具可以正常工作后,发觉在platformio和arduino ide 都可以工作,在platformio 上可以正常上传和运行,自动下载电路生效。2,手工上了锡膏加热后,通电正常,但是怎么都不能烧录,端口可以发现;4,在各种测试无果后,用夹子尝试各种短接,最后发现当EN+3.3V 的时候flash烧录工具报错,但是就可以正常烧录了,必须按下flash按钮;1,模组IO2自带了led,后来只能拆了我画的线路,各家模组厂家对于12F以及其他的封装可能不一样,一定要注意看厂家文档;
2024-07-10 16:30:24
591
原创 ESP32 通过蓝牙显示歌词代码示例
通过蓝牙协议播放音乐,有的时候需要显示歌词,这里就是a2dp库获取了歌词。值得注意的是要想正确获取到歌词,必须打开各种播放器的字幕(歌词)开关。本项目用了三个开源库 a2dp,tft_espi,xfont.项目内的代码通过网易云音乐 播放正常获取到歌词。xfont : 显示汉字 ,详细使用请参考。a2dp :蓝牙传输音频资料和字幕信息。tft_espi : tft 屏幕驱动。注意,xfont的初始化必须先执行。
2024-07-06 13:03:24
1848
11
原创 esp32 模拟蓝牙键盘不生效一例
没有搞懂的就是为啥默认的配置,默认的代码以前可以用现在为啥不能用了;其二,一直以为蓝牙是轻量级的东西,结果运行起来发觉发热量在s3上还是很大的,而且持续电流有100多ma.这个开源库模拟键盘功能早之前已经玩过,生效,昨天再来玩的时候发觉莫名奇妙居然又不能用了,各种折腾:换了3种单片机,c3 s3, woom,找各种框架,花了将近一天。所谓的轻量级蓝牙协议栈.
2024-07-03 15:29:44
406
原创 Arduino (esp ) 下String的内存释放
中为了方便快速检索使用了string,于是这个string在esp8266中占了40多k,原本以为当string设置为""的时候这个40k就可以回收,结果发觉不行,string自带的clear方法同样不行。arduino 环境下,string还有长度问题,能不用就别用。下面的代码都不能释放内存。
2024-06-30 18:04:36
310
原创 少走弯路:esp32(esp8266)中查询子字符位置的性能改进
在esp8266中,第一种方法对于较大的字符串可能需要0.xxx秒,而后一种方法只需要0.0xx秒,在单片机这种需要性能最优的情况下建议使用后一种方法。一个非常奇怪的疑问就是为啥String 的indexOf方法性能这么低呢。这个pos就是字符串的位置。
2024-05-29 11:08:31
263
原创 为了性能,放弃tft_eSPI,选择arduino_gfx吧
深入到arduino_gfx中,发觉这0.194s 是初始化过程中存在了delay,总共delay了3次,每次50ms 左右 ,这个delay不知道是否同硬件通讯的协议要求。本来对于tft_espi和arduino_gfx没啥特别的感觉,都是tft屏幕驱动,arduino_gfx的好处就是除了支持tft外还支持一些oled屏幕。大约能提升0,1s 的性能。tft_espi的初始化需要0.6s,arduino_gfx需要0.2s。说实话,就算是arduino_gfx的0.2s 个人都觉得太慢了。
2024-05-25 18:38:00
735
4
原创 esp32(8266)如何在platformio中上传文件到单片机
本来认为这是基础内容,不用我来介绍,结果,在个人的单片机字库开源项目中有两个人问到了,就特别来说明一下:在platformio中新建一个esp8266的项目SPIFF已经被淘汰,所以现在的文件系统是littleFS上面额外加了一些为了方便的参数。新建文件夹datadata文件夹是标准,必须这个名字,在系统上传的时候会自动把data文件下的内容上传到esp系列的flash空间中在data目录下随意加入两个文件:然后按照以下操作:data目录下的两个文件就可以被上传到单片机了。
2024-05-17 16:33:25
1020
原创 esp单片机下arduino_gfx不相干显示驱动优化对flash空间的占用对比
做这个的比对起因是编译器每次都把不相干的驱动编译一次占用了大量的编译时间,有可能是有编译没有包含;虽然这个比对是基于arduino_gfx的,但是tft_espi理论上是同样的。一般情况下,很多esp32或者esp8266下的tft模块驱动都会包含很多种,而我们只需要其中一种,那就有个疑问这些被编译进的显示驱动到底占用了多少空间,是否需要把他优化掉?这些不相干的驱动并不会占用太多的flash空间,完全可以忽略不计。这肯定是有相差的,但是这种相差基本可以忽略。这是优化后的驱动列表,只保留了两种驱动。
2024-03-26 11:10:25
828
原创 使用platformIO进行arduino,esp8266,esp32编程的性能改进和一些优化
对platformio.ini的修改后重新编译项目的时候,基本上就是所有项目代码的重新编译,非常耗时,很长;如果你使用tft_espi,修改了user_setup.h文件,整个项目会完全编译,但是这个cache开启后就是只编译一个文件,项目整体编译的非常快。多配置会导致platformio编译两份代码,产生性能损耗,但是这少了一些其他工作,如果你的电脑足够快可能可以接受,看你怎么选择。一句话,以前可能会完全编译的时候,现在基本都是只编译局部文件了,速度大提升,这个配置很重要不知道为啥不是默认配置。
2024-03-22 18:48:52
1482
原创 8 pin ST7735 1.8寸屏不能点亮解决一例
最近买了三块tft,不同规格,其中一块和合宙的驱动芯片和线序,屏幕尺寸一模一样,但是就是怎么都点亮不了。之前有一块合宙的1.8 的屏接上7根线就可以亮,正常接上GND和VCC不接其他pin屏幕也能亮起来。这个问题说到底一方面是经验问题,另外一方面是很多厂的线路设计还是有很大不同导致的。所以8pin的 屏幕,各位如果点不亮请检查一下BL这个针脚到底是高还是低。怎么试都不行,以为屏坏了,最后联系上卖家得到了技术支持。接上8根线,在tft_espi中正常设施也不生效。BL针脚要接高电平,成功点亮。
2024-03-20 17:50:00
731
原创 Arduino,esp8266,esp32 处理String 类型的暗伤
自定义单片机字库的过程中,为了快速检索目标字符串,把所有字符的unicode编码全部读到了一个String 类型的变量上,然后调用indexof来获取对应的位置,再然后按照位移找到目标字符的编码数据。在esp和arduino环境下,对string进行累加过程中,它能累加的长度是受限于ram的可用空间,8266下的ram有限,它能对string的赋值就有限。对于string的操作会出现赋值不全的情况,举例来说,我的字符数据31K,在esp8266上只能读取到16k左右,而esp32却是正常的31k。
2024-03-20 14:39:01
587
原创 备份:最原始arduino(esp32 ,esp8266)对st7789 屏幕的SPI操作
这是屏幕厂家提供的arduino 环境下对st7789的驱动代码,不同于使用tft_espi的驱动,这个代码就是最原始的操作,最高效的操作,也方便可以进行各种自定义扩展。要知道tft_espi看起来很方便,其实很臃肿,稍微要做一点事情,编译后就很大,而且性能也很低。以前看着这种代码两眼一抹黑,看几排就看不下去了,现在就好很多了。这个代码的意义一定程度可以让人了解SPI的通信过程。
2024-03-15 16:20:49
1174
原创 GBK字符集汇总
这个字符集有个奇葩的地方,定义上所说的 总体编码范围为 8140-FEFE 之间 是获取不到 21886 的,必需调整到71开始,补足前面的一堆英文的字符,然后处理调一堆看不见的控制字符就刚好21886,因此哪怕这个GBK字符集不对,也差不鸟啥内容了。一番折腾后有了这个GBK的字符集,刚好满足 GBK 共收录 21886 个汉字和图形字符。完全可以方向大胆的使用。
2024-03-12 18:21:00
628
原创 在人间走弯路:GB2312字符集获取和弯路说明
为了在单片机中创建软字库,之前在网上找了一份所谓的GB2312的字符集,但是总觉得莫名的不放心,网上也有一些看起来很标准的字符集,但是依照经验来说肯定是不可靠的,于是就想通过一些“手段”来获取到标准字符集。
2024-03-11 22:28:26
1388
原创 关于esp8266的一些经验汇总,新手必看
如果要自己扩展更多GPIO,只能使用74hc595这种,不过需要注意的就是这种扩展出来的端口只能输出,不能输入,并且是需要自己写代码特殊支持的,不是普通的pinout方式。esp8266 加电启动的时候,有些pin必须拉高,有些又必须RC电路下延迟拉高,有些又必须拉低,就不列举了,这些是在nodemcu设计的时候已经完成了;因为最近打算自己打一块esp8266的板,之前打的比较多的是各种灯板,所以就在立创上看各种别人的方案,也去看了乐鑫的官方设计文档,这一看就重新有了认知。
2024-03-08 12:23:23
482
2
原创 esp32 C3和S3 开发板电流对比
4, 这个对比基本上可以作为大家日常设计esp 系列的整体电流参考,因为你设计的其他PCB中降压芯片和USB-TTL芯片基本都是不可缺少的,这基本上是标准配置。所有到最后的结论是S3 在deep模式下大概是1毫安的电流消耗,接入电脑的时候会由于不明的原因,例如usb通信,额外多20-40毫安的电流。这个结果同上面最初的测试不相符。把usb线不接入电脑,直接接入电源,大约10秒后,lot power显示电流是1毫安左右,这一行为很稳定可以重现。电流显示是25毫安,但是偶发性会跳为1毫安左右,规律不知道。
2024-03-02 17:53:29
3336
2
原创 合宙esp32-c3 进入深度睡眠无法唤醒解决一例
单片机一开机立马就进入了deep mode,把各种设备全部停了,要知道这块单片机由于没有串口芯片走的是mcu本身的串行支持,这一deep mode ,设备全停,所以没有了对外的串行支持,自然在电脑上没有了com端口。整体来说,在这种测试的开发板上的电流消耗比我以为的高太多,因为过去他们的宣传在deep模式的情况下,可能只有几个微安,实际上有几百个微安,当然这可能涉及到其他元电源等器件。delay 的数值不影响电流的消耗,但是有delay的话,空代码的电流消耗从27降到了19 毫安。
2024-03-02 16:05:05
1454
2
原创 max98357 的几点说明
所以,使用两个max98357 就可以实现左右声道,想想这不单是苦X而且是傻X.你自己用的时候这个模块就必须来两个,很奇怪的芯片,所以才莫名产生了误导。某个角度也是提供了一种思路,也不算啥坏事,大不鸟真的使用两块芯片,因为其他U系列双声道的有点贵啊!max98357都可以控制SD脚的电压控制为左右声道输出,这个被误导了,有些使用这个模块的也没有说清楚。左右声道的选择是控制SD卡的电压,所以意味着需要串联不同的电阻。这个模块和其他可以直接输出左右声道的不同,大哭。
2024-01-21 17:08:35
1769
3
原创 思路决定出路:ESP32 客流量统计,查找我的手机,车流量统计
用ESP32采集一下蓝牙信号的Mac地址,统计总数,时间段,重复频率等等,基本可以准确的判断一个地方客流量,这比找个人去数人头来的靠谱得多,也不用装个摄像头折腾一个人性物体识别(当然视频识别有更广泛的意义,例如性别和年龄段)。扩展的思路就是可以用esp32 来做一个手机防丢设备,只要手机和esp模块信号丢失就可以蜂鸣报警,甚至可以不搜身的方式判断别人是否携带了我的手机。出于好奇就折腾了一番,原本是好奇这个蓝牙信号采集到底能收集到那些信息,最后却折腾到另外一个事情上了:蓝牙信号强度。这是一米五距离的强度。
2024-01-19 13:09:38
706
原创 ESP32 带字库显示中文终极方案
不论要使用GB2312整体字符集还是自定义部分中文,整体便捷性都基本达到了最优,这是其他方案无法替代的。目前迎来了大结局:这个在esp32,esp8266上显示中文的方案已经做到了最优,项目被开源到了。调用方式被优化,各种注释被加进去,存储编码从16进制化成了终极的64进制,已经不能再调整进制了。要知道最初接触这块内容,使用其他方案可是1000K左右啊!下面是不同字号,不同编码方式宋体字符在GB2312的字库大小对比。字库生成后自动上传到单片机等等,反正能做的优化全做了。
2024-01-16 13:08:05
3601
4
原创 少走弯路,ESP32 下别混用wifi和蓝牙
乐鑫虽然这么说,但是实际上是存在问题的,同时使用WIFI和A2DP会不停重启或者压根找不到蓝牙,会有各种报错:单独启动蓝牙后打开wifi设置成sta都默认不会出现错误,但是蓝牙链接的时候立马报错,报了一个缓存区不足的问题。查了很久后发现乐鑫对一个国外用户回复在arduino方式下模式是支持wifi和蓝牙共存的,不需要再额外设置什么参数。各种调,后来才发觉是wifi和蓝牙冲突导致的,I2S虽然failed了,但是依然是正常的。乐鑫官方说wifi和蓝牙是可以共存的,但是要设置什么参数。
2023-12-27 17:38:27
6678
10
原创 少走弯路:单片机使用点阵字体通过像素化的正确获取
这一改就发现之前的dotpix = img.getpixel((d, i)) 工作不正常,以前是个RGB的像素点,现在居然这个像素点直接返回了0或者1,我靠,一下就猜测可能这次对了。这个问题困扰了好久,尝试过各种方案都无法解决,你们从网上能找到的字符像素化很多都是HZK16这种宋体16号的字库,如果要使用其他楷体,雅黑等等以及不同字号的时候就无解了。前面是RGB模式,后面是P模式,简单的看就是一个锯齿的问题,其实并不是这么简单,因为这其实又涉及到两种图的基本构成,所以并不是简单的锯齿化这个问题。
2023-12-26 15:59:16
1672
原创 ESP32 开源WIFI MESH 库painlessMesh的一些说明
painlessMesh 和乐鑫官方谈到的MESH 网络 不是一回事(最初以为painlessMesh是对乐鑫WIFI MESH的封装),painlessMesh 是自己在单片机上构造了一个wifi 网络 AP,其他设备可以作为STA连接这个WIFI 网络, 创建了一个网络节点的list, 然后对这个list中的每个节点发送消息进行boardcast. 里面的更多细节有兴趣你可以看代码。之前也有过利用painlessMesh的经验,总结起来还是很好用的,简单和通讯方便,只是二进制发送不便,于是就想改!
2023-12-12 11:54:57
1486
4
原创 ESP32 蓝牙音箱无法链接上电脑的解决:此项不起作用,请确保你的蓝牙设备仍可检测到
ESP32 被我加了放大器后通过A2DP链接手机播放一直正常,但是怎么都链接不到电脑,蓝牙设备可以被发现和配对,但是始终无法连接,显示:此项不起作用,请确保你的蓝牙设备仍可检测到,然后再试一次参考
2023-12-06 12:50:42
4081
原创 少走弯路:OpenCV、insightface 等多方案人脸推理和识别
使用了 cv2.CascadeClassifier("D:\\opencv-4.52\\data\\haarcascades\\haarcascade_frontalface_default.xml")汇总的就是: insightface 脸部的查找最好,稍微有点慢,不知道是不是因为推理了年龄和性别。以下结果展示了不同角度下,都给了一个准确的结果。脑壳有包又花时间折腾了一下,其实之前也折腾过,主要是新看了一个方法。以上两种都是opencv的自带方案,要么找脸不全,要么错误的找脸。
2023-12-03 19:56:43
1509
原创 ESP32 下蓝牙播放音乐
这导致了花了太多时间查找原因,上面的回调导致不能正常输出音频,没有明确确认是那个回调,但是估计是: a2dp_sink.set_stream_reader(read_data_stream, false);因此,如果你尝试ESP32 通过I2S 链接硬件放大器进行蓝牙下的音乐播放请先使用最简单的代码,如果没有音频请查找硬件连接线。说的是esp32 蓝牙接收音频流同步获得歌词的方案,但是有个很核心的内容由于硬件原因没有谈及,就是播放音乐。这个GPIO可以任意指定,下面的配置也是可以正常运行的。
2023-11-10 21:03:30
4153
14
原创 单片机上软字库换32进制存储,空间占用少20%
理论上来讲,还可以使用64进制存储,大约又能缩减20%左右,大约可以控制到200KB左右,别小看这个缩减,在单片机存储空间是宝贵的,说的直白一点以前只能放16或者12字号的一种字体,现在可以放两种了,适用范围更广。存储了GB2312字符集对应的软字库文件,在16*16的编码下总字库的507KB,后来把字体切换成了12*12,软字库缩减到了301KB。然后,某天灵光一闪:为啥不使用32进制存储,最后一番思量后把以前的16进制切换成了32进制,软字库文件由301KB缩减到了245,只有之前字库文件的81%.
2023-09-25 12:08:00
400
原创 ESP 32 蓝牙虚拟键盘链接笔记本电脑的键值问题
键盘的keyCode对应物理键盘的编码,这个键位被按下的时候可能随着不同条件传递给操作系统不同的值;由于打算利用esp32 通过蓝牙链接电脑后实现一些特俗的键盘功能,所以就折腾了一下,折腾最耗费时间的却是键值问题,让一个20多年的老司机重新补充了知识。而esp32 通过蓝牙模拟键盘的时候,要传递的值应该是ascii,不是这里的keycode.这点要注意,我已经走过弯路了,你别走!键盘的键值keyCode是指键盘对应的编码,而esp32 要发送到电脑的键值其实是ascii编码。过程曲折就不说了,直接说结果。
2023-08-08 12:00:43
2164
原创 esp32 下蓝牙播放音乐歌词的获得
以esp32 或者esp8266 作为蓝牙音乐接收端是可以获取到歌词的。走了不少弯路,这方面还是资料有缺失,其实这是很简单的事情。使用了A2DP这个库,
2023-05-24 14:15:01
5127
31
原创 在esp32(esp8266) 提供软字库显示中文的解决方案
本项目是为了在各种单片机使用中创建更方便易用的字库,配合使用了 ``TFT_eSPI`` 进行显示使用,实际上可以用于其他任何点阵屏。通过单片机在tft屏幕显示。软字库在单片机中的使用。
2023-05-18 11:20:34
6730
13
原创 TFT屏幕在arduino (esp 32)下的驱动,汉字显示和字库比较
经过对vlw文件的调用代码的分析,发觉:vlw字库的存储方式其实存的是图片,processing 在创建字库时显示的那种图片就是存的字库文件。所以,推荐使用vlw格式的字库文件,不论是使用整个gb2312字符集还是个别汉字都推荐vlw格式字库文件。其实这个过程是完全误导,第一步processing生成的vlw文件是可以直接在单片机中被调用的;上面的驱动表基本囊括了主要的TFT显示模块,所以除非不在这个清单中,所以别找第三方驱动了。调用vlw做的字库文件比进行转换的方式简单多了。
2023-05-05 11:43:14
3628
6
省市区街道 四级地址库
2021-01-19
esp32 共享spi总线莫名报错,请教原因
2024-10-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人