ESP-WROOM-32配置Arduino IDE开发环境

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、下载Arduino IDE
  • 二、安装工具集
  • 三、测试样例
    • 1.选则开发板
    • 2.连接开发板
    • 3.示例程序
  • 四、使用官方示例程序
  • 总结


前言

之前用了很多注入STM32、树莓派Pico和Arduino nano等板子,但是都不带Wifi和蓝牙功能。蓝牙我用的不多,倒是开发的程序中网络程序蛮多的,所以就购买了一个。经过一下午的琢磨终于把功能跑通了。

我买的板子有两个版本ESP32-WROOM-32D和ESP32-WROOM-32U,32U比32D多一个天线插槽。

在这里插入图片描述


一、下载Arduino IDE

应该来说Arduino IDE是一个相当易用的IDE了,支持的MCU也多,个人觉得如果你习惯使用C开发那么Arduino IDE无疑更适合你。如果你是Python开发者,那么Thonny也是可以的。

Arduino IDE还有一个非常好的功能,那就是它为很多MCU都提供了示例程序,对新手非常友好,一会教你怎么使用。

官方下载链接

选择适合自己系统的版本:
在这里插入图片描述

安装就不多说了,很简单。

二、安装工具集

打开Arduino IDE并在侧边栏找到开发板管理器,在搜索框输入esp32并选择跟我一样的选项并点击安装,会有点慢,耐心等待完成。
在这里插入图片描述

三、测试样例

这里直接就以WIFI为例了,确保你和我的板子是同一块板子。

1.选则开发板

首先在工具里面找到开发板选项:
在这里插入图片描述
展开并找到ESP32 Dev Module:
在这里插入图片描述

注意:千万型号别选错!

2.连接开发板

找一根USB数据线,一头是USB-A,另一头是Micro-USB的将开发板接到电脑上。这里默认你已经安装了串口驱动了。如果你成功了,你和我的配置应该是一样的。

开发板型号:

在这里插入图片描述

串口连接状态:

在这里插入图片描述

注意:你的串口不一定是COM8,实际的串口和你的系统有关系,总之能连接就对了,打感叹号就是硬件不识别,检查下是不是驱动没装好。

3.示例程序

创建一个新项目将下面的代码复制到新项目中:

注意:一定要2.4G,这个板子不支持5G的无线网!

/*Go to thingspeak.com and create an account if you don't have one already.After logging in, click on the "New Channel" button to create a new channel for your data. This is where your data will be stored and displayed.Fill in the Name, Description, and other fields for your channel as desired, then click the "Save Channel" button.Take note of the "Write API Key" located in the "API keys" tab, this is the key you will use to send data to your channel.Replace the channelID from tab "Channel Settings" and privateKey with "Read API Keys" from "API Keys" tab.Replace the host variable with the thingspeak server hostname "api.thingspeak.com"Upload the sketch to your ESP32 board and make sure that the board is connected to the internet. The ESP32 should now send data to your Thingspeak channel at the intervals specified by the loop function.Go to the channel view page on thingspeak and check the "Field1" for the new incoming data.You can use the data visualization and analysis tools provided by Thingspeak to display and process your data in various ways.Please note, that Thingspeak accepts only integer values.You can later check the values at https://thingspeak.com/channels/2005329Please note that this public channel can be accessed by anyone and it is possible that more people will write their values.*/#include <WiFi.h>const char* ssid     = "这里改成你的无线网名称"; // Change this to your WiFi SSID
const char* password = "这里改成你的无线网密码"; // Change this to your WiFi passwordconst char* host = "api.thingspeak.com"; // This should not be changed
const int httpPort = 80; // This should not be changed
const String channelID   = "2005329"; // Change this to your channel ID
const String writeApiKey = "V6YOTILH9I7D51F9"; // Change this to your Write API key
const String readApiKey = "34W6LGLIFXD56MPM"; // Change this to your Read API key// The default example accepts one data filed named "field1"
// For your own server you can ofcourse create more of them.
int field1 = 0;int numberOfResults = 3; // Number of results to be read
int fieldNumber = 1; // Field number which will be read outvoid setup()
{Serial.begin(115200);while(!Serial){delay(100);}// We start by connecting to a WiFi networkSerial.println();Serial.println("******************************************************");Serial.print("Connecting to ");Serial.println(ssid);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.println("WiFi connected");Serial.println("IP address: ");Serial.println(WiFi.localIP());
}void readResponse(WiFiClient *client){unsigned long timeout = millis();while(client->available() == 0){if(millis() - timeout > 5000){Serial.println(">>> Client Timeout !");client->stop();return;}}// Read all the lines of the reply from server and print them to Serialwhile(client->available()) {String line = client->readStringUntil('\r');Serial.print(line);}Serial.printf("\nClosing connection\n\n");
}void loop(){WiFiClient client;String footer = String(" HTTP/1.1\r\n") + "Host: " + String(host) + "\r\n" + "Connection: close\r\n\r\n";// WRITE --------------------------------------------------------------------------------------------if (!client.connect(host, httpPort)) {return;}client.print("GET /update?api_key=" + writeApiKey + "&field1=" + field1 + footer);readResponse(&client);// READ --------------------------------------------------------------------------------------------String readRequest = "GET /channels/" + channelID + "/fields/" + fieldNumber + ".json?results=" + numberOfResults + " HTTP/1.1\r\n" +"Host: " + host + "\r\n" +"Connection: close\r\n\r\n";if (!client.connect(host, httpPort)) {return;}client.print(readRequest);readResponse(&client);// -------------------------------------------------------------------------------------------------++field1;delay(10000);
}

编译并上传代码,设备会自动重启并执行代码。成功了就是下面的样子:

Status: 200 OK
Cache-Control: max-age=7, private
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 1800
X-Request-Id: 9e90e7b7-8612-499e-a179-3e1bfcde272c
Access-Control-Allow-Headers: origin, content-type, X-Requested-With
Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS, DELETE, PATCH
ETag: W/"1fdaff80268c18103424af2182ddf550"
X-Frame-Options: SAMEORIGIN1e9
{"channel":{"id":2005329,"name":"WiFiCLient example","description":"Default setup for Arduino ESP32 WiFiClient example","latitude":"0.0","longitude":"0.0","field1":"data0","created_at":"2023-01-11T15:56:08Z","updated_at":"2023-01-13T08:13:58Z","last_entry_id":891510},"feeds":[{"created_at":"2024-05-09T13:32:01Z","entry_id":891508,"field1":"50"},{"created_at":"2024-05-09T13:32:22Z","entry_id":891509,"field1":"635"},{"created_at":"2024-05-09T13:32:41Z","entry_id":891510,"field1":"53"}]}
0Closing connection

注:这款设备带内置天线,不用额外装天线,但是也不要遮挡信号,尽量选空旷的地方!。

如果你的串口输出的是乱码就把波特率改成115200,我这块板子是115200。

四、使用官方示例程序

实话实说Arduino IDE和Thonny半斤八两,像一个半成品,比起Clion那样的程序就太小儿科了。但是架不住人家有示例程序,这点就很方便,对新手可以说太友好了!

首先选则你要在哪个开发板上开发,上面已经教过了,这一步很重要,因为Arduino IDE几乎为所有支持的开发板都准备了示例程序,而且每个开发板都是不一样的。

打开工具栏上的文件选项卡,找到示例,这里介绍下内置示例和ESP32 Dev Module示例的区别:内置示例是IDE内置的,几乎所有的开发板代码都是差不多的,但是内置示例不是所有的开发板都一定可以运行!而配套示例就是和我们开发板相关的示例了,我试了下很多是可以运行的,应该来说都能运行。

在这里插入图片描述

注意:有些示例可以直接运行,比如我发的WIFI示例,无线网卡是内置的,还有些需要外设配和,比如摄像头等等!


总结

1、蛮简单的,不过比树莓派Pico略微复杂
2、除了Arduino IDE可以开发,Clion(基于Arduino框架)也可以开发还有Thonny等等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/682183.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用Rust解决鸡兔同笼问题

目录 一、什么是鸡兔同笼问题&#xff1f; 二、用Rust解决鸡兔同笼问题 三、鸡兔同笼问题在实际生活中的应用有哪些&#xff1f; 一、什么是鸡兔同笼问题&#xff1f; 鸡兔同笼问题是一种古代著名的数学问题&#xff0c;用于训练逻辑思维和解决方程的能力。 鸡兔同笼问题起…

ssm105基于JAVAEE技术校园车辆管理系统+jsp

校园车辆管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本校园车辆管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短…

SpringBoot中使用RocketMQ实现事务消息来保证分布式事务的一致性(有代码)

前言 分布式事务是分布式系统中非常常见的问题。是非常必要钱常见的。实现的方式也是多种多样。今天这个视频主要来分享一下RocketMQ实现事务消息来保证分布式事务的一致性。不知道大家使用过这种方式没有。这种分布式事务的原理其实和本地消息表一样。 本地消息表实现分布式…

ARM(2)ARMv8基础知识

目录 一、异常 1.1异常等级的定义 1.2异常的种类 1.2.1同步异常和异步异常 1.3改变异常等级 1.4异常后的处理 1.4.1异常处理相关寄存器 1.4.2系统调用 1.4.3对EL2/EL3的系统调用 1.4.4异常返回 1.4.5异常处理流程 二、安全状态 三、执行状态 本文介绍以下内容&…

javaWeb快速部署到tomcat阿里云服务器

目录 准备 关闭防火墙 配置阿里云安全组 点击控制台 点击导航栏按钮 点击云服务器ECS 点击安全组 点击管理规则 点击手动添加 设置完成 配置web服务 使用yum安装heepd服务 启动httpd服务 查看信息 部署java通过Maven打包好的war包项目 Maven打包项目 上传项目 …

Redis(无中心化集群搭建)

文章目录 1.无中心化集群1.基本介绍2.集群说明 2.基本环境搭建1.部署规划&#xff08;6台服务器&#xff09;2.首先删除上次的rdb和aof文件&#xff08;对之前的三台服务器都操作&#xff09;1.首先分别登录命令行&#xff0c;关闭redis2.清除/root/下的rdb和aof文件3.把上次的…

分布式锁讲解

概括 分布式锁是一种用于在分布式系统中实现同步机制的锁。在单机系统中&#xff0c;我们可以使用如Java中的synchronized关键字或者 ReentrantLock来实现线程间的同步&#xff0c;但在分布式系统中&#xff0c;由于多个节点&#xff08;服务器&#xff09;之间的并发操作&am…

Redis持久化策略——Java全栈知识(17)

Redis持久化 1、Redis 持久化的三种方式 1、RDB&#xff1a; 以快照的方式将此刻 Redis 中的数据以二进制的文件形式保存在磁盘中。 RDB 的优点是&#xff1a;快照文件小、恢复速度快&#xff0c;适合做备份和灾难恢复。 RDB 的缺点是&#xff1a;定期更新可能会丢数据&#…

【stomp 实战】spring websocket 接收消息源码分析

后台消息的发送过程&#xff0c;我们通过spring websocket用户消息发送源码分析已经了解了。我们再来分析一下后端接收消息的过程。这个过程和后端发送消息过程有点类似。 前端发送消息 前端发送消息给服务端的示例如下&#xff1a; 发送给目的/app/echo一个消息。 //主动发…

mysql数据库调优篇章1

目录 1.认识数据库中日志的作用2.增加mysql数据库中my.ini 基本配置3.增加my.ini中参数配置4.查看已经执行过的sql语句过去执行时间5.找出慢查询的sql6. SHOW VARIABLES LIKE ‘innodb_read_io_threads’; SHOW VARIABLES LIKE ‘innodb_write_io_threads’; SHOW VARIABLES LI…

Python从0到POC编写--实用小脚本02

爆破脚本&#xff1a; 爆破脚本也是我们经常使用的东西 这里就简单讲讲后台爆破脚本的编写吧 在编写之前&#xff0c;我们先通过访问网站去看看情况 首先我们可以先登录看看 输入账号 admin &#xff0c;密码 12345 后 登录失败&#xff0c;提示 用户名或密码错误 在输入…

振动分析的一些概念

一.时域分析 振动测试领域中&#xff0c;通常使用标准是ISO 10816系列标准&#xff0c;其要去使用有效值&#xff08;RMS&#xff09;来表示震动信号的能量大小&#xff0c;并提供一组限制值&#xff0c;以帮助用户评估机器的振动水平是否正常。 1.位移&#xff1a; 峰峰&…