ESP32 入门教学,不入门,不教学

640?wx_fmt=jpeg

1.

Internet of things (iot)这个概念非常火,物联网是什么?把所有物品通过射频识别等信息传感设备与互联网连接起来,实现智能化识别和管理。 物联网通过智能感知、识别技术与普适计算、泛在网络的融合应用,被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。


最常见的就是智能家居了,比如你拉屎,拉完后有个东西自己给你擦屁股,擦完屁股又自动给你冲马桶,然后你出来后自动给你洗手,这还不完,你拉完屎后躺床上看手机,手机弹出一个提示「先生,你今天21:20分在家里拉了3斤屎」。


我这次给大家介绍一个芯片,esp32,没有收过任何费用,就是纯技术分享,让初学者少踩点坑吧,我也是最近用这个芯片,觉得爽得一X。


这个芯片最大的优势就是便宜,便宜和易于开发让以前很多不敢想象的智能家居变成了可能,开发环境可以在windows下开发也可以在linux 环境下开发,而且对于嵌入式来说做了这部分对于网络蓝牙都有比较深刻的了解了,以后做其他系统开发也不会有太大难度。


2.

先介绍下如何搭建编译和烧录环境,我用的是最傻瓜的环境,我觉得这个也是最容易上手的,我们所有的功能核心都是代码,所以我觉得这部分你习惯就好。


https://wiki.ai-thinker.com/ai_ide_install


链接里面有一个百度网盘,没有密码的直接下载


https://pan.baidu.com/s/1skRvR1j#list/path=%2F


注意下载第 1 个,截图如下

640?wx_fmt=png

解压安装到 D 盘,里面有一个readme按照那个操作就好了,这个没有更简单的了。


设置好之后直接打开 eclipse 工程,就看到你的项目了,这时候你用的 sdk 是集成在压缩包里面的,肯定不是最新的,你要是做项目的话,就自己去乐鑫官网下载最新的 sdk 把这个目录下的 sdk 替换掉,别想整个不一样的名字再自己导入,替换名字是最快的,免得又出现奇葩的问题百度一天都解决不了。


然后在 esp-idf 上面右键,最下面有一个 properties 这个里面有设置,其中就是设置你要编译哪个项目

640?wx_fmt=png


然后设置 make menuconfig ,在esp-idf上面右键 make targets -> create 输入 mintty.exe -e make menuconfig

640?wx_fmt=png

然后继续上面的,在esp-idf上面右键 make targets -> create,输入 download 和 make flash

640?wx_fmt=png

上面搞定了之后,就可以 编译 ,烧录了,但是正常用 make flash 烧录可能有很多问题。所以我们需要另一个稳定点的工具来烧录,我这里就不扯皮那么多了,直接给出链接。


https://wiki.ai-thinker.com/esp_download


如何进入烧录模式,如何设置烧录分区的地址都有说明了,按照这个来搞就好了。给出个示例图片,给初学者一些参考吧。

640?wx_fmt=png

 

运行了 make menuconfig 或者修改了头文件的话,第一次编译时间就会慢很多,这时候你需要耐心等待,或者换一个台式电脑,台式电脑完爆笔记本这个不用再说了。


编译相关的一些命令

make menuconfig – 运行配置菜单,做过kernel开发的会非常熟悉.

make defconfig - 为所有的配置项设置默认值

make app 只编译app模块

make all 编译所有

make flash 编译并刷机

make clean – 清除编译产生的文件.

make monitor 查看串口输出

make erase_flash – 擦除ESP32上的整个Flash.

make partition_table 查看分区

make size - 显示Bin文件中各个部分的大小

make size-components -, size-files - 每个模块所占内存的大小,这个在项目代码膨胀后还是比较有用的。


3.

上面是第三方公司安信可集成的开发环境还有一些文档,想获取更专业的东西,还是要去官方网站,乐鑫官方网站提供了很多资料和文档给我们,我列举一下


中文的编程指南

https://docs.espressif.com/projects/esp-idf/zh_CN/latest/index.html


论坛,如果你是长期搞这个的话,注册论坛账号显得你会比较专业一些

https://www.esp32.com/


官网 sdk 下载,第一个就是 ESP32 的

https://www.espressif.com/zh-hans/support/download/sdks-demos


ESP32 技术规格书相关文档下载

https://www.espressif.com/zh-hans/support/download/overview


ESP32 概述

https://www.espressif.com/zh-hans/products/hardware/esp32/overview


开源一小步的 ESP32 入门指导

https://blog.csdn.net/qq_24550925/article/details/85933563


mqtt

如果你要用 mqtt 先看看你的 sdk 里面有没有下载这部分的组件,如果没有要用命令下载,参考这里

https://github.com/espressif/esp-mqtt/blob/master/README.md


4.

ESP32 是跑 freertos 系统,所以我准备了一本书籍,想学习这方面的同学可以下载来看看,不管是什么系统,都离不来进程,线程,有了进程和线程,就一定存在竞态和同步,嵌入式系统和安卓系统不一样,资源非常非常有限,所以你要去了解他的分区,要了解去如何裁剪,每加一个功能都要考虑消耗多少资源,等等。


书籍下载链接如下


https://pan.baidu.com/s/1LPvy6if-D5_0nUarqfM9Qg    


提取码:     odr1 


ESP32 的空中升级挺有意思的,它分了三个区域,factory ,A,B区域,factory是第一次默认烧录的区域,也就是出厂的程序,然后第一次空中升级会把固件写入A区域,然后重启后会运行A区域程序,这时候再进行空中升级会把固件写入B区域,这时候再重启的时候就运行B区域的代码,这样做可以保证在升级过程中断电还是可以保证原来的固件不会有问题。而且有一天觉得功能有问题,我还可以恢复出厂设置,跑factory分区的代码。这个有点像 android ,是不是有点一通百通?


5.

大家有什么问题可以加我交流,最近时间比较有限,而且微信消息太多,看不过来,最好加知识星球给我留言,当然你也可以认为这是一个推广,而且我做这部分也是刚开始阶段,可能有些东西帮不到你,只是希望有一个共同交流的平台,不想加知识星球的,有问题可以发邮件给我,多谢,微信可以聊天,最好不要直接涉及问题。

640?wx_fmt=jpeg


推荐阅读

和我一起探索嵌入式

我就随便BB一下

谁都能看懂的网络模型知识

我认识的一位前辈~


完,各位共勉,每天多开心一点~

觉得不错,帮忙转发一下,让更多的人看到我的小号~感激不尽~

640?wx_fmt=gif         

640?wx_fmt=jpeg





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

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

相关文章

opencv检测相交点_OpenCV:曲线的检测与提取-0

//寻找曲线 :void findLines(Mat &binaryImg, vector> &outLines){//八邻域vector neighborPtVec;neighborPtVec.push_back(Point(-1,-1));neighborPtVec.push_back(Point(0,-1));neighborPtVec.push_back(Point(1,-1));neighborPtVec.push_back(Point(1…

一个从华为离职的朋友

1、我在之前的很多文章里面都谈到了我有一个过硬的华为朋友,我很少去炫耀自己有多厉害,认识了谁谁,但是我非常在意那些跟自己有过交情的朋友,这些朋友不是说你离开了就失去了,也不是你落魄了就不能吹水了,今…

(原)PyTorch中使用指定的GPU

转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6836568.html PyTorch默认使用从0开始的GPU,如果GPU0正在运行程序,需要指定其他GPU。 有如下两种方法来指定需要使用的GPU。 1. 类似tensorflow指定GPU的方式,使用CUDA_VI…

机器学习_简单线性回归与多元回归方程原理推导_处理二值数据_最小二乘法解或梯度下降解多元回归方程(详细推导)以及Python代码实现_回归方程度量方式

下面的有些叙述基于我个人理解, 可能与专业书籍描述不同, 但是最终都是表达同一个意思, 如果有不同意见的小伙伴, 请在评论区留言, 我不胜感激. 参考: 周志华-机器学习 最小二乘法求解多元回归方程: https://blog.csdn.net/weixin_39445556/article/details/83543945 梯度下…

python逆序数的程序_计算逆序数(归并法)程序问题 (Python)

计算一个tuple里面的逆序数,用merge sort的办法。我写了以下代码,但是每次统计的时候,count设置为全局变量了:Count inversionInput: a sequence as tuple of integersOutput: The inversion number as an integer#Merge Sort Met…

手写Java线程池_超详细解说_绝对能运行_代码超详细注释

线程池 问题背景 只是单纯使用 new Thread(runnable).start(); 的方式创建线程, 将会导致严重的程序性能问题: 1.线程创建, 销毁需要消耗很大的系统资源; 2.虚拟机创建线程的数量是有限的; 2.线程调度切换也将使程序性能下降; 针对这些问题, 对线程数量进行管理, 有效地重复利…

分享一个非常 nice 的工具

最近有个问题,我需要经常使用远程连接工具,原因很简单,我需要控制另外一台电脑,我刚开始使用的是 teamviewer 这个软件,刚开始用的时间是非常爽的,不过有一天他给我来了个提示,说我的软件被商用…

Java并发性和多线程介绍目录

http://ifeve.com/java-concurrency-thread-directory/转载于:https://www.cnblogs.com/hanfeihanfei/p/6840359.html

js 正则是否包含某些字符串_JS 判断字符串中是否包含某个字符串(方法总结)...

我是想在js中判断字符串是否包含某个中文,将方法记录起来,这些方法也适用于数字、字母。实践是检验真理的唯一标准,还是要多多测试啊。String对象的方法方法一:indexOf()var groupName"小白A组";alert(groupName.indexO…

推荐周立功先生的一本书

1. 这篇文章主要是推荐周工的一本书,大家在学习嵌入式的时候,很多人不明白嵌入式系统和单片机的区别,又感觉自己对嵌入式有所了解,知道什么是嵌入式,文章里的很多见解我觉得对很多人都非常有帮助,今晚上周工…

图管够!灌篮高手、女儿国…阿里日_这帮程序员太会玩了!

5月10日是阿里一年一度的阿里日,这对阿里人来说,是个非常特别的日子。 那什么是阿里日呢?看看官方介绍: 它起源于2005年4月20日,是为了纪念2003年5月的“非典”时期阿里人的激情和信念。因此阿里巴巴决定,今…

复习Object类_日期时间类_System类_StringBuilder_包装类以及各类的细节

Object类_日期时间类_System类_StringBuilder_包装类以及各类的细节 主要内容 Object类Date类DateFormat类Calendar类System类StringBuilder类包装类 第一章 Object类 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都…

sql 整改措施 注入_SQL注入的漏洞及解决方案

一、sql注入漏洞1. SQL注入漏洞SQL注入攻击(SQL Injection),简称为注入攻击,SQL注入,被广泛用于非法获取网站控制权。这是在应用程序的数据库层中发生的安全漏洞。在设计程序中,忽略了对输入字符串中包含的SQL命令的检查&#xff…

check-lxdialog.sh: line 3: $'\r': command not found

问题 make all make[1]: Entering directory /cygdrive/d/AiThinkerIDE_V0.5/cygwin/home/aithinker/project/esp-idf/tools/kconfig /cygdrive/d/AiThinkerIDE_V0.5/cygwin/home/aithinker/project/esp-idf/tools/kconfig/lxdialog/check-lxdialog.sh: line 3: $\r: command…

Qt setMargin()和setSpacing() 的含义

mainLayoutnewQVBoxLayout(this); mainLayout->setMargin(30); //表示控件与窗体的左右边距 mainLayout->setSpacing(40); //表示各个控件之间的上下间距转载于:https://www.cnblogs.com/invisible2/p/6843159.html

复习Collection_迭代器使用细节_泛型_综合案例

Collection_迭代器使用细节_泛型_综合案例 主要内容 Collection集合迭代器增强for泛型 第一章 Collection集合 1.1 集合概述 集合:集合是java中提供的一种容器,可以用来存储多个数据。 集合和数组既然都是容器,他们之间的区别: 数组的…

esp32 coredump分析

写文章的原因 网上很多人写了 esp32 的coredump 分析,好吧,我看了下,都是从网上摘抄的,根本跑不通,我想写一个给大家有用的。 官网文章 https://esp-idf-zh.readthedocs.io/zh_CN/latest/api-guides/core_dump.html…

iphone mac地址是否随机_iOS8随机MAC地址功能:需要满足前提要求

苹果今年WWDC大会上透露过 iOS8 当中将具备一个连接 Wi-Fi 时随机生成 MAC 伪地址的功能,用来防范一些提供 Wi-Fi 的不法商家获取用户的隐私数据挪作它用。近日,一家名为 AirTight Networks 的移动安全技术研究公司发布了一份针对该功能的调查报告&#…

Kubernetes dashboard集成heapster

图形化展示度量指标的实现需要集成k8s的另外一个Addons组件: Heapster 。 Heapster原生支持K8s(v1.0.6及以后版本)和 CoreOS ,并且支持多种存储后端,比如: InfluxDB 、 ElasticSearch 、 Kafka 。 下载源包和images文件 下载地址h…

复习JavaFile类_递归_综合案例

复习File类_递归 主要内容 File类递归 第一章 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作, 这里需要注意一点File不能用于对文件内容进行操作, 对文件内容进行操作需要使用FileInputStream与Fi…