
ESP8266
ESP8266
platform
这个作者很懒,什么都没留下…
展开
-
ESP-12F 异常烧录一例
flash工具可以正常工作后,发觉在platformio和arduino ide 都可以工作,在platformio 上可以正常上传和运行,自动下载电路生效。2,手工上了锡膏加热后,通电正常,但是怎么都不能烧录,端口可以发现;4,在各种测试无果后,用夹子尝试各种短接,最后发现当EN+3.3V 的时候flash烧录工具报错,但是就可以正常烧录了,必须按下flash按钮;1,模组IO2自带了led,后来只能拆了我画的线路,各家模组厂家对于12F以及其他的封装可能不一样,一定要注意看厂家文档;原创 2024-07-10 16:30:24 · 597 阅读 · 0 评论 -
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 评论 -
使用platformIO进行arduino,esp8266,esp32编程的性能改进和一些优化
对platformio.ini的修改后重新编译项目的时候,基本上就是所有项目代码的重新编译,非常耗时,很长;如果你使用tft_espi,修改了user_setup.h文件,整个项目会完全编译,但是这个cache开启后就是只编译一个文件,项目整体编译的非常快。多配置会导致platformio编译两份代码,产生性能损耗,但是这少了一些其他工作,如果你的电脑足够快可能可以接受,看你怎么选择。一句话,以前可能会完全编译的时候,现在基本都是只编译局部文件了,速度大提升,这个配置很重要不知道为啥不是默认配置。原创 2024-03-22 18:48:52 · 1492 阅读 · 0 评论 -
8 pin ST7735 1.8寸屏不能点亮解决一例
最近买了三块tft,不同规格,其中一块和合宙的驱动芯片和线序,屏幕尺寸一模一样,但是就是怎么都点亮不了。之前有一块合宙的1.8 的屏接上7根线就可以亮,正常接上GND和VCC不接其他pin屏幕也能亮起来。这个问题说到底一方面是经验问题,另外一方面是很多厂的线路设计还是有很大不同导致的。所以8pin的 屏幕,各位如果点不亮请检查一下BL这个针脚到底是高还是低。怎么试都不行,以为屏坏了,最后联系上卖家得到了技术支持。接上8根线,在tft_espi中正常设施也不生效。BL针脚要接高电平,成功点亮。原创 2024-03-20 17:50:00 · 736 阅读 · 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 客流量统计,查找我的手机,车流量统计
用ESP32采集一下蓝牙信号的Mac地址,统计总数,时间段,重复频率等等,基本可以准确的判断一个地方客流量,这比找个人去数人头来的靠谱得多,也不用装个摄像头折腾一个人性物体识别(当然视频识别有更广泛的意义,例如性别和年龄段)。扩展的思路就是可以用esp32 来做一个手机防丢设备,只要手机和esp模块信号丢失就可以蜂鸣报警,甚至可以不搜身的方式判断别人是否携带了我的手机。出于好奇就折腾了一番,原本是好奇这个蓝牙信号采集到底能收集到那些信息,最后却折腾到另外一个事情上了:蓝牙信号强度。这是一米五距离的强度。原创 2024-01-19 13:09:38 · 707 阅读 · 0 评论 -
ESP32 带字库显示中文终极方案
不论要使用GB2312整体字符集还是自定义部分中文,整体便捷性都基本达到了最优,这是其他方案无法替代的。目前迎来了大结局:这个在esp32,esp8266上显示中文的方案已经做到了最优,项目被开源到了。调用方式被优化,各种注释被加进去,存储编码从16进制化成了终极的64进制,已经不能再调整进制了。要知道最初接触这块内容,使用其他方案可是1000K左右啊!下面是不同字号,不同编码方式宋体字符在GB2312的字库大小对比。字库生成后自动上传到单片机等等,反正能做的优化全做了。原创 2024-01-16 13:08:05 · 3639 阅读 · 4 评论 -
ESP32 开源WIFI MESH 库painlessMesh的一些说明
painlessMesh 和乐鑫官方谈到的MESH 网络 不是一回事(最初以为painlessMesh是对乐鑫WIFI MESH的封装),painlessMesh 是自己在单片机上构造了一个wifi 网络 AP,其他设备可以作为STA连接这个WIFI 网络, 创建了一个网络节点的list, 然后对这个list中的每个节点发送消息进行boardcast. 里面的更多细节有兴趣你可以看代码。之前也有过利用painlessMesh的经验,总结起来还是很好用的,简单和通讯方便,只是二进制发送不便,于是就想改!原创 2023-12-12 11:54:57 · 1494 阅读 · 3 评论 -
单片机上软字库换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 阅读 · 0 评论 -
ESP 32 蓝牙虚拟键盘链接笔记本电脑的键值问题
键盘的keyCode对应物理键盘的编码,这个键位被按下的时候可能随着不同条件传递给操作系统不同的值;由于打算利用esp32 通过蓝牙链接电脑后实现一些特俗的键盘功能,所以就折腾了一下,折腾最耗费时间的却是键值问题,让一个20多年的老司机重新补充了知识。而esp32 通过蓝牙模拟键盘的时候,要传递的值应该是ascii,不是这里的keycode.这点要注意,我已经走过弯路了,你别走!键盘的键值keyCode是指键盘对应的编码,而esp32 要发送到电脑的键值其实是ascii编码。过程曲折就不说了,直接说结果。原创 2023-08-08 12:00:43 · 2164 阅读 · 0 评论 -
esp32 下蓝牙播放音乐歌词的获得
以esp32 或者esp8266 作为蓝牙音乐接收端是可以获取到歌词的。走了不少弯路,这方面还是资料有缺失,其实这是很简单的事情。使用了A2DP这个库,原创 2023-05-24 14:15:01 · 5166 阅读 · 31 评论 -
在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 评论 -
折腾半天才发觉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 评论 -
esp8266下使用sh1106 的1.3寸 oled 屏幕
很多0.96寸的oled 屏幕使用的是ssd1306 ,而为了稍微屏幕大一点买了1.3寸的IIC 版本,结果是sh1106,这几天重新打算用的使用麻烦来了,用不起来了,找了很多sh1106 的驱动都不行。各种方案切换,都不行!Adafruit_SH110X 不行!OLED_SSD1306_-_SH1106 不行U8g2 也不行说实话特别讨厌U8g2,它的文件太大了,每次编译都要很久!因为前几天买了中景园的1.5寸的屏幕,所以这次就想它作为oled的大厂应该有方案,结果一试果然行。全部原创 2021-08-26 23:32:13 · 2545 阅读 · 1 评论 -
ESP8266HTTPUpdateServer:new Flash config wrong
利用ESP8266HTTPUpdateServer 进行 firmware 更新的时候会出现下面这个错误提示:new Flash config wrong原创 2021-06-07 11:23:10 · 675 阅读 · 0 评论 -
esp8266 smartconfig 一键配网代码
#include <ESP8266WiFi.h>void setup() {// ESP.eraseConfig();// delay(1000);// ESP.reset();// ESP.restart(); Serial.begin(115200); pinMode(2, OUTPUT); WiFi.mode(WIFI_STA); WiFi.begin(); int i=0; while(i<=30){ Serial.printl.原创 2021-05-28 15:10:00 · 2548 阅读 · 1 评论 -
esp now 的坑
由于实际需要,今天试了一下 esp now 这种方式在两块esp8266 nodemcu 情况下进行通信。结果发觉稳定性奇差无比,也就是说esp now进行数据传输的时候不能保证传输的稳定性。必须自己想办法来保证数据传到了另外一个设备说实话,这是没有压根想到的,最初还以为是什么AP STA ,CONTROL 和Slave 之类的配置问题,以及是不是距离的问题,折腾了很久找原因。直到看到官方文档才明白这其实不是保证稳定的协议;它只是一种看起来很方便的协议,但是协议本身不保证稳定性,大哭!官方的原创 2021-05-16 20:10:59 · 5714 阅读 · 13 评论 -
从国外学会一个简单的转换算法用于把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 评论