
Arduino
文章平均质量分 52
platform
这个作者很懒,什么都没留下…
展开
-
在人间少走弯路: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 · 650 阅读 · 0 评论 -
自制esp32开发板,wifi和蓝牙工作不正常一例
怀疑过电流不够,但是使用的是500ma的ldo,监视发觉普通电流和rf上电电流都不大,不超过100,距离500ma还远,应该在ldo供电范围之内。参照标准打了一块esp32的板,烧录和运行各种基本程序(点灯)都正常,但是启用蓝牙功能的时候,出现了异常,串口中断了,类似于断电重启了。可能的元器件拆了后,上了万用表测电压,发觉在rf上电的时候,由3.3V发生了较大变化到了3.1v左右。网上找了一圈资料,并没有,还有人出现了类似情况,但是莫名奇妙好了的。各种找原因,各种拆元器件看可能的影响,找不到原因。原创 2024-11-02 18:55:09 · 407 阅读 · 1 评论 -
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 · 983 阅读 · 0 评论 -
少走弯路,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 · 3109 阅读 · 0 评论 -
少走弯路,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 · 4580 阅读 · 13 评论 -
Arduino (esp ) 下String的内存释放
中为了方便快速检索使用了string,于是这个string在esp8266中占了40多k,原本以为当string设置为""的时候这个40k就可以回收,结果发觉不行,string自带的clear方法同样不行。arduino 环境下,string还有长度问题,能不用就别用。下面的代码都不能释放内存。原创 2024-06-30 18:04:36 · 311 阅读 · 0 评论 -
少走弯路:esp32(esp8266)中查询子字符位置的性能改进
在esp8266中,第一种方法对于较大的字符串可能需要0.xxx秒,而后一种方法只需要0.0xx秒,在单片机这种需要性能最优的情况下建议使用后一种方法。一个非常奇怪的疑问就是为啥String 的indexOf方法性能这么低呢。这个pos就是字符串的位置。原创 2024-05-29 11:08:31 · 263 阅读 · 0 评论 -
为了性能,放弃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 · 740 阅读 · 3 评论 -
esp32(8266)如何在platformio中上传文件到单片机
本来认为这是基础内容,不用我来介绍,结果,在个人的单片机字库开源项目中有两个人问到了,就特别来说明一下:在platformio中新建一个esp8266的项目SPIFF已经被淘汰,所以现在的文件系统是littleFS上面额外加了一些为了方便的参数。新建文件夹datadata文件夹是标准,必须这个名字,在系统上传的时候会自动把data文件下的内容上传到esp系列的flash空间中在data目录下随意加入两个文件:然后按照以下操作:data目录下的两个文件就可以被上传到单片机了。原创 2024-05-17 16:33:25 · 1026 阅读 · 0 评论 -
esp单片机下arduino_gfx不相干显示驱动优化对flash空间的占用对比
做这个的比对起因是编译器每次都把不相干的驱动编译一次占用了大量的编译时间,有可能是有编译没有包含;虽然这个比对是基于arduino_gfx的,但是tft_espi理论上是同样的。一般情况下,很多esp32或者esp8266下的tft模块驱动都会包含很多种,而我们只需要其中一种,那就有个疑问这些被编译进的显示驱动到底占用了多少空间,是否需要把他优化掉?这些不相干的驱动并不会占用太多的flash空间,完全可以忽略不计。这肯定是有相差的,但是这种相差基本可以忽略。这是优化后的驱动列表,只保留了两种驱动。原创 2024-03-26 11:10:25 · 831 阅读 · 0 评论 -
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 · 593 阅读 · 0 评论 -
备份:最原始arduino(esp32 ,esp8266)对st7789 屏幕的SPI操作
这是屏幕厂家提供的arduino 环境下对st7789的驱动代码,不同于使用tft_espi的驱动,这个代码就是最原始的操作,最高效的操作,也方便可以进行各种自定义扩展。要知道tft_espi看起来很方便,其实很臃肿,稍微要做一点事情,编译后就很大,而且性能也很低。以前看着这种代码两眼一抹黑,看几排就看不下去了,现在就好很多了。这个代码的意义一定程度可以让人了解SPI的通信过程。原创 2024-03-15 16:20:49 · 1179 阅读 · 0 评论 -
关于esp8266的一些经验汇总,新手必看
如果要自己扩展更多GPIO,只能使用74hc595这种,不过需要注意的就是这种扩展出来的端口只能输出,不能输入,并且是需要自己写代码特殊支持的,不是普通的pinout方式。esp8266 加电启动的时候,有些pin必须拉高,有些又必须RC电路下延迟拉高,有些又必须拉低,就不列举了,这些是在nodemcu设计的时候已经完成了;因为最近打算自己打一块esp8266的板,之前打的比较多的是各种灯板,所以就在立创上看各种别人的方案,也去看了乐鑫的官方设计文档,这一看就重新有了认知。原创 2024-03-08 12:23:23 · 482 阅读 · 2 评论 -
合宙esp32-c3 进入深度睡眠无法唤醒解决一例
单片机一开机立马就进入了deep mode,把各种设备全部停了,要知道这块单片机由于没有串口芯片走的是mcu本身的串行支持,这一deep mode ,设备全停,所以没有了对外的串行支持,自然在电脑上没有了com端口。整体来说,在这种测试的开发板上的电流消耗比我以为的高太多,因为过去他们的宣传在deep模式的情况下,可能只有几个微安,实际上有几百个微安,当然这可能涉及到其他元电源等器件。delay 的数值不影响电流的消耗,但是有delay的话,空代码的电流消耗从27降到了19 毫安。原创 2024-03-02 16:05:05 · 1466 阅读 · 1 评论 -
少走弯路,ESP32 下别混用wifi和蓝牙
乐鑫虽然这么说,但是实际上是存在问题的,同时使用WIFI和A2DP会不停重启或者压根找不到蓝牙,会有各种报错:单独启动蓝牙后打开wifi设置成sta都默认不会出现错误,但是蓝牙链接的时候立马报错,报了一个缓存区不足的问题。查了很久后发现乐鑫对一个国外用户回复在arduino方式下模式是支持wifi和蓝牙共存的,不需要再额外设置什么参数。各种调,后来才发觉是wifi和蓝牙冲突导致的,I2S虽然failed了,但是依然是正常的。乐鑫官方说wifi和蓝牙是可以共存的,但是要设置什么参数。原创 2023-12-27 17:38:27 · 6731 阅读 · 10 评论 -
在esp32(esp8266) 提供软字库显示中文的解决方案
本项目是为了在各种单片机使用中创建更方便易用的字库,配合使用了 ``TFT_eSPI`` 进行显示使用,实际上可以用于其他任何点阵屏。通过单片机在tft屏幕显示。软字库在单片机中的使用。原创 2023-05-18 11:20:34 · 6755 阅读 · 12 评论 -
提请注意:arduino ide 2.x 目前不支持文件系统
在老版本的arduino 中可以下载esp8266 和 esp32 的插件,然后可以使用spiffs 这种系统来手动把一些文件存在单片机上,如果你的arduino ide 已经升级到了2.x的版本 以前的插件是不能再用的。所以对于文件系统的支持,需要arduino ide 团队的支持。截至到2023 4 24 目前没有哪一个版本提供这种支持。原创 2023-04-24 18:58:52 · 615 阅读 · 1 评论 -
经验终结:arduino 环境下,esp8266 定时器的使用说明
它是堵塞单线程方式运行的,你可以认为loop和testT是两个独立的函数,testT优先级更高,如果它被ticker调用的情况下会持续运行,除非有空闲时间。突然一下想到应该用中断来收集指令,但是另外一个问题来了,ticker在执行的时候,如果产生了硬件中断,这个中断是否有更高的优先级插入到ticker中运行,等结束后在恢复ticker的运行。当然在t运行的时候,p是不会运行的,最简单的例子是t是花费3秒完成一个led屏幕显示,在这3秒中,从传感器读取数据的p是不会有任何输入的。原创 2022-11-17 14:23:46 · 3526 阅读 · 0 评论 -
arduino(esp8266)驱动74hc595进行流水灯异常一例
所以上面的代码是没有错的,网上搜到过由于电压不对,导致输出不对的情况,595 的电压是5V,SI(DS)的电压是3.3V这种情况导致输出不对,于是就试了一下,结果在3.3V 的情况下,8->1确实输出正常。5V电压,为啥shiftout函数亮灯正常,而我自己的函数亮灯前面正常,最后两位出了问题,如果说我的代码有问题,那么为啥有的情况下工作正常,有的不正常?由于3.3V 下,LED不够亮,重新回到了5V折腾,于是开始怀疑是不是各种接线不对,于是把MR接到了GND,之前没有接,如下图。原创 2022-11-08 23:12:42 · 1965 阅读 · 0 评论 -
arduino 下16进制转2进制
在arduino下为了在像素屏中点亮灯珠,有些字符汉字和图像先生成了16进制的字符,然后又需要把16进制转成2进制来控制灯珠。上面这段代码从其实更简洁,注意下面这段代码可能二进制是反序的。如果理解了位运算符,下面这段用起来更好。原创 2022-09-28 22:46:49 · 1477 阅读 · 0 评论 -
备份总结:位运算符异或的重新学习。
在处理tm1637 的数码管控制代码中看到了以下代码对于上面两句代码不理解,于是就重新学习了一下:因为平常学习的语言都没有这么操作的,补习的结果才明白在arduino中(应该包括C和C++):我们的运算符其实分为:平常用的比较多的就是前三,偶尔会有第5,对于位运算符用的比较少,偶尔会有些同学用来处理权限,而个人其实很少用到异或这种东西,而异或这种在PHP这种语言中它是逻辑运算符。这个区分其实很重要,但是说回来位运算符。我们有个数字 127,它的2进制八位码是01111111当它和0x01进原创 2022-09-26 14:35:14 · 254 阅读 · 0 评论 -
折腾半天才发觉esp8266 esp32 c3 是没有touch 支持的
突然一下想试试touch 功能,就拿手里的esp32-c3 来测试,结果touchRead()怎么都无法编译,到最后经过esp8266 esp32-c3 esp32-s3 的编译测试才发现touch的支持只是在标准的esp32 模块中,esp32-c3 我知道是esp8266 的升级替换版本一下没有想到它不支持touch。总是习惯性的把esp32-c3想成了esp32了。重新去看下面这个esp32-c3的图。下面是esp32 的图。...原创 2022-08-13 16:28:47 · 964 阅读 · 0 评论 -
ESP8266HTTPUpdateServer:new Flash config wrong
利用ESP8266HTTPUpdateServer 进行 firmware 更新的时候会出现下面这个错误提示:new Flash config wrong原创 2021-06-07 11:23:10 · 675 阅读 · 0 评论 -
从国外学会一个简单的转换算法用于把16*16 led屏转换成直角坐标
int mapRGP(int x,int y){ int location=0; if(y%2==0){ location=x+y*16; } else{ location=15x+y*16; } return location;}之前有思考过把ws2812b 转换成x,y的直接坐标,但是一直没有做,刚刚一下看到某个视频有这段代码借来用。事实上我自己写的时候,估计结果也是一样,哈哈哈...原创 2020-12-27 23:21:11 · 209 阅读 · 0 评论 -
基于傅里叶快速转换实现的从时域到频域的音乐频谱灯
#include <Adafruit_NeoPixel.h>#define NUM_LEDS 256#include "arduinoFFT.h"Adafruit_NeoPixel pixels(NUM_LEDS, D5, NEO_GRB + NEO_KHZ800);arduinoFFT FFT = arduinoFFT(); /* Create FFT object *//* These values can be changed in order to evaluat.原创 2021-01-03 11:33:33 · 1749 阅读 · 0 评论 -
ESP8266 下 OTA 更新 Firmware 和FileSystem
如果使用ESP8266HTTPUpdateServer ,以Arduino 为开发环境,可以快速实现OTA正常情况下使用http: http://192.168.4.1/update 就可以访问到如下界面:以前的OTA 只有firmware 功能,现在多了FileSystem ,也就是spiffs 的更新对于firmware 的更新,在arduino 可以直接编译生成bin文件,但是FileSystem却没有任何地方可以生成Bin文件。对于我安装在车上的esp8266 nodemcu 开原创 2020-10-16 12:32:44 · 1336 阅读 · 0 评论 -
小经验分享:修改一个参数,提升esp8266 nodemcu 开发板的固件刷新速度
在arduino ide 中给arduino uno r3 刷写固件很快,但是一旦用arduino ide 给esp8266 刷写固件就很慢了之前一直以为是前面是亲妈,后者是后娘,所以arduino 往 nodemcu 中刷写固件慢是正常的,是必然和必须的结果昨天在看菜单的时候突然一下神光一现:把upload speed 从115200 调整到了921600我靠,固件刷写速度一下就快了!就这么快了!!!我靠,感情我过去刷固件那么慢都没有意义了!!!...原创 2020-10-10 20:09:58 · 716 阅读 · 0 评论 -
Eep8266下调用analogRead 导致ssid不显示一例 ,又踩了一坑
下面的代码很简单:使用esp8266 的 nodemcu 建立一个wifi AP,并且在loop函数中使用analogRead 从A0读取值下面的代码其实看起来确实没有问题,也能编译通过,实际运行起来好像也不报错。但是,你是找不到“I am Wifi” 这个SSID的,建议你先试试下面这段代码。#include <ESP8266WiFi.h>#include <ESP8266WebServer.h>#include <ESP8266HTTPUpdateSer原创 2020-09-30 20:18:05 · 678 阅读 · 0 评论 -
4位数码管远离595,欢迎tm1637
最初买到的是595的8位数码管,网上找到的驱动和官方的驱动都是靠刷新率在维持显示,如果刷新率太低就会出现闪烁在arduino 下你必须在loop中不停的刷新,或者写个定时器来刷新每次刷新的时间间隔delay 一旦大于40左右就会出现闪烁了,这个问题折腾了俺几天时间去找驱动,把github上所有4位8段的595全部弄来看了一个遍,基本上都没有用。听取了别人的建议重新买入了TM1637的4位7段数码管,mmp,一下就正常显示了。现在市场上带小数点的绝大多数是595的数码管(极少是1637).原创 2020-08-30 23:04:45 · 667 阅读 · 0 评论 -
菜鸟 ESP8266 ESP32 使用中的一些坑
ESP8266 AT 指令 HTTP访问丢包问题ESP 8266在串行通信下使用AT指令访问网络在一些情况下会出现丢包,这个丢包同是否透传无关,官方文档虽然也在说丢包的情况,但是还是不一样,这个原因是固件问题,安信可的固件是1.7.1,升级到1.7.4就解决这个问题了,谁能知道居然AT指令会出现这个问题,耗费了俺无数天一直在测试代码,从Arduino连接esp8266一直到买了cp2012 直接接线esp8266 1s. 都没有找出问题,特别是俺在arduino 下拼命改代码,换不同的库,一直认为是自己原创 2020-08-23 23:46:09 · 5517 阅读 · 0 评论