PKUMakers

 找回密码
 立即注册加入
搜索
查看: 17532|回复: 3

【电子】ESP32学习资料

[复制链接]

4

主题

7

帖子

43

积分

版主

Rank: 7Rank: 7Rank: 7

积分
43
发表于 2017-10-28 23:25:50 | 显示全部楼层 |阅读模式
本帖最后由 创客小笨蛋 于 2017-10-29 00:12 编辑

ESP32概述

ESP32是一款高性价比的单片机,更板载了蓝牙和WIFI,能够制作非常多有意思的电子制作!其性能简要叙述如下:

双核32位,最高主频240MHz
蓝牙v4.2完整标准(含BLE Bluetooth Low Energy)
WIFI 802.11 b/g/n/e/i 150Mbps
520K SRAM + 448K ROM + 4MB Flash
4*SPI,2*I2S,2*I2C,3*UART
12bit 18通道ADC + 8bit 2通道DAC

开发板仅仅39元,比STM32F1系列的一些开发板还要便宜,邮票孔版更是只要26元,即使不使用蓝牙和WIFI,作为一款高性能处理器也是妥妥的~

废话不多说,学习资料不断更新~

ESP32尝鲜套装(本内容没有在20171028活动中涉及,其操作相对简单)

使用Arduino开发,详见https://github.com/espressif/arduino-esp32
但笔者认为Arduino只能开发相对简单的程序,大型的工程不如Make的功能强大,于是......下面高能来袭!

esp-idf开发环境

使用Linux开发,配置交叉编译环境,并在命令行使用make的一系列功能实现高级编程

首先是虚拟机的安装:百度查找VirtualBox可以进入下载页面,以及可以百度Ubuntu下载最新版或使用http://releases.ubuntu.com/16.04/ubuntu-16.04.3-desktop-amd64.iso下载16.04长期支持版。(64位需要虚拟化支持,详见疑难解答)


(内容全部采自https://github.com/espressif/esp-idf)查看此链接的内容,阅读README.md的内容。其中Setup步骤的连接https://esp-idf.readthedocs.io/en/latest/get-started/linux-setup.html跟着一步步做就可以配置好整个环境!

由于在20171028活动中发现大家对Linux操作不是很了解,可以去http://www.cnblogs.com/laov/p/3541414.html或百度查找自己想要的功能。
Linux的水很深,但是配置环境需要用到的命令不算多,我在这里先写一些会用到的命令和技巧

系统技巧(适用Ubuntu,推荐安装英文版)
  • Ctrl+Alt+T:打开一个Terminal终端
  • Alt+Tab:切换不同的应用
  • Alt+`(Tab上面的那个键):切换同一个应用的不同窗口(多个终端之间切换)
  • 命令行里使用Tab进行自动补全,2次敲击Tab可以列出可能的补全项


命令行
  • cd <路径+文件夹名>:跳转到文件夹内
  • ls:显示当前文件夹内的内容,如果"ls -l"则显示权限、拥有者、修改日期等信息,"ls -a"则显示所有文件(包括隐藏文件,比如.profile),当然也可以"ls -al"!
  • mkdir <文件夹名>:创建一个文件夹
  • rm -r <文件夹名> 或 rmdir <文件夹名>:删除文件夹,不同的是前者可以删除整个文件夹的内容(r是recursive),而后者只能删除空文件夹;有时候需要强制删除而不管警告,则用"rm -rf <文件夹名>"注意:此操作比较危险,甚至会强制删除系统文件,请谨慎操作
  • ls /dev/tty*:显示所有的tty设备;如果我们的设备正常连接,应该显示有ttyUSB0设备,如果没有请参阅后文的疑难解答
  • sudo chmod 666 dev/ttyUSB0:给串口设备分配所有用户的读写权限emmmmmm当然你也可以sudo make flash了。至于为什么是666,请查看"ls -l"的内容"-rw-rw-rw-",如果是666,6的二进制是(110)2,也就是rw-:可读可写不可执行,三个6意味着对于系统的所有用户都是可读可写不可执行的。
  • tar -xf <路径+文件名>:解压和解打包tar,gz,bz2等等很多格式的包到当前文件夹下,但不能用于.zip文件!
  • unzip <路径+文件名>:解压.zip文件到当前文件夹下
  • make menuconfig:必须在工程目录下执行(也就是有Makefile文件的那个目录,而不是main文件夹里),用来进行设置
  • make -j4:编译,-j后面的数字是开几个线程跑,笔者为4核m3处理器,使用-j4
  • make flash:通过串口将程序烧录到单片机上,此处会出现若干问题,详见疑难解答
  • make monitor:烧录后想要监测运行时的状态和Log,则需要使用monitor。此程序下Ctrl+C是不能退出的,需要Ctrl+]才能退出;另外有个小窍门:使用编辑器修改完代码后可以直接按Ctrl+T;Ctrl+F(先后顺序),程序会重新增量编译并烧录!开发过程能够节省时间


快速开发框架

此框架为笔者根据esp-idf的examples样例改写和添加代码完成,此框架可以直接烧录来演示:手机(或电脑)和ESP32在同一网络下,使用make monitor查看ESP32获得的IP地址,在手机上输入其IP:http://192.168.xx.xx可以返回一个Hello World!,当然,这个example里面也能做到,但是笔者添加了更方便的编程框架:在手机上输入http://192.168.xx.xx/test.html,会看到一个比较精美的画面,有两个按钮turnOnLight和turnOffLight,可以点击按钮来实现对开发板上的蓝色LED灯进行控制的目的。

下面对框架做简单的解释
  • ESP32运行交叉编译过的机器码
  • HTML和Javascript是写在文件里的,ESP32看到的只是字节数组,而手机收到了这些数据才解析HTML和运行Javascript(也就是说HTML文件可以本机调试而不必每次都烧录再调试)
  • main文件夹下的.c文件里:main.c是主函数,简单应用不需要改写;httpd.c是开发需要编程的主要文件,它的下半部分不需要改动,只需要处理util的命令(开关灯的指令,以及你的自定义指令)以及向数组里添加新的HTML或者其他(图片、JS、css)文件的指针(仿照已写的部分就可以)
  • main文件夹下的component.mk管理着需要加入到机器码中的字节串,也就是我们的HTML文件,写了新的HTML只需要在这里面加就好了,httpd.c里面会有嵌入汇编来获取字节串的首尾指针

疑难解答


  • make flash:找不到设备:如果是virtualBox,在设备->USB->里面选中CP2102的那个设备,这样就会转接到Ubuntu的系统里面来了
  • make flash:Permission Denied:没有权限,执行sudo chmod 666 dev/ttyUSB0修改权限即可
  • make monitor:不断重启,并且发现有一句“Brownout Detected”,这意味着系统的供电能力不足,可以尝试外部供电。



回复

使用道具 举报

0

主题

1

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2017-10-29 14:54:07 | 显示全部楼层
供电不足解决不了怎么办。。外部供电也没用
回复 支持 反对

使用道具 举报

25

主题

34

帖子

194

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
194
发表于 2017-10-29 23:57:32 | 显示全部楼层
caohaowei 发表于 2017-10-29 14:54
供电不足解决不了怎么办。。外部供电也没用

比较奇怪呀,是不是因为你那块ESP32供电模块有问题?
回复 支持 反对

使用道具 举报

4

主题

7

帖子

43

积分

版主

Rank: 7Rank: 7Rank: 7

积分
43
 楼主| 发表于 2017-10-30 15:49:26 | 显示全部楼层
caohaowei 发表于 2017-10-29 14:54
供电不足解决不了怎么办。。外部供电也没用

你观察一下在Brownout之前是不是有个换色字体的Calibration Failed,那个我猜测是因为没有校准自动重启了,你尝试make的时候使用make all,然后再试一下;如果再不行重复几次,我有一片就是重新烧了几次后就好了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册加入

本版积分规则

Archiver|手机版|小黑屋|北京大学创客空间

GMT+8, 2020-10-23 19:49 , Processed in 0.034409 second(s), 18 queries .

快速回复 返回顶部 返回列表