0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于CC2530(ZigBee設(shè)計(jì))的溫度報(bào)警器

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-05-27 09:54 ? 次閱讀

?

目錄

1. 功能介紹

2. 硬件接線介紹

2.1 DS18B20溫度傳感器

2.2 ESP8266 WIFI模塊

3. 案例代碼

3.1 QT設(shè)計(jì)的上位機(jī)

3.2 B節(jié)點(diǎn)DS18B20代碼

3.3 協(xié)調(diào)器-ESP8266代碼


1. 功能介紹

這是基于CC2530設(shè)計(jì)的遠(yuǎn)程溫度報(bào)警器,通過CC2530終端檢測(cè)環(huán)境溫度上傳給手機(jī)APP實(shí)時(shí)顯示。

一共有兩塊CC2530開發(fā)板,這里就分別稱為A板(當(dāng)做協(xié)調(diào)器)、B板(當(dāng)做溫度節(jié)點(diǎn)),A板上接了ESP8266 WIF模塊,用于與手機(jī)APP之間通信。B板上接了DS18B20 溫度傳感器模塊,用于給A板傳遞檢測(cè)的溫度,A板收到DS18B20的溫度之后,發(fā)送給手機(jī)APP顯示。APP上位機(jī)采用Qt框架設(shè)計(jì),支持跨平臺(tái),Android、windows、IOS、Linux都可以編譯運(yùn)行安裝。

image-20220111101500221poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

image-20220111101624493

資料包里包含:

image-20220111102720925

2. 硬件接線介紹

2.1 DS18B20溫度傳感器

作為B節(jié)點(diǎn)的CC2530開發(fā)板上接了DS18B20溫度傳感器,采集溫度傳遞給A節(jié)點(diǎn)。

image-20220111095739249

這是B節(jié)點(diǎn)的程序,在主函數(shù)1秒采集一次DS18B20溫度數(shù)據(jù),然后傳遞給A節(jié)點(diǎn)。

image-20220111095857654

2.2 ESP8266 WIFI模塊

作為A節(jié)點(diǎn)協(xié)調(diào)器的CC2530開發(fā)板用到了2個(gè)串口:

(1)串口0—作為常規(guī)調(diào)試串口,可以向串口調(diào)試助手打印調(diào)試信息。

(2)串口1—連接ESP8266 WIFI,進(jìn)行通信。 P0.4,P0.5用作串口

image-20220111101041120

image-20220111100845766

image-20220111100101399

上面這張圖是代碼的截圖,設(shè)置ESP8266的AP熱點(diǎn)名稱和密碼。 把ESP8266接線接好之后,在把程序下載進(jìn)去。 正常情況下,ESP8266就會(huì)創(chuàng)建一個(gè)名稱為” wbyq_Cortex_M3” 的熱點(diǎn),連接密碼為”12345678”, 這是打開手機(jī)APP搜索這個(gè)WIFI名稱,然后連接即可,連接上了,打開專用的手機(jī)APP,點(diǎn)擊連接服務(wù)器,然后就可以收到ESP8266發(fā)送過來的溫度數(shù)據(jù)了。

下面這個(gè)是代碼主函數(shù)里,1秒的頻率向APP上傳DS18B20的溫度。

image-20220111100721309

3. 案例代碼

3.1 QT設(shè)計(jì)的上位機(jī)

image-20220111101951242poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

image-20220111102052611

3.2 B節(jié)點(diǎn)DS18B20代碼

代碼也可以在這里下載:https://download.csdn.net/download/xiaolong1126626497/75315395

#define Ds18b20IO P0_6    //溫度傳感器引腳
?
void Delay_us(unsigned int k)//us延時(shí)函數(shù)
{
  T1CC0L = 0x06; 
  T1CC0H = 0x00; 
  T1CTL = 0x02; 
  while(k)
   { 
    while(!(T1CNTL >= 0x04));
    k--;
   }
  T1CTL = 0x00; //關(guān)閉定時(shí)器
}
?
void Delay_ms(unsigned int k)
{
  T1CC0L = 0xe8;
  T1CC0H = 0x03;
  T1CTL = 0x0a; //模模式 32分頻
  while(k)
   {
    while(!((T1CNTL >= 0xe8)&&(T1CNTH >= 0x03)));
    k--;
   }
  T1CTL = 0x00; //關(guān)閉定時(shí)器
}
?
void Delay_s(unsigned int k)
{
  while(k)
   {
    Delay_ms(1000);
    k--;
   }
}
?
//時(shí)鐘頻率為32M
void Ds18b20Delay(unsigned int k)
{
  unsigned int i,j;
  for(i=0;i 8000)Flag_1 = 0;
    Status = Ds18b20IO;
   }
  Ds18b20OutputInitial();
  Ds18b20IO = 1;
  Ds18b20Delay(100);
  return Status;    //返回初始化狀態(tài)
}
?
void Ds18b20Write(unsigned char infor)
{
  unsigned int i;
  Ds18b20OutputInitial();
  for(i=0;i<8;i++)
 ?  {
 ? ? ? ?if((infor & 0x01))
 ? ? ?  {
 ? ? ? ? ? ?Ds18b20IO = 0;
 ? ? ? ? ? ?Ds18b20Delay(6);
 ? ? ? ? ? ?Ds18b20IO = 1;
 ? ? ? ? ? ?Ds18b20Delay(50);
 ? ? ?  }
 ? ? ? ?else
 ? ? ?  {
 ? ? ? ? ? ?Ds18b20IO = 0;
 ? ? ? ? ? ?Ds18b20Delay(50);
 ? ? ? ? ? ?Ds18b20IO = 1;
 ? ? ? ? ? ?Ds18b20Delay(6);
 ? ? ?  }
 ? ? ? ?infor >>= 1;
   }
}
?
unsigned char Ds18b20Read(void)
{
  unsigned char Value = 0x00;
  unsigned int i;
  Ds18b20OutputInitial();
  Ds18b20IO = 1;
  Ds18b20Delay(10);
  for(i=0;i<8;i++)
 ?  {
 ? ? ? ?Value >>= 1; 
    Ds18b20OutputInitial();
    Ds18b20IO = 0;// 給脈沖信號(hào)
    Ds18b20Delay(3);
    Ds18b20IO = 1;// 給脈沖信號(hào)
    Ds18b20Delay(3);
    Ds18b20InputInitial();
    if(Ds18b20IO == 1) Value |= 0x80;
    Ds18b20Delay(15);
   } 
  return Value;
}
?
?
?
//溫度讀取函數(shù) 帶1位小數(shù)位
float floatReadDs18B20(void) 
{
  unsigned char V1,V2;  //定義高低8位 緩沖
  unsigned int temp;   //定義溫度緩沖寄存器
  float fValue;
  Ds18b20Initial();
  Ds18b20Write(0xcc);  // 跳過讀序號(hào)列號(hào)的操作
  Ds18b20Write(0x44);  // 啟動(dòng)溫度轉(zhuǎn)換
  
  Ds18b20Initial();
  Ds18b20Write(0xcc);  //跳過讀序號(hào)列號(hào)的操作 
  Ds18b20Write(0xbe);  //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度
  
  V1 = Ds18b20Read();  //低位
  V2 = Ds18b20Read();  //高位
  //temp = ((V1 >> 4)+((V2 & 0x07)*16)); //轉(zhuǎn)換數(shù)據(jù) 
  temp=V2*0xFF+V1;
  fValue = temp*0.0625;
  
  return fValue;
};i++)>
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

3.3 協(xié)調(diào)器-ESP8266代碼

#include "esp8266.h"
?
uint lenU1 = 0;
uchar tempRXU1;
uchar RecdataU1[MAXCHAR];
//AP+服務(wù)器模式
char *ESP8266_AP_Server[]=
{
  "ATrn",
  "ATE0rn",
  "AT+CWMODE=2rn",
  "AT+RSTrn",
  "ATE0rn",
  "AT+CWSAP="wbyq_Cortex_M3","12345678",1,4rn",
  "AT+CIPMUX=1rn",
  "AT+CIPSERVER=1,8089rn",
  "AT+CIFSRrn" 
};
?
?
//"AT+CIPSEND=0,10rn"  //長(zhǎng)度10
//返回">" 之后就可以正常發(fā)送數(shù)據(jù)了
//發(fā)送成功返回 "SEND OK"
?
?
//發(fā)送數(shù)據(jù)
void ESP8266_SendData(char *p,int len)
{
  char buff[50];
  sprintf(buff,"AT+CIPSEND=0,%drn",len);
  clearBuffU1();
  Uart1_Send_String(buff);
  DelayMs(1000);
  RecdataU1[lenU1]='?';
  UR0SendString(RecdataU1);
  clearBuffU1();
  
  //發(fā)送數(shù)據(jù)
  Uart1_Send_String(p);
  
  //等待發(fā)送完成
  DelayMs(1000);
  
  RecdataU1[lenU1]='?';
  UR0SendString(RecdataU1);
  
  clearBuffU1();
}
?
?
/****************************************************************************
* 名   稱: SetWifi()
* 功   能: 設(shè)置LED燈相應(yīng)的IO口
* 入口參數(shù): 無
* 出口參數(shù): 無
****************************************************************************/
void SetWifi(void)
{
 P0DIR |= 0x40;      //P0.6定義為輸出
 IGT = 0;         //高電平復(fù)位
 DelayMs(500);
 IGT = 1;         //低電平工作
}
?
/*
設(shè)置WIFI為AP模式+TCP服務(wù)器
*/
void SetESP8266_AP_TCP_Server()
{
  clearBuffU1();
  Uart1_Send_String("ATrn");
  DelayMs(2000);
  RecdataU1[lenU1]='?';
  UR0SendString(RecdataU1);
  
  clearBuffU1();
  Uart1_Send_String("ATE0rn");
  DelayMs(2000);
  RecdataU1[lenU1]='?';
  UR0SendString(RecdataU1);
  
  clearBuffU1();
  Uart1_Send_String("AT+CWMODE=2rn");
  DelayMs(2000);
  RecdataU1[lenU1]='?';
  UR0SendString(RecdataU1);
  
  clearBuffU1();
  Uart1_Send_String("AT+RSTrn");
  DelayMs(2000);
  DelayMs(2000);
  RecdataU1[lenU1]='?';
  UR0SendString(RecdataU1);
  
  clearBuffU1();
  Uart1_Send_String("ATE0rn");
  DelayMs(2000);
  RecdataU1[lenU1]='?';
  UR0SendString(RecdataU1);
  
  clearBuffU1();
  Uart1_Send_String("AT+CWSAP="wifi_cc2530","12345678",1,4rn");
  DelayMs(2000);
  RecdataU1[lenU1]='?';
  UR0SendString(RecdataU1);
  
  clearBuffU1();
  Uart1_Send_String("AT+CIPMUX=1rn");
  DelayMs(2000);
  RecdataU1[lenU1]='?';
  UR0SendString(RecdataU1);
  
  clearBuffU1();
  Uart1_Send_String("AT+CIPSERVER=1,8080rn");
  DelayMs(2000);
  RecdataU1[lenU1]='?';
  UR0SendString(RecdataU1);
  
  clearBuffU1();
  Uart1_Send_String("AT+CIFSRrn");
  DelayMs(2000);
  RecdataU1[lenU1]='?';
  UR0SendString(RecdataU1);
}
?
?
unsigned char dataRecv;
unsigned char Flag = 0;
/*===================UR1初始化函數(shù)====================*/
void Init_Uart1()
{
 PERCFG = 0x00;        //位置1  P0.4/P0.5口
 P0SEL |= 0x30;        //P0.4,P0.5用作串口(外部設(shè)備功能)
 
 U1CSR |= 0x80;        //設(shè)置為UART方式
 U1GCR |= 11;      //BAUD_E    
 U1BAUD |= 216;        //BAUD_M 波特率設(shè)為115200
 UTX1IF = 0;       //UART1 TX中斷標(biāo)志初始置位0
 U1CSR |= 0X40;       //允許接收 
 IEN0 |= 0x88;        // 開總中斷,UART1接收中斷 
}
?
?
void clearBuffU1(void)
{
 int j;
 for(j=0;j;j++)>
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png


?審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4896

    瀏覽量

    97058
  • 溫度報(bào)警器
    +關(guān)注

    關(guān)注

    3

    文章

    29

    瀏覽量

    11231
  • CC2530
    +關(guān)注

    關(guān)注

    19

    文章

    221

    瀏覽量

    57761
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    zigbeecc2530

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

    基于CC2530ZigBee通信網(wǎng)絡(luò)的應(yīng)用設(shè)計(jì)

    組成的星型網(wǎng)絡(luò),各終端利用CC2530自帶的A/D轉(zhuǎn)化采集溫度數(shù)據(jù)并通過網(wǎng)絡(luò)匯聚到協(xié)調(diào)。實(shí)現(xiàn)了Zi
    發(fā)表于 11-06 10:01

    基于CC2530溫度報(bào)警器的設(shè)計(jì)

    的影響。據(jù)此本文基于CC2530 芯片作處理,使用DS18B20溫度傳感采集外部環(huán)境數(shù)據(jù)并通過處理進(jìn)行比對(duì)分析,結(jié)合
    發(fā)表于 07-26 07:04

    怎樣去設(shè)計(jì)一種基于CC2530單片機(jī)的溫度報(bào)警器

    基于CC2530溫度報(bào)警器是由哪些部分組成的?怎樣去設(shè)計(jì)一種基于CC2530單片機(jī)的溫度報(bào)警器
    發(fā)表于 09-24 08:23

    基于CC2530芯片_zigbee基礎(chǔ)實(shí)驗(yàn)

    zigbee基礎(chǔ)實(shí)驗(yàn),基于CC2530芯片
    發(fā)表于 12-11 10:48 ?48次下載

    cc2530 adc測(cè)外部電壓

    CC2530 是用于2.4-GHz IEEE 802.15.4、ZigBee 和RF4CE 應(yīng)用的一個(gè)真正的片上系統(tǒng)(SoC)解決方案。它能夠以非常低的總的材料成本建立強(qiáng)大的網(wǎng)絡(luò)節(jié)點(diǎn)。要在zigbee的組網(wǎng)中加入煙霧傳感
    發(fā)表于 11-07 18:53 ?5573次閱讀
    <b class='flag-5'>cc2530</b> adc測(cè)外部電壓

    cc2530芯片有哪些功能

    CC2530是專門針對(duì)IEEE 802.15.4和Zigbee應(yīng)用的單芯片解決方案,經(jīng)濟(jì)且低功耗。 CC2530有四種不同的版本:CC2530-F32 / 64 / 128 / 256
    發(fā)表于 11-08 11:05 ?2.3w次閱讀

    基于CC2530ZigBee協(xié)調(diào)節(jié)點(diǎn)設(shè)計(jì)

    本文給出了基于TI新一代芯片CC2530ZigBee協(xié)調(diào)節(jié)點(diǎn)設(shè)計(jì)方法,該方法選用TICC2591作為射頻前端芯片。
    發(fā)表于 01-05 15:25 ?4.9w次閱讀
    基于<b class='flag-5'>CC2530</b>的<b class='flag-5'>ZigBee</b>協(xié)調(diào)<b class='flag-5'>器</b>節(jié)點(diǎn)設(shè)計(jì)

    CC2530芯片的基本特性和CC2530無線模塊的設(shè)計(jì)

    本文介紹了CC2530芯片的基本特性,論述了以CC2530芯片為核心的無線通信模塊的硬件設(shè)計(jì)和調(diào)試軟件設(shè)計(jì),在介紹設(shè)計(jì)規(guī)范和模塊結(jié)構(gòu)的基礎(chǔ)上,采用TI公司的CC2530芯片作為主控制芯片設(shè)計(jì)出具
    發(fā)表于 02-11 08:00 ?97次下載
    <b class='flag-5'>CC2530</b>芯片的基本特性和<b class='flag-5'>CC2530</b>無線模塊的設(shè)計(jì)

    如何使用ZigBee TI ZStack CC2530 2.5搭建開發(fā)環(huán)境

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何使用ZigBee TI ZStack CC2530 2.5搭建開發(fā)環(huán)境。
    發(fā)表于 05-10 18:14 ?25次下載
    如何使用<b class='flag-5'>ZigBee</b> TI ZStack <b class='flag-5'>CC2530</b> 2.5搭建開發(fā)環(huán)境

    基于zigbee CC2530和環(huán)境光傳感實(shí)現(xiàn)照度計(jì)的設(shè)計(jì)

    本項(xiàng)目是一個(gè)基于zigbee CC2530的照度計(jì),傳感器使用的是TI的環(huán)境光傳感OPT3001。成果如上圖所示,關(guān)于OPT3001傳感硬件電路設(shè)計(jì),可參考《基于
    的頭像 發(fā)表于 02-03 07:03 ?7798次閱讀
    基于<b class='flag-5'>zigbee</b> <b class='flag-5'>CC2530</b>和環(huán)境光傳感<b class='flag-5'>器</b>實(shí)現(xiàn)照度計(jì)的設(shè)計(jì)

    ZigbeeCC2530與煙霧傳感

    CC2530與煙霧傳感上代碼:
    發(fā)表于 11-29 20:36 ?49次下載
    <b class='flag-5'>Zigbee</b>的<b class='flag-5'>CC2530</b>與煙霧傳感<b class='flag-5'>器</b>

    基于CC2530ZigBee通信網(wǎng)的應(yīng)用設(shè)計(jì).pdf

    基于CC2530ZigBee通信網(wǎng)的應(yīng)用設(shè)計(jì).pdf
    發(fā)表于 12-15 18:17 ?23次下載

    Zigbee(CC2530)傳感

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

    基于CC2530ZigBee通信網(wǎng)絡(luò)的應(yīng)用設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于CC2530ZigBee通信網(wǎng)絡(luò)的應(yīng)用設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-26 09:34 ?3次下載
    基于<b class='flag-5'>CC2530</b>的<b class='flag-5'>ZigBee</b>通信網(wǎng)絡(luò)的應(yīng)用設(shè)計(jì)