在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于CC2530(ZigBee)設計的自動照明系統

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2022-05-27 10:34 ? 次閱讀

1. 功能介紹

設計題目的名稱: 基于ZigBee的自動照明系統設計

一共使用3個CC2530 ZigBee開發板,代號分別為ABC。

A開發板當做主機: 上面連接了光感傳感器ESP8266WIFI模塊。通過ESP8266與手機APP之間通信,ESP8266創建熱點,配置為TCP服務器模式; 手機APP連接上ESP8266的熱點之后,再連接ESP8266創建的服務器,完成通信。 手機APP上通過按鈕可以控制B,C開發板上LED燈的開關。

手機APP上可以設置自動照明的模式:

自動照明模式: 根據A開發板上的光感模塊,采集光照強度,控制B、C開發板上的LED燈開關。

手動模式: 手機APP 上可以選擇單獨控制B、C開發板上的LED燈開關。

支持設置光感閥值: 在手機APP上可以設置A開發板的光感傳感器閥值(也就是控制燈亮滅的閥值)。

支持設置亮度,也可以自動根據環境光控制亮度

B開發板當做從機節點: B開發板上使用板載的LED燈,模擬家里臥室的照明設備,實現控制效果演示。

C開發板當做從機節點: C開發板上使用板載的LED燈,模擬家里客廳的照明設備,實現控制效果演示。

image-20220111104700542

image-20220111103544808

image-20220111104619684

2. 硬件介紹

2.1 ESP8266 wifi

采用的ESP8266系列無線模塊是高性價比WIFI SOC模組,該系列模塊支持標準的IEEE802.11b/g/n協議,內置完整的TCP/IP協議棧。用戶可以使用該系列模塊為現有的設備添加聯網功能,也可以構建獨立的網絡控制器

CC2530開發板上本身就有一個ESP8266專用的接口,插上去就行了。

ES8266 WIFI 模塊接在 串口1 上面(P0.4/P0.5口) ,波特率為 115200 。

CC2530的串口0作為常規調試串口(P0_2和P0_3端口),可以把采集的AD數據打印到串口。 也可以自己打印其他一些調試信息

image-20220111104742622

image-20220111104753325

image-20220111104851404

2.2 光敏傳感器

image-20220111105037476poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

image-20220111105048153

3. 項目代碼

3.1 串口代碼

#include "uart.h"
/*
函數功能:串口0初始化
*/
void Init_Uart0(void)
{
 PERCFG&=~(1<<0); ?//串口0的引腳映射到位置1,即P0_2和P0_3
 ?P0SEL|=0x3<<2; ? //將P0_2和P0_3端口設置成外設功能
 ?U0BAUD = 216; ? ? //32MHz的系統時鐘產生115200BPS的波特率
 ?U0GCR&=~(0x1F<<0);//清空波特率指數
 ?U0GCR|=11<<0; ? ? ?//32MHz的系統時鐘產生115200BPS的波特率
 ?U0UCR |= 0x80; ? ?//禁止流控,8位數據,清除緩沖器
 ?U0CSR |= 0x3<<6; ?//選擇UART模式,使能接收器
}
?
?
/*
函數功能:UART0發送字符串函數
*/
void UR0SendString(char *str)
{
 while(*str!='\0')
  {
 ? ?U0DBUF = *str; ? ?//將要發送的1字節數據寫入U0DBUF
 ? ?while(UTX0IF == 0);//等待數據發送完成
 ? ?UTX0IF = 0; ? ? ? //清除發送完成標志,準備下一次發送
 ? ?str++;
  }
}
?
/*
函數功能: 模仿printf風格的格式化打印功能
*/
char USART0_PRINT_BUFF[200]; //格式化數據緩存數據
void USART0_Printf(const char *format,...)
{
 ?char *str=NULL;
 ?/*1. 格式化轉換*/
 ?va_list ap; // va_list---->char *
 va_start(ap,format); //初始化參數列表
 vsprintf(USART0_PRINT_BUFF,
    format,
    ap); //格式化打印
 va_end(ap); //結束參數獲取
 /*2. 串口打印*/
 str=USART0_PRINT_BUFF;//指針賦值
 while(*str!='\0')
  {
  U0DBUF=*str; //發送一個字節的數據
  str++; //指針自增,指向下一個數據
  while(UTX0IF == 0);//等待數據發送完成
  UTX0IF = 0;    //清除發送完成標志,準備下一次發送
  }
}

3.2 按鍵代碼

#include "key.h"
?
/*
函數功能:按鍵IO口初始化
硬件連接:KEY1-->P0_1  KEY2-->P2_0 
*/
void KEY_Init(void)
{
  P0SEL&=~(0x1<<1); //配置P0_1處于通用GPIO口模式
 ? ?P0DIR&=~(0x1<<1); //配置P0_1為輸入模式
 ? ?P0INP|= 0x1<<1; ? //上拉 ?
 ? ?
 ? ?P2SEL&=~(0x1<<0); //配置P2_0處于通用GPIO口模式
 ? ?P2DIR&=~(0x1<<0); //配置P2_0為輸入模式
 ? ?P2INP|= 0x1<<0; ? //上拉 ? 
}
?
/*
函數功能:按鍵掃描
返 回 值:按下的按鍵值
*/
unsigned char Key_Scan(void)
{
 ? ?static unsigned char stat=1;
 ? ?if((KEY1==0||KEY2==0)&&stat)
 ?  {
 ? ? ? stat=0;
 ? ? ? delay10ms();
 ? ? ? if(KEY1==0)return 1;
 ? ? ? if(KEY2==0)return 2;
 ?  }
 ? ?else
 ?  {
 ? ? ? ?if(KEY1&&KEY2)stat=1;
 ?  }
 ? ?return 0;
}

3.3 延時函數

#include "delay.h"
?
/*延時200毫秒*/
void delay200ms(void)  //誤差 -0.125us
{
  unsigned char a,b,c;
  for(c=95;c>0;c--)
    for(b=181;b>0;b--)
      for(a=14;a>0;a--);
}
?
?
void delay10ms(void)  //誤差 0us
{
  unsigned char a,b,c;
  for(c=193;c>0;c--)
    for(b=118;b>0;b--)
      for(a=2;a>0;a--);
}
?
/****************************************** 
 * 函數描述:32M系統時鐘下的毫秒延時函數 
 ******************************************/ 
void DelayMs(unsigned int ms) 
{ 
 unsigned int i,j; 
 for(i = 0; i < ms; i++) ?
  { ?
 ? ?for(j = 0;j < 1774; j++); ?
  } ?
} ?
?
void Onboard_wait( int timeout )
{
 ?while (timeout--)
  {
 ? ?asm("NOP");
 ? ?asm("NOP");
 ? ?asm("NOP");
  }
}
?
//延時函數
void DelayUs(int us) //1 us延時
{
 ? ?Onboard_wait(us); ? 
}
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

3.4 A開發板(協調器)主函數代碼

/*主函數*/
void main(void)
{
  u8 time_cnt=0;
  unsigned char key;
  u8 switch_val=150; //開關閥值
  
  u8 mode=1; //0 表示手動模式  1表示自動模式
  
  //延時等待系統穩定
  DelayMs(1000);
  DelayMs(1000);
  
  init_clk();  //配置時鐘
  LED_Init();  //初始化LED燈控制IO口
  KEY_Init();  //按鍵初始化
  Init_Uart0(); //初始化串口0
  RF_Init();  //RF初始化
  Init_Uart1(); //初始化串口1--連接WIFI
  SetWifi(); //復位WIFI
  SetESP8266_AP_TCP_Server(); //初始化WIFI
  adc_Init();
  
  clearBuffU1(); //清空BUFF
  
  //運行正常提示
  USART0_Printf("當前運行的是A開發板程序,一切正常.\r\n");
     
  while(1)     
   { 
    //按鍵檢測
    key=Key_Scan();
    if(key)
    {
     LED2 = !LED2;
    } 
    
/*  服務器發出的數據
value:100  //閥值
led1_on  //臥室LED開
led1_off  //臥室LED關
led2_on  //客廳LED開
led2_off  //客廳LED關
yes_auto_mode  //自動模式
no_auto_mode  //手動模式
*/ 
    //判斷是否收到了WIFI的數據
    if(lenU1>=13)
    {
      RecdataU1[lenU1]='\0';
      
      //串口打印數據
      USART0_Printf("WIFI收到的數據:%s\n",(u8*)RecdataU1); 
      
      //臥室LED開
      if(strstr((char*)RecdataU1,"led1_on"))
      {
        USART0_Printf("臥室LED開.\n"); 
        u8 buff[100]="B:1---";
        //發送數據
        tx_data(buff,strlen((char*)buff));
        //運行狀態燈
        LED1 = !LED1; 
      }
      //臥室LED關
      else if(strstr((char*)RecdataU1,"led1_off"))
      {
        USART0_Printf("臥室LED關.\n"); 
         u8 buff[100]="B:0---"; 
        //發送數據
        tx_data(buff,strlen((char*)buff));
        //運行狀態燈
        LED1 = !LED1; 
      }
      //客廳LED開
      else if(strstr((char*)RecdataU1,"led2_on"))
      {
         USART0_Printf("客廳LED開.\n"); 
         u8 buff[100]="C:1---"; 
        //發送數據
        tx_data(buff,strlen((char*)buff));
        //運行狀態燈
        LED1 = !LED1; 
      }
      //自動模式
      else if(strstr((char*)RecdataU1,"yes_auto_mode"))
      {
         USART0_Printf("設置為自動模式.\n"); 
         mode=1;
      }
      //手動模式
      else if(strstr((char*)RecdataU1,"no_auto_mode"))
      {
         USART0_Printf("設置為手動模式.\n"); 
         mode=0;
      }
      //閥值
      else if(strstr((char*)RecdataU1,"value:"))
      {
        //運行狀態燈
        LED1 = !LED1; 
        
        char *p=strstr((char*)RecdataU1,"value:");
        if(p)
         {
          int a=atoi(p+6);
          if(a>0)
           {
           switch_val=a; //得到新的閥值
           }
         }
        
        USART0_Printf("設置新的閥值:%d.\n",switch_val); 
      }
      
      clearBuffU1(); //清理緩存
    }
    
   
    time_cnt++;
    DelayMs(10);
      
    //1秒鐘時間到達
    if(time_cnt>100)
    {
      time_cnt=0;
      
     //讀取ADC值--也就是光照傳感器的值
     GasData = ReadGasData();
     
     //發送光照傳感器的值到上位機
     USART0_Printf("光照度:%d,模式:%d\n",GasData,mode);
     
     //如果是自動模式
     if(mode)
      {
        //根據閥值判斷是否開啟關閉臥室,客廳的LED燈
        if(GasData > switch_val )
        {
          //開燈  
          u8 buff1[10]="B:1---"; 
          //發送數據
          tx_data(buff1,strlen((char*)buff1));
           //開燈  
          u8 buff2[10]="C:1---"; 
          //發送數據
          tx_data(buff2,strlen((char*)buff2));
        }
        else
        {
           //關燈  
          u8 buff1[10]="B:0---"; 
          //發送數據
          tx_data(buff1,strlen((char*)buff1));
           //關燈  
          u8 buff2[10]="C:0---"; 
          //發送數據
          tx_data(buff2,strlen((char*)buff2));  
        }
      }
    }
   }
}
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png


?審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ZigBee
    +關注

    關注

    158

    文章

    2271

    瀏覽量

    243348
  • 照明系統
    +關注

    關注

    3

    文章

    415

    瀏覽量

    32985
  • CC2530
    +關注

    關注

    19

    文章

    221

    瀏覽量

    58229
  • ESP8266
    +關注

    關注

    50

    文章

    962

    瀏覽量

    45332
收藏 人收藏

    評論

    相關推薦

    主流ZigBee芯片大盤點(2):德州儀器 CC2530

    CC2530 是用于2.4-GHz IEEE 802.15.4、ZigBee 和RF4CE 應用的一個真正的片上系統(SoC)解決方案。##引腳圖與引腳功能說明。##特性介紹。##模塊說明。##應用與典型案例。##推薦TI公司
    發表于 08-20 09:30 ?3.8w次閱讀

    德州儀器推出業界首款新型ZigBee系統單芯片CC2530

    德州儀器 (TI) 推出業界首款實際采用新ZigBee Light Link 標準的ZigBee 系統單晶片 (SoC) CC2530ZigBee
    發表于 06-05 11:01 ?2077次閱讀

    zigbeecc2530

    `曬曬我的zigbeecc2530)模塊`
    發表于 03-20 13:58

    基于CC2530的無線路燈節能智能監控系統

    利用ZigBee CC2530 自組織無線網絡進行路燈控制器的設計, 將ZigBee 技術與傳統的路燈控制模式相結合,提出了基于CC2530Zi
    發表于 05-18 09:33 ?4870次閱讀

    基于CC2530芯片_zigbee基礎實驗

    zigbee基礎實驗,基于CC2530芯片
    發表于 12-11 10:48 ?49次下載

    cc2530 adc測外部電壓

    CC2530 是用于2.4-GHz IEEE 802.15.4、ZigBee 和RF4CE 應用的一個真正的片上系統(SoC)解決方案。它能夠以非常低的總的材料成本建立強大的網絡節點。要在zi
    發表于 11-07 18:53 ?5693次閱讀
    <b class='flag-5'>cc2530</b> adc測外部電壓

    cc2530是什么_cc2530能做什么

    CC2530 是用于2.4-GHz IEEE 802.15.4、ZigBee 和RF4CE 應用的一個真正的片上系統(SoC)解決方案。它能夠以非常低的總的材料成本建立強大的網絡節點。CC25
    發表于 11-08 09:28 ?4.6w次閱讀

    基于CC2530ZigBee協調器節點設計

    本文給出了基于TI新一代芯片CC2530ZigBee協調器節點設計方法,該方法選用TICC2591作為射頻前端芯片。
    發表于 01-05 15:25 ?4.9w次閱讀
    基于<b class='flag-5'>CC2530</b>的<b class='flag-5'>ZigBee</b>協調器節點設計

    CC2530芯片的基本特性和CC2530無線模塊的設計

    本文介紹了CC2530芯片的基本特性,論述了以CC2530芯片為核心的無線通信模塊的硬件設計和調試軟件設計,在介紹設計規范和模塊結構的基礎上,采用TI公司的CC2530芯片作為主控制芯片設計出具
    發表于 02-11 08:00 ?97次下載
    <b class='flag-5'>CC2530</b>芯片的基本特性和<b class='flag-5'>CC2530</b>無線模塊的設計

    如何使用ZigBee TI ZStack CC2530 2.5搭建開發環境

    本文檔的主要內容詳細介紹的是如何使用ZigBee TI ZStack CC2530 2.5搭建開發環境。
    發表于 05-10 18:14 ?26次下載
    如何使用<b class='flag-5'>ZigBee</b> TI ZStack <b class='flag-5'>CC2530</b> 2.5搭建開發環境

    微雪電子ZIGBEE開發板 CC2530 Eval Kit5簡介

    ZigBee CC2530 串口透傳 開發套件 XBEE 物聯網套件 直插接口兼容Xbee 支持自動組網 支持板載PCB天線及IPEX外接天線 型號 CC2530 Eval Kit5
    的頭像 發表于 01-10 09:01 ?2149次閱讀
    微雪電子<b class='flag-5'>ZIGBEE</b>開發板 <b class='flag-5'>CC2530</b> Eval Kit5簡介

    基于CC2530ZigBee通信網的應用設計.pdf

    基于CC2530ZigBee通信網的應用設計.pdf
    發表于 12-15 18:17 ?23次下載

    Zigbee(CC2530)傳感器板

    電子發燒友網站提供《Zigbee(CC2530)傳感器板.zip》資料免費下載
    發表于 07-04 14:49 ?10次下載
    <b class='flag-5'>Zigbee</b>(<b class='flag-5'>CC2530</b>)傳感器板

    CC2530 芯片介紹

    簡介 CC2530 結合了領先的RF 收發器的優良性能,業界標準的增強型8051 CPU,系統內可編程閃存,8-KB RAM 和許多其它強大的功能。CC2530 有四種不同的閃存版本
    發表于 01-03 11:00 ?4034次閱讀

    基于CC2530ZigBee通信網絡的應用設計

    電子發燒友網站提供《基于CC2530ZigBee通信網絡的應用設計.pdf》資料免費下載
    發表于 10-26 09:34 ?3次下載
    基于<b class='flag-5'>CC2530</b>的<b class='flag-5'>ZigBee</b>通信網絡的應用設計
    主站蜘蛛池模板: 666精品国产精品亚洲 | 狠狠干天天爽 | 亚洲欧美一区二区三区四区 | 国产性较精品视频免费 | 天堂资源在线官网bt | 成 年 人 视频在线播放 | 欧美 日韩 中文字幕 | www永久免费视频 | 国产成人精品一区二区三区 | 国产美女精品视频免费观看 | www.操操操.com| 色成网| 欧美午夜视频一区二区 | aa毛片| 欧美美女一区二区三区 | 美女扒开尿口让男人捅 | 三级视频欧美 | 中国一级黄色毛片 | 四虎免费在线播放 | 在线天堂中文www官网 | 亚洲欧美视频一区二区 | 天天伊人网 | 午夜精品福利在线观看 | 五月天婷婷色综合 | 曰本在线网 | 婷婷深爱 | 国产成人a毛片 | 日韩午夜在线视频不卡片 | 视频免费观看网址 | 视频一区中文字幕 | 躁天天躁中文字幕在线 | 视频一区二区免费 | 婷婷丁香色| 天天做日日爱 | 久久天天躁狠狠躁夜夜不卡 | vip免费观看| 日本久久久久久久 | 嫩草影院久久国产精品 | 天堂影 | 日韩成人免费观看 | 国产三级日本三级日产三 |