Blinker 语音控制 51单片机 点灯

Blinker


blinker是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、服务器端支持,使用公有云服务进行数据传输存储。可用于智能家居、数据监测等领域,可以帮助用户更好更快地搭建物联网项目。

blinker特性

●其由服务器端、app端、设备端组成,可以部署到几乎所有物联网平台
●ap端支持ios、android
●设备端可以使用蓝牙、WiFi、MQTT等方式接入,支持Arduino、freeRTOS、mbed OS、Linux等开发平台
●服务器端可以部署到阿里云、腾讯云、OneNET、百度云、AWS、google cloud等平台
●通过界面布局器,DIY用户可自己拖拽布局设备控制界面,自由打造你的物联网设备●通过专属SDK,认证用户可以使用Blinker开发自己的产品,并用于商业用途blinker

应用场景

●快速开发物联网/智能家居/无线遥控项目
●手机/语音助手控制设备
●蓝牙ble/局域网WiFi/远程MQTT接入设备

Arduino

Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。
它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是通过 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。

学习过程

步骤

  1. 注册点灯科技账号,注册米家账号
  2. 米家绑定其他设备平台点灯科技blinker
  3. 点灯科技blinker平台创建一个设备选择为Arduino,获取密钥
  4. 使用arduino ide 使用nodemcu(esp8266模块) 下载代码(串口发送数据)
  5. 51单片机进行进行串口操作,串口接收数据,进行操作。
  6. ArduinoIDE 开发esp8266









软件部分

Arduino 代码

* *****************************************************************
 * 
 * Blinker 库下载地址:
 * https://github.com/blinker-iot/blinker-library/archive/master.zip
 * 
 * Blinker 是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、
 * 服务器端支持,使用公有云服务进行数据传输存储。可用于智能家居、
 * 数据监测等领域,可以帮助用户更好更快地搭建物联网项目。
 * 
 * 如果使用 ESP8266 接入 Blinker,
 * 请确保安装了 2.5.0 或更新的 ESP8266/Arduino 支持包。
 * https://github.com/esp8266/Arduino/releases
 * 
 * 如果使用 ESP32 接入 Blinker,
 * 请确保安装了 1.0.2 或更新的 ESP32/Arduino 支持包。
 * https://github.com/espressif/arduino-esp32/releases
 * 
 * 文档: https://doc.blinker.app/
 *       https://github.com/blinker-iot/blinker-doc/wiki
 * 
 * *****************************************************************/

#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT

#include <Blinker.h>

char auth[] = "ff07996779a7";//设备密钥//很重要的
char ssid[] = "MERCURY_3DE2";//你的wifi或者热点名称
char pswd[] = "88888888";//你的wifi或者热点密码


#define LED D1


void miotPowerState(const String & state)
{
  BLINKER_LOG("need set power state: ", state);

  if (state == BLINKER_CMD_ON) 
  {
    digitalWrite(LED, LOW);
    Serial.print(1);

    BlinkerMIOT.powerState("on");
    BlinkerMIOT.print();
  }
  else if (state == BLINKER_CMD_OFF)
  {
    digitalWrite(LED, HIGH);

    BlinkerMIOT.powerState("off");
    BlinkerMIOT.print();
    Serial.print(0);
  }
}

void setup()
{
    Serial.begin(9600);   

    pinMode(LED, OUTPUT);
    digitalWrite(LED, LOW);

    Blinker.begin(auth, ssid, pswd);
    
    BlinkerMIOT.attachPowerState(miotPowerState);
}

void loop()
{
    Blinker.run();
}

STC89C51代码

#include <reg52.h>

sbit LED =P2^0;

unsigned char a;

void ConfigUART(unsigned int baud)  //串口配置函数,baud为波特率
{
    SCON = 0x50;   //配置串口为模式1
	
    TMOD= 0x21;  //配置T1为模式2
		
    TH1 = 256 - (11095200/12/32) / baud;  //计算T1重载值
    TL1 = TH1;     //初值等于重载值
	
    ET1 = 0;       //禁止T1中断
 
    ES = 1;   //打开串口中断
	
    EA = 1;   //打开总中断
	
	  TR1 = 1;       //启动T1
}

void main ()
{
    ConfigUART(9600);  //配置波特率为9600

    while(1);
}


void InterruptUART() interrupt 4
{
	if (RI)  //接收到字节
	{
		RI = 0;  //手动清零接收中断标志
				
		a=SBUF;
				
		if(a =='1')
		    P2=0x00;//全部亮
		else 
		    P2=0xff;//全部灭
				
		SBUF=a;
   }
	
    if (TI)  //字节发送完毕
    {
      TI = 0;  //手动清零发送中断标志位
    }  
}

硬件部分

  1. STC89C5x系列单片机
  2. nodemcu esp8266 WIFI模块
  3. 串口连接部分
    nodemcu ---- STC89C5x单片机
    RX --> TX
    TX --> RX

参考资料

  1. Arduino ESP8266 学习 单片机菜鸟的博客
    https://blog.csdn.net/dpjcn1990?t=1
  2. 哔哩哔哩-UP主–雅痞1900
    https://space.bilibili.com/397351217?spm_id_from=333.788.b_765f7570696e666f.2
    (这个东西不不是我搞的,我只是把这个东西写成了一个笔记,毕竟一个渣渣,只能靠白嫖维持)
  3. 视频学习(主要还是哔哩哔哩UP主提供的资料–哔哩哔哩)