【FastBond2阶段1——基于ESP32C3开发的简易IO调试设备】

简介: 【FastBond2阶段1——基于ESP32C3开发的简易IO调试设备】

基于ESP32C3开发的简易IO调试设备

1. 功能介绍

设计用户操作界面,该设备具备简单易用的操作界面,外加显示屏SSD1306和旋转编码器进行显示和控制,用户后期可进行二次开发WiFi或蓝牙连接电脑或手机监控。

多种数字和模拟信号的输入输出:用户可以选择不同的输入输出模式,并通过设备的操作界面进行设置。例如,用户可以选择某个GPIO口作为模拟输入引脚,然后通过设备的操作界面设置输入的电压值,以模拟外部信号的输入,达到调试简易传感器读取和执行器输出功能。

支持PWM输出、舵机控制特性:用户可以选择某个GPIO口作为PWM输出引脚,并通过设备的操作界面设置PWM输出的频率和占空比。用户还可以选择某个GPIO口作为舵机控制引脚,并通过设备的操作界面设置舵机的角度。

因此系统具有一定的电流输出能力、信号辨识能力和显示交互功能。

2. 主要元器件介绍

主要元器件包括主控板、传感器,执行器、相关外设四部分组成。

2.1 主控板:CORE ESP32-C3核心板

是基于乐鑫ESP32-C3芯片进行设计的一款开发板。 尺寸仅有21mm×51mm,板边采用邮票孔设计,板载 Wi-Fi/BLE天线,方便开发者在不同场景下的使用。核心板支持UART、GPIO、SPI、I2C、ADC、PWM等接口,可根据实际需要选用。

  1. 功能强应用广
    合宙ESP32-C3开发板高集成化设计,板载 Wi-Fi/BLE天线、4MB Flash,支持UART、GPIO、SPI、I2C、ADC、PWM等接口,满足大多数应用;板载CH343P芯片实现更高速率的USB转串口,固件下载更快更稳。
  2. 用料足信号好
    合宙ESP32-C3开发板采用4层PCB,板载2.4G天线,实测2.38到2.48GHz范围内的驻波比(VSWR)值比较好,能够有效的将发射功率辐射到无线空间。
  3. 多样化开发更便捷
    合宙ESP32-C3开发板目前支持:LuatOS/乐鑫IDF/Arduino/MicroPython等多样化开发方式,使用更便捷。LuatOS固件在社区大神梦程的努力下现已支持以下功能,其他内容正在不断更新

关键¥9.9包邮

ESP32-C3开发板开发参考指南:https://wiki.luatos.com/chips/esp32c3/index.html

2.2 传感器

2.2.1 旋转编码器:

  1. 硬件连接:旋转编码器通常包含两个输出引脚A和B,这两个引脚连接到ESP32C3的GPIO引脚上。此外,还需要将旋转编码器的电源引脚连接到ESP32C3的电源引脚上,以供其工作。
  2. 编码器工作原理:旋转编码器通过检测旋转方向和旋转的步数来实现位置检测。当旋转编码器旋转时,引脚A和B会产生脉冲信号,并且这两个信号的相位关系可以确定旋转的方向。此外,旋转编码器还可以通过检测脉冲信号的数量来计算旋转的步数。
  3. ESP32C3读取旋转编码器信号:ESP32C3的GPIO引脚可以配置为输入模式,从而可以读取旋转编码器的信号。通过调用相应的GPIO读取函数,可以获取引脚A和B上的脉冲信号,并且根据相位关系确定旋转的方向。
  4. 手动握手连接:在旋转编码器与ESP32C3建立连接之前,需要进行手动握手连接。这可以通过旋转编码器的旋转来实现。当旋转编码器旋转时,ESP32C3可以读取引脚A和B上的信号,并根据旋转的方向和步数来确定旋转编码器的初始位置。
  5. 自动握手连接:为了简化连接过程,可以通过编码器的初始位置来自动进行握手连接。在旋转编码器初始位置确定后,ESP32C3可以将该位置信息保存在内存中,以便后续的旋转编码器读取和使用。这样,在下次启动时,ESP32C3可以通过读取保存的位置信息来自动建立与旋转编码器的连接。
    总结起来,旋转编码器与ESP32C3的握手连接原理是通过读取旋转编码器的脉冲信号来确定旋转的方向和步数,并将其与ESP32C3进行同步。通过手动或自动握手连接,可以建立稳定的连接,实现旋转编码器的位置检测和控制。

2.2.2 模拟ADC:

ADC(Analog-to-Digital Converter)是一种用于将模拟信号转换为数字信号的电路或设备。ESP32-C3是一款低功耗、高性能的Wi-Fi和蓝牙微控制器芯片。

ADC与ESP32-C3握手连接的原理如下:

  1. ESP32-C3的GPIO引脚配置为ADC输入模式,并通过电路连接到外部的模拟信号源(例如传感器)。
  2. ADC模块从引脚接收模拟信号,并将其转换为数字信号。
  3. ESP32-C3的固件通过编程访问ADC模块,以获取转换后的数字信号值。
  4. 在握手连接过程中,ADC模块可以周期性地对模拟信号进行采样,并将采样结果传输给ESP32-C3。
  5. ESP32-C3可以通过读取ADC模块的输出寄存器获取最新的采样数据。
  6. ESP32-C3可以根据采样数据进行处理和分析,例如将其发送到云端服务器或用于控制其他设备。

需要注意的是,ADC与ESP32-C3的握手连接可能需要根据具体的硬件和软件设计进行配置和编程。上述原理提供了一个基本的框架,但具体实现取决于所使用的ADC和ESP32-C3的规格和要求。

2.2.3 GPIO接口:

GPIO接口是一种通用输入输出接口,用于连接外部设备和微控制器或单片机。ESP32C3是一款基于RISC-V架构的低功耗Wi-Fi和蓝牙SoC芯片,它具有丰富的GPIO接口,可以与外部设备进行连接。握手连接是指在两个设备之间建立通信连接之前的一系列交互步骤。下面是GPIO接口与ESP32C3握手连接的原理:

  1. 硬件连接:首先,将外部设备的GPIO引脚与ESP32C3的GPIO引脚进行物理连接。这可以通过将设备的输出引脚连接到ESP32C3的输入引脚,或将设备的输入引脚连接到ESP32C3的输出引脚来完成。
  2. 引脚配置:在ESP32C3上设置GPIO引脚的工作模式和电平状态。这可以通过编程方式来完成,通常使用开发板上的软件开发工具(如Arduino IDE)进行配置。
  3. 初始化:在ESP32C3上初始化GPIO接口和相关的通信模块。这包括设置引脚的输入/输出模式、电平状态、中断触发方式等。
  4. 握手信号:在通信的起始阶段,可以通过GPIO引脚发送握手信号进行连接确认。例如,ESP32C3可以发送一个特定的电平或脉冲信号,外部设备通过检测该信号来确认连接。
  5. 状态确认:ESP32C3可以通过读取外部设备的GPIO引脚状态来确认连接是否成功建立。这可以通过检测外部设备发送的握手信号或其他状态信号来实现。
  6. 数据传输:一旦握手连接成功建立,ESP32C3和外部设备可以通过GPIO接口进行数据传输。这可以通过读取和写入GPIO引脚的状态来实现。

需要注意的是,具体的GPIO接口和握手连接的原理可能会因外部设备的不同而有所差异。因此,在实际应用中,需要根据外部设备的规格和通信协议来进行具体的接口配置和握手连接设置。

2.3 执行器

2.3.1 WS2812:

WS2812是一种常见的RGB LED灯带,它具有内置的控制芯片,可以通过单一的数据线进行控制。ESP32C3是一款基于RISC-V架构的低功耗Wi-Fi和蓝牙SoC芯片,它可以与WS2812灯带进行连接和控制。

下面是WS2812与ESP32C3握手连接的原理:

  1. 硬件连接:首先,将WS2812灯带的数据线(通常是DIN引脚)与ESP32C3的一个GPIO引脚进行物理连接。此外,还需要将WS2812的电源线(VCC引脚)和地线(GND引脚)连接到适当的电源和地线上。
  2. 引脚配置:在ESP32C3上设置GPIO引脚的工作模式和电平状态。这可以通过编程方式来完成,通常使用开发板上的软件开发工具(如Arduino IDE或ESP-IDF)进行配置。对于WS2812,需要将所选的GPIO引脚配置为输出模式。
  3. 初始化:在ESP32C3上初始化WS2812控制器。这可以通过使用相应的库或驱动程序来完成。通常,需要指定连接的GPIO引脚和WS2812灯带的数量。
  4. 握手信号:WS2812灯带不需要显式的握手连接步骤。它使用一种特定的数据协议,即时传输数据。ESP32C3可以通过向WS2812发送特定格式的数据信号来与其进行通信。
  5. 数据传输:一旦初始化完成,ESP32C3可以通过发送数据信号来控制WS2812灯带的颜色和亮度。数据信号由一系列时间间隔组成,其中每个时间间隔代表一个比特位。根据时间间隔的长短,WS2812会解析数据并相应地控制每个RGB
    LED的颜色。

需要注意的是,WS2812与ESP32C3的连接原理主要涉及硬件连接和数据传输的设置。具体的连接和控制步骤可能会因使用的库或驱动程序而有所不同。因此,在实际应用中,需要参考WS2812和ESP32C3的规格和文档,以确保正确的连接和控制方式。

2.3.2 90舵机:

90舵机是一种常见的舵机,用于控制机械装置的角度。ESP32C3是一款基于RISC-V架构的低功耗Wi-Fi和蓝牙SoC芯片,它可以与90舵机进行连接和控制。

下面是90舵机与ESP32C3握手连接的原理:

  1. 硬件连接:首先,将90舵机的信号线(通常是控制线)与ESP32C3的一个GPIO引脚进行物理连接。此外,还需要将90舵机的电源线(通常是VCC引脚)和地线(通常是GND引脚)连接到适当的电源和地线上。
  2. 引脚配置:在ESP32C3上设置GPIO引脚的工作模式和电平状态。这可以通过编程方式来完成,通常使用开发板上的软件开发工具(如Arduino IDE或ESP-IDF)进行配置。对于90舵机,需要将所选的GPIO引脚配置为输出模式。
  3. 初始化:在ESP32C3上初始化舵机控制器。这可以通过使用相应的库或驱动程序来完成。通常,需要指定连接的GPIO引脚和舵机的参数,如舵机的最小角度、最大角度和初始位置。
  4. 握手信号:90舵机通常不需要显式的握手连接步骤。它通过接收特定的脉冲信号来控制角度。ESP32C3可以通过向舵机发送特定宽度的脉冲信号来控制其角度。通常,一个周期的脉冲信号的宽度范围是500-2500微秒,其中1500微秒表示中间位置。
  5. 数据传输:一旦初始化完成,ESP32C3可以通过发送脉冲信号来控制90舵机的角度。通过改变脉冲信号的宽度,可以控制舵机的位置。较小的脉冲宽度将使舵机转到最小角度,较大的脉冲宽度将使舵机转到最大角度。

需要注意的是,90舵机与ESP32C3的连接原理主要涉及硬件连接和脉冲信号的设置。具体的连接和控制步骤可能会因使用的库或驱动程序而有所不同。因此,在实际应用中,需要参考90舵机和ESP32C3的规格和文档,以确保正确的连接和控制方式

2.3.3 SSD1306:

SSD1306是一种常见的OLED显示屏,用于显示图形和文本。ESP32C3是一款基于RISC-V架构的低功耗Wi-Fi和蓝牙SoC芯片,它可以与SSD1306显示屏进行连接和控制。

下面是SSD1306与ESP32C3握手连接的原理:

  1. 硬件连接:首先,将SSD1306的SCL引脚(时钟线)与ESP32C3的一个GPIO引脚进行物理连接。同时,将SSD1306的SDA/SCL引脚(数据线)与ESP32C3的另一个GPIO引脚进行物理连接。此外,还需要将SSD1306的电源线(通常是VCC引脚)和地线(通常是GND引脚)连接到适当的电源和地线上。
  2. 引脚配置:在ESP32C3上设置GPIO引脚的工作模式和电平状态。这可以通过编程方式来完成,通常使用开发板上的软件开发工具(如Arduino IDE或ESP-IDF)进行配置。对于SSD1306,需要将所选的GPIO引脚配置为输出模式,并设置适当的电平状态。
  3. 初始化:在ESP32C3上初始化SSD1306显示屏。这可以通过使用相应的库或驱动程序来完成。通常,需要指定连接的GPIO引脚和显示屏的参数,如显示屏的分辨率和通信协议。
  4. 握手信号:SSD1306使用I2C或SPI协议与ESP32C3进行通信。对于I2C协议,ESP32C3作为主设备发送命令和数据到SSD1306作为从设备。对于SPI协议,ESP32C3通过发送时钟和数据信号来与SSD1306进行通信。具体的握手连接步骤和协议细节将取决于所选择的通信协议。
  5. 数据传输:一旦初始化完成,ESP32C3可以通过发送命令和数据来控制SSD1306显示屏的内容。根据所选择的通信协议,需要发送特定格式的数据包或字节序列。这些数据可以包括要显示的图形、文本和其他相关信息。

需要注意的是,SSD1306与ESP32C3的连接原理主要涉及硬件连接和通信协议的设置。具体的连接和控制步骤可能会因使用的库或驱动程序而有所不同。因此,在实际应用中,需要参考SSD1306和ESP32C3的规格和文档,以确保正确的连接和控制方式

2.4 相关外设

此部分是电源以及外壳设计制造流程

设计ESP32C3拓展板

3. 设计思路

项目地址:https://www.digikey.cn/schemeit/project/detail/4d7b30803c3c47a3877ec71aa55871cd

得捷电子的Scheme-it工具融合了原理图、框图和流程图绘制等功能,支持多种格式导出。并且,得捷电子提供原理图kicad格式导出的功能,同步导出对应器件的封装,减少查找封装的麻烦。Scheme-it无需专门下载安装,在浏览器在线运行,上手速度很快。这里我非常迅速画了系统的方案框图:

接下来就是一步一个脚印把模块调通,最后进行解耦实验,有机会就用3D打印机打印一个外壳。如系统设计流程图所示

4. 心得体会

可以用于FastBond2活动主题4 - 测量仪器(单片机开发测试领域),或者用于单片机简单应用开发教育等领域。

这次fastbond2活动提供了How to make自主设计的机会,而且给到各种技术支持,非常值得大学生们来参加活动,这个不是非常卷(立创那个都被挤掉啦!)

恰好学以致用,为后面开展大型系统项目开发解耦奠定基础。今后有机会,将会继续尝试scheme-it工具的使用。目前逐步熟悉了kicad原理图,还需阶段二实物验证阶段,我会用博客和视频慢慢记录这一次次有趣的开发过程。


目录
相关文章
|
4月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
59 0
|
4月前
|
传感器 监控 物联网
FastBond2阶段2——基于ESP32C3开发的简易IO调试设备
FastBond2阶段2——基于ESP32C3开发的简易IO调试设备
59 0
|
2月前
|
传感器 编解码 C语言
【软件设计师备考 专题 】IO设备、通信设备的性能,以及基本工作原理
【软件设计师备考 专题 】IO设备、通信设备的性能,以及基本工作原理
38 1
|
6月前
|
Windows
2.6 Windows驱动开发:使用IO与DPC定时器
本章将继续探索驱动开发中的基础部分,定时器在内核中同样很常用,在内核中定时器可以使用两种,即IO定时器,以及DPC定时器,一般来说IO定时器是DDK中提供的一种,该定时器可以为间隔为N秒做定时,但如果要实现毫秒级别间隔,微秒级别间隔,就需要用到DPC定时器,如果是秒级定时其两者基本上无任何差异,本章将简单介绍`IO/DPC`这两种定时器的使用技巧。首先来看IO定时器是如何使用的,IO定时器在使用上需要调用`IoInitializeTimer`函数对定时器进行初始化,但需要注意的是此函数每个设备对象只能调用一次,当初始化完成后用户可调用`IoStartTimer`让这个定时器运行,相反的调用`I
41 0
2.6 Windows驱动开发:使用IO与DPC定时器
|
8月前
|
算法 Linux C语言
Linux驱动IO篇——ioctl设备操作
Linux驱动IO篇——ioctl设备操作
|
9月前
|
前端开发 API 开发工具
阿里云oss开发实践:大文件分片、断点续传、实时进度 React+Node+Socket.IO
阿里云oss开发实践:大文件分片、断点续传、实时进度 React+Node+Socket.IO
874 1
|
IDE 开发工具 芯片
PIC 16F18系列单片机开发 IO口配置与stm32的区别
PIC 16F18系列单片机开发 IO口配置与stm32的区别
PIC 16F18系列单片机开发 IO口配置与stm32的区别
|
23天前
|
存储 缓存 安全
Java 中 IO 流、File文件
Java 中 IO 流、File文件
|
6天前
|
Java Unix Windows
|
2天前
|
存储 Java Linux
【Java EE】 文件IO的使用以及流操作
【Java EE】 文件IO的使用以及流操作