草庐IT

自制芯片 http转串口通信模块实现手机控制加红外控制51单片机实现双控制 28BYJ-48步进电机( 13003步进电机驱动器 STC89C52RC ESP8266)

编程的夜晚 2024-04-13 原文

首先你有这样的8266

这种8266自身带2个按键和烧录芯片方便调试,综合性价比较高。
还需要有一个51单片机 或者其他单片机都行。
还有就是需要这样的13003步进电机驱动器 + 28BYJ-48步进电机和红外接收头以及遥控器

有了这些我们开始吧!

1.先看一段视频效果演示,再来介绍实现步骤

自制芯片 http转串口通信模块实现手机控制加红外控制51单片机实现双控制uln2003步进电机( STC89C52RC ESP8266)

2.这个通信系统官网地址是 http://zh1024.com/docs

或者 https://zh1024.hsk.top/docs

我们需要先烧录文档里的最新固件到esp8266, 这个固件是把8266作为公网通信模块,只是用来通信
不需要写代码到8266,51单片机通过串口就可以收发消息,所有我们只是需要在51单片机写串口接收,
处理,和发送代码就行。

3.如果你不会51单片机串口通信的代码没关系 文档 http://zh1024.com/docs 或者https://zh1024.hsk.top/docs里面已经写好了很多单片机的示例代码

#include <REG52.H>
sbit LED = P2^0;
unsigned char UART_buff;

//----------------------------------------------
void main (void)
{
    SCON = 0x50;   //串口方式1, 8-n-1, 允许接收.
    TMOD = 0x20;   //T1方式2
    TH1 = 0xFD;    //9600bps@11.0592MHz[/url]
    TL1 = 0xFD;
    TR1 = 1;                        
    ES  = 1;       //开中断.
    EA  = 1;
    while(1);    

}

//---------------------------------------

void myprint(char datas[]){
	int i;
	for(i=0;datas[i]!='\0';i++){		
		  SBUF=datas[i];
			while(!TI);		   
			TI=0;
		
	}
	
	
}

//----------------------------------------------
void ser_int (void) interrupt 4 
{
    if(RI == 1) {  //如果收到.
      RI = 0;      //清除标志.
      UART_buff = SBUF;  //接收.
      if(UART_buff == '>'){	  
			LED = 0;
			myprint("#on");
			
			}
			
      if(UART_buff == '<'){	  
	  
			LED = 1;
			myprint("#off");
			
			}

    }

} 
//---------------------------------------------

4.如何使用红外遥控器控制呢?文档http://zh1024.com/docs或者https://zh1024.hsk.top/docs 里面有红外文档 点击即可看到很多红外资料

5.如何驱动步进电机呢?文档http://zh1024.com/docs或者https://zh1024.hsk.top/docs 里面有步进电机文档 点击即可看到很多电机资料

6.如何使用手机控制呢?文档里面提供了网页控制和微信小程序和手机app还有webapi接口,还有语音控制的方法,还提供了 手机app模块化编程 APP inventer 代码示例 可提供APP inventer 离线版开发环境 直接模块化设计app 无需注册。

其实文档http://zh1024.com/docs或者https://zh1024.hsk.top/docs里面已经写了很多,而且有很多视频演示,
网页控制和微信小程序和手机app直接可以使用,webapi接口就可以结合智能音箱插件或者树莓派控制和自己写其他的客户端。
这个接口是免费的,而且稳定运行很多年了。希望能帮助到你,不懂的欢迎进群坐坐。
QQ交流群:1031018852
微信号:hellobcdyw
QQ号:3100523039

有关自制芯片 http转串口通信模块实现手机控制加红外控制51单片机实现双控制 28BYJ-48步进电机( 13003步进电机驱动器 STC89C52RC ESP8266)的更多相关文章

  1. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  2. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  3. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  4. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  5. ruby-on-rails - 带 Spring 锁的 Rails 4 控制台 - 2

    我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.

  6. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  7. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  8. ruby - 当使用::指定模块时,为什么 Ruby 不在更高范围内查找类? - 2

    我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or

  9. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c

  10. ruby - 模块嵌套代码风格偏好 - 2

    我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的

随机推荐