![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ESP32学习之路
文章平均质量分 76
Newbie_H
这个作者很懒,什么都没留下…
展开
-
基于VScode的ESP32开发学习(五):用户自定事件循环详解,dedicated task
代码#include "esp_log.h"#include "freertos/FreeRTOS.h"#include "freertos/task.h"#include "event_source.h"#include "esp_event_base.h"static const char* TAG = "user_event_loops";//事件循环esp_event_loop_handle_t loop_with_task; //循环带任务esp_even原创 2022-04-21 11:40:26 · 3507 阅读 · 1 评论 -
基于VScode的ESP32开发学习(四):事件循环
代码#include "esp_log.h"#include "freertos/FreeRTOS.h"#include "freertos/task.h"#include "event_source.h"static const char* TAG = "default_event_loop";static esp_event_handler_instance_t s_instance; //用来标注事件处理函数的上下文句柄static int TIMER_STAR原创 2022-04-19 13:10:53 · 3809 阅读 · 0 评论 -
基于VScode的ESP32开发学习(三):官方例程Station,连接到wifi
代码#include <string.h>#include "freertos/FreeRTOS.h"#include "freertos/task.h"#include "freertos/event_groups.h"#include "esp_system.h"#include "esp_wifi.h"#include "esp_event.h"#include "esp_log.h"#include "nvs_flash.h"#include "lwip/err.h原创 2022-04-18 11:04:07 · 4102 阅读 · 1 评论 -
基于VScode的ESP32开发学习(二):官方例程softap,提供wifi,详解
完整代码放在文末1.wifi事件处理函数/*wifi事件处理函数*/static void wifi_event_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data){ if (event_id == WIFI_EVENT_AP_STACONNECTED) {原创 2022-04-17 15:53:40 · 2471 阅读 · 3 评论 -
基于VScode的ESP32开发学习(一):官方例程blink,周期闪烁led详解,优信esp32简单修改适配
前言其实这个例程非常简单,我记录这个感觉像水了一篇,不过作为用VS开发esp32的上手第一步来说,还是收获很多的,想了想,还是记录下,不管是例程中良好的代码习惯,以及精简的代码书写都值得我学习,标题说了是详解,那我就好好剖析下吧代码正文我将注释给修改了下,方便理解/* Blink Example*/#include <stdio.h>#include "freertos/FreeRTOS.h"#include "freertos/task.h"#include "driver/g原创 2022-04-17 11:54:49 · 5450 阅读 · 3 评论 -
ESP32 VScode环境报错:Something went wrong while trying to build the project。解决办法
配置ESP32- Vscode环境报错如图项目目录包含了中文字符,我给换成全英文路径,再次尝试成功原创 2022-04-16 17:13:46 · 4545 阅读 · 5 评论 -
ESP32开发环境搭建,Linux,SDK,IDF,Ubuntu,乐鑫
参考乐鑫官方手册ESP32快速入门前言:玩ESP32,arduino可以方便入门,但精细操作还得用SDK来整,所以搭建下,我个人用的是优信电子家的ESP32,本来想跟着他家教程走,结果发现鸽了,只能自己摸索下了。一、 安装VMware,unbutu虚拟机我用的是ubuntu20版本此步不再详细描述,参考如下Ubuntu - 20.04系统安装乐鑫ESP-IDF工具链(1) — 虚拟机安装 Ubuntu - 20.04第二步:获取 ESP-IDF打开终端,后运行以下命令:mkdir -p原创 2022-04-14 16:51:48 · 3312 阅读 · 0 评论 -
使用Arduino开发ESP32(三十):EEPROM读写,附上随机数写入读取例程
代码/* EEPROM(带电可擦可编程只读存储器) 写入 将随机数存储进EEPROM. 这些数据会保存在EEPROM中,esp32掉电重启后依然存在,并可被其他例程调用*/#include "EEPROM.h"// we're going to write to next)int addr = 0; //EEPROM当前地址#define EEPROM_SIZE 64 //64字节 申请空间的大小必须为4的倍数,如:23则会更改成24void setup(原创 2021-04-03 14:53:25 · 3758 阅读 · 1 评论 -
使用Arduino开发ESP32(二十九):WiFismartconfig,一键配网,又名快连
前言目前流行的wifi配置模式一般有以下2种:1:智能硬件处于AP模式,手机用于station模式,手机连接智能插座的AP后组成局域网,手机发送需要连接路由的SSID及密码至智能插座,智能硬件主动去连接指定路由后,完成连接2:一键配置(smartconfig)模式:智能硬件处于混杂模式下,监听网络中的所有报文;手机APP将SSID和密码编码到UDP报文中,通过广播包或组播报发送,智能硬件接收到UDP报文后解码,得到正确的SSID和密码,然后主动连接指定SSID的路由,完成连接以上引述:wifi一键配原创 2020-09-23 16:30:29 · 5432 阅读 · 0 评论 -
使用Arduino开发ESP32(二十八):WiFiProvisioning 官方说明文档自翻
## 官方文档(自行翻译)Provisioningfor Arduino 基于Arduino的配置This sketch implements provisioning using various IDF componentsIntroductions 描述This example allows Arduino user to choose either BLE or SOFTAP as a mode of transport, over which the provisioning relate原创 2020-09-22 18:47:46 · 1984 阅读 · 2 评论 -
使用Arduino开发ESP32(二十七):WiFiMulti
前言函数相关WiFiMulti::addAPbool WiFiMulti::addAP(const char* ssid, const char *passphrase)功能:添加WiFi信息参数1:ssid,即wifi名称参数2:passphrase,即wifi密码返回值:成功为true,失败则falseWiFiMulti::runuint8_t WiFiMulti::run(uint32_t connectTimeout)功能:筛选并连接给出表中的wifi(完整代码我会放在文末)原创 2020-09-21 19:46:08 · 3803 阅读 · 2 评论 -
使用Arduino开发ESP32(二十六):WiFiClientEvents例程及从互联网上实时获取当前时间功能
前言在看例程之前需要了解的一些函数WiFi.hostByName/** * Resolve the given hostname to an IP address. * @param aHostname Name to be resolved * @param aResult IPAddress structure to store the returned IP address * @return 1 if aIPAddrString was successfully原创 2020-09-20 20:40:36 · 1721 阅读 · 3 评论 -
使用Arduino开发ESP32(二十五):WiFiClientEvents例程
前言:在看代码前,你所需要了解的几个函数:WiFi.onEvent()官方文档里,该函数的描述/** * set callback function * @param cbEvent WiFiEventCb * @param event optional filter (WIFI_EVENT_MAX is all events) */功能:设置回调函数有两个参数:cbEvent(WiFiEventCb)//这个参数我没懂event(可选过滤器,值为WIFI_EVENT_MAX 表示原创 2020-09-17 21:36:59 · 2665 阅读 · 1 评论 -
使用Arduino开发ESP32(二十四):WiFi_AP Server例程,
前言官方例程原名叫做WiFiAccessPpoint,我改的更贴切点代码和SimpleWiFi Server例程形似它们所要达成的功能也是一样的二者之间的区别是,SimpleWiFi Server是和用户处于同一wifi网络下,然后二者通信,WiFi_AP Server是esp32自己创建wifi网络,然后用户连接再通信其他无了。。。想了解例程运行流程的,可以看看我的SimpleWiFi Server这篇博客代码/* WiFiAccessPoint.ino creates a WiFi原创 2020-09-16 15:42:43 · 3186 阅读 · 0 评论 -
使用Arduino开发ESP32(二十三):WiFi_Client Basic例程
前言:鉴于项目需要,决定把wifi类的官方例程全看一遍,并同步更新到博客上代码:/* * 该例程向一个TCP服务器发送信息 * */#include <WiFi.h>#include <WiFiMulti.h>WiFiMulti WiFiMulti;void setup(){ Serial.begin(115200); delay(10); // 连接wifi WiFiMulti.addAP("wifi名称", "wifi原创 2020-09-15 12:18:39 · 2451 阅读 · 0 评论 -
使用Arduino开发ESP32(二十二):SimpleWiFiServer例程
本例程脱胎自官方例程除翻译之外,还做了些许代码修改/* 使用Wifi网页服务来控制开关灯 一个简单的网络服务,让你可以通过网页控制IED。 此例程将打印的的WiFi模块(一旦连接)的ip地址到串行监视器。 你可以在浏览器中访问该ip地址来打开和关闭LED。 访问的网页地址格式如下: http://esp32的ip地址/H 开灯 http://esp32的ip地址/L 关灯 This example is written for a network using WPA encry原创 2020-08-29 20:56:07 · 2116 阅读 · 0 评论 -
使用Arduino开发ESP32(二十一):WiFiBlueToothSwitch例程,按键切换esp32为蓝牙或wifi模式
之前写项目正好卡在这个地方,结果发现了这个官方例程顺带就写篇博客虽说是按键切换模式,但官方例程并未使用中断代码// 演示如何在wifi和蓝牙模式之间切换,或者同时使用// 按键绑定在GPIO 0 和 GND之间,模式也随之按下而切换#include "WiFi.h"#define STA_SSID "wifi名称"#define STA_PASS "wifi密码"#define AP_SSID "Esp32"enum { STEP_BTON, STEP_BTOFF, STEP_S原创 2020-08-28 10:03:53 · 2894 阅读 · 0 评论 -
使用Arduino开发ESP32:错误 invalid conversion from ‘void (*)()‘ to ‘TaskFunction_t {aka void (*)(void*)
invalid conversion from 'void ()()’ to 'TaskFunction_t {aka void ()(void*)在使用xTaskCreate()创建任务时,报了上述错误原因也很简单:任务函数的参数格式不能写作Task_example()要这样:Task_example(void* Parameter)在c++里,函数()表示可以接收任何形式的参数而,函数(void* Parameter)才是什么参数都不接受上述方案仅适用于,任务函数不需要外部参数输入的情况原创 2020-08-11 14:36:33 · 2508 阅读 · 0 评论 -
使用Arduino开发ESP32(二十):创建FreeRTOS任务
FreeROTSFreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,原创 2020-08-11 11:18:28 · 5436 阅读 · 1 评论 -
使用Arduino开发ESP32:项目内存太大,无法烧写程序的问题
问题如图所示解决办法:调整分区,点击菜单栏的 工具 选项选择自己需要的分区方式即可因为我不使用OTA,故采用了Huge APP模式原创 2020-08-10 10:33:22 · 7692 阅读 · 4 评论 -
esp32项目开发实践日志,仅个人记录
个人开发日志记录贴2020-8-9手机通过蓝牙发送wifi名称密码给esp32esp32接收信息并连接网络程序:完成烧录:失败原因:拟解决办法:尝试去除多余的库文件原创 2020-08-09 15:34:29 · 751 阅读 · 0 评论 -
使用Arduino开发ESP32(十九):BLE_write,用BLE收发信息
这也是BLE应用的最后一篇了所用到的函数在前文也有所提及,代码也很简单故,今天直入主题代码:/* Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleWrite.cpp Ported to Arduino ESP32 by Evandro Copercini*/#include &原创 2020-08-08 14:40:22 · 5351 阅读 · 0 评论 -
使用Arduino开发ESP32(十八):BLE_uart,BLE的异步通信及安卓app测试
基础介绍:1、UARTuniversal asynchronous receiver and transmitter通用异步收发器2、USARTuniversal synchronous asynchronous receiver and transmitter通用同步异步收发器区别1.“异步通信”是一种很常用的通信方式(效率较低)异步通信在发送字符时,发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下原创 2020-08-07 10:59:02 · 3226 阅读 · 3 评论 -
使用Arduino开发ESP32(十七):ESP32 BLE Server_multicconnect;创建一个BLE服务器,一旦收到连接,它将定期发送通知。
相关函数void notify(bool is_notification = true);Send a notify. (发送一个通知)A notification is a transmission of up to the first 20 bytes of the characteristic value. An notification will not block; it is a fire and forget.通知最多传输特征值的前20个字节,通知不会拥堵static con原创 2020-08-06 17:10:06 · 3230 阅读 · 7 评论 -
使用Arduino开发ESP32(十六):ESP32 BLE Server
ESP32 BLE for ArduinoThe Arduino IDE provides an excellent library package manager where versions of libraries can be downloaded and installed. This Github project provides the repository for the ESP32 BLE support for Arduino.Arduino IDE提供了一个优秀的库包管理器,可以原创 2020-07-31 10:48:24 · 6215 阅读 · 5 评论 -
使用Arduino开发ESP32(十五):使用Bluetooth(蓝牙)进行串行通信,经典蓝牙,非BLE
Bluetooth Serial Library(蓝牙串口库)A simple Serial compatible library using ESP32 classical bluetooth (SPP)一个用到了ESP32的蓝牙()库的简单串口兼容库如何使用它?Download one bluetooth terminal app in your smartphone在你的手机上下载蓝牙终端appFor Android For IOSFlash an example sket原创 2020-07-30 15:23:39 · 14916 阅读 · 7 评论 -
使用Arduino开发ESP32(十四):DeepSleep&RTC Memory
基本介绍:ESP32正常运转功率大,在不需要的时候,使其休眠以降低功耗DeepSleep使用步骤1.配置唤醒源(可以配置多个唤醒源);2.启动DeepSleep;DeepSleep的唤醒源定时器;触摸信号(touchpad);Ext(0):RTC IO 中某个指定 GPIO 满足指定电平即唤醒;Ext(1):RTC IO 中某些指定 GPIO 同时满足指定电平即唤醒;ULP 协处理器;在启动DeepSleep后ESP32只剩RTC相关模块继续工作,其它所有模块全部关闭,所以我们需要原创 2020-07-29 10:31:14 · 1281 阅读 · 0 评论 -
使用Arduino开发ESP32(十三):PWM(LEDC)
**基础介绍**ESP32有一个LEDC,原本设计用来控制LED,可以作简单的PWM输出LEDC总共有16个路通道(0 ~ 15),分为高低速两组,高速通道(0 ~ 7)由80MHz时钟驱动,低速通道(8 ~ 15)由1MHz时钟驱动。方法函数:double ledcSetup(uint8_t channel, double freq, uint8_t resolution_bits)(通道号,频率,计数位数)channel为通道号,取值0 ~ 15;freq,设置频率;resolut原创 2020-07-27 09:50:48 · 12585 阅读 · 0 评论 -
使用Arduino开发ESP32(十二):GPIO与中断
基本函数:GPIO6 ~ 11一般不使用,因为它们接了存储程序的Flash。pinMode(pin, mode)引脚工作方式设置mode可选:INPUT、OUTPUT、INPUT_PULLUP、INPUT_PULLDOWN输入、输出、上拉输入、下拉输入digitalWrite(pin, value)设置某引脚高低电平digitalRead(pin)读取某引脚电平值注:ESP32的IO12,这个IO口上上电时的电平会决定外部flash(存放程序的那颗)的工作电压,上电时该脚为高原创 2020-07-26 10:44:30 · 8646 阅读 · 3 评论 -
使用Arduino开发ESP32(十二):TCP Server
TCP Server按如下方式使用:1.引用相关库#include <WiFi.h>;2.声明WiFiServer对象;3.使用begin方法启动监听;4.监听客户端连接并处理数据通讯;相关方法:WiFiServer(uint16_t port=80, uint8_t max_clients=4)声明WiFiServer对象(端口号,最大接入客户数量)WiFiClient available()WiFiClient accept(){return available();原创 2020-07-25 11:00:26 · 4387 阅读 · 0 评论 -
使用Arduino开发ESP32(十一):Web Client
本章所用方法请参考前文使用Arduino开发ESP32(十):TCP client代码:#include <WiFi.h>const char *ssid = "Wifi名称";const char *password = "wifi密码";const char *host = "www.baidu.com"; //欲访问的域名void setup(){ Serial.begin(115200); Serial.println(); WiFi.原创 2020-07-25 10:43:54 · 760 阅读 · 0 评论 -
使用Arduino开发ESP32(十):TCP Client
TCP Client顾名思义,建立在TCP通信协议基础上的客户端TCP Server建立在TCP通信协议基础上的服务端相关方法:int connect(IPAddress ip, uint16_t port)int connect(IPAddress ip, uint16_t port, int32_t timeout)int connect(const char *host, uint16_t port)int connect(const char *host, uint16_t port原创 2020-07-25 10:15:04 · 3895 阅读 · 9 评论 -
ESP32学习:程序自动跳出while循环问题(已解决)
在学习TCP client相关时,遇到的上述问题贴上代码#include <WiFi.h>const char *ssid = "wifi;const char *password = "密码";const IPAddress serverIP(192,168,1,5); //目标地址uint16_t serverPort = 8106; //目标服务器端口号WiFiClient client; //声明一个客户端对象,用于与服务器进行连接void s原创 2020-07-24 16:14:03 · 1250 阅读 · 5 评论 -
使用Arduino开发ESP32(九):系统时间方法函数与Ticker回调函数
常用时间函数:unsigned long micros(); //返回当前系统时间(us)unsigned long millis(); //返回当前系统时间(ms)void delay(uint32_t); //设置延时(ms)void delayMicroseconds(uint32_t us); //设置延时(us)返回当前系统时间即系统当前已运行时间测试:一种运用思路://该程序用于每一秒或以上时间打印输出一次时间unsigned long previousMillis =原创 2020-07-23 14:02:37 · 9863 阅读 · 4 评论 -
使用Arduino开发ESP32(八):ESP32的EPROM的写入读取
写入EPROM/*该代码向EEPROM写入4096字节数据*/#include <EEPROM.h>void setup() { Serial.begin(115200); Serial.println(""); Serial.println("开始写入"); EEPROM.begin(4096); //申请操作到地址4095,size=目标地址+1 for(int addr = 0; addr<4096; addr++) { int dat原创 2020-07-22 10:52:04 · 4404 阅读 · 0 评论 -
使用Arduino开发ESP32:问题记录,UDP测试失败
先上代码#include <WiFi.h>#include <WiFiUdp.h> //引用以使用UDPconst char *ssid = "wifi名称";const char *password = "wifi密码";WiFiUDP Udp; //创建UDP对象unsigned int localUdpPort = 11111; //本地端口号void setup(){ Serial.begin(115200)原创 2020-07-21 22:12:12 · 1343 阅读 · 0 评论 -
使用Arduino开发ESP32(七):MQTT subscribing-订阅
代码:#include <WiFi.h>#include <PubSubClient.h>const char *id="wifi名称";const char *psw="wifi密码";char *serverip="服务器ip";int port=1883;char *serveruser="admin";char *serverpsw="pubilic";WiFiClient espclient;PubSubClient client(espclient原创 2020-07-19 15:38:09 · 1443 阅读 · 0 评论 -
使用Arduino开发ESP32:关于esp32 wifi连接不上的解决办法
今天在学习MQTT订阅的过程中发现esp32时钟连接不上wifi主体代码如下: while(WiFi.status()!=WL_CONNECTED){ delay(200); Serial.println("正在连接至wifi..."); WiFi.begin(id,psw); } Serial.println("已连接.");检查过wifi账号密码,语句逻辑无误之后最后发现是delay(200);这个延时函数的问题,延时太短了问题原因猜想:我猜原创 2020-07-19 14:26:36 · 17464 阅读 · 16 评论 -
使用Arduino开发ESP32(六):基于arduino的ESP32,连接MQTT服务器,发送,接收消息;与MQTT服务器的搭建,
本次开发需要用到MQTT服务器,因此需要现在arduino中安装PubSubClient library代码:#include<WiFi.h>#include<PubSubClient.h>const char *id="wifi名称";const char *psw="wifi密码";const char *mqttServer="服务器ip地址(域名)";const int mqttPort=1883; //服务器TCP协议的端口号const原创 2020-07-18 15:07:08 · 6137 阅读 · 8 评论 -
使用Arduino开发ESP32(五):使用ESP32提供wifi,使用ESP32的softAP工作模式
什么是AP?AP (无线访问接入点(WirelessAccessPoint))无线AP(AccessPoint):即无线接入点,它用于无线网络的无线交换机,也是无线网络的核心。无线AP是移动计算机用户进入有线网络的接入点,主要用于宽带家庭、大楼内部以及园区内部,可以覆盖几十米至上百米。无线AP(又称会话点或存取桥接器)是一个包含很广的名称,它不仅包含单纯性无线接入点(无线AP),同样也是无线路由器(含无线网关、无线网桥)等类设备的统称。提供自百度百科代码:#include <WiFi.原创 2020-07-17 14:16:09 · 2571 阅读 · 1 评论