1. 程式人生 > 其它 >泰凌微TLSR825x智慧照明解決方案開發之例項解析

泰凌微TLSR825x智慧照明解決方案開發之例項解析

一 前記

  前幾天,看到了一個笑話,一個朋友在群裡吼道,老婆送的皮帶,用了半年之後,怎麼裡面掉出來一個電路板,這個是是啥?

筆者看了回覆道,哥們,老婆不放心你啊。

  在這個萬物都可智慧的時代,產品不加上智慧,都不好意思說你的產品是高科技產品。這不來了,客戶提出新的需求了,他要做

做一個智慧的燈。咋個智慧法呢?

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的平臺晶片,在氛圍燈市場佔有一定的市場份額。具有價效比高,功耗低,功能強大等特點。

加上自研的系統,開發這個產品真是速度快啊。