泰凌微TLSR825x智慧照明解決方案開發之例項解析
阿新 • • 發佈:2022-03-17
一 前記
前幾天,看到了一個笑話,一個朋友在群裡吼道,老婆送的皮帶,用了半年之後,怎麼裡面掉出來一個電路板,這個是是啥?
筆者看了回覆道,哥們,老婆不放心你啊。
在這個萬物都可智慧的時代,產品不加上智慧,都不好意思說你的產品是高科技產品。這不來了,客戶提出新的需求了,他要做
做一個智慧的燈。咋個智慧法呢?
1 有流光,冷白,暖白,漸變等燈光的效果可以切換。
2 可以根據時間和周圍環境亮暗來調整燈光亮度。
3 可以通過手機APP和按鍵雙重控制開關。
本著有求必應的態度,我這不就開始倒騰起來了。
二 程式碼解析
1 ble無線通訊,這個就是通過APP下發命令進行解析,以前講過ble的通訊流程,這裡不做贅述了。
2 燈光效果函式:
流光函式:
void app_fluxay_mode_set(void) { uint8_t tmp_rgb_a = OFF,tmp_rgb_b = OFF,tmp_rgb_c = OFF,tmp_rgb_d = OFF; #if 1 if(ON == fluxay_flow_four) { fluaxy_flow_mode_reset_out(); if(APP_MODE_ID_FLUXAY != app_xp_get_mode_id()) { app_xp_set_mode_id_no_flash(APP_MODE_ID_FLUXAY); } }
漸變燈函式:
void app_pwm_led_loop(int data,uint8_t from_state) { printf("app_pwm_led_loop data :%d\r\n",data); static uint8_t local_led_state = 0; //daylight if (data>=0&&data<=100) { app_pwm_rgb_stop(); local_led_state = 1; app_pwm_cw_on(100-data); app_pwm_ww_on(data); }
3 按鍵處理:
unsigned int key_debounce_filter( u32 mtrx_cur[], u32 filt_en ){ u32 kc = 0; #if (LONG_PRESS_KEY_POWER_OPTIMIZE) unsigned char matrix_differ = 0; #endif static u32 mtrx_pre[ARRAY_SIZE(drive_pins)]; static u32 mtrx_last[ARRAY_SIZE(drive_pins)]; foreach_arr(i, drive_pins){ u32 mtrx_tmp = mtrx_cur[i]; #if (STUCK_KEY_PROCESS_ENABLE) stuckKeyPress[i] = mtrx_tmp ? 1 : 0; #endif if(
4 感測器處理
一個光敏感測器,通過ADC訊號,來採集光線的強度,這個後期進行專門的講解。
三 效果展示
初步的demo已經搭建好,接下來就是產品的細節打磨和PCBA的適配了。
四 總結備忘
825x系列作為一個mcu+ble的平臺晶片,在氛圍燈市場佔有一定的市場份額。具有價效比高,功耗低,功能強大等特點。
加上自研的系統,開發這個產品真是速度快啊。