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)來實現。
學習過程
步驟
- 注冊點燈科技賬號,注冊米家賬號
- 米家綁定其他設備平台點燈科技blinker
- 點燈科技blinker平台創建一個設備選擇為Arduino,獲取密鑰
- 使用arduino ide 使用nodemcu(esp8266模塊) 下載代碼(串口發送數據)
- 51單片機進行進行串口操作,串口接收數據,進行操作。
- 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; //手動清零發送中斷標志位
}
}
硬件部分
- STC89C5x系列單片機
- nodemcu esp8266 WIFI模塊
- 串口連接部分
nodemcu ---- STC89C5x單片機
RX --> TX
TX --> RX
參考資料
- Arduino ESP8266 學習 單片機菜鳥的博客
https://blog.csdn.net/dpjcn1990?t=1 - 嗶哩嗶哩-UP主–雅痞1900
https://space.bilibili.com/397351217?spm_id_from=333.788.b_765f7570696e666f.2
(這個東西不不是我搞的,我只是把這個東西寫成了一個筆記,畢竟一個渣渣,只能靠白嫖維持) - 視頻學習(主要還是嗶哩嗶哩UP主提供的資料–嗶哩嗶哩)