2、微信小程序連接藍牙和單片機進行串口通信


網上雖然有很多關於微信小程序藍牙和單片機進行串口通信文章,但是大部分的人 還是有所保留的,有的文章說個一知半解,有的只貼出了部分代碼。這對新手來說無疑是雪上加霜,甚至你花很多的時間研究他們的文章結果發現連跑起來都難,會出現一堆的問題。我深知對新手來說其中的不容易,故抽出時間來給新手們來個實戰教程。

一、硬件准備

1、低功耗藍牙透傳模塊(並不是任何藍牙模塊都能和微信小程序藍牙連接,微信小程序使用的是低功耗藍牙,如hc-06以上,本例使用是hc-08,協議版本是4.0)

2、下載代碼到本地,並使用微信小程序工具打開,編譯通過后點擊真機調試(微信小程序不支持在開發工具上調試)

 

 3、將藍牙模塊上電並使用微信小程序搜索藍牙設備

 

 

 4、上位機收到信息

 

 5、上面可以看出微信小程序發送數據串口能接收到,由於我沒有硬件,下面單片機使用仿真來演示。

 

 6、發送1表示開燈,0表示關燈,單片機收到數據后返回對應的信息

單片機源碼如下:

#include <reg51.h>
sbit p1_0 = P1^0;
//初始化串口 (設置串口,開啟串口中斷)
void init_uart(void)
{
	SCON = 0x50;		        // SCON: 方式 1, 8-bit, 允許接收數據 
	TMOD |= 0x20;               // TMOD: 設置定時器1工作在方式2, 8-bit 自動重裝
	TH1 = 0xFD;               // TH1:  初始值為0xFD  波特率:9600 晶振頻率:11.0592MHz  
	TL1 = 0xFD;  
	TR1 = 1;                  // TR1:  開啟定時器1                         
	EA  = 1;                  //打開總中斷
	ES  = 1;                  //打開串口中斷
}     
// 發送一個字節數據
void uart_send_byte(unsigned char dat)
{
	SBUF = dat; // 將數據送到發送緩沖寄存器SBUF,一位一位的發送
	while(!TI); // 等待發送完畢 (發送完畢TI硬件置1)
	TI = 0;// 將TI清零,表示可以發送下一字節數據。
}
// 發送字符串
void uart_send_str(unsigned char *s)
{
	while(*s != '\0')// '\0':字符串結束標志
	{
		uart_send_byte(*s);// 發送1個字節數據,1個字符占8位,1字節
		s++;// 指向下一個字符
	}
}
 
// 串口中斷處理函數 (串口接收到數據,發送數據完畢都可以引起串口中斷)
void uart_interrupt(void) interrupt 4 		//也叫串行中斷服務程序
{
	unsigned char recv_data;// 用來存放接收到的數據
	unsigned char send_data[] = "I received.\n";// 要發送的信息
	
	if(RI) //接收數據(1字節)完畢,RI會被硬件置1
	{
		RI = 0;            		// 將 接收中斷標志位 清零(讓串口可以繼續接收數據)
		recv_data = SBUF;           	//讀取接收到的數據,並存放到data
		
		if(recv_data == '1')//如果收到的字符是'0',就讓燈滅
		{
			p1_0 = 0;//  p1.0引腳低電平,LED燈亮
		}
		else
		{
			p1_0 = 1;// p1.0引腳高電平,LED燈滅
		} 
 
	   uart_send_str(send_data); //收到數據之后,發送字符串"I received."給對方	   
	}
	if(TI)// 發送數據(1字節)完畢
	{
		TI = 0;// 將 發送中斷標志位 清零(讓串口可以繼續發送數據)
	}
} 
 
void main(void)
{
	init_uart();// 初始化串口
	while(1);// 主循環不做任何動作。(死循環)
}

至此,實現了微信小程序藍牙與單片機通信。

如果還有不明白的可以加我QQ進行咨詢。

1842988062  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM