国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32學(xué)習(xí)記錄——藍(lán)牙發(fā)送數(shù)據(jù)(手機(jī)顯示傳感器數(shù)據(jù))

這篇具有很好參考價(jià)值的文章主要介紹了STM32學(xué)習(xí)記錄——藍(lán)牙發(fā)送數(shù)據(jù)(手機(jī)顯示傳感器數(shù)據(jù))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

文章目錄

  • 前言
  • 一、學(xué)習(xí)目的
  • 二、代碼記錄

前言

? ? ? ? 將數(shù)據(jù)通過(guò)藍(lán)牙發(fā)送到手機(jī)上,是學(xué)生學(xué)習(xí)單片機(jī)的必備技能之一,它可以將手機(jī)作為簡(jiǎn)單的上位機(jī),從而使數(shù)據(jù)直觀地展現(xiàn)出來(lái)。

? ? ? ?藍(lán)牙的初始化、藍(lán)牙接受數(shù)據(jù)以及藍(lán)牙簡(jiǎn)單應(yīng)用的介紹和代碼記錄,可以看一看下面的文章,這次就主要記錄一下藍(lán)牙發(fā)送數(shù)據(jù)的學(xué)習(xí)。

HC-05藍(lán)牙模塊的使用_hc05藍(lán)牙調(diào)試助手_KAIs32的博客-CSDN博客

STM32學(xué)習(xí)記錄——使用藍(lán)牙點(diǎn)亮LED_stm32藍(lán)牙點(diǎn)燈_KAIs32的博客-CSDN博客

Arduino學(xué)習(xí)記錄——藍(lán)牙控制舵機(jī)(含LED指示燈)_arduino藍(lán)牙控制舵機(jī)_KAIs32的博客-CSDN博客


一、學(xué)習(xí)目的

stm32 藍(lán)牙,學(xué)習(xí),c語(yǔ)言,單片機(jī),嵌入式硬件,stm32

? ? ? ?我主要是想通過(guò)藍(lán)牙發(fā)送數(shù)據(jù),將單片機(jī)上煙霧傳感器、光敏傳感器、火焰?zhèn)鞲衅鞯饶K檢測(cè)到的數(shù)據(jù)實(shí)時(shí)顯示在手機(jī)上,達(dá)到實(shí)時(shí)監(jiān)控的目的。

? ? ? ?至于傳感器的初始化,這里就不重復(fù)記錄了,可以看看下面的文章進(jìn)行復(fù)習(xí)。

STM32學(xué)習(xí)記錄——光敏傳感器的使用_stm32光敏傳感器_KAIs32的博客-CSDN博客

STM32學(xué)習(xí)記錄——煙霧傳感器的使用_mq2煙霧傳感器stm32代碼_KAIs32的博客-CSDN博客

二、代碼記錄

首先是各個(gè)傳感器的初始化,我統(tǒng)一寫在了同一個(gè).c文件里。

adc.h

#ifndef __ADC_H
#define __ADC_H
#include "stm32f10x.h"

void ADC_Pin_Init(void);    //傳感器引腳、ADC初始化
float ADC_Trans(void);      //煙霧傳感器獲取數(shù)據(jù)

#endif

adc.c

#include "adc.h"
#include "sys.h"
#include "stm32f10x_tim.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_adc.h"
 
void ADC_Pin_Init(void)         //傳感器引腳、ADC初始化
{
	GPIO_InitTypeDef GPIO_InitStruct;
	ADC_InitTypeDef ADC_InitStruct;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1|RCC_APB2Periph_GPIOB,ENABLE);
	
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;     //煙霧傳感器
	GPIO_Init(GPIOA,&GPIO_InitStruct);
	
	GPIO_InitStruct.GPIO_Pin =  GPIO_Pin_1;    //光敏傳感器
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;  
    GPIO_Init(GPIOA, &GPIO_InitStruct); 
	
	GPIO_InitStruct.GPIO_Pin =  GPIO_Pin_0;    //火焰?zhèn)鞲衅?    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;     
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;  
    GPIO_Init(GPIOB, &GPIO_InitStruct); 
	
	ADC_InitStruct.ADC_ContinuousConvMode = ENABLE;
	ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;
	ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;
	ADC_InitStruct.ADC_NbrOfChannel = 1;
	ADC_InitStruct.ADC_ScanConvMode = DISABLE;
	ADC_Init(ADC1,&ADC_InitStruct);
	

	ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_239Cycles5);	
	
	ADC_RegularChannelConfig(ADC1,ADC_Channel_8,1,ADC_SampleTime_239Cycles5);	
	
	ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE);
	
	ADC_Cmd(ADC1,ENABLE);
}

float ADC_Trans (void)          //煙霧傳感器獲取數(shù)據(jù)
{
	float adc_value = 0;
	u8 i = 0;
	ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_239Cycles5);
	for(i = 0; i < 50; i++)
	{ 
		ADC_SoftwareStartConvCmd(ADC1,ENABLE);	
		adc_value = adc_value + ADC_GetConversionValue(ADC1);
	}
	
	return adc_value / 50;
}

接下來(lái)就是藍(lán)牙模塊初始化的代碼

hc05.h

#ifndef __HC05_H
#define __HC05_H
#include "sys.h"

void My_USART2_Init(void);            //串口初始化函數(shù)
//void USART2_IRQHandler(void);       //接受數(shù)據(jù)函數(shù)(這里不用,可以注釋掉)
void Bluetooth_SendData(char* data);  //發(fā)送數(shù)據(jù)函數(shù)

#endif

hc05.c

代碼中有注釋,可以看一看

#include "hc05.h"
#include "usart.h"

//u8 res;  			
void My_USART2_Init(void)  
{  
    GPIO_InitTypeDef GPIO_InitStrue;  
    USART_InitTypeDef USART_InitStrue;  
    NVIC_InitTypeDef NVIC_InitStrue;  
      
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); 
      
//初始化RXD、TXD兩個(gè)引腳
    GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;  
    GPIO_InitStrue.GPIO_Pin=GPIO_Pin_2;
    GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;
    GPIO_Init(GPIOA,&GPIO_InitStrue);
      
    GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;
    GPIO_InitStrue.GPIO_Pin=GPIO_Pin_3;
    GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;
    GPIO_Init(GPIOA,&GPIO_InitStrue); 

//設(shè)置串口參數(shù)
    USART_InitStrue.USART_BaudRate=9600;  
    USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;  
    USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;  
    USART_InitStrue.USART_Parity=USART_Parity_No;  
    USART_InitStrue.USART_StopBits=USART_StopBits_1;  
    USART_InitStrue.USART_WordLength=USART_WordLength_8b;  
    USART_Init(USART2,&USART_InitStrue);
      
    USART_Cmd(USART2,ENABLE);
      
    USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);

//優(yōu)先級(jí)設(shè)置
    NVIC_InitStrue.NVIC_IRQChannel=USART2_IRQn;  
    NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;  
    NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=0;  
    NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;  
    NVIC_Init(&NVIC_InitStrue);  
      
}  

//void USART2_IRQHandler(void)  
//{  

//     if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET)  
// {  
//     res= USART_ReceiveData(USART2); 	 
     USART_SendData(USART2,res);  
//  }  
//}  

void Bluetooth_SendData(char* data) 
{
    while (*data) 
		{
        USART_SendData(USART2, *data++);
        while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
    }
}

最后是主函數(shù)

main.c

#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "adc.h"
#include "hc05.h"

#define BUFFER_SIZE 100

char buffer[BUFFER_SIZE];

int main(void)
{
	float ad = 0;
	My_USART2_Init();
	delay_init();
	uart_init(115200);
	ADC_Pin_Init();
	while(1)
	{
		       if( GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0 && 0 == GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0))
		{
		   ad = ADC_Trans();
           snprintf(buffer, BUFFER_SIZE, "ad0 Data: %f\r\nfire\r\nbright\r\n", ad);		
		   Bluetooth_SendData(buffer);
		   while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
		   delay_ms(1000);
        }
			else if( GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==1 && 0 == GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0))
		{
		   ad = ADC_Trans();
           snprintf(buffer, BUFFER_SIZE, "ad0 Data: %f\r\nfire\r\ndarkness\r\n", ad);		
		   Bluetooth_SendData(buffer);
		   while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
           delay_ms(1000);					
        }
		   else if( GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==1 && 1 == GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0))
	    {
		   ad = ADC_Trans();
           snprintf(buffer, BUFFER_SIZE, "ad0 Data: %f\r\nfireless\r\ndarkness\r\n", ad);		
		   Bluetooth_SendData(buffer);
		   while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
		   delay_ms(1000);			
        }
		   else if( GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0 && 1 == GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0))
		{
		   ad = ADC_Trans();
           snprintf(buffer, BUFFER_SIZE, "ad0 Data: %f\r\nfireless\r\nbright\r\n", ad);		
		   Bluetooth_SendData(buffer);
		   while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
		   delay_ms(1000);			
        }			
        delay_ms(100);  
	}
}

? ? ? ? 主函數(shù)比較復(fù)雜,實(shí)現(xiàn)的功能主要是實(shí)時(shí)顯示煙霧濃度、是否有光和是否有火,可以在這個(gè)基礎(chǔ)上進(jìn)行修改和刪減。由于是寫記錄時(shí)稍加修改后的代碼,可能有一定的小問(wèn)題,如果遇到問(wèn)題或者需要源碼可以評(píng)論交流一下。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-722252.html

到了這里,關(guān)于STM32學(xué)習(xí)記錄——藍(lán)牙發(fā)送數(shù)據(jù)(手機(jī)顯示傳感器數(shù)據(jù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32學(xué)習(xí)記錄——聲音傳感器的使用

    STM32學(xué)習(xí)記錄——聲音傳感器的使用

    文章目錄 前言 一、學(xué)習(xí)目的 二、模塊介紹 三、代碼記錄 今天記錄的是聲音傳感器模塊的學(xué)習(xí) ? ? ? ?我的學(xué)習(xí)目的是學(xué)會(huì)使用聲音傳感器模塊,并通過(guò)檢測(cè)聲音的有無(wú)控制LED的亮滅。我使用的是STM32F103C8T6核心板上的自帶LED,引腳是PC13。 ? ? ? ?我用的是上圖所示的聲音傳

    2024年02月16日
    瀏覽(21)
  • STM32學(xué)習(xí)記錄——煙霧傳感器的使用

    STM32學(xué)習(xí)記錄——煙霧傳感器的使用

    文章目錄 前言 一、學(xué)習(xí)目的 二、模塊介紹 三、代碼記錄 總結(jié) ? ? ? ?這次記錄一下煙霧傳感器的學(xué)習(xí),由于煙霧傳感器的資料比較雜,算法比較多,對(duì)我來(lái)說(shuō)也比較難,所以我的代碼中算法部分是不太具有參考價(jià)值,但是也可以做到隨煙霧濃度的變化數(shù)值呈線性相關(guān),以

    2024年02月09日
    瀏覽(27)
  • 藍(lán)牙串口調(diào)試助手通過(guò)PC藍(lán)牙發(fā)送數(shù)據(jù)給ESP32同時(shí)在串口上顯示

    藍(lán)牙串口調(diào)試助手通過(guò)PC藍(lán)牙發(fā)送數(shù)據(jù)給ESP32同時(shí)在串口上顯示

    OK,好久沒(méi)有更新Blog啦 今天把之前積累的代碼放上,給需要學(xué)習(xí)的程序猿們使用 我還是不太喜歡寫文字,倒是比較喜歡客套,哈哈 硬件圖: ESP32和USB-micro-B數(shù)據(jù)線一根 藍(lán)牙串口調(diào)試助手通過(guò)PC藍(lán)牙發(fā)送數(shù)據(jù)給ESP32同時(shí)在串口上顯示 具體代碼如下:

    2024年02月09日
    瀏覽(23)
  • STM32外設(shè)芯片驅(qū)動(dòng)學(xué)習(xí)記錄 —— (一) BH1750光照傳感器驅(qū)動(dòng)開發(fā)

    STM32外設(shè)芯片驅(qū)動(dòng)學(xué)習(xí)記錄 —— (一) BH1750光照傳感器驅(qū)動(dòng)開發(fā)

    一、芯片介紹 二、Datasheet解讀 1.硬件說(shuō)明 2.寄存器說(shuō)明 3.通信過(guò)程 三、驅(qū)動(dòng)代碼編寫 1.軟件I2C驅(qū)動(dòng) 2. BH1750芯片驅(qū)動(dòng)函數(shù) 總結(jié) ? ? ? ? ? ? BH1750是16位數(shù)字輸出型,環(huán)境光強(qiáng)度傳感器集成電路,使用I2C接口通信,工作電壓:VCC(2.4~3.6V),I2C電平(1.65~VCC),用于各類消費(fèi)類LCD屏

    2024年02月02日
    瀏覽(17)
  • 單片機(jī)設(shè)計(jì):stm32遠(yuǎn)程水位檢測(cè)灌溉系統(tǒng)(水泵+電機(jī)驅(qū)動(dòng)+OLED顯示屏+水位傳感器+防水式ds18b20+光敏傳感器+按鍵+WiFi+手機(jī)app)

    單片機(jī)設(shè)計(jì):stm32遠(yuǎn)程水位檢測(cè)灌溉系統(tǒng)(水泵+電機(jī)驅(qū)動(dòng)+OLED顯示屏+水位傳感器+防水式ds18b20+光敏傳感器+按鍵+WiFi+手機(jī)app)

    單片機(jī)設(shè)計(jì):stm32遠(yuǎn)程水位檢測(cè)灌溉系統(tǒng)(水泵+電機(jī)驅(qū)動(dòng)+OLED顯示屏+水位傳感器+防水式ds18b20+光敏傳感器+按鍵+WiFi+手機(jī)app) 一、主要功能:? ? 1.水位傳感器檢測(cè)水的高度、光敏傳感器檢測(cè)周圍光照強(qiáng)度、ds18b20檢測(cè)水溫 2.0LED、手機(jī)app顯示當(dāng)前數(shù)據(jù)以及閾值 3.手機(jī)app遠(yuǎn)程調(diào)節(jié)閾值,

    2024年02月05日
    瀏覽(40)
  • STM32CubeMX 讀取DS18B20溫度傳感器數(shù)據(jù)串口打印顯示

    STM32CubeMX 讀取DS18B20溫度傳感器數(shù)據(jù)串口打印顯示

    本文要做的所有工作標(biāo)題基本都包括了,讀取溫度傳感器的溫度數(shù)值,再通過(guò)串口打印到串口助手; 好多博主大神的教程我按步驟做了之后總是出現(xiàn)程序不報(bào)錯(cuò)并且檢測(cè)不到傳感器的情況,后來(lái)找到原因并且修改后調(diào)試正常。 我用的是普中科技的實(shí)驗(yàn)板,主控芯片為STM3210

    2024年02月05日
    瀏覽(20)
  • STM32學(xué)習(xí)記錄——SIM900A實(shí)現(xiàn)中英文短信發(fā)送

    STM32學(xué)習(xí)記錄——SIM900A實(shí)現(xiàn)中英文短信發(fā)送

    目錄 調(diào)試 32控制 硬件連接 百度網(wǎng)盤源碼? 發(fā)短信失敗大概率跟你的模塊供電有關(guān)系,由于GSM模塊發(fā)射信號(hào)功率較大,電腦的USB供電電流較小,板子供電不足問(wèn)題需要外接充電寶供電。(充電寶比電腦USB電流大) 首先用串轉(zhuǎn)USB模塊調(diào)試。 TEST(UCS2)模式下發(fā)送中英文短息,短消

    2023年04月12日
    瀏覽(100)
  • STM32學(xué)習(xí)筆記———幾種簡(jiǎn)單傳感器的數(shù)據(jù)讀取

    STM32學(xué)習(xí)筆記———幾種簡(jiǎn)單傳感器的數(shù)據(jù)讀取

    傳感器正如計(jì)算機(jī)的眼睛。從廣義上講,傳感器就是一種能感知外界信息,并將這些信息按照一定規(guī)律轉(zhuǎn)換成可用的電信號(hào)或其他形式的輸出信號(hào)的裝置,達(dá)到對(duì)信息的存儲(chǔ),傳輸,控制的目的。本文著重分析如何通過(guò)單片機(jī)分析電信號(hào)時(shí)序圖實(shí)現(xiàn)對(duì)傳感器的控制與傳感器采

    2023年04月23日
    瀏覽(21)
  • STM32WB55_NUCLEO開發(fā)(11)----發(fā)送數(shù)據(jù)到手機(jī)

    STM32WB55_NUCLEO開發(fā)(11)----發(fā)送數(shù)據(jù)到手機(jī)

    本篇文章將詳細(xì)介紹如何在上節(jié)配置的基礎(chǔ)上,實(shí)現(xiàn)通過(guò)點(diǎn)擊STM32WB開發(fā)板上的按鍵發(fā)送數(shù)據(jù)到手機(jī)上。 最近在弄ST和瑞薩RA的課程,需要樣片的可以加群申請(qǐng):6_15061293 。 首先需要準(zhǔn)備一個(gè)開發(fā)板,這里我準(zhǔn)備的是NUCLEO-WB55RG 的開發(fā)板: 聽(tīng)不到聲音的請(qǐng)點(diǎn)擊跳轉(zhuǎn)進(jìn)行觀看。

    2024年02月01日
    瀏覽(16)
  • STM32學(xué)習(xí)記錄0010——TFTLCD液晶顯示屏

    STM32學(xué)習(xí)記錄0010——TFTLCD液晶顯示屏

    《STM32不完全手冊(cè)》第18章 《ILI9341數(shù)據(jù)手冊(cè)》 TFT-LCD 即薄膜晶體管液晶顯示器。其英文全稱為:Thin Film Transistor-Liquid Crystal Display。TFT-LCD與無(wú)源 TN-LCD、STN-LCD 的簡(jiǎn)單矩陣不同,它在液晶顯示屏的每一個(gè)象素上都設(shè)置有一個(gè)薄膜晶體管(TFT),可有效地克服非選通時(shí)的串?dāng)_,使

    2023年04月09日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包