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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 高性能内存池_内存池化

    高性能内存池_内存池化文章目录项目简介内存池的概念定长内存池的实现整体框架设计threadcachethreadcache整体设计threadcache哈希桶映射对齐规则threadcacheTLS无锁访问centralcachecentralcache整体设计centralcache结构设计centralcache核心实现pagecachepagecache整体设计pagecache中获取Span申请内存过程联调threadcache回收内存centralcache回收内存pagecache回收内存释放内存过程联调大于256K

    2022年10月22日
  • 前端生成图表

    前端生成图表

  • 角度与弧度互转_如何将角度转为弧度

    角度与弧度互转_如何将角度转为弧度1、角度定义   两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当弧长正好等于圆周长的360分之一时,两条射线的夹角的大小为1度。(单位:º)2、弧度定义   两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆的半径时,两条射线的夹角大小为1弧度(单位:rad)。可简单理解为:弧度=弧长/半径3、弧长与弧度   3.1圆的周长C的计算…

  • 字节跳动社招面试经验_字节hr面试后多久会通知你

    字节跳动社招面试经验_字节hr面试后多久会通知你虽然已经临近年末,但是还是萌生要看新机会的想法,主要的原因是觉得在目前的岗位上技术增长遇到的瓶颈,因此想去做一些更有挑战的工作。因为仍然准备继续在深圳工作,因此选定了三家公司,腾讯、字节跳动和sho

  • jedis连接池:JedisPool[通俗易懂]

    jedis连接池:JedisPool[通俗易懂]jedis连接池:JedisPool使用:1.创建JedisPool连接池对象2.调用方法getResource()方法获取Jedis连接//0.创建一个配置对象JedisPoolConfigconfig=newJedisPoolConfig();config.setMaxTotal(50);config.setMaxIdle(10);//1.创建Jedis连接池对象JedisPooljedisPool=newJe

  • setTimeout实现setInterval和clearInterval[通俗易懂]

    setTimeout实现setInterval和clearInterval[通俗易懂]functioninterV(fn,time){letres={target:”//需要注意:利用引用类型保证target一直是最新的}functiontest(){fn()res.target=setTimeout(test,time);}test()returnres}functioncv(timer){clearTimeout(timer.target)}lett=int

发表回复

您的电子邮箱地址不会被公开。

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