前言

近年来,掌控板(英文名:mPython)在创客教育中应用越来越广泛。掌控板集成了 ESP32 高性能双核芯片,具备 WiFi 和蓝牙连接功能,同时在板子上又配置了丰富的传感器,最重要的是它是专门为国内编程教学而设计的,符合国内课堂使用的情况,再加上价格便宜,所以越来越多的做 STEAM 和创客的老师开始使用它了。

国内各大教育厂商和组织也推出了针对掌控板的教学编程软件,比如 Mind+、Mixly、mPython 等编程软件,这些软件大多以图形化编程为主,使用简单,可以轻松实现很多好玩的创意,从而可以让学生体验无穷的创作乐趣。以这些软件为基础,目前网上也有了大量关于掌控板的项目和课程。

但是针对掌控板普及教学而设计的软件,往往在功能上会有一些限制。另外,如果对掌控板的核心芯片 ESP32 不够了解的话,不方便对学到的知识进行迁移。比如网上有很多采用 ESP32 设计的开发板,在掌控板上学到的知识,能否用到这些 ESP32 的开发板上呢?

另外,在接触掌控板之前,大部分老师做创客教育基本都会采用非常流行的 Arduino 来进行,那么能否将 Arduino 上面学到的编程知识也迁移到掌控板呢?

实际上,这些知识都是可以迁移的,因此在有时间的情况下,我准备给大家分享一系列用 Arduino 代码对掌控板(ESP32)编程的教程:**用 Arduino 玩转掌控板(ESP32)系列**,旨在更多地从 ESP32 芯片的角度出发,学习 ESP32 模块的编程,然后应用到掌控板或其他基于 ESP32 的开发板上,让大家可以触类旁通。

在硬件选择上,本教程将以掌控板为主线,再搭配一些其他基于 ESP32 的学习开发板,比如 **NodeMCU-32S** 或 **DFRobot FireBeetle-ESP32**;在编程软件选择上,将以 Arduino 代码编程为主,个别案例也会同时分享一些 Mixly 或 Mind+ 或 mPython 等图形化编程软件的程序。

> 实际上 ESP32 芯片是 ESP8266 芯片的升级版,所以情况下,两者的代码也是兼容的,所以本教程提供的代码也尽可能做到通用,但是由于本人水平有限,难免有一些疏漏之处,还请大家多多提出批评改进意见,一起进步。

ESP32 概述

在介绍软件之前,先来简单介绍一下硬件。首先我们来看一下掌控板背后的主控芯片 ESP32。

ESP32 芯片是由我国的乐鑫公司继 ESP8266 芯片后推出的又一款集成 WiFi 功能的微控制器。它拥有比 ESP8266 更加强大的性能,可以用来开发更加复杂的应用。ESP32 芯片或模组具有下列特点:

  • - 处理器:Tensilica LX6 双核处理器(一核处理高速连接;一核独立应用开发)
  • - 主频:32 位双核处理器,CPU 正常工作速度为 80 MHz,最高可达 240 MHz
  • - SRAM:520KB,最大支持 8 MB 片外 SPI SRAM
  • - Flash:最大支持 16 MB 片外 SPI Flash
  • - WiFi 协议:支持 802.11 b/g/n/d/e/i/k/r 等协议,速度高达150 Mbps
  • - 频率范围:2.4~2.5 GHz
  • - 蓝牙协议:支持蓝牙 v4.2 完整标准,包含传统蓝牙 (BR/EDR) 和低功耗蓝牙 (BLE)
  • - 同时他还具备丰富的外设接口:比如 GPIO、ADC、DAC、SPI、I²C、I²S、UART 等常用接口一个不少

具体可以查看官方出品的功能框图:

有兴趣的读者可以去下面的掌控板官方 Wiki 对比一下掌控板的硬件参数:

https://mpython.readthedocs.io/zh/master/board/hardware.html

这些参数是不是跟基于 ESP32 芯片的掌控板差不多?另外上图中的 ESP32 引脚框图其实也和掌控板完全一样。

总结下来,ESP32 芯片主要具有高性能、低功耗、高度集成、体积小、性能稳定等优点。可以说性能是相当不错了,所以它才能支持 MicroPython 等比较耗性能的脚本语言。

关于 ESP32 的更多详细参数可以参考乐鑫官网:

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

常见 ESP32 开发板

如果在淘宝搜索 `ESP32`,可以看到很多开发板,如下图所示。除了掌控板之外,这些琳琅满目的开发板,我们到底该怎么选择呢?

针对本教程来说,其实这些板子都大同小异,大家可以自由选择。本教程主要采用了**掌控板**、DFRobot 出品的 **FireBeetle-ESP32**、安信可出品的 **NodeMCU-32S** 这 3 块学习板进行展开。其中掌控板是我们学习的主要器件,而 FireBeetle-ESP32、NodeMCU-32S 这 2 块板子,主要以配合讲解为主,方便让大家知道背后的原理。在本教程涉及的项目中,除了掌控板之外,我也会选择部分项目让大家看看在其他板子上运行的效果。选择这几块板子的原因是:一方面,在国内使用的比较多,中文资料比较全面;另一方面,他们都有相应的扩展板,方便后面学习的时候,外接各种传感器与执行器模块。

下图为**掌控板**的正面与反面,更多详细的资料可以查看掌控板官方帮助文档:https://mpython.readthedocs.io/zh/master/

下图为 DFRobot 出品的 **FireBeetle-ESP32**,更多详细的资料可以查看 DF 官网的 Wiki:

http://wiki.dfrobot.com.cn/index.php?title=(SKU:DFR0478)FireBeetle_Board-ESP32主板控制器V3.0

下图为安信可科技出品的 **NodeMCU-32S** 开发板,更多详细的资料可以查看安信可官网的 Wiki:

https://wiki.ai-thinker.com/esp32/boards/nodemcu_32s

这里需要注意的是,大部分 ESP32 系列的开发板,他们的工作电压都是 3.3 V,USB 口最高输入 5 V 电压,因此在使用时要注意选择正确的电压,以免烧坏板子,造成危险。后面的章节中,在具体接线时,也会再次强调。

编程语言选择

ESP32 的开发方式有很多种,下面列举几个常用的:

  • - 乐鑫官方 ESP-IDF,这是官方的首推的开发方式,能够最大限度发挥ESP32的性能,代价就是不方便或者说是开发不是那么高效;
  • - 乐鑫官方出品 Arduino core for the ESP32,官方出品的 Arduino 编程软件支持,上手简单,大部分编程语法和 Arduino 兼容,借助于 Arduino 生态,有非常丰富的资源可直接使用;
  • - 现在非常流行的 microPython,简单明了,功能强大,大部分编程语法和 Python 兼容,借助于 Python 生态,在音视频、图像处理、人工智能等方面有很大的优势;
  • - 图形化编程,比如 Mixly、Mind+、mPython X 等图形化编程软件,其实他们的底层也主要是基于 Arduino 模式或者 microPython 模式。

目前最适合广大中小学老师教学的,主要就是 Arduino 模式和 microPython 模式,因为针对掌控板使用 microPython 的课程已经比较多了,所以本系列的教程主要使用 Arduino IDE 进行学习。

软件准备

使用 Arduino 软件对掌控板编程,需要对 Arduino 软件做一些配置,我这里提供两种方法:

  • - 使用 Mixly 软件内置的 Arduino 软件,已配置好开发环境,使用简单,适合入门;
  • - 利用 Arduino 开发板管理器配置 ESP32(掌控板)开发环境,适合喜欢折腾的人。

这里比较推荐第一种方式,使用 Mixly 软件内置的 Arduino 软件,但是两种方法的安装方法我都会简要介绍一下。

### 使用 Mixly 内置版 Arduino

Mixly 的下载地址为:https://mixly.readthedocs.io/zh_CN/latest/basic/02Installation-update.html

安装方法不再赘述,可以直接参考上述链接。

Mixly 从 v1.0 版本开始,默认已经配置好了 ESP32(掌控板)的编程环境,直接打开 Mixly 内置的 Arduino 软件,编程时依次选择:`工具 → 开发板 → Arduino HandBit` 或者 `Arduino ESP32` 即可。 选择 `Arduino ESP32` 或 `Arduino HandBit` 都可以。其中 `Arduino ESP32`提供了 ESP32 通用的编程模块,而 `Arduino HandBit` 则是针对掌控板一些功能进行了进一步封装而已,如果懂得了掌控板(或 ESP32)背后的一些技术原理,选择任何一个都是可以的。当然在使用掌控板时,选择 `Arduino HandBit` 会稍微方便一些。

如果你想体验 Mixly 图形化编程,按照如下两图进行开发板选择即可。

### 自己配置 Arduino 开发环境

在 Arduino 中对 ESP32 或掌控板进行编程,前期准备稍微麻烦一些,但也不难。官方也提供了详细的教程。这里以 Windows 系统为例来介绍配置教程,macOS 或者 Linux 系统,过程基本一样,不再赘述。

首先安装最新版 Arduino IDE,下载网址:https://www.arduino.cc/en/Main/Software

下载完成后打开 Arduino 软件,依次点击菜单:`文件 → 首选项`,打开 Arduino 设置界面

在 Arduino 设置界面(首选项)中,在`附加开发板管理器网址`一栏,填入:

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

如下图所示:

然后在菜单栏中依次点开:`工具 → 开发板 → 开发板管理`,打开`开发板管理器`界面。

在`开发板管理器`上,搜索 `esp32`,可以看到 `esp32 by Espressif Systems`,点击右下角的安装,等待安装完成即可。这个过程可能比较慢,取决于网络,请耐心等待。如果安装失败,重新安装即可。

安装成功后,电机``工具 → 开发板``,就可以看到许多 ESP32 开发板的选项了,如下图所示:

小试身手

所有准备工作都已经完成了,我们来试试编写并上传第一个 Arduino 模式下的掌控板(ESP32)程序吧。

打开 Arduino 软件,在开发板中选择 **ESP32 Dev Module**,然后在代码编辑区域输入以下程序:

void setup() {  Serial.begin(115200);}void loop() {  Serial.println("Hello ESP32. Hello Arduino!");  delay(1000);}

> 1、开发板选项中 ESP32 Arduino 列表中所列的开发板,都是基于 ESP32 芯片的,除了引脚定义有一些差异外,其他差异不是很大,入门学习时可以忽略他们的差异,随便选一个,影响都不是很大,这里推荐选择 **ESP32 Dev Module** 即可。

>

> 2、如果使用的是 Mixly 内置的 Arduino 软件,为了方便大学学习,已经精简删除了大部分开发板选项,只留下几个选项,读者直接选择 **Arduino ESP32** 或 **Arduino HandBit** 即可。

然后选择正确的端口号,点击上传按钮,将程序上传到掌控板,当然你也可以上传到 FireBeetle-ESP32、NodeMCU-32S 等其他开发板上,看看效果是不是一样的。当 Arduino 软件界面下方出现如下图显示的 `Leaving... Hard resetting via RTS pin…`,即表示上传成功。

然后点击右上角串口监视器,修改对应的串口波特率为 115200,看看输出效果吧。这个程序主要实现了让掌控板每隔 1s 向串口打印输出一行 `Hello ESP32. Hello Arduino!` 字符串,你也可以修改程序中的打印内容,重新上传程序看看效果。

如果程序输出没有问题的话,恭喜你,你已经正式开始用 Arduino 学习掌控板之旅了!

总结

在这个章节中,我们主要学习了以下内容:

  • - ESP32 的基本知识;
  • - 了解了一些常见的基于 ESP32 的学习开发板;
  • - 学习了在 Arduino 中配置 ESP32 掌控板开发环境的方法;
  • - 在 Arduino 模式下编写了第一个掌控板程序。

arduino nano 蓝牙_用Arduino玩转掌控板(ESP32):ESP32概述与Arduino软件准备相关推荐

  1. arduino nano 蓝牙_掌控板IO接口编程入门 | 用Arduino玩转掌控板(ESP32)系列

    众所周知,掌控板在创客教育中用的非常广泛,它是一块基于 ESP32 的学习开发板.大家对掌控板编程,用的比较多的都是图形化编程的方式,比如 mPython.Mind+ 等.但是,既然掌控板是基于 ES ...

  2. arduino使用oled代码_用Arduino玩转掌控板(ESP32):蓝牙翻页笔(PPT 控制器)

    众所周知,掌控板在创客教育中用的非常广泛,它是一块基于 ESP32 的学习开发板.大家对掌控板编程,用的比较多的都是图形化编程的方式,比如 mPython.Mind+ 等.但是,既然掌控板是基于 ES ...

  3. 用Arduino玩转掌控板(ESP32):蓝牙翻页笔(PPT 控制器)

    众所周知,掌控板在创客教育中用的非常广泛,它是一块基于 ESP32 的学习开发板.大家对掌控板编程,用的比较多的都是图形化编程的方式,比如 mPython.Mind+ 等.但是,既然掌控板是基于 ES ...

  4. 用Arduino玩转掌控板(ESP32):Siri语音识别读取传感器数据→WebServer应用示例2

    众所周知,掌控板在创客教育中用的非常广泛,它是一块基于 ESP32 的学习开发板.大家对掌控板编程,用的比较多的都是图形化编程的方式,比如 mPython.Mind+ 等.但是,既然掌控板是基于 ES ...

  5. 用Arduino玩转掌控板(ESP32):不到100行代码实现Siri语音控制 → WebServer应用示例...

    众所周知,掌控板在创客教育中用的非常广泛,它是一块基于 ESP32 的学习开发板.大家对掌控板编程,用的比较多的都是图形化编程的方式,比如 mPython.Mind+ 等.但是,既然掌控板是基于 ES ...

  6. mpython掌控板_用mpython x玩转掌控板——微信小程序 遇上掌控板

    [情境导入] 掌控板可以通过便捷的wifi连接网络方式或无线AP功能与其他软件联通,在理解前面课程内容的基础上,这节课我们一起来了解一下如何运用微信小程序通过OneNET网络平台与掌控板物联,制作一个 ...

  7. mpython掌控板_用mpython x玩转掌控板——音乐律动

    [情境导入] 音乐在生活中有着很大的作用,就好像人们使用语言进行沟通一样,音乐已经在人们的日常生活中占据了重要的位置. 本节内容,让我们一起学习一下,如何使用掌控板来播放音乐? [任务描述] 播放掌控 ...

  8. arduino nano 蓝牙_基于Arduino的摩尔斯电码练习及无线收发报训练器

    摘要:本文介绍一款基于Arduino NANO开发的,带2.4G无线收发报功能的摩尔斯电码训练器的系统设计思路.发射端通过NANO板的外部中断引脚采集电键输入的脉冲PPM序列同时驱动喇叭播放电键音,然 ...

  9. arduino nano 蓝牙_贸泽开售结合蓝牙5.2与USB 2.0的 Nordic Semiconductor nRF52820多协议SoC...

    专注于引入新品并提供海量库存的电子元器件分销商贸泽电子 (Mouser Electronics) 即日起开售Nordic Semiconductor的nRF52820多协议片上系统 (SoC).此款S ...

最新文章

  1. linux xps 13 wifi,XPS13-9350安装linux以及网卡连接失败修复的临时方案
  2. JAVA程序设计----集合基础之Collection
  3. php生成网页按钮,JavaScript实现自动生成网页元素功能(按钮、文本等)_javascript技巧...
  4. python 下字符串格式时间比较
  5. Oracle数据库导入csv文件(sqlldr命令行)
  6. 拖动卡顿_教你4招,让你的ps永不卡顿
  7. 写了一段VBA代码后, Excel每次保存时都弹出警告:”此文档中包含宏、Activex控件、XML扩展包信息“(office 2007)
  8. MATLAB中if (0)
  9. C#窗体标准计算器(下) 初级新手请多担待。
  10. win10系统服务器管理器,win10服务管理器,详细教您Win10服务管理器怎样打开
  11. 开机出现recovering journal解决办法
  12. 可以下载《全程软件测试》样章电子版
  13. Ardunio开发实例-LM75温度传感器
  14. jquery开关灯案例_jQuery实现开关灯效果
  15. javascript-qrcode.js教程
  16. 苹果浏览器显示打不开改网页无法连接服务器,为什么苹果浏览器老是显示safari打不开该网页答案...
  17. 【LeetCode之栈和队列】:关于栈和队列经典的OJ题(用C语言实现,附图详解)
  18. 大数据——Hive分析项目案例
  19. 迪文触摸串口屏 实例应用(1)——安装编译和下载
  20. Android Treble 结构:Part 1 - 介绍

热门文章

  1. torch.log函数
  2. Ubuntu安装 到移动硬盘--操作系统随身携带
  3. cannot find -lcudart
  4. DELL N系列交换机/N3048交换机SSH配置
  5. 在linux将一些程序放到后台运行的方法(nohup/screen/daemonize)
  6. powerdesigner 同步mysql 报错_PowerDesigner技巧小结
  7. 宁波计算机软考培训机构,浙江宁波2019年下半年软考通过率约为25.7%
  8. spring入门详细教程(五)
  9. mysql-connector-net-6.7.4.msi,在ActiveReports中使用MySQL数据库
  10. 一次违反常规的Java大厂面试经历,你还看不懂吗?