本帖最后由 qiaoweiyiyi 于 2019-2-15 13:58 编辑

概要

阿凯在本文中讲解了如何使用MicroPython-ESP32通过PCA9685模块控制舵机旋转角度。同时也涉及到了MicroPython-ESP32的I2C资源与API讲解。

PCA9685模块简介

1.jpg (103.35 KB, 下载次数: 32)

2019-2-15 13:51 上传

问题1:为什么我们要用到舵机驱动模块?

工作电压 首先ESP32的工作电压是3.3v,不能直接驱动额定电压在5v-7.4v的数字舵机,需要外接电源。

工作电流 舵机工作电流在100MA~1.5A,运动越快电流越大,可能会损伤USB口.

IO资源 一般的开发板IO资源有限,例如控制一个6DOF的机械臂,需要占用六个IO口,如果是蛛形机器人的话需要用的也就更多,所以使用舵机驱动板是一种节省IO资源的方式。

问题2:什么是PCA9685?

PCA9685是一款基于IIC总线通信的12位精度16通道PWM波输出的芯片,该芯片最初由NXP推出时主要面向LED开关调光,但就目前国内的形式来看,好像在被Arduino在舵机控制领域使用的更广泛。问题3:单片机与PCA9685如何通信?

2.jpg (42.65 KB, 下载次数: 32)

2019-2-15 13:51 上传

PCA9685模块与单片机通过I2C总线的方式进行通信。

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。每个PCA9685都可以分配一个地址位,通过I2C接口,一个单片机可以控制最多64个PCA9685舵机控制板。每个舵机控制板上可以搭载16个舵机。

详细的使用说明见奇果派工坊的这篇文章,写的很详细。

16路PWM舵机驱动板(PCA9685)的使用说明-奇果派工坊

MicroPython驱动PCA9685

Adafruit公司开源了MicroPython控制PCA9685模块的工程:

micropython-adafruit-pca9685

这里我们需要用到这个工程里面的两个文件:

micropython-adafruit-pca9685开发文档

其中关于舵机驱动的API看这里:Servo Driver

MicroPython-ESP32驱动PCA9685

上传库文件

接下来讲MicroPython-ESP32与PCA9685。

首先将micropython-adafruit-pca9685中的pca9685.py与servo.py保存到本地,并通过ampy上传到ESP32的文件系统中。

创建一个I2C对象

在ESP32里面可以自定义引脚为I2C接口,支持I2C的管脚编号为:

0, 2, 4, 5, 9, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27复制代码0号管脚还有2号管脚比较特殊,不推荐使用。

这里我们使用25号引脚作为SCL引脚(串行时钟线),26号引脚为SDA(串行数据线)引脚。

连接方式

GND -> ESP32的GND (外接电源与ESP32共地)

SCL -> ESP32 D25

SDA -> ESP32 D26

VCC -> ESP32 3.3V

V+ -> 5v外接电源复制代码

代码片段from machine import I2C,Pin

gpio_scl = 25

gpio_sda = 26

# 初始化I2C

scl_pin = Pin(gpio_scl)

sda_pin = Pin(gpio_sda)

i2c = I2C(scl=scl_pin, sda = sda_pin, freq=10000) # 创建I2C实例复制代码

其中SCL时钟频率支持范围 0 < freq ≤ 500000(Hz)创建Servos对象

从之前的servo.py引入Servos对象,注意不是MicroPython自带的Servo.

实例化的时候,传入我们上面创建的I2C对象,同时指定当前PCA9685模块的地址,默认是0x40, 你也可以通过焊接PCA9685模块上面的焊点修改地址编号。

from servo import Servos

servos = Servos(i2c, address=0x40)复制代码控制舵机的角度

设定舵机控制板上的舵机编号servo_idx, 有效范围为1-16

另外设置舵机舵机的角度degree。

TODO 查看源码 确认degree的范围

servos.position(servo_idx, degrees=degree)复制代码项目实战

micropython esp32驱动舵机_乐鑫ESP32-PCA9685舵机控制板与MicroPython-ESP32-电路城论坛 - 电子工程师学习交流园地...相关推荐

  1. 瑞芯微读取寄存器_经验-瑞芯微RK3399嵌入式开发板调试方法-电路城论坛 - 电子工程师学习交流园地...

    RK3399的CPU采用big.LITTLE大小核架构,双Cortex-A72大核+四Cortex-A53小核结构,对整数.浮点.内存等作了大幅优化,在整体性能.功耗及核心面积三个方面都具革命性提升. ...

  2. esp32 io速度_乐鑫科技发布 ESP32-S3 芯片,精准聚焦 AIoT 市场

    在物联网市场备受欢迎的 ESP32 是乐鑫在 2016 年推出的 Wi-Fi & Bluetooth/Bluetooth LE MCU,双核主频高达 240 MHz.ESP32 凭借其强大的计 ...

  3. esp32语音控制_乐鑫发布针对物联网嵌入式设备AI语音麦克风阵列开发板

    乐鑫信息科技(股票代码:688018)发布 AI 语音麦克风阵列开发板 ESP32-Korvo .这是一款针对物联网嵌入式设备的 AI 语音开发板,基于乐鑫的旗舰芯片 ESP32,搭载多麦克风阵列,能 ...

  4. 使用乐鑫官方资源搭建基于Arduino的ESP32的开发环境

    目录 一.配置IDE管理器 二.自动安装板支持包 三.手动安装板支持包 四.网盘的ESP32全系列基本库的板支持包 使用乐鑫官方库搭建Arduino开发环境. 乐鑫官方Github:GitHub - ...

  5. 乐鑫代理启明云端分享:用ESP32单片机控制LED教程示例

    提示:准备好开发板和LED灯 1.可以选择启明云端推出的ESP32开发板,上手简单 原因: 启明云端WT-ESP32-DevKitC V4开发板,这是一款基于ESP32的小型开发板,集WIFI+蓝牙方 ...

  6. 2021秋招笔试(1)_乐鑫

    文章目录 2021秋招笔试(1)_乐鑫 1.FIFO测试 **1)题目**: 2)分析 3)解析 2.按键识别.消抖 1)题目 2)分析 3.用Verilog 实现 CRC-8 的串行计算,G(D) ...

  7. ESP32烧录bin,乐鑫下载工具使用flash_download_tool

    ESP32的工程编译后,下载到MCU内需要烧录3个文件: /build/bootloader 目录下的 bootloader.bin. /build/partition_table 目录下的 part ...

  8. ESP32 入门笔记01:乐鑫ESP32-DevKitC开发板信息、开发环境搭建以及学资料准备

    文章目录 一.ESP32-DevKitC 开发板介绍 二.ESP32 开发环境 1. Arduino IDE 1.1 开发环境搭建步骤 1.2 实验:使用 Arduino IDE 将代码上传到 ESP ...

  9. 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

最新文章

  1. kmalloc/kfree,vmalloc/vfree函数用法和区别
  2. [改善Java代码]减少HashMap中元素的数量
  3. 给定某年日期及该年第一天是星期几然后显示该年的日历
  4. android xml通知栏权限配置,Android开发中 AndroidManifest.xml配置之service,receiver标签配置详解...
  5. python爬虫lxml xpath测试
  6. Java并发编程-ReadWriteLock读写锁
  7. 测试流程,测试用例模板介绍
  8. 设置cookie存活时间_js中如何设置cookie的保存时间呢?
  9. 最佳和最快的游戏 DNS 服务器
  10. EXT.JS 学习笔记
  11. 论文解读《ResRep: Lossless CNN Pruning via Decoupling Remembering and Forgetting》
  12. 登录onedrive显示无法连接服务器,Win10打不开OneDrive提示“连接到OneDrive时出现问题”怎么解决?...
  13. html常用语义化元素和全局属性整理
  14. 洛谷 | P1226 【快速幂】
  15. 程序设计综合实践——京东管理系统(C语言实现)
  16. wps一直显示正在备份怎么办_wps怎么设置和取消自动备份功能
  17. ORCAD学习系列之二——元器件与线的放置
  18. java不区分大小写查找字符串
  19. DeepLearning4J入门——让计算机阅读《天龙八部》
  20. Python中的可变和不可变类型

热门文章

  1. 关于如何获得使用[迅播播放器]播放过的电影的问题,及如何删除播放过的文件的解答(一)....
  2. html5网站粒子时钟,利用HTML5实现SVG多边形粒子时钟动画特效
  3. 〖Python零基础入门篇(55)〗- yaml文件的读取
  4. jfinal linux编码,JFinal 的初始化
  5. PicGo使用中遇到的问题
  6. Camtasia studio2023最新版录制编辑视频软件功能介绍
  7. 从零开始设计键值数据库(KEY-VALUE STORE)
  8. Kaggle 2022 年鉴发布!涵盖竞赛趋势 57场比赛方案汇总!
  9. Apache Camel - 3 - Camel小栗子(HTTP)
  10. 【python--教程】二进制运算符