23、树莓派电机控制全攻略

树莓派电机控制全攻略

1. 多舵机精确控制

连接多个舵机时,跳线可能会变得杂乱无章。像MonkMakes Servo Six这样的板子能极大简化舵机与树莓派的布线。

如果需要精确控制多个舵机,同时避免使用ServoBlaster时出现的声音丢失问题,可以采用以下方法。虽然ServoBlaster代码能精确控制多达8个舵机,但它会占用树莓派的硬件资源并禁用声音生成。此时可以选择使用带有自身舵机控制硬件的舵机HAT,如Adafruit HAT,它通过树莓派的I2C接口,最多可控制16个舵机或PWM通道,舵机可直接插入HAT。

模块的逻辑电路电源由树莓派的3.3V连接提供,这与舵机的电源供应是分开的,舵机电源来自外部5V电源适配器。也可以使用电池组为舵机供电,例如使用四节可充电AA电池的电池盒可提供约4.8V电压,适用于大多数舵机;使用四节碱性AA电池提供6V电压,不过要查看舵机的数据手册,确保其能承受6V电压。

连接舵机的引脚排方便舵机线直接连接,但要注意方向正确。

要使用该模块的Adafruit软件,需在树莓派上设置I2C。安装所需的Adafruit blinka代码,可运行以下命令:

$ pip3 install adafruit-blinka
$ sudo pip3 install adafruit-circuitpython-servokit

以下是控制舵机的代码示例(文件名为ch_12_servo_adafruit.py):

from ad

相关推荐

树莓派4B智能家居控制系统开发全攻略

物联网技术通过传感器网络实现物理世界与数字世界的连接,其核心在于设备间的实时数据交互。MQTT作为轻量级通信协议,凭借低功耗、高可靠特性成为物联网首选方案。在智能家居场景中,树莓派凭借丰富的GPIO接口和强大社区支持,成为理想的边缘计算节点。本文以树莓派4B为核心,结合华为云物联网平台,详细讲解如何构建低成本高可用的智能家居系统,涵盖传感器选型、MQTT通信优化等关键技术要点,特别针对DHT11传感器上拉电阻配置等常见问题提供解决方案。项目实测在500元预算内实现市面万元级系统80%功能,为开发者提供可落地

weixin_30599521的博客 272

树莓派GPIO、I2C与SPI接口配置全攻略

通用输入输出(GPIO)是嵌入式系统与物理世界交互的基础接口,其核心原理在于通过软件编程动态配置引脚为输入或输出模式,实现数字信号的读取与控制。这一机制构成了物理计算和物联网设备开发的基石,其技术价值在于为软件开发者提供了直接操作硬件的桥梁。在众多通信协议中,I2C和SPI作为两种高效的串行总线协议,广泛应用于传感器、显示屏等外设连接,能显著节省引脚资源并简化电路设计。通过配置树莓派的GPIO、I2C和SPI接口,开发者可以轻松驱动各类传感器模块并实现设备间通信,为智能硬件和物联网项目奠定坚实基础。本文以树

weixin_26874745的博客 566

用树莓派+超声波传感器DIY一个智能避障小车(附完整Python代码与材料清单)

本文详细介绍了如何利用树莓派和HC-SR04超声波传感器DIY一台智能避障小车,包括硬件选型、电路搭建、Python代码实现及性能调优。通过完整的材料清单和代码示例,帮助读者从零开始构建具备自主导航能力的机器人,适合STEM教育、科技竞赛及硬件DIY爱好者。

weixin_30411819的博客 209

四线无刷风扇PWM调速全攻略:从硬件接线到闭环控制

PWM(脉冲宽度调制)是一种通过快速通断控制平均电压的经典调速技术,在电机控制、电源管理和LED调光等领域应用广泛。其核心原理是利用固定频率的方波信号,通过调节高电平占空比来等效改变输出功率,具有高效、精准和易于数字控制的优点。在嵌入式开发和电子DIY项目中,PWM是实现智能调速、节能控制和动态响应的关键技术。本文以广泛使用的四线无刷直流风扇为具体应用场景,深入解析其PWM调速的硬件接线方案、信号参数配置及闭环控制实现。内容涵盖电平转换电路设计、三极管驱动选型、STM32与Arduino的PWM生成代码,并

weixin_34009794的博客 330

17、树莓派电机控制全攻略

本文详细介绍了如何使用树莓派进行多种类型电机的控制,包括直流电机、单极步进电机和双极步进电机,并探讨了使用不同驱动芯片(如L293D和ULN2803)的电路连接和Python控制代码。此外,还讲解了如何利用RaspiRobot板构建机器人漫游车,以及电机控制中常见问题的解决方法。文章最后还展望了电机控制在更多拓展应用中的潜力。

banana的博客 91

19、树莓派电机控制全攻略

本文详细介绍了如何使用树莓派控制多种类型的电机,包括舵机、直流电机(低功率和高功率)、单极步进电机和双极步进电机。内容涵盖硬件连接、电源选择、驱动芯片的使用以及对应的Python控制程序,同时总结了常见问题及解决方法,并探讨了电机控制在机器人、智能家居和自动化设备中的应用。

sunny的博客 227

24、树莓派电机与开关控制全攻略

本文详细介绍了如何使用树莓派进行双极步进电机和开关的控制。涵盖了使用L293D H桥驱动芯片和Adafruit步进电机HAT两种步进电机控制方案,并详细讲解了多种开关的连接和使用方法,包括触觉按钮开关、双位置拨动或滑动开关以及中心关闭的三位置拨动开关。同时,还介绍了开关抖动处理、外部上拉电阻的使用、以及实际应用案例和注意事项,帮助读者在实际项目中更好地应用树莓派进行控制。

soda5的博客 87

Python GPIO Zero【树莓派 GPIO 接口】 全面讲解

GPIO Zero 是一个用于树莓派 GPIO 接口的 Python 库,由 Raspberry Pi 基金会官方支持。它简化了与 GPIO 设备的交互,提供了直观的面向对象接口,适合初学者和高级用户。

记录点滴 932

20、树莓派机器人与游戏硬件编程全攻略

本文全面介绍了树莓派在机器人控制与游戏硬件编程中的应用,涵盖Mecanum机器人的PWM速度控制、超声波与红外传感器的使用、无线USB控制器配置、自制游戏控制台搭建,并展示了如何结合多种传感器实现智能避障寻线机器人,以及利用GPIO控制Minecraft游戏角色,打造交互式硬件游戏体验。

js777的博客 81

Mac安装Weblogic教程

1.Weblogic的下载 这次安装的是最新版本12 官网下载地址: http://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html 下载需要登录账号,如没有账号要注册一个 下载后的文件如下图,其中fmw_12.2.1.3.0_wls_quick.jar文件就是安装包了,注意现在不要对它进行解压 2.安装前的确...

weixin_40102675的博客 5061

MMORPG网络游戏开发之任务系统的架构与设计

在网路游戏中做任务已经成为游戏很重要的一个核心功能和玩法,如何做好一个灵活可扩展的任务系统的架构与设计,今天来给大家分享一些我们的设计经验。接下来我把整个的任务系统分成以下6个模块:对于单机游戏而言,这6个模块都放在客户端直接处理,对于网路游戏而言,模块1~5实现在服务端,模块6实现在客户端。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。...

voidinit的专栏 3049

实战解析:利用Wireshark解密QQ通信协议

本文提供了一份利用Wireshark工具分析QQ通信协议的实战指南。文章详细介绍了从环境准备、捕获数据包到解析协议层的完整流程,重点演示了如何识别QQ号码字段、观察加密数据特征以及区分不同通信类型(如文本、文件传输)。通过此实践,读者可以深入理解网络分层模型和现代应用加密通信机制,提升网络协议分析与安全诊断能力。

weixin_29210727的博客 406

【一步到位】Android Studio 实现安卓连接阿里云物联网云平台

最新版本目前是Android Studio Iguana | 2024.1.2,你可以到官网上去找之前的版本,手上有工作项目的不要去轻易尝试,说不定你就编译失败了,失败了也不要担心,解决就可以了。

m0_73799445的博客 1万+

VIO实战前传:手把手教你解读Kalibr双目IMU标定报告与参数应用

本文详细解析Kalibr双目IMU联合标定报告的核心参数与应用方法,涵盖重投影误差分析、IMU误差指标解读、关键变换矩阵原理及VINS-Fusion实战配置。通过手把手教学帮助开发者准确理解标定结果,解决VIO算法落地中的参数配置难题,提升视觉惯性里程计的系统稳定性与精度。

weixin_42699679的博客 330

定时移动鼠标点击鼠标,防止电脑息屏的vba脚本

定时移动鼠标,使系统始终处于激活状态,防止系统息屏。

panfei263031的博客 5927

Python速成指南:进阶篇

欢迎来到Python速成指南的进阶篇。如果你已经完成了基础篇的学习(Python速成指南:从零开始的编程之旅-优快云博客),并且对Python的基本概念有了扎实的理解,那么你已经为进入更深层次的Python世界做好了准备。在这个进阶篇中,我们将深入探讨Python的高级特性,并着重于如何在实际工作中应用这些知识。深入理解Python的高级特性掌握在实际项目中常用的技巧和最佳实践提高代码质量和性能了解Python在各个领域的专业应用让我们开始这段激动人心的Python进阶之旅吧!

weixin_44067082的博客 2335

SAP GUI 经典事务在 Fiori Launchpad 中的穿越之道:原理、配置与实践指南

在许多企业的 S/4HANA 或 ECC 系统里,经典 SAP GUI 事务依旧承载着关键业务。如何把这些老将自然地嵌入到 Fiori Launchpad,让用户在统一入口里无缝切换新旧 UI,是项目中经常遇到的主题。本文结合社区博文、官方文档与实际项目经验,系统梳理这一过程的技术原理、配置步骤、性能优化以及常见坑点,并给出贴近中国读者的案例解析与改进建议。阅读完毕,你将不仅知道怎么做,还会理解。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 622

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 2、探索虚拟现实:概念、起源、范式与系统构建
下一篇: 19、Kubernetes 中有状态工作负载部署指南
postgres8guard
博客等级 码龄4年 62粉丝 1443原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值