Esp8266 mqtt 步进电机远程控制窗帘

Esp8266 mqtt 步进电机远程控制窗帘使用28BYJ-48步进电机esp8266-12f(或nodemcu)mqtt基于arduinoIDE开发实现通过mqtt发送指令给wifi模块进而控制电机,电机拖动窗帘打开或闭合效果演示地址:链接搭建模型如何制作电动窗帘,牛人给你解释它的原理参考这个视频搭建窗帘模型模型搭建很重要就算电机能够稳定控制但是模型搭建的不好窗帘的打开和关闭都会受到影响电机要粘牢固…

大家好,又见面了,我是你们的朋友全栈君。

使用 28BYJ-48步进电机 esp8266-12f(或nodemcu) mqtt 基于arduino IDE开发实现
通过mqtt发送指令给wifi模块进而控制电机,电机拖动窗帘打开或闭合

效果演示地址:
链接

搭建模型

如何制作电动窗帘,牛人给你解释它的原理
参考这个视频 搭建窗帘模型
enter description here

模型搭建很重要 就算电机能够稳定控制但是模型搭建的不好 窗帘的打开和关闭都会受到影响

  • 电机要粘牢固
  • 绳子要选细的粗糙的(摩擦力大)
  • 窗帘选软纸 或者布
  • 滑轮一定要认真做 很影响转动

我第一次试验论证是否能够行得通的时候 制作了一个窗帘模型,犯了很多错做的也很丑
但是试验成功了!!!
enter description here

第二次我们的窗帘模型是我和另外一个java大佬熬夜做出来的,两个工科生做手工真的是太折磨人了…
enter description here

步进电机原理

28BYJ-48步进电机
enter description here

28BYJ-48的含义为外径28毫米四相八拍式永磁减速型步进电机
对于驱动28BYJ-48步进电机,最常用的方法是使用ULN2003驱动板。
用Arduino开发板的+5V电源直接为ULN2003驱动板供电的方法短时间测试是可以的,但是不要在长时间使用Arduino为ULN2003驱动板进行供电。
enter description here

更详细的原理分析 链接

控制步进电机

电路接线图
enter description here

使用Stepper库
建立步进电机对象
定义电机控制引脚以及电机基本信息。
电机控制引脚为 8,9,10,11
以上引脚依次连接在ULN2003 驱动板 In1, In2, In3, In4
创建电机 对象

示例代码
参考 dianji.ino 学习stepper库的使用方法
创建对象 Stepper steppermotor(STEPS_PER_ROTOR_REV, 8, 10, 9, 11);
其中的第一个参数为 一次转动的步数
在这里可以设置为2048

示例代码

/* Arduino控制28BYJ-48步进电机测试程序 本示例程序旨在演示如何通过Arduino控制28BYJ-48步进电机。 */
 
//本示例程序使用Stepper库
#include 
 
// 定义电机控制用常量
 
// 电机内部输出轴旋转一周步数
const int STEPS_PER_ROTOR_REV = 32; 
 
// 减速比
const int GEAR_REDUCTION = 64;
 
/* * 转子旋转一周需要走32步。转子每旋转一周,电机输出轴只旋转1/64周。 * (电机内部配有多个减速齿轮,这些齿轮会的作用是让转子每旋转一周, * 输出轴只旋转1/64周。) * 因此电机输出轴旋转一周则需要转子走32X64=2048步,即以下常量定义。 */
 
// 电机外部输出轴旋转一周步数 (2048)
const float STEPS_PER_OUT_REV = STEPS_PER_ROTOR_REV * GEAR_REDUCTION;
 
// 定义电机控制用变量
 
// 电机旋转步数
int StepsRequired;
 
// 建立步进电机对象
// 定义电机控制引脚以及电机基本信息。
// 电机控制引脚为 8,9,10,11 
// 以上引脚依次连接在ULN2003 驱动板 In1, In2, In3, In4 
 
Stepper steppermotor(STEPS_PER_ROTOR_REV, 8, 10, 9, 11); 
 
void setup()
{ 
   
//setup函数内无内容
}
 
void loop()
{ 
   
  // 极慢转动4步用于观察ULN2003电机驱动板LED变化
  steppermotor.setSpeed(1);    
  StepsRequired  =  4;
  steppermotor.step(StepsRequired);
  delay(1000);
 
   // 慢速顺时针旋转一圈
  StepsRequired  =  STEPS_PER_OUT_REV; 
  steppermotor.setSpeed(500);   
  steppermotor.step(StepsRequired);
  delay(1000);
  
  // 快速逆时针旋转一圈
  StepsRequired  =  - STEPS_PER_OUT_REV;   
  steppermotor.setSpeed(800);  
  steppermotor.step(StepsRequired);
  delay(2000);
 
}

参考太极创客链接

wifi模块控制电机

依旧使用的stepper库更改了GPIO引脚
创建对象
Stepper steppermotor(STEPS_PER_OUT_REV, D1, D2, D5, D6);
Stepper steppermotor(STEPS_PER_OUT_REV, 5, 4, 14, 12);
(两个一样)

看到国外一个使用nodemcu mqtt 以及 28BYJ-48步进电机的使用方法
更换了引脚 更改了部分参数 成功了

接线图
enter description here
enter description here
(对应GPIO 分别是GPIO 5,GPIO 4, GPIO14, GPIO12)

创建的对象为 Stepper steppermotor(STEPS_PER_OUT_REV, D1, D2, D5, D6);
其中第一个参数设置为200 速度设置80 相比于arduino都比较小
将第一个参数提升到600时电机转不动… 没找到原因

项目参考代码在下方

更多学习教程

ESP开发学习基础知识

基础知识包括对esp模块的认识与了解 mqtt协议的了解,arduino IDE运用代码编写等等。

  1. arduino基础学习
  2. esp系列模块的介绍
  3. mqtt协议的介绍与使用
  4. 利用mqtt esp模块 基于arduino IDE开发方法
  5. esp模块的AT指令 刷固件
  6. esp模块睡眠模式使用
  7. esp8266-01s介绍与使用
  8. esp8266-12f介绍与使用
  9. NodeMcu介绍与使用
esp开发IOT应用

基于esp8266的模块以及其他模块根据实际的应用场景与需求制作的物联网应用

  1. 基于FRID arduino 继电器 电磁锁开发的FRID门禁系统
  2. esp32-cam获取视频流图像处理
  3. 基于步进电机 esp8266 mqtt开发的自动窗帘控制
  4. 基于DHT11 Esp8266 mqtt获取室内温湿度
  5. 基于CCS811 esp8266 mqtt 获取室内空气质量
  6. 基于红外模块 esp8266 mqtt开发的智能遥控控制
  7. 基于ws2812 esp8266 mqtt开发的智能多级照明灯
  8. 基于ws2812 esp8266 mqtt开发的智能多模式氛围灯
  9. 基于mp3player esp8266 mqtt开发的智能语音播报系统
  10. IOT综合应用之智慧教室项目开发

如果以上内容对你有帮助或是对IOT开发感兴趣,欢迎关注我。

本人接下来一段时间承接人脸图像处理,IOT开发等相关项目(毕设 比赛等)
有需要可联系qq:1639206518

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152469.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月23日 上午8:36
下一篇 2022年6月23日 上午8:36


相关推荐

  • 设计原则之里氏替换原则详解

    设计原则之里氏替换原则详解一 里氏替换原则定义定义 如果对每一个类型为 T1 的对象 O1 都有类型为 T2 的对象 O2 使得所有以 T1 定义的所有程序 P 在所有的对象 O1 都替换成 O2 时 程序 P 的行为没有发生任何变化 那么类型 T2 是类型 T1 的子类型 通俗理解就是 子类可以扩展父类的功能 但不能改变父类原有的功能 有以下几个引申含义 子类可以实现父类的抽象方法 但不能覆盖父类的非抽象方法 子类中可以增加自己特有的方法 当子类的方法重载父类的方法时 方法的前置条件 方法的输入 入参 要比父类的入参更宽松 当子类的方法实现父类的方法时

    2026年3月18日
    2
  • java 检查bytebuf长度_ByteBuf分析

    java 检查bytebuf长度_ByteBuf分析1 概念 JavaNIOAPI 自带的缓冲区类功能相当有限 没有经过优化 使用 JDK 的 ByteBuffer 操作更复杂 故而 Netty 的作者 TrustinLee 为了实现高效率的网络传输 重新造轮子 Netty 中的 ByteBuf 实际上就相当于 JDK 中的 ByteBuffer 其作用是在 Netty 中通过 Channel 传输数据 2 优势可以自定义缓冲类型 通过内置的复合缓冲类型 实现透明的零拷贝 ze

    2026年3月19日
    2
  • JS 判断字符串是否为空

    JS 判断字符串是否为空从 ES6 开始 JS 共有 7 种数据类型 分为基本类型和引用类型两大类 基本类型 String Number Boolean Symbol Undefined Null 引用类型 Object object array function typeof 运算符返回变量或表达式的类型 通过 typeof 运算符可以粗略确定 JavaScript 变量的类型 typeof string typeof BillGates string typeof

    2026年3月20日
    2
  • selenium之 玩转鼠标键盘操作(ActionChains)

    selenium之 玩转鼠标键盘操作(ActionChains)用 selenium 做自动化 有时候会遇到需要模拟鼠标操作才能进行的情况 比如单击 双击 点击鼠标右键 拖拽等等 而 selenium 给我们提供了一个类来处理这类事件 ActionChains webdriver common action chains ActionChains driver 这个类基本能够满足我们所有对鼠标操作的需求 1 ActionChains 基本用法首先

    2026年3月26日
    2
  • pytorch之torch.nn.Conv2d()函数详解

    pytorch之torch.nn.Conv2d()函数详解文章目录一 官方文档介绍二 torch nn Conv2d 函数详解参数详解参数 dilation 扩张卷积 也叫空洞卷积 参数 groups 分组卷积三 代码实例一 官方文档介绍官网 nn Conv2d 对由多个输入平面组成的输入信号进行二维卷积二 torch nn Conv2d 函数详解参数详解 torch nn Conv2d in channels out channels kernel size stride 1 padding 0 dilation 1 groups

    2026年3月20日
    2
  • CSS绝对定位

    CSS绝对定位当元素的 position 设置为 absolute 时 则开启了元素的绝对定位用法 position absolute 绝对定位的特点 与相对定位一样 开启了绝对定位以后 如果不设置偏移量 元素的位置不会发生任何改变开启绝对定位之后 元素会从原有的文档流中脱离 只是相对于它的包含块定位 包含块可能是文档流中的另一个元素或者是初始包含块绝对定位会改变元素的性质 行内元素变为块元素 块元素的宽度被内容撑开 即块元素中原有内容有多宽 开启绝对定位之后的块元素就有多宽 绝对定位会使元素提升一个层级下面我们来看一个栗子

    2026年3月20日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号