草庐IT

手把手教你学ESP32开发-第一篇:ArduinoIDE+ESP32搭环境

Smile_h_ahaha 2023-06-07 原文

前言废话,着急的人不用看:这是我的学习笔记,欢迎交流。现在的物联网行业比较流行使用乐鑫的芯片加上ESP32开发通信模组,同学们学点这个还是很有前景的。学学这个ESP32+乐鑫芯片+WIFI/BT双模的模组的开发

安装配置主要参考网站(Installing — Arduino-ESP32 2.0.0 documentation (espressif.com)

 以上链接说了你得有Python3.8以上的环境:The Arduino ESP32 v1.0.6 still works on WIN32. You might want to install python 3.8.x because it is the latest release supported by Windows 7.

大家自行安装我就不说了。 

第一步,下载ArduinoIDE和Git

ArduinoIDE是个编辑器,能编译和烧录代码到你的ESP32中。下载地址(Software | Arduino

这没啥可说的,Windows电脑选这个就行了。ArduinoIDE还可以玩Arduino UNO/NANO/MEGA之类的开发板,加上一些传感器和小电机就可以搞个机器人了。

Git是个版本控制工具,是世界上最好用的分布式版本控制系统。Git相当于给ArduinoIDE编辑器开“Word修订”功能。Git工具在编程中被用到,通常是多个人同时协作一个项目,有可能出现两个人同时修改一个文件,这时,后提交的人会遇到冲突,需要解决冲突;git能够记录每个人的提交修改等形成日志,可以根据提交记录进行回滚;并且git支持分布式部署。学生可能不熟悉这个,到了企业中你们合伙开发个XX平台就熟悉了。

网上关于Git的教程有的是,这里不过多说明,只讲安装。有兴趣进一步了解的看这个链接((28条消息) 超详细的Git使用教程(图文)_kinggm的博客-CSDN博客_git使用教程)这个教程和本文无关。

一般人的电脑都是64位的吧,你用“电脑”右键“属性”查一下就知道是多少位的了。我们选择安装那个标准版的。一路默认,一路Next安装就行了,这里我就不多说了。你的Git安装好了后,在你桌面上空白处点击右键,就会发现有两个选项“Git gui here”和“Git bash here”那就说明你安装好了。

第二步,在ArduinoIDE编辑器路径下,新建个Git项目

在你电脑的这个目录下新建个Git库。

如果你的用户名是中文的,参考这个链接((28条消息) 如何改电脑用户名WIN10/WIN11_Smile_h_ahaha的博客-CSDN博客)来新建个管理员用户,如果是英文的用户名,那咱们继续。

C:/Users/你的用户名/Documents/Arduino

在上图所示的空白处右键,点击“Git gui here" ,选择”Clone Existing Repository“如下图所示:

然后在Source Location中填入:

https://github.com/espressif/arduino-esp32.git

 在Target Directory中填入:

C:/Users/你的用户名/Documents/Arduino/hardware/espressif/esp32

 就像下图这样:然后点击clone

Oh,shit 如果你出现如下”请求超时“的问题,说明咱们得翻墙,国内登不了GitHub

这里需要自备梯子,你成功爬梯后,再试试上面的。

发现桌面出现下图所示窗口,说明你安装成功:

 自动弹出如下窗口

然后打开以下文件夹:

C:\Users\你的用户名\Documents\Arduino\hardware\espressif\esp32

 

/********************************************以下是补充不要操作*********************************/

开发过程中,经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用,而公共代码库的版本管理是个麻烦的事情。git的git submodule命令可用来添加仓库地址,解决这个问题。

仓库地址是指子模块仓库地址,路径指将子模块放置在当前工程下的路径       注意:路径不能以 / 结尾(会造成修改不生效)、不能是现有工程已有的目录(不能顺利 Clone)

命令执行完成,会在当前工程根路径下生成一个名为“.gitmodules”的文件,其中记录了子模块的信息。添加完成以后,再将子模块所在的文件夹添加到工程中即可。

当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令:git submodule update --init --recursive

即可将子模块内容下载下来后工程才不会缺少相应的文件。

/******************************************************补充说明完毕继续操作**************************/

在C:\Users\你的用户名\Documents\Arduino\hardware\espressif\esp32空白处点击右键选择“Git bash here”。出现如下窗口:

在命令行中输入:从上到下依次输入以下命令

git submodule update --init --recursive
git pull       #这是用来把大家的库合并的命令,详见https://www.jb51.net/article/193770.htm
git submodule update

/***************************************************上面命令的进一步解释*************************/

你还可以把上面代码第二行的“git pull" 替换为”git fetch",fetch是用来同步库的。我理解pull和fetch的区别是,如果你队友坑,写的代码不对,你更新库的时候若用pull相当于你的也不对了,若用fetch,那不影响你的代码。感兴趣可进一步求知git命令的真正含义。 (git pull 与 git fetch 的区别_magic_kid_2010的专栏-CSDN博客

/***************************************解释完了继续吧*******************************************/

然后到以下路径双击打开“get.exe",当你看到下面这一堆都出来的时候,说明上面的命令成功了。 

然后就打开如下所示:

当上面这个窗口消失的时候说明,下载好了。 

第三步,给ArduinoIDE编辑器装个ESP32的库和搭建开发环境

(全程会卡,需要自备梯子(加速器/翻墙/VPN),建议使用自己的5G手机开热点,不要用学校或公司的网)

打开你的ArduinoIDE>file>Preferences,把以下URLs链接复制到最下面圈中的位置

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

照着上图勾选,然后继续点OK,继续打开Tools>Boards Manager

如果你在ArduinoIDE>file>Preferences那步中有以下错误,说明你网速差,你要开手机热点翻墙再试试,不用管以下提示,直接按照上图所示的下载试试,那个下载完成了就大功告成了。

大功告成后,把ArduinoIDE关闭并重新打开。 

第四步,链接你的ESP32试试WIFI配网---WIFI SMART CONFIG

如果你一步步按我说的做,相信到这步你已经成功了。现在打开ArduinoIDE,把你买的ESP32模组插上电脑。Tools>Port>勾选你的COM口(当你插上ESP32时出现的端口名)

 然后去Tools>Board>Board Manager>选择ESP32s(我买的是ESP32s, ESP32不同的模组厂商会有不同的板子)

File>Examples>Wifi>WifiSmartConfig 我们试一下这个WIFI配网例程,看看若是配网成功,那说明设备和环境都没问题。

 先点√编译,再点→烧录下载程序到模组。

点击下图所示的→后,当右下角进度条烧录完成时,长按你的ESP32右侧的黑色按键4秒后松手,ESP32就开始自动配置。 

等上图所示的进度到达100%,你打开串口监视器 (右上角那个🔍)

这时候,打开你的手机,提前下载乐鑫的WIFI配置工具“EspTouch”网上搜一下,安卓手机能下,苹果手机没试过。(这个工具我上传CSDN了,大家去找一下)。注意你的手机要连上另一个手机或者你家的高速WIFI,不要用公司或学校的,太卡。我用的是另一部红米K30手机给我的手机热点。(注意!!!ESP32仅支持2.4Gwifi, 你开热点的时候把手机热点设置为2.4G的)。

配网成功是这样:

如果你上面配网失败,失败有两种可能,

一是你板子选的不对(不同的厂商生产不同的型号的ESP32)这时候你需要查Arduino IDE是否支持ESP32的型号:

Arduino IDE>file>Reference, 把下面这个复制到你的里面(复制的时候不要删除之前的,你点回车,然后粘贴就行)

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

 第二种是你在ArduinoIDE中的Board选的不是Node32s,

 还要打开Arduino IDE选择Arduino>tools>core debug level >Verbose

内容来源(Core Debug Level in ESP32 - iotespresso.com)

选择 Partition Scheme分区方案>No OTA(large APP)

/*****************************************************补充说明******************************************/

这个是指芯片发Bootloader,把数据加载到内存中运行时(读取数据和存储有关),选择不按默认来读数据。例如OTA(固件空中升级)从D1-D16读用户数据,默认(Default选项)的话可能读不到数据(为啥读不到?进一步解释,例如你是16位,你要装入一个8位的数据,你是能读取的,16个座位的公交车当然能坐8个人,但是16人能坐8座的车吗?不能啊。呐,你还要让他默认给你一辆8座的公交车吗?)。选No OTA就是不用他的默认配置,全都读。

那问你,啥是Bootloader?

 BootLoader是在操作系统内核运行之前运行的一段小程序。 其实Bootloader就相当于手机的bios ,通过这段小程序,进行硬件初始化,获取内存大小信息等,调整手机到适配状态。 所以Bootloader是很重要的,如果bootloader不能正常加载,手机就是砖头一个,无法正常启动和使用。

/**********************************************说明完了继续吧*******************************************/

 然后就配网成功了。

第五步,还可以试试下面这个 “GetChipID"例程。

你能在电脑的cmd下,ping 你模组ID,出数据也说明你都配置好了。

操作还是点→然后按下模组右边的黑色按钮4秒,等进度100%。打开你的串口监视器,会看到出数据了。

 也可看到你的设备ID。

如果你在上面第一个WIFI例程看到了你的ID=192.168.X.X那个,你去电脑的控制面板CMD中,输入”ping  192.168.X.X"就会出一堆数据,那说明你成功配置好了。

那么,这就完事了,祝大家玩的愉快,有问题下面留言交流。

这是我的笔记,未完待续。

有关手把手教你学ESP32开发-第一篇:ArduinoIDE+ESP32搭环境的更多相关文章

  1. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  2. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  3. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  4. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  5. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  6. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  7. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  8. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  9. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  10. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

随机推荐