ESP32概述與Arduino軟件準備 | ESP32開發之旅-Arduino版

封面

前言

近年來,掌控板(英文名:mPython)在創客教育中應用越來越廣泛。掌控板集成了 ESP32 高性能雙核芯片,具備 WiFi 和藍牙連接功能,同時在板子上又配置了豐富的傳感器,最重要的是它是專門爲國內編程教學而設計的,符合國內課堂使用的情況,再加上價格便宜,所以越來越多的做 STEAM 和創客的老師開始使用它了。

國內各大教育廠商和組織也推出了針對掌控板的教學編程軟件,比如 Mind+、Mixly、mPython 等編程軟件,這些軟件大多以圖形化編程爲主,使用簡單,可以輕鬆實現很多好玩的創意,從而可以讓學生體驗無窮的創作樂趣。以這些軟件爲基礎,目前網上也有了大量關於掌控板的項目和課程。

掌控板軟件生態

但是針對掌控板普及教學而設計的軟件,往往在功能上會有一些限制。另外,如果對掌控板的核心芯片 ESP32 不夠了解的話,不方便對學到的知識進行遷移。比如網上有很多采用 ESP32 設計的開發板,在掌控板上學到的知識,能否用到這些 ESP32 的開發板上呢?

另外,在接觸掌控板之前,大部分老師做創客教育基本都會採用非常流行的 Arduino 來進行,那麼能否將 Arduino 上面學到的編程知識也遷移到掌控板呢?

實際上,這些知識都是可以遷移的,因此在有時間的情況下,我準備給大家分享一系列用 Arduino 代碼對掌控板(ESP32)編程的教程:用 Arduino 玩轉掌控板(ESP32)系列,旨在更多地從 ESP32 芯片的角度出發,學習 ESP32 模塊的編程,然後應用到掌控板或其他基於 ESP32 的開發板上,讓大家可以觸類旁通。

在硬件選擇上,本教程將以掌控板爲主線,再搭配一些其他基於 ESP32 的學習開發板,比如 NodeMCU-32SDFRobot 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 等常用接口一個不少

具體可以查看官方出品的功能框圖:

esp32功能框圖

ESP32引腳框圖

有興趣的讀者可以去下面的掌控板官方 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,可以看到很多開發板,如下圖所示。除了掌控板之外,這些琳琅滿目的開發板,我們到底該怎麼選擇呢?

esp32-boards

針對本教程來說,其實這些板子都大同小異,大家可以自由選擇。本教程主要採用了掌控板、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%E4%B8%BB%E6%9D%BF%E6%8E%A7%E5%88%B6%E5%99%A8V3.0

FireBeetle_Board-ESP32_V3.0

下圖爲安信可科技出品的 NodeMCU-32S 開發板,更多詳細的資料可以查看安信可官網的 Wiki:

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

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 進行學習。

ArduinoLogo

軟件準備

使用 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 ESP32Arduino HandBit 都可以。其中 Arduino ESP32提供了 ESP32 通用的編程模塊,而 Arduino HandBit 則是針對掌控板一些功能進行了進一步封裝而已,如果懂得了掌控板(或 ESP32)背後的一些技術原理,選擇任何一個都是可以的。當然在使用掌控板時,選擇 Arduino HandBit 會稍微方便一些。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZdmITqyL-1582093078195)(https://ironpanda-1259781115.cos.ap-shanghai.myqcloud.com/2020-02-19/mixlyarduino.png)]

如果你想體驗 Mixly 圖形化編程,按照如下兩圖進行開發板選擇即可。

mixly-arduino-esp32

mixly-arduino-handbit

自己配置 Arduino 開發環境

在 Arduino 中對 ESP32 或掌控板進行編程,前期準備稍微麻煩一些,但也不難。官方也提供了詳細的教程。這裏以 Windows 系統爲例來介紹配置教程,macOS 或者 Linux 系統,過程基本一樣,不再贅述。

首先安裝最新版 Arduino IDE,下載網址:https://www.arduino.cc/en/Main/Software

下載完成後打開 Arduino 軟件,依次點擊菜單:文件 → 首選項,打開 Arduino 設置界面

arduino選擇首選項

在 Arduino 設置界面(首選項)中,在附加開發板管理器網址一欄,填入:

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

如下圖所示:

Arduino首選項設置

然後在菜單欄中依次點開:工具 → 開發板 → 開發板管理,打開開發板管理器界面。

選擇開發板管理器

開發板管理器上,搜索 esp32,可以看到 esp32 by Espressif Systems,點擊右下角的安裝,等待安裝完成即可。這個過程可能比較慢,取決於網絡,請耐心等待。如果安裝失敗,重新安裝即可。

開發板管理器安裝esp32

安裝成功後,電機工具 → 開發板,就可以看到許多 ESP32 開發板的選項了,如下圖所示:

arduino-esp32-board

小試身手

所有準備工作都已經完成了,我們來試試編寫並上傳第一個 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 ESP32Arduino HandBit 即可。

Arduino程序

然後選擇正確的端口號,點擊上傳按鈕,將程序上傳到掌控板,當然你也可以上傳到 FireBeetle-ESP32、NodeMCU-32S 等其他開發板上,看看效果是不是一樣的。當 Arduino 軟件界面下方出現如下圖顯示的 Leaving... Hard resetting via RTS pin…,即表示上傳成功。

Arduino上傳程序

然後點擊右上角串口監視器,修改對應的串口波特率爲 115200,看看輸出效果吧。這個程序主要實現了讓掌控板每隔 1s 向串口打印輸出一行 Hello ESP32. Hello Arduino! 字符串,你也可以修改程序中的打印內容,重新上傳程序看看效果。

Arduino串口監視器

如果程序輸出沒有問題的話,恭喜你,你已經正式開始用 Arduino 學習掌控板之旅了!

總結

在這個章節中,我們主要學習了以下內容:

  • ESP32 的基本知識;
  • 瞭解了一些常見的基於 ESP32 的學習開發板;
  • 學習了在 Arduino 中配置 ESP32 掌控板開發環境的方法;
  • 在 Arduino 模式下編寫了第一個掌控板程序。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章