一、
使用vscode的platformio IDE插件,需要下载数据得接入国内的镜像源下载,或者使用手机热点(注意流量消耗)。
二、
ESP32“定时器和PWM”一节里前面定时器中断串口打印出错,串口软件里显示
esp32 Core 1 panic'ed (Interrupt wdt timeout on CPU1)这行(看门狗超时)错误
把Serial.println(); 的判断语句
if (interruptCounter > 5)
{
interruptCounter = 1;
}
放在void loop()就行中(注意不要放在loop中的if里面)原因就是“中断时间很短的情况,会出现这一次中断程序没有执行完下一次就来了,然后导致栈爆了然后一直重启”
具体 链接 这里有解释,反正我一小白是没看懂,欢迎有看懂的大佬解释一下。
三、
在使用wifi联网爬取和风天气的气象数据时出错(首先确认程序能正常编译和下载),端口全部显示乱码,要显示的返回值也是0。
需要在和风天气的api链接中添加一个“&gzip=n&en”,即完整api为
https://devapi.qweather.com/v7/weather/now?location=经纬度&gzip=n&en&key=密钥
根据一位大佬的见解,是“和风天气上有个标注说:v7版本API默认采用gzip压缩,可大幅降低流量,提高响应速度,请对你获取到的数据进行解压。 我觉得可能是因为这个原因,猜测&gzip=n&en这个参数可能是关闭gzip压缩或者是对数据进行gzip解压?”(原话,但我并是很不了解,同样有大佬解释下吗)
如果能够成功返回对应的数值,即成功,但仍有个别中文显示乱码,是串口调试软件不支持的原因。可以在Windows自带的商城Microsoft Store里,找 串口调试助手 这个软件,免费版功能就够用了,它便可以正常显示爬取的中文字符。
图标是这样的
界面是这样的
四、
同样是爬取天气数据时,显示实时天气(晴天/小雨/大雨...)等中文字符时,需要将数据类型改为
const char* Text ;
同样在串口输出时,改为:
Serial.printf("实时天气: %s \r\n", Text);
否则无法输出中文字符。