前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Esp8266 mqtt 步进电机远程控制窗帘

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

作者头像
全栈程序员站长
发布2022-09-09 21:03:14
2.3K1
发布2022-09-09 21:03:14
举报

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

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

效果演示地址: 链接

搭建模型

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

enter description here
enter description here

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

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

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

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

步进电机原理

28BYJ-48步进电机

enter description here
enter description here

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

enter description here
enter description here

更详细的原理分析 链接

控制步进电机

电路接线图

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

示例代码

代码语言:javascript
复制
/* 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
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综合应用之智慧教室项目开发

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 搭建模型
  • 步进电机原理
  • 控制步进电机
  • wifi模块控制电机
    • 项目参考代码在下方
    • 更多学习教程
      • ESP开发学习基础知识
        • esp开发IOT应用
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档