《物联网导论:Arduino实例》全套教学课件_第1页
《物联网导论:Arduino实例》全套教学课件_第2页
《物联网导论:Arduino实例》全套教学课件_第3页
《物联网导论:Arduino实例》全套教学课件_第4页
《物联网导论:Arduino实例》全套教学课件_第5页
已阅读5页,还剩566页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章物联网与工业物联网概述第1章

物联网与工业物联网概述第2章

搭建物联网开发环境第3章GPIO接口第4章

模拟量采集第5章

常用接口总线分析第6章

联网第7章

物联网应用综合案例第8章EDA第9章Arduino基础语法第10章

辅助资料全套可编辑PPT课件目录CONTENT01物联网的概念02物联网的体系框架03物联网的应用领域04物联网的发展趋势05工业物联网简介物联网的概念01物联网的概念

01比尔·盖茨在《未来之路》中预言了物联网的雏形,提出未来物品将通过网络实现智能化连接。1995年国际电信联盟(ITU)扩展了物联网的概念,提出“任何时间、任何地点、任何物体互联”的愿景。2005年美国麻省理工学院提出EPC系统和物联网的初步定义,强调RFID与互联网的结合。1998-1999年将物联网定义为未来互联网的一部分,强调自配置、动态化和全球互联。欧盟框架物联网的概念01物联网的概念物联网的定义技术层面扩展性通过传感器采集数据,利用无线通信传输至网络,后端进行数据分析与决策,最终实现对物理世界的智能控制。

可结合区块链、AI、AR、机器人等前沿技术,形成“物联网+”的融合生态。01物联网的概念与计算机体系结构的类比物联网的核心研究领域是感知层,即传感器及传感器网络的开发与应用。以冯·诺依曼架构(指令与数据统一存储)和哈佛架构(指令与数据分离存储)为例,说明计算机输入方式从早期纸带、键盘发展到传感器网络,推动了物联网作为独立学科的出现。01物联网的概念物联网是从RFID应用逐步演化的综合性技术系统,以感知层为基础,结合通信与数据处理技术,实现物物互联与智能控制,同时与计算机科学的发展紧密关联。其跨学科特性使其成为现代信息技术的重要分支物联网的体系框架02物联网的体系框架物联网是一个集成创新技术的综合系统。按照信息生成、传输、处理和应用的原则,可将物联网划分为感知层、网络层和应用层。图1-1所示为物联网的三层结构。021.感知层物联网的感知层是其底层结构,作为物理世界与信息世界的桥梁,通过RFID、传感器网络等技术赋予物体感知和表达的能力,实现物体参数的识别与管理。随着智能手机、可穿戴设备等互联网电子产品的普及,信息生成和传输方式呈现多样化,这一特征使物联网区别于其他网络。物联网的体系框架02物联网的体系框架根据不同应用场景选择合适的网络技术组合,是实现物联网高效无线传输的关键。2G/3G/4G/5G覆盖广但成本高、功耗大,适用于高带宽场景,但难以在持续供电受限的环境中使用。01短距离低功耗技术(WiFi、蓝牙、ZigBee)适用于个人电子设备互联和工业控制等场景。03WiMax(IEEE802.16)提供城域高速数据传输,适合大范围覆盖需求。

02远距离低功耗技术(LoRa、NB-IoT)适合智慧城市、数字乡村等广域低速率应用。042.网络层网络层是物联网的核心,负责将感知层数据接入互联网,并提供数据传输、交换和信息整合服务。它依托多种无线网络技术,包括:

02物联网的体系框架3.应用层应用层利用经过分析、处理、挖掘的感知信息数据为用户提供丰富的服务,实现智能化感知与识别,精准定位与溯源,实时监控和管理。

应用支撑平台子层支持跨行业、跨应用、跨系统之间的信息协调、共享、互通,包括公共中间件、信息开放平台、云计算平台和服务支撑平台。应用服务子层包括智慧城市、智慧医疗、智能交通、智能家居、工业控制等行业应用。物联网的应用领域03物联网的应用领域1.3.1智能交通结合物联网、GIS、GPS等技术,实现智能调度、电子站牌、IC卡收费及BRT管理。乘客可实时查询公交到站时间和最佳换乘方案。

(1)智能公交系统12通过传感器、摄像感应等技术实时监测车位,并将信息反馈至管理平台,整合周边停车数据,帮助车主快速找到车位。(2)智能停车场智能交通利用信息技术、通信技术、电子传感、控制及计算机技术集成高效的地面交通管理系统。

03物联网的应用领域1.3.2智能家居智能家居通过整合计算机技术、网络通信和ZigBee无线技术,将安防、灯光控制、家电管理、环境调节等子系统有机连接,实现个性化、网络化的智能管理。用户可通过手机、电脑远程操控家居设备,如提前开启空调、热水器,到家时自动触发灯光、门锁和安防系统。室内可通过遥控器设置场景模式,如阅读或浪漫氛围,并集中控制窗帘、音响、水温等。智能家居还支持可视通话、远程监控及访客拍照功能,让用户随时随地掌握家中情况,提升生活便利性和安全性,打造以人为核心的舒适家居体验。03物联网的应用领域1.3.3智能工业智能工业是通过将信息技术、网络技术和智能技术融入工业领域,赋予工业“智慧”的综合性技术体系。其核心在于利用计算机技术模拟人类在制造和产品使用中的智力活动(如分析、推理、决策等),部分替代专家脑力劳动,实现知识密集型生产和自动化决策。矿业安全监测工业仪表远程监控多模态数据融合中科院计算所通过无线传感器节点构建井下无线网络,实时传输矿工位置、环境数据及语音信号,提升安全管理效率。工业无线识读装置通过图像传感器拍摄并识别传统仪表盘读数,经无线网络传输至监控中心,实现仪表数据的远程自动化采集。结合图形、声音等多类型传感器数据,从多维度感知工业场景,增强环境监测的全面性和准确性。03物联网的应用领域1.3.4智能物流智能物流是物联网技术在物流领域的应用,通过先进的信息管理、处理和采集技术,优化货物从供应者到需求者的全流程,包括流通加工、仓储、运输等环节。其目标是提升服务效率、最大化利润,并减少资源消耗,实现高效、可持续的物流管理。03物联网的应用领域智能物流代表了物流信息化的发展方向,推动现代物流业向智能化、高效化迈进。上海浦菱储运有限公司利用Internet和GPS/GSM技术,实时监控车辆位置,并与驾驶员通信,客户可通过系统查询物流信息。01传感芯片与智能监控在商品中植入传感节点,实时跟踪供应链各环节(生产、运输、销售等),结合GIS/GPS数据构建高效物流网络。0203物联网的应用领域智慧医疗智慧医疗是通过健康档案区域信息平台和物联网技术,实现患者、医务人员、医疗机构及医疗设备间的互联互通,推动医疗信息化和智能化发展。其核心应用包括医院耗材管理、药品追踪溯源和血液安全管理等。例如,在血液安全管理中,通过集成RFID芯片与温度传感器实时监测血液存储环境,确保运输和储存过程的可追溯性。在药品管控方面,RFID技术用于限制特殊药品的取用,并记录护士的用药情况,提升管理透明度和纠纷处理依据。1.3.5智慧医疗03智慧医疗结合无线网络、条码、移动计算等技术,优化诊疗流程,提高服务效率和质量,实现无线监护和医疗资源共享,从而降低医疗成本,推动医疗行业的数字化升级。物联网的应用领域物联网的发展趋势04物联网的发展趋势1.4.1技术发展趋势AI赋能物联网,增强设备自主决策能力,实现智能优化(如智能家居自动调节环境)。未来,AI与物联网深度融合将推动技术向更高层次发展。随着物联网设备激增,传统中心化计算难以处理海量数据。边缘计算将任务移至设备边缘,降低延迟、提升效率。未来,云边协同架构将为物联网提供更高效灵活的计算支持。5G技术为物联网提供高速、低延迟的数据传输,赋能实时大数据处理和多样化应用。未来,5G将与物联网深度融合,推动各领域创新发展。AI与物联网的结合边缘计算的崛起1325G与物联网的深度融合04物联网的发展趋势1.4.2应用发展趋势智能家居和智慧城市将快速发展。智能家居通过物联网技术实现设备远程控制,提升生活智能化;智慧城市借助物联网优化基础设施管理与服务。智能家居与智慧城市的快速发展1工业物联网为工业发展重要方向。引入物联网技术,工业企业可智能化改造和自动化升级生产,提升效率和降低成本。设备、传感器互联互通,实时监测生产数据并智能分析,提升效率和产品质量。未来将在制造业、能源、农业等领域广泛应用。工业物联网的广泛应用2物联网于医疗健康领域前景广。可远程监控诊断患者,提升服务及时准确性。助药品追溯、设备管理,提管理效率安全性。未来作用将更大。医疗健康领域的创新应用304物联网的发展趋势1.4.3物联网面临的挑战随着物联网设备的普及,网络安全问题日益凸显。如何确保数据传输和存储的安全性,防止数据泄露和被恶意攻击,是物联网发展需要解决的重要问题。1安全性问题由于物联网设备来自不同的制造商,如何实现设备之间的无缝连接和互操作是一个技术挑战。需要制定统一的标准和协议,以确保设备之间具有兼容性。2互操作性在物联网环境中,大量个人数据的收集和处理是不可避免的。如何在保护用户隐私的同时充分利用这些数据为用户提供更好的服务,是物联网发展需要平衡的一个问题。3数据隐私保护物联网的未来发展虽然前景广阔,但也面临着一些挑战。工业物联网简介05工业物联网简介1.5.1工业物联网的定义工业物联网是指将物联网技术应用于工业领域,实现工业生产过程中设备与系统的智能化、互联互通的方法。通过传感器、控制器、通信网络以及数据分析等技术手段,工业物联网可以实时监控生产设备的运行状态、收集生产数据,并通过智能分析为企业提供有价值的信息和决策支持。05工业物联网简介1.5.2工业物联网的发展历程工业物联网的发展可以追溯到20世纪90年代,当时其用于实现设备之间的简单数据交换和远程控制。随着技术的不断进步和应用需求的提高,工业物联网逐渐发展成为一个涵盖感知、传输、处理和应用等多个环节的复杂系统。进入21世纪后,云计算、大数据、人工智能等技术的快速发展为工业物联网的广泛应用提供了有力支持。这些技术使得工业物联网能够处理和分析海量的数据,提供更加精准和智能的决策支持。同时,随着5G、边缘计算等新一代信息技术的不断涌现,工业物联网的实时性、可靠性和安全性也得到了显著提升。051.5.3工业物联网的应用场景工业物联网的应用领域非常广泛,几乎涵盖了所有工业制造领域。以下是工业物联网的一些主要应用场景。工业物联网可以实时监控物流过程中的货物状态、位置和运输情况,提高供应链的透明度和可追溯性。这有助于企业优化库存管理、减少库存积压和降低运营成本。工业物联网可以实现生产设备的智能化监控和管理,提升生产效率和产品质量。通过实时收集和分析生产数据,企业可以及时发现并处理生产过程中的问题,确保生产线的稳定运行。(1)智能制造。(2)供应链管理。工业物联网简介05工业物联网简介(3)能源管理。在能源领域,工业物联网可以实时监测能源消耗情况,为企业提供能源使用报告和节能建议。这有助于企业降低能源消耗、减少碳排放并提高能源利用效率。(4)远程监控与维护。工业物联网可以实现设备的远程监控和维护,降低企业的运维成本。通过实时监测设备的运行状态和性能数据,企业可以及时发现并解决潜在问题,确保设备的正常运行并延长其使用寿命。(5)安全与环保。工业物联网还可以应用于工业安全和环保领域。通过实时监测生产过程中的安全风险和环境污染情况,企业可以及时采取措施保障员工的人身安全和企业的生产环境。05工业物联网简介1.5.4工业物联网的技术特点工业物联网能够实现海量设备的连接和互联互通,确保数据在设备之间顺畅传输和共享。这为企业提供了全面的生产数据视图,有助于企业做出更加明智的决策。(1)大规模连接与互联互通。工业物联网收集了大量的生产数据,需要通过数据分析技术来提取有价值的信息。这些数据可以为企业在生产过程中做出优化建议、故障预测及市场需求预测等智能决策提供支持。(3)数据分析与智能决策。工业物联网对数据传输的实时性和可靠性要求非常高。通过采用先进的通信技术和数据传输协议,工业物联网可以确保数据在传输过程中的准确性和及时性。(2)实时性与可靠性。工业物联网的技术特点主要体现在以下几个方面。05工业物联网简介(4)安全性与隐私保护。随着工业物联网的普及和应用范围的扩大,数据安全和隐私保护问题也日益凸显。工业物联网需要采用先进的加密技术和身份验证机制来确保数据传输和存储的安全性,并保护用户的隐私信息不被泄露。(5)可扩展性与灵活性。工业物联网需要具有良好的可扩展性和灵活性,以适应不断变化的生产需求和技术环境。通过采用模块化设计和开放式架构,工业物联网可以方便地与其他系统和平台进行集成和扩展,满足企业不断增长的业务需求。工业物联网作为当今科技和工业领域的重要发展方向之一,正推动着工业生产方式的深刻变革。通过实现设备之间的互联互通和智能化管理,工业物联网将为企业提供更加高效、精准和智能的生产方式和管理模式。工业物联网在实际应用过程中尽管还面临着一些挑战和问题,但随着技术的不断进步和应用场景的拓展,相信它将迎来更加广阔的发展前景,并为人类创造更多的价值。1.随着技术的发展,物联网经历了从概念提出到技术研究、试点实验,再到实际应用和产业化的逐步发展过程。物联网的关键技术包括传感器技术、无线通信技术、数据处理与分析技术、云计算和边缘计算、网络安全技术等。2.物联网的架构通常分为感知层、网络层和应用层。感知层负责收集信息,网络层负责传输信息,应用层则是提供服务和应用。物联网的应用领域非常广泛,包括智能家居、智慧城市、工业控制、农业监测、智慧医疗、环境监测、智能交通等。物联网的未来发展趋势可能包括技术标准的统一、安全性的加强、隐私保护的提升、人工智能与物联网的融合,以及物联网在更多领域的深入应用等。物联网在发展过程中也面临着一些挑战,如技术标准的不统一、数据安全和隐私保护问题、设备兼容性问题等。同时,物联网的发展也为各行各业带来了巨大的机遇,推动了产业升级和社会进步。本章小结感谢您的观看Thankyou第二章搭建物联网开发环境目录CONTENT01物联网开发的整体架构02物联网开发环境的类型03Arduino的特点04在ArduinoIDE中搭建ESP32开发环境05用PythonIDE搭建ESP32开发环境06用VSCode+PlatformIO搭建ESP32开发环境物联网开发的整体架构01物联网开发的整体架构在物联网的三个层面中,网络层和应用层使用了较成熟的网络环境和高层协议,所以物联网开发重点在感知层,负责信息采集与执行,采用单片机加互联网方式实现。感知层信息获取分集中式和分布式:集中式分布式适用于小范围、大数据量场景,由强处理器直接采集并上传。

适用于大范围、分散信息场景,分散节点采集数据后汇总至中心网关,再上传至应用层。物联网开发环境的类型02物联网开发环境的类型1.裸机开发裸机开发早期用汇编语言,现以C语言等高级语言为主,降低难度提高效率。主要有两种方式。(2)Keil集成开发环境。Keil公司是微控制器开发工具供应商,提供编译器、调试器、连接器等工具。KeilC51编译器是行业标准,支持500+种8051微控制器。2005年被ARM收购后,向32位微控制器市场提供解决方案,继续支持8051微控制器和C16x编译器。推出基于μVision的仿真界面,用于调试MDK-ARM开发工具等,成为公认的开发组合。(1)Arduino集成开发环境(ArduinoIDE)。含编辑器、消息区、控制台、工具栏。支持AVR开发板,可扩展STM32、ESP系列。ArduinoIDE可创建项目,提供多种库。02物联网开发环境的类型嵌入式系统是以应用为中心,基于计算机技术的专用系统,具有软硬件可裁剪性,适用于对功能、可靠性、成本、体积和功耗要求严格的场景。它包含硬件(处理器、存储器、外设等)和软件(实时操作系统及应用程序)。2.嵌入式系统开发02国外嵌入式操作系统包括μClinux、μC/OS-II、eCos、FreeRTOS等,国内有DJYOS、AliOSThings、HuaweiLiteOS、RT-Thread等。其中,RT-Thread是一款开源的物联网操作系统,具备RTOS内核、丰富组件和开发者生态,支持多种MCU架构和编译工具(如GCC、Keil、IAR),广泛应用于工业、消费电子等领域。它遵循GPLv2+许可证,可免费商用。物联网开发环境的类型02对于物联网开发,新手建议使用ArduinoIDE入门,进阶可选用KeilμVision,实时性要求高的应用需选择合适的嵌入式系统进行裁剪开发。物联网开发环境的类型Arduino的特点03Arduino的特点因为Arduino的种种优势,越来越多的专业开发者使用Arduino来开发他们的项目和产品,许多大学专业如自动化、软件,甚至艺术专业,都纷纷开设了Arduino相关课程。(1)跨平台。Arduino可以在Windows、MacintoshOS(MacOS)、Linux三大主流操作系统上运行,而大多数控制器只能在Windows上开发。(3)开放性。Arduino的硬件原理图、IDE软件及核心库文件都是开源的,在开源协议范围内用户可以任意修改原始设计及相应代码。(2)简单清晰。ArduinoIDE基于Processing,对于初学者来说,极易掌握,同时有着足够的灵活性。Arduino编程语言基于Wiring,是对AVR-GCC库的二次封装,不需要太多的单片机基础和编程基础。

(4)发展迅速。Arduino不仅仅是全球最流行的开源平台,还是一个优秀的硬件开发平台,更是硬件开发的发展趋势。Arduino的开发方式简单,所以开发者可以更多关注创意与实现,更快完成自己的项目开发,大大节约学习的成本,缩短开发的周期。Arduino的特点如下。在ArduinoIDE中搭建ESP32开发环境04在ArduinoIDE中搭建ESP32开发环境是乐鑫官网物联网开发框架,适用于ESP32系列SoC。基于C/C++的SDK,便于开发通用应用。已支持亿级物联网设备,用于照明、消费电子、家电、支付终端、工控等物联网产品。(1)ESP-IDF12为ESP32开发板提供ArduinoIDE和开发支持,以开源的方式托管在https:///espressif/arduino-esp32。(2)ESP-ArduinoESP32系列产品的设计公司是乐鑫信息科技(上海)股份有限公司,其官方网站提供的软件开发工具包(SDK)有以下三种。04(3)ESP-AT它将ESPSoC集成至AT指令(应用于终端设备与PC之间的连接与通信指令),以开源的方式托管在/espressif/esp-at。作为初学者,建议首选ESP-Arduino,也就是利用ArduinoIDE搭建ESP32开发环境,其学习门槛低,方便入门;ESP-AT通常需要使用AT指令,ESP32开发板作为WiFi或蓝牙模块使用,方便其他单片机接入网络;ESP-IDF作为乐鑫官方主推的物联网开发框架,功能最为强大,使用了嵌入式系统,学习门槛很高,不易入门,不建议初学者使用。除了乐鑫官方提供的开发方式外,ESP32开发板作为流行的高性价比的SoC,众多的第三方也为其提供了开发支持,如PythonIDE的支持,VSCode+PlatformIO的支持等。在ArduinoIDE中搭建ESP32开发环境042.4.1在Windows环境下配置ESP32开发环境的方法在Windows环境下,使ArduinoIDE支持第三方开发板的方法有两种:一种是经典法,即安装第三方开发板的支持软件或驱动;另一种是实用方法,也就是在没有网络的环境下安装第三方开发板的支持软件和驱动。在ArduinoIDE中搭建ESP32开发环境041.经典法(1)确认ESP32开发板能否被Windows系统识别。在Windows环境下,单击桌面上的此电脑图标,执行“更多选项”→“管理”→“设备管理器”→“端口(COM和LPT)”命令,重新插拔连接ESP32开发板的USB线缆,查看是否有USBtoUARTBridge(COM6)字样,如图2-1所示。如果有惊叹号或X等新硬件提示,代表Windows系统不能识别此USB转串口硬件,需要安装新的驱动程序。如果没有任何反应,说明使用的USB线缆可能是充电线而不是数据线,需要将USB线缆更换为数据线。在ArduinoIDE中搭建ESP32开发环境04(2)访问https://www.arduino.cc/,切换到“SOFTWARE”选项卡,选择右侧的“WindowsZIPfile”选项,如图2-2所示。下载绿色版本arduino-ide_2.3.3_Windows_64bit.zip。在ArduinoIDE中搭建ESP32开发环境04(3)解压缩下载的文件,将其放到非中文且不含空格的文件夹下。双击运行文件夹下的ArduinoIDE.exe,需要下载一些文件,安装驱动程序及设置访问网络的请求,界面如图2-3所示。在ArduinoIDE中搭建ESP32开发环境04(4)执行“File”→“Preferences”命令,单击“Language”下拉列表框箭头,选择“中文(简体)”,单击“OK”按钮,可以将部分菜单转换为中文,如图2-4所示。在ArduinoIDE中搭建ESP32开发环境04(5)在ArduinoIDE界面中,可以直接在主界面执行“工具”→“开发板”→“ArduinoAVRBoards”命令,选择Arduino官方支持的Uno、Nano、MegaorMega2560等开发板和合适的串行端口,然后就可以连接开发板进行编程、上传程序了。ESP32开发板对ArduinoIDE来说属于第三方开发板,ArduinoIDE默认是不支持的,因此,需要下载合适的插件或者驱动使ArduinoIDE支持ESP32开发板。可以在主界面执行“工具”→“开发板”→“开发板管理器...”命令,或者直接单击主界面左侧的开发板管理器快捷方式,在搜索框中输入“esp32”,在列表中找到“esp32byEspressifSystems”,如图2-5所示。在ArduinoIDE中搭建ESP32开发环境04(6)单击“安装”按钮,安装ESP32的支持软件。根据网络状况的不同,这个过程通常需要持续较长时间,或者会出现中断,因此可以选择网速较快时段进行安装。如果安装完成,就在主界面中执行“工具”→“开发板:"ESP32DevModule"”→“esp32”命令,展开“esp32”列表,选择“ESP32DevModule”选项,如图2-6所示。这样就完成了ESP32开发板支持软件的安装。在ArduinoIDE中搭建ESP32开发环境042.实用方法经典法支持第三方开发板需高网络要求,耗时。介绍无需网络的实用方法。(1)下载两个压缩文件:ArduinoIDE绿色版(如arduino-ide_2.3.3_Windows_64bit.zip)和Arduino15_ESP32.zip(来自已支持ESP32的PC的“用户目录\AppData\Local\Arduino15”文件夹)。可将文件存放于Web服务器、FTP服务器或U盘等。在ArduinoIDE中搭建ESP32开发环境04(2)在需要安装支持ESP32开发板的ArduinoIDE程序的PC中下载或拷贝这两个压缩文件,解压arduino-ide_2.3.3_Windows_64bit.zip到非中文、不含空格的路径下,如d:\arduino(这个是ArduinoIDE的程序,直接支持官方硬件);解压压缩文件Arduino15_ESP32.zip,展开为Arduino15文件夹,将其复制到“用户目录\AppData\Local”下,如C:\Users\xxx\AppData\Local(这个是ESP32开发板的补丁,这样做就不需要在线下载了,xxx是登录Windows的用户名)。这里需要强调两点:一是拷贝Arduino15文件夹的时候,不可以运行ArduinoIDE程序,否则会找不到该补丁;二是AppData文件夹是隐藏的,最方便的方法是在资源管理器中直接输入该路径,或者在“文件夹选项”中选中“显示隐藏的文件、文件夹和驱动器”单选按钮,如图2-7所示。在ArduinoIDE中搭建ESP32开发环境04(3)双击运行arduino-ide_2.3.3_Windows_64bit\arduino.exe,可以创建快捷方式,方便以后使用。在ArduinoIDE主界面中执行“工具”→“开发板”→“ESP32Arduino”→“ESP32DevModule”命令,选择合适的端口,然后就可以运行示例程序了。在ArduinoIDE中搭建ESP32开发环境042.4.2在Linux环境下配置ESP32开发环境的方法在Linux系统环境下,以Debian12:12.7released为例来介绍EPS32开发板在ArduinoIDE中的搭建过程。(1)确认Linux系统能否识别USB转串口硬件,也就是确认Linux系统是否有合适的EPS32开发板驱动程序。在Linux环境下,硬件设备是通过设备文件方式来访问的。通常情况下,设备文件的路径在/dev目录下,USB转串口硬件的名字一般是/dev/ttyUSBx或者/dev/ACMx等,其中,x表示数字0、1等。可以通过直接插拔连接ESP32开发板的USB线缆的方式来观察/dev目录的变化,以确认Linux系统能否识别USB转串口硬件。在Linux系统环境下,USB转串口硬件的设备文件属主是root,组是dialout,因此如果能确保当前用户属于dialout组,就可以以dialout组权限来访问串口设备了。可以执行“:$sudousermod-a-Gdialoutyour_username”命令将用户your_username添加到dialout组中。在ArduinoIDE中搭建ESP32开发环境04在Linux系统环境下,CH34x芯片的USB转串口硬件设备名字通常是ttyUSBx,CH9102芯片的USB转串口硬件设备名字通常是ACMx。本例中插入两个ESP32开发板,显示的名字是ttyACM0和ttyUSB0,如图2-8所示。在ArduinoIDE中搭建ESP32开发环境04(2)确认Linux系统能够识别ESP32开发板,下载Linux环境下的ArduinoIDE文件arduino-ide_2.3.3_Linux_64bit.zip,解压缩文件后直接运行arduino-ide,此后的界面和配置步骤基本和Windows环境下的一致,如图2-9所示。在ArduinoIDE中搭建ESP32开发环境04(3)安装完ESP32开发板支持软件后,选择端口,编译时系统提示找不到Serial模块,这时就需要安装pyserial模块,可以通过pip3installpyserial命令安装。系统会给出一些安装提示,可以采用系统建议的参数break-system-packages来安装,完整地输入命令“pip3installpyserial—break-system-packages”,如图2-10所示。在ArduinoIDE中搭建ESP32开发环境04(4)安装完pyserial模块后,可以顺利运行Blink,如图2-11所示。在ArduinoIDE中搭建ESP32开发环境042.4.3在macOS环境下配置ESP32开发环境的方法下面以macOS15.0版本,也就是Sequoia版本为例,介绍在macOS环境下配置ESP32开发环境的过程。(1)确认macOS能否识别USB转串口硬件,和Linux一样,可通过在终端直接查看/dev目录下的设备文件名的方式来判断。插拔连接ESP32开发板的USB线缆,如果/dev目录里出现新的类似tty.usbserial字样的设备文件名,如本例中是tty.usbserial-52BF0283191,表示系统可以识别ESP32开发板,如图2-12所示。在ArduinoIDE中搭建ESP32开发环境04(2)访问https://www.arduino.cc/下载Mac版本的arduino-ide_2.3.3_macOS_64bit.dmg,双击直接运行,系统会弹出权限请求界面,单击“允许”按钮,显示ArduinoIDE界面,选择开发板,在搜索框中输入“esp”,在列表中选择要安装的支持软件,单击下面的“安装”按钮,如图2-13所示。在ArduinoIDE中搭建ESP32开发环境04(3)安装完ESP32开发板的支持软件后,打开示例程序Blink,添加#defineLED_BUILTIN2语句(见图2-14),编译、上传并运行程序,板载蓝色LED开始闪烁。在ArduinoIDE中搭建ESP32开发环境04ArduinoIDEArduinoIDE不仅支持ESP32,还兼容多种第三方开发板,包括STM32各系列(C0/F0/F1/F2/F3/F4/F7)、树莓派RP2040甚至部分FPGA开发板。GitHub上的项目(https:///arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls)提供了完整的第三方插件支持列表。经测试,STM32F1/F4系列支持良好,配置后可直接通过USB烧录程序,无需JTAG/SWD仿真器,节省成本。若无法访问GitHub,建议科学上网或使用国内镜像获取插件。在ArduinoIDE中搭建ESP32开发环境用PythonIDE搭建ESP32开发环境05用PythonIDE搭建ESP32开发环境除了官方环境,ESP32也支持Python等第三方开发系统,体现了其强大的扩展性。Thonny是一款初学者友好的PythonIDE,跨平台运行,内置解释器,提供代码高亮、补全、调试等功能,无需额外配置。其简洁界面和丰富的学习资源能帮助开发者快速上手Python开发。05MicroPython是Thonny中的一款Python解释器,一般分为三个部分,如图2-15所示。用PythonIDE搭建ESP32开发环境05没有硬件支撑的代码就是一堆看不懂的文字,此部分为固定不变的部分。(1)嵌入式硬件。没有软件支持的硬件就好比无源之水。要想ESP32开发板能运行Python程序,就必须给它建立一套可运行环境,也就是在ESP32开发板中烧录专用的MicroPython固件,这样等运行环境启动后就可以执行应用程序了。此部分也为固定不变的部分。(2)MicroPython固件。这里特指开发者编写的业务代码,此部分属于多变的部分。(3)应用程序。用PythonIDE搭建ESP32开发环境05想要搭建EPS32开发环境,就需要下载适用于嵌入式硬件的MicroPython固件并将其烧录到硬件中,然后通过IDE连接开发板进行代码编译及上传。目前,高版本的Thonny已经可以直接支持自动更新MicroPython固件,开发者可以直接编写代码、编译运行代码及上传代码。下面介绍用PythonIDE搭建EPS32开发环境的步骤。用PythonIDE搭建ESP32开发环境05(1)直接访问/,官方网站提供适用于Windows、Mac、Linux系统的Python软件,在Windows环境下提供有.exe格式的安装文件和绿色版本,如图2-16所示。用PythonIDE搭建ESP32开发环境05(2)以绿色版本为例,下载thonny-4.1.4-windows-portable.zip,并将其解压在非中文、不含空格的路径下,直接双击运行thonny.exe,如图2-17所示。用PythonIDE搭建ESP32开发环境05(3)执行“Tools”→“Options”命令,在“Language”的下拉列表中选择“简体中文”选项,可以将界面切换到中文界面,如图2-18所示。用PythonIDE搭建ESP32开发环境05(4)关闭Thonny,重新打开后界面切换为中文界面。执行“工具”→“选项”命令,打开“Thonny选项”窗口,切换到“解释器”选项卡。在“Thonny应该使用哪种解释器来运行您的代码?”选项区中选择“MicroPython(ESP32)”选项,如图2-19所示。用PythonIDE搭建ESP32开发环境05(5)连接ESP32开发板到计算机。在图2-19下方的“端口或WebREPL”选项区单击右下方的“安装或更新MicroPython(esptool)”,弹出“InstallMicroPython(esptool)”对话框,如图2-20所示。用PythonIDE搭建ESP32开发环境05(6)此处以安装MicroPython(esptool)为例,选择合适的Targetport、MicroPythonfamily、variant、version,单击“安装”按钮,即可在线安装或更新MicroPython。高版本的Thonny省略了另外下载合适的MicroPython的过程,比低版本的Thonny方便多了。安装或更新完成后,单击“关闭”按钮,返回主界面,主界面如图2-21所示,这表明MicroPython已经安装成功。用PythonIDE搭建ESP32开发环境05在“Shell”窗口中按提示输入“help()”,就可以显示帮助信息。在帮助信息里,使用help(ˈmodulesˈ)可以显示已经安装的模块。在“Shell”窗口中输入以下内容。用PythonIDE搭建ESP32开发环境05直接运行代码(见图2-22),发现ESP32开发板的板载LED已经点亮。用PythonIDE搭建ESP32开发环境05在代码输入框中输入以下内容。用PythonIDE搭建ESP32开发环境05在主界面中执行“文件”→“保存”命令,弹出保存地址提示框,如图2-23所示。用PythonIDE搭建ESP32开发环境05选择“MicroPython设备”,系统可能会提示设备忙,这时可以重启一下开发板,重新保存文件,如图2-24所示。用PythonIDE搭建ESP32开发环境05如果在代码输入框里输入main.py,代码便保存在ESP32开发板里。按一下开发板上的重启按钮后,发现板载的LED已经开始闪烁了。此外,开发板重新通电后可自动运行上面的代码。要想ESP32开发板工作,可以在“Shell”窗口中输入代码,或者运行保存在本地的代码。在“Shell”窗口里有代码的情况下,单击工具栏中的运行图标,则ESP32开发板直接执行代码。但注意在这种情况下,编译后的代码并没有保存在开发板中,重启开发板后,开发板恢复原来的状态。用PythonIDE搭建ESP32开发环境用VSCode+PlatformIO搭建ESP32开发环境06下面简要介绍利用VSCode和PlatformIO搭建ESP32开发环境的步骤。(1)访问VSCode官网,选择相应平台的绿色版本,解压缩后直接运行。在应用商店中搜索中文插件并安装,可以将界面转为中文,如图2-25所示。用VSCode+PlatformIO搭建ESP32开发环境06(2)启动VSCode,在左边的扩展搜索框里直接输入“PlatformIO”,在弹出的列表中选择“PlatformIOIDE”,单击安装即可。安装过程中如果需要安装其他扩展插件,系统会默认选择安装。安装过程不会很久,等系统提示安装完成后,重启VScode。用VSCode+PlatformIO搭建ESP32开发环境(3)重启VSCode后,发现界面最左边一侧出现了

图标,单击

图标,展开“PIOHome”选项,选择“Open”,然后单击“+NewProject”,弹出“ProjectWizard”对话框,填写项目名称等信息,这里以新建一个ESP32TEST工程为例。在Board文本框中输入“esp32”,在弹出的下拉列表中选择“EspressifESP32DevModule”选项;在“Framework”下拉列表中选择“Arduino”选项,单击“Finish”按钮,如图2-26所示。用VSCode+PlatformIO搭建ESP32开发环境06这时系统会下载开发环境所需要的所有文件、编译工具等,下载时间会比较长,因此应找一个网络好的环境下载。下载完成后,界面如图2-27所示,就自动打开了platformio.ini文件。用VSCode+PlatformIO搭建ESP32开发环境06(4)将ESP32开发板连接到计算机。在设备管理器中查看使用的端口,然后在platformio.ini文件最下端添加如下代码。用VSCode+PlatformIO搭建ESP32开发环境06双击打开main.cpp函数,将原来的内容删除,增加使板载LED闪烁的语句,增加串口输出语句,如图2-28所示。(5)单击图2-28左下角的右向箭头,可以直接编译上传程序。上传程序后发现板载LED已经闪烁,在“终端”窗口也有相应的信息输出。用VSCode+PlatformIO搭建ESP32开发环境061.ArduinoIDE直接支持官方的开发板,如常见的Uno、Nano、Mega2560等开发板。这些开发板联网还需要另外的模块,对物联网专业的学生来说,性价比不高。2.以ESP32开发板为代表的国产第三方开发板,硬件性能比传统的Arduino开发板高了不少,价格也低了一些,且开发板自身直接支持WiFi和蓝牙连接,更加适合物联网的应用,性价比很高。早期乐鑫官方不支持ArduinoIDE,现在已经支持ArduinoIDE了,同时支持ESP-AT等多种开发模式。3.关于ESP32开发板和传统Arduino开发板的硬件性能比较,可以搜索相应的硬件参数,价格可以在各电商平台比较。通过ArduinoIDE实现了软件对硬件的控制,这对有了一点高级语言基础的学生来说能够极大激发学习兴趣。4.大多数情况下,建议使用免网络的实用方法在Windows环境下的ArduinoIDE中配置ESP32的开发环境。如果因用户名为中文或用户名含有空格等问题配置不成功,可以寻找直接支持ESP32开发板的ArduinoIDE便携版本。这类版本解压后可以直接运行且直接支持ESP32开发板,这是开源软件的一大优势,即可以随意修改定制。本章小结感谢您的观看Thankyou第三章GPIO接口目录CONTENT01输出02输入03GPIO接口的应用04GPIO接口输出速度的比较输出01输出几乎所有的单片机开发板都含有一个连接在单片机引脚上的LED(板载LED,通常为蓝色),该LED是否闪烁是检验开发板是否正常的标志。ESP32DEVKITV1开发板本身包含一个连接在GPIO2上的蓝色LED,引脚输出1时LED亮,引脚输出0时LED灭。在开发板上,该引脚被标识为D2。ArduinoIDE最大的优势是支持众多的外部设备,安装完支持外部设备的库后,就可以直接打开示例程序进行验证。使LED闪烁的程序是Blink,Blink程序为内置示例程序,不需要安装。01打开示例程序Blink,如图3-1所示,其代码如下。输出01输出01输出01因为ESP32DEVKITV1为第三方开发板,上述代码不能通过验证,系统提示LED_BUILTIN没有被定义,所以需要在voidsetup()前增加“intLED_BUILTIN=2;”语句才能使代码通过验证。通过ArduinoIDE上传程序,完成后发现板载LED开始闪烁,下面介绍ESP32DEVKITV1开发板上的GPIO接口。ESP32DEVKITV1开发板接口如图3-2所示。输出01能够作为输出接口的有20个,可以通过杜邦线和RGBLED模块验证,使用4根杜邦母头线连接RGBLED模块和ESP32DEVKITV1开发板,其中RGBLED模块的GND连接ESP32DEVKITV1开发板右下角的GND,R、G、B分别连接D15、D2、D4引脚,在ArduinoIDE中输入以下代码。输出01输出01可以发现,RGBLED模块中的三色LED依次点亮1s,关闭1s。同时可以发现蓝色的板载LED和外接的RGBLED模块中的一个LED同时亮灭。可以使用下面的代码验证ESP32DEVKITV1开发板有20个接口可用作输出接口。可以用多个LED或反复插接RGBLED模块观察输出结果。输出01通过测试可知,GPIO1(TX)一直为常亮,不可以用作输出接口。D34、D35、D36、D39引脚不可以输出高电平,也不可作为输出接口使用。其中,GPIO3(RX)是作为导入程序的串口使用的,在导入程序时不建议接负载。输出01运行上面的代码,打开串口监视器,可以发现在灯亮的同时输出相应的引脚提示。输出输入02输入查阅ESP32-WROOM-32模块手册可知,其共有33个输入接口,但ESP32DEVKITV1开发板并没有全部将输入接口引出。经测试,ESP32DEVKITV1开发板有24个接口在拉高后可以作为输入接口。其中,拉高以下接口时需要注意一些事项。GPIO0:内部拉高。GPIO3:开机拉高。GPIO5:开机拉高并输出PWM信号。GPIO12:开机拉高则启动失败。GPIO14:开机拉高并输出PWM信号。GPIO15:开机拉高并输出PWM信号。GPIO34:仅输入信号时拉高。GPIO35:仅输入信号时拉高。GPIO36:仅输入信号时拉高。GPIO39:仅输入信号时拉高。1.按键输入按键输入通常通过GPIO接口与地线或正极连接实现。可采用上拉电阻保持高电平初始状态,检测低电平判断按键按下;或下拉电阻保持低电平,检测高电平判断按下。部分开发板内置上/下拉电阻简化电路。输入02按键较少时,可直接连接GPIO与地/电源;较多时可采用矩阵形式(如8个GPIO实现16键)。若GPIO紧张,可通过模拟接口串联不同电阻实现多键输入,或采用红外接收器加编码方式(常见于家电、摇杆、编码器等)。输入02输入下面的代码采用内部上拉电阻设置GPIO接口为高电平初始状态,通过串口打印编号,检测所有输入接口的输入状态,采用一公一母杜邦线连接输入接口,通过GPIO接口与地线接触来模拟按键状态。02输入经过上面的输入测试,并使用万用表测量引脚电平,发现D2、D34、D35、D36、D39引脚即使被设置为INPUT_PULLUP,还是显示0,只有接电源正极才能显示1。下面这个代码可以读取GPIO23与地线之间的按键状态。改变按键按下的时间,即可改变GPIO2引脚,也就是板载LED的状态。02输入2.触摸按键输入ESP32DEVKITV1开发板比较特殊,具有10个内部电容式触摸传感器,故有以下10个可用作触摸按键的接口。T0:GPIO4。T1:(GPIO0),ESP32DEVKITV1没有引出该引脚。T2:GPIO2,利用下面的程序检测其电平状态为0,触摸没有变化,与连接的板载LED有关。T3:GPIO15。T4:GPIO13。T5:GPIO12。T6:GPIO14。T7:GPIO27。T8:GPIO33。T9:GPIO32。02输入电容式触摸传感器可以感应任何带有电荷物体的变化,如人体皮肤。因此,它们可以检测到手指触摸GPIO接口时引起的变化。这些接口可以轻松集成到电容性焊盘中,因此可以取代机械按键。下面代码用于检测8个可用作触摸按键的GPIO接口,可以将一公一母杜邦线连接在GPIO接口上,通过手指触摸杜邦线的公头,或小心用手指直接触摸引脚来检测引脚触摸状态。02输入02输入图3-3所示是程序执行时的接口状态,通过串口监视器窗口可以观察按键的触摸情况。02输入对于串口输出的数字型数据,也可以直接使用串口绘图器将数据以图形的方式进行直观显示,方便观察历史状态,如图3-4所示。02输入可以使用下面的代码,通过触摸T0(D4引脚)实现板载LED的状态改变。02触摸一下,LED亮;再触摸一下,LED灭。执行“文件”→“示例”→“ESP32”→“Touch”命令,可发现4个相关的示例程序,但这些示例程序的健壮性不足,需要提前读取触摸按键触摸前后的状态变化,且环境变化时可能导致误触发。可以采用touchRead()函数减去适当的值作为触摸按键的检测程序。例如,将上面代

码中的“touchAttachInterrupt(T0,gotTouch,40);”修改为“touchAttachInterrupt(T0,gotTouch,touchRead(T0)-20);”,可显著提升触摸按键检测程序的健壮性。输入023.传感器输入ESP32DEVKITV1开发板内置多种传感器,包括前面介绍的电容式触摸传感器以及霍尔传感器。前面介绍了触摸按键输入方式,故此处不再重复介绍。此处以霍尔传感器为例,介绍ESP32DEVKITV1开发板通过传感器输入信息的方式。霍尔传感器(也称霍尔效应传感器),是一种基于霍尔效应的换能器,可以将磁场变化转化为相应的输出电压的变化。它与阈值检测器配合使用可用作开关,广泛应用于工业领域,如气动执行器、计算机外设(如打印机、计算机键盘、磁盘驱动器)、转速测量系统和防抱死制动系统、无刷直流电机控制等。输入02在Arduino1.8.19版本中,执行“文件”→“示例”→“ESP32”→“HallSensor”命令,可打开如下示例程序。通过运行示例程序可以了解霍尔传感器输入方式。输入02不用修改代码,直接将代码烧录至开发板后,打开串口绘图器即可观察到快速变化的波形,如图3-5所示。输入02上述代码可用性不是很高,使用磁性材料,如磁铁、有磁吸的耳机等靠近开发板天线侧的位置,可以看到数值明显变化。无论是否有磁性材料靠近,读出的数值的变化范围都有点大,即使取100次的值做平均,数值仍然不稳定。可能原因是霍尔传感器比较灵敏?地磁影响比较大?还是别的原因呢?同学们有机会可以测试一下其他类型的霍尔传感器。霍尔传感器的应用非常广泛,如两轮电动车的车速手把、汽车的凸轮轴传感器、无刷电机的位置感应器等。输入024.串口输入除了支持通过按键、传感器输入信息,ESP32DEVKITV1开发板还支持通过网络、串口等输入信息。下面示例程序采用串口输入信息,通过在串口监视器中输入数字1、2、3,控制连接在D2(GPIO2)接口上的蓝色板载LED的状态变化。输入02该示例程序中采用了自定义函数,并带有参数。输入02GPIO接口的应用031.红外遥控红外遥控基于近红外光(0.76~1.5μm,常用0.8~0.94μm)传输数据,具有高效、低成本、易实现和抗干扰强等特点,广泛应用于家电控制。系统由红外发射二极管和一体化接收模块组成,需确保发射与接收频率一致。

Arduino可通过开源库(如[Arduino-IRremote](/Arduino-IRremote/Arduino-IRremote))实现红外遥控,但厂商协议通常保密(如格力空调有40套私有协议)。开发者需借助示波器或解码器解析0/1编码,或利用第三方红外编码库模拟控制其他设备。

GPIO接口的应用03在ArduinoIDE下实现红外遥控,首先需要配置红外发射或接收模块,如图3-6所示。红外光的接收,或者说解码比较简单,使用测试程序接收红外遥控设备不同按键的代码,就能方便地使用红外遥控设备,进而关联出按键所执行的功能。下面就以ESP32开发板连接红外接收模块来接收红外遥控设备的按键信息为例介绍红外遥控技术。GPIO接口的应用03(1)在ArduinoIDE主界面上,单击左侧的库管理快捷图标,在库管理搜索框里输入“irremote”,在下拉列表中选择“IRremotebyshirriff,z3t0,ArminJo”选项,单击“安装”按钮,安装完成后如图3-7所示。GPIO接口的应用03(2)安装完库之后,执行“文件”→“示例”→“IRremote”命令,可以发现IRremote库中有许多示例程序,如图3-8所示。GPIO接口的应用03(3)连接红外接收模块data引脚到ESP32开发板的D15引脚。在ArduinoIDE中打开ReceiveDemo.ino,同时打开的还有文件PinDefinitionsAndMore.h。该文件有众多开发板和发射接收模块的引脚连接表,主要代码如图3-9所示。GPIO接口的应用03(4)不用修改代码,直接烧录代码,然后使用任意红外遥控设备对准红外接收模块,按下物理按键或触屏按键,在串口监视器窗口便有相应的提示,如图3-10所示。根据接收到的按键编码修改程序便可以实现各种控制。GPIO接口的应用032.PWM控制数字控制设备(如MCU、DSP和FPGA等)能够生成脉冲宽度调制(pulsewidthmodulation,PWM)信号,该信号可用于精确控制电机转速或LED发光强度,如图3-11所示。GPIO接口的应用03

GPIO接口的应用03PWM的实质是精确控制周期内高/低电平的持续时间,广泛应用在两线调速、亮度控制和开关电源等应用中。通常情况下,Arduino官方的开发板支持内置的函数voidanalogWrite(uint8_tpin,intvalue),该函数通常使用1kHz的频率,使用8位二进制数表示脉宽位数,可以满足大部分的PWM需求。对于ESP32开发板,ArduinoIDE2.3.x版本提供了boolledcAttach(uint8_tpin,uint32_tfreq,uint8_tresolution)和boolledcWrite(uint8_tpin,uint32_tduty)两个函数,可以定制PWM功能。ArduinoIDE中提供了针对ESP32开发板的一个PWM频率和脉宽的例子,可以执行“文件”→“示例”→“ESP32”→“AnalogOut”→“ledcFrequency”命令进行验证。在上述环境中,实测频率为80~8700Hz、脉宽位数为4~13的PWM没有问题。所给例子中,最大频率是40078277Hz,最大脉宽位数是20位,但此参数的PWM在ArduinoIDE环境下不能通过实测。新的ArduinoIDE版本对PWM功能函数进行了适度的简化,可以让系统自动选择通道,具体可以参考示例LEDCSoftwareFade,可以执行“文件”→“示例”→“ESP32”→“AnalogOut”→“LEDCSoftwareFade”命令找到该例子。GPIO接口的应用03通用Arduino开发板的analogWrite函数和ESP32开发板专有的ledcWrite函数的示例程序如下。上传代码后可以看到蓝色的板载LED从暗到亮变化。GPIO接口的应用03下面以示例程序LEDCSoftwareFade为基础,使用板载LED的亮度来分析PWM的控制原理,该程序从串口监视器窗口读入亮度,通过改变ledcWrite函数中的占空比来改变LED的亮度。GPIO接口的应用03为加深理解,可利用逻辑分析仪分别读取LED亮度为10、2000和8000时的PWM波形(见图3-12~图3-14),使学习者对PWM有一个直观的印象。GPIO接口的应用03GPIO接口的应用03PWM作为智能控制中较常用的功能,现代MCU甚至设置了一个独立的模块来实现PWM需求。针对标准Arduino开发板,Arduino提供了analogWrite(pin,value)函数来满足通常的PWM需求;针对ESP32开发板,Arduino单独提供了ledcWrite函数,该函数增强了PWM功能。GPIO接口的应用3.伺服电机控制伺服电机是伺服系统中控制机械元件运转的执行机构,能够通过脉冲信号实现高精度定位(精度可达0.001mm)。它通过发射和接收脉冲形成闭环控制,广泛应用于机床、印刷、包装、机器人等对精度和可靠性要求高的领域。sg90舵机是一种常见的伺服电机,分为180°和360°旋转两种型号。其工作原理如下:反馈调节:电机转动时,通过减速齿轮带动电位器旋转,直至电压差为零,电机停止。PWM控制:单片机发送PWM信号至舵机,与内部基准电压比较后产生电压差,驱动电机正反转。GPIO接口的应用03sg90舵机结构简单,适用于需要精确角度控制的场景。VCC(红线):接5V电源(4.8~6V)

信号线(橙线):接单片机引脚,接收PWM信号

GND(棕线):接地接口说明010302GPIO接口的应用03控制sg90舵机旋转也比较简单,只需要向它输出PWM信号,修改占空比就可以调整旋转角度。控制180°舵机一般需要一个20ms左右的时基脉冲,脉冲的高电平部分一般为0.5~2.5ms。高电平持续时间与旋转角度的对应关系如表3-1所示。GPIO接口的应用03依据舵机的控制原理,使用如下代码进行验证。GPIO接口的应用03GPIO接口的应用0303上传并运行代码,发现舵机旋转180°后又反转回来并反复循环。验证完舵机的可用性后,还可输入下面的代码直观地感受舵机的特点,利用串口输入旋转的角度可以方便地控制舵机的位置。GPIO接口的应用GPIO接口的应用0303除了180°舵机之外,另外一种常用的舵机是360°舵机,其控制方式如表3-2所示。GPIO接口的应用03根据上述控制方式编写程序,使舵机正转一定角度停止1s,接着反转一定角度。示例程序代码如下。GPIO接口的应用03GPIO接口的应用034.直流有刷电机控制直流有刷电机控制方案通常采用L298N双H桥驱动模块,需占用6个(非调速模式需要4个)GPIO接口。新一代MX1508驱动芯片相较L298N具有更优的性价比,两个模块分别如图3-15(a)和图3-15(b)所示。MX1508采用高可靠性功率MOSFET工艺,集成N沟道和Р沟道功率管,特别适用于驱动线圈、马达等感性负载,其工作电压范围为2~8V。在环境温度为27℃,供电电压为6.5V的条件下,双通道同时工作,通道2可持续输出0.8A电流(峰值1.5A),通道1可持续输出1.5A电流(峰值2.5A)。GPIO接口的应用03MX1508的真值表如表3-3所示,波形如图3-16所示。注:x代表1或者2。GPIO接口的应用03GPIO接口的应用03依据真值表并结合PWM功能函数,使用ESP32开发板的GPIO引脚13、12、14、27编写以下代码,实现对两个直流有刷电机的完整控制。GPIO接口的应用03GPIO接口的应用03GPIO接口的应用03需要注意的是,如果PWM信号的频率过高,那么电机不容易启动。电机的启动需要一定的电压,而PWM信号的占空比在整个区域里和电机的转速并不严格成比例。GPIO接口的应用035.步进电机控制使用D13、D12、D14、D27,也就是GPIO13、GPIO12、GPIO14、GPIO27引脚输出脉冲,来控制步进电机28BYJ48(4相5线)的运转;需要使用ULN2003驱动板,通过t-delay来控制电机转速,测试值为3~50。可以考虑将速度、正反转控制放在一个函数中,并通过远程、模拟输入、按键输入等信号控制步进电机运行。GPIO接口的应用03GPIO接口的应用03下面代码的功能是从串口监视器窗口读入延时时间,用来控制步进电机的旋转速度。GPIO接口的应用03代码中将步进电机需要的脉冲数和延时(转速)写成一个函数,方便调用。脉冲数为负数的情况下,步进电机反转。GPIO接口的应用03下面是使用逻辑分析仪测得的不同delay值的PWM波形(见图3-17~图3-19),可以让我们对步进电机的转速控制产生一个直观的感受。GPIO接口的应用03GPIO接口的应用03GPIO接口的应用03无刷电机6.无刷电机控制无刷电机通过电磁换相实现旋转,无需考虑角度定位,通电即旋转。一般情况下,无刷电机的控制需要使用3个GPIO接口,而步进电机至少需要4个以上的GPIO接口。因无刷电机采用电子换向技术,所以消除了碳刷磨损问题,具有寿命长、免维护特性,配合PWM调速可实现宽范围精准转速控制,这些优势使其在电动工具、电动车驱动系统、机械硬盘电机、航模动力系统和变频家电等设备中有较为广泛的应用。GPIO接口的应用03下面的代码通过D13、D12、D14输出三相PWM信号驱动无刷电机,从D15引脚读取ADC的值来实时调节转速。控制转速使用10kΩ以上电位器,两端需要连接3.3V电源和GND,中间点连接开发板的D15引脚。GPIO接口的应用03GPIO接口的应用03上面的代码采

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论