標(biāo)題:
基于NRF52832的低功耗藍(lán)牙手環(huán)門鎖的設(shè)計(jì)方案
[打印本頁(yè)]
作者:
樺的木
時(shí)間:
2019-9-7 11:40
標(biāo)題:
基于NRF52832的低功耗藍(lán)牙手環(huán)門鎖的設(shè)計(jì)方案
八月的時(shí)候做的一個(gè)單子,是用NRF52832芯片做一個(gè)門鎖以識(shí)別到手環(huán)等廣播藍(lán)牙設(shè)備的MAC地址,進(jìn)行分析后判斷開(kāi)鎖任務(wù),由于他們提出的要求中對(duì)于功耗的要求較高,四個(gè)南孚電池要帶電機(jī)工作半年以上,于是就加入了睡眠和睡眠喚醒系統(tǒng)。代碼以下:
int main(void)
{
NRF_POWER->DCDCEN = 1;
nrf_gpio_cfg_default(O1);
nrf_gpio_cfg_default(K1);
log_init();
timers_init();
//buttons_init();
power_management_init();
ble_stack_init();
gap_params_init();
gatt_init();
advertising_init();
services_init();
conn_params_init();
control_set();
NRF_LOG_INFO("Template example started.");
//advertising_start();
scan_start();
while(true)
{
idle_state_handle();
nrf_delay_ms(5000);
<div class="blockcode"><blockquote>nrf_gpio_cfg_sense_input(BUTTON_1, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_HIGH);
復(fù)制代碼
nrf_gpio_cfg_default(INTA);
nrf_gpio_cfg_default(INTB);
//nrf_gpio_cfg_default(LED1);
nrf_gpio_cfg_default(LED2);
nrf_gpio_cfg_default(beep);
app_timer_stop_all();
//nrf_gpio_cfg_default(BUTTON_1);
NRF_POWER->SYSTEMOFF = 1;
}
}
上述的代碼中,較為重要的是設(shè)置
BUTTON_1為喚醒口:
nrf_gpio_cfg_sense_input(BUTTON_1, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_HIGH);
復(fù)制代碼
該函數(shù)可以配置低電平喚醒,高電平喚醒,高電平之后低電平喚醒
之后使用
NRF_POWER->SYSTEMOFF = 1;
復(fù)制代碼
使得單片機(jī)進(jìn)入睡眠。
下面是藍(lán)牙事件的核心:
case BLE_GAP_EVT_ADV_REPORT:
if (p_adv_report->type.scan_response&&p_adv_report->rssi>-35)
{
NRF_LOG_INFO(" peer_addr = %02x %02x %02x %02x %02x %02x\r\n", p_adv_report->peer_addr.addr[5],p_adv_report->peer_addr.addr[4],p_adv_report->peer_addr.addr[3],p_adv_report->peer_addr.addr[2],p_adv_report->peer_addr.addr[1],p_adv_report->peer_addr.addr[0] );
NRF_LOG_INFO(" p_gap_evt->params.adv_report.rssi = %d\r\n", p_adv_report->rssi );
send_deta_band[0]=-p_adv_report->rssi;
send_deta_band[1]=p_adv_report->peer_addr.addr[5];
send_deta_band[2]=p_adv_report->peer_addr.addr[4];
send_deta_band[3]=p_adv_report->peer_addr.addr[3];
send_deta_band[4]=p_adv_report->peer_addr.addr[2];
send_deta_band[5]=p_adv_report->peer_addr.addr[1];
send_deta_band[6]=p_adv_report->peer_addr.addr[0];
//uint8_t my_adv_manuf_data[5] = {0xDE,0x02,0x03,0x04,0x05};
send_deta_band_1[5]=send_deta_band[1];
send_deta_band_1[4]=send_deta_band[2];
send_deta_band_1[3]=send_deta_band[3];
send_deta_band_1[2]=send_deta_band[4];
send_deta_band_1[1]=send_deta_band[5];
send_deta_band_1[0]=send_deta_band[6];
sd_ble_gap_adv_stop(m_advertising.adv_handle);
//advertising_init();
//advertising_start();
beep_start();
beep_stop();
control_right();
nrf_delay_ms(30);
control_stop();
nrf_delay_ms(10);
led_start();
//nrf_delay_ms(10);
advertising_init();
advertising_start();
nrf_delay_ms(2000);
control_left();
nrf_delay_ms(30);
control_stop();
//application_timers_start1();
// application_timers_start();
//advertising_start();
}
sd_ble_gap_scan_start(NULL, &m_scan_buffer);
break;
復(fù)制代碼
app.rar
2019-9-7 11:37 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
7.5 KB, 下載次數(shù): 66, 下載積分: 黑幣 -5
作者:
blueskyl
時(shí)間:
2020-12-7 09:12
謝謝!正在學(xué)習(xí)中
作者:
onono
時(shí)間:
2021-3-17 08:20
感謝分享,有沒(méi)sdk_config配置的教程呢。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1