女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

基于STM32+華為云IOT設計的智慧路燈

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2022-05-28 14:19 ? 次閱讀

1. 前言

隨著工業(yè)和城市的快速發(fā)展,道路照明系統(tǒng)的產業(yè)也在迅速發(fā)展,并趨于復雜化,為了更經濟地控制和維護復雜的路燈系統(tǒng),市面上各大科技公司開發(fā)了各種路燈控制系統(tǒng),并且路燈都連上物聯(lián)網云端,連上了政府網絡,可以遠程了解路燈的工作情況,運行情況。
為了方便了解物聯(lián)網平臺,學習物聯(lián)網開發(fā),了解智慧路燈的開發(fā),本文就采用華為云IOT物聯(lián)網平臺,選擇STM32作為主控芯片,再配合相關的傳感器完成智慧路燈開發(fā)。

2. 具體實現(xiàn)的功能以及相關的硬件

當前設計的智慧路燈采用NBIOT模塊-BC20連接華為云物聯(lián)網服務器,上傳路燈的各種參數(shù)信息:環(huán)境光強度、太陽能充電板電壓、鋰電池電量等信息。設計了一款手機APP,可以通過華為云物聯(lián)網平臺的應用側提供的開發(fā)接口,獲取路燈上傳的參數(shù)信息,并且可以在手機APP上遠程手動控制路燈開關,設置路燈的開啟和關閉時間等。 智慧路燈的的主控芯片采用STM32F103C8T6、NBIOT聯(lián)網模塊采用BC20,BC20內置了MQTT協(xié)議,可以通過AT指令連接物聯(lián)網平臺實現(xiàn)通信。智慧路燈采用鋰電池供電,并且配有太陽能充電板,可以使用太陽進行充電補償電量。使用了功率監(jiān)控器,電池電量檢測芯片,可以檢測充電效率、電流、電壓、電池電量等信息。BC20帶了GPS功能,可以上報路燈的GPS位置到云端服務器,手機APP獲取之后,可以調用百度地圖顯示出路燈的位置。

image.png


image.png


image.png

3. 硬件選型

3.1 STM32F103C8T6

image.png


image.png

3.2 太陽能板

image.png

3.3 鋰電池充電模塊

image.png

3.4 功率檢測模塊

image.png

3.5 BH1750光敏傳感器

image.png

3.6 LED

image.png

3.7 BC20-NBIOT模塊

型號: BC20+BD+GPS
品牌: 創(chuàng)思
產地: 中國大陸
接口類型: TTL
適用場景: NBIOT
尺寸: 40x40x12mm
工作電流: 0.5A
支持TCP/IP協(xié)議: 
支持傳輸速率: 115200Kbps
工作電壓: 5V
是否支持語音電話: 否
模塊類型: 其他
是否支持短信: 否
支持制式標準: GSM/GPRS(2G)
是否支持電話簿: 否
image.png

4. 創(chuàng)建產品與設備

4.1 創(chuàng)建產品

地址:https://www.huaweicloud.com/?locale=zh-cn

image.png


image.png


image.png


image.png

4.2 自定義模型

地址: https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-dev/all-product/7211833377cf435c8c0580de390eedbe/product-detail/6276134223aaf461a0f6e515

image.png


image.png


image.png


image.png


image.png


image.png


image.png


image.png


image.png

4.3 創(chuàng)建設備

image.png


image.png
{
    "device_id": "6276134223aaf461a0f6e515_1126626497",
    "secret": "12345678"
}

4.4 MQTT密匙生成

創(chuàng)建完產品、設備之后,接下來就需要知道如何通過MQTT協(xié)議登陸華為云服務器。
官方的詳細介紹在這里:
https://support.huaweicloud.com/devg-iothub/iot_01_2127.html#ZH-CN_TOPIC_0240834853__zh-cn_topic_0251997880_li365284516112

屬性上報格式:
https://support.huaweicloud.com/api-iothub/iot_06_v5_3010.html

image.pngimage.png

MQTT設備登陸密匙生成地址: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

image.png


image.png
DeviceId      	6276134223aaf461a0f6e515_1126626497
DeviceSecret 	12345678
ClientId  		6276134223aaf461a0f6e515_1126626497_0_0_2022050706
Username  		6276134223aaf461a0f6e515_1126626497
Password  		73ebe0779dbd5b2e2fd3db8ab8f642b78d7a532576f2e14d2799d4f78d37bcc8

華為云物聯(lián)網平臺的域名是: 161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com
華為云物聯(lián)網平臺的IP地址是:121.36.42.100
在軟件里參數(shù)填充正確之后,就看到設備已經連接成功了。
接下來打開設備頁面,可以看到設備已經在線了。

image.png


image.png

4.5 主題訂閱與發(fā)布

//訂閱主題: 平臺下發(fā)消息給設備
$oc/devices/6276134223aaf461a0f6e515_1126626497/sys/messages/down
//設備上報數(shù)據(jù)
$oc/devices/6276134223aaf461a0f6e515_1126626497/sys/properties/report
//上報的屬性消息 (一次可以上報多個屬性,在json里增加就行了)
{"services": [{"service_id": "led","properties":{"GPS":"lat:12.345,lng:45.678"}}]}

通過MQTT客戶端軟件模擬上報測試:

image.png


image.png

4.6 應用側開發(fā)

為了更方便的展示設備數(shù)據(jù),與設備完成交互,還需要開發(fā)一個配套的上位機,官方提供了應用側開發(fā)的API接口、SDK接口,為了方便通用一點,我這里采用了API接口完成數(shù)據(jù)交互,上位機軟件采用QT開發(fā)。

幫助文檔地址: ttps://support.huaweicloud.com/api-iothub/iot_06_v5_0034.html

設備屬性就是設備上傳的傳感器狀態(tài)數(shù)據(jù)信息,應用側提供了API接口,可以主動向設備端下發(fā)請求指令;設備端收到指令之后需要按照約定的數(shù)據(jù)格式上報數(shù)據(jù);所以,要實現(xiàn)應用層與設備端的數(shù)據(jù)交互,需要應用層與設備端配合才能完成。

image.png


image.png

5. STM32程序設計

STM32連接華為云IOT的工程案例: https://download.csdn.net/download/xiaolong1126626497/81993720

image.png

5.1 BC20連接華為云物聯(lián)網服務器-調試

image.png
連接MQTT服務器
AT+QMTOPEN=0,"a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com",1883

OK

+QMTOPEN: 0,0


登錄MQTT服務器
命令格式: AT+QMTCONN=,,,
AT+QMTCONN=0,"6210e8acde9933029be8facf_dev1_0_0_2022021913","6210e8acde9933029be8facf_dev1","6cea55404b463e666cd7a6060daba745bbaa17fe7078dfef45f8151cdf19673d"

OK

+QMTCONN: 0,0,0


訂閱主題
命令格式: AT+QMTSUB=,,"”,[,"”,…]

AT+QMTSUB=0,1,"$oc/devices/6210e8acde9933029be8facf_dev1/sys/messages/down",2

OK

+QMTSUB: 0,1,0,2


發(fā)布主題
命令格式:AT+QMTPUB=,,,,"",""

先發(fā)送指令: 
AT+QMTPUB=0,0,0,0,"$oc/devices/6210e8acde9933029be8facf_dev1/sys/properties/repor"

等待返回 ">" 
接著發(fā)送數(shù)據(jù).不需要加回車。
"{"services": [{"service_id": "gps","properties":{"longitude":12.345,"latitude":33.345}}]}"
數(shù)據(jù)發(fā)送完畢,再發(fā)送結束符。 十六進制的值--0x1a  。某些串口調試助手可以適應ctrl+z 快捷鍵輸入0xA
等待模塊返回"OK",到此數(shù)據(jù)發(fā)送完成。    
OK

+QMTPUB: 0,0,0

5.2 測試模塊

第一步接上之后,串口調試助手選擇波特率為115200,勾選軟件上的發(fā)送新行選項。發(fā)送AT過去,正常模塊會返回OK

查詢模塊是否正常
AT

OK


獲取卡號,查詢卡是否插好
AT+CIMI

460041052911195

OK


激活網絡
AT+CGATT=1

OK


獲取網絡激活狀態(tài)
AT+CGATT?

+CGATT: 1

OK


查詢網絡質量
AT+CSQ

+CSQ: 26,0

OK
    
AT+CEREG=? //檢查網絡狀態(tài)
+CEREG: 0,1 //找網成功
OK

5.3 keil工程代碼

image.png


image.png


image.png

5.4 功率檢測

#include "INA226.h"
#include "delay.h"
//	接線說明:
//	模擬IIC:
//IIC_SCL -- 時鐘線PB6(推挽、開漏輸出)
//IIC_SDA -- 雙向數(shù)據(jù)線PB7
INA226 ina226_data;
//初始化INA226
void INA226_Init(void)
{	

	IIC_Init();
	INA226_SendData(INA226_ADDR1,CFG_REG,0x8000);	//重新啟動
	
	INA226_SendData(INA226_ADDR1,CFG_REG,0x484f);	//設置轉換時間204us,求平均值次數(shù)128,采樣時間為204*128,設置模式為分流和總線連續(xù)模式
	INA226_SendData(INA226_ADDR1,CAL_REG,CAL);	//設置分辨率
	//INA226_SendData(INA226_ADDR1,CAL_REG,0x0012);//設置分流電壓轉電流轉換參數(shù)	
	INA226_Get_ID(INA226_ADDR1);					//獲取ina226的id
}

//設置寄存器指針
void INA226_SetRegPointer(u8 addr,u8 reg)
{
	IIC_Start();

	IIC_Send_Byte(addr);
	IIC_Wait_Ack();

	IIC_Send_Byte(reg);
	IIC_Wait_Ack();

	IIC_Stop();
}

//發(fā)送,寫入數(shù)據(jù)
void INA226_SendData(u8 addr,u8 reg,u16 data)
{
	u8 temp=0;
	IIC_Start();

	IIC_Send_Byte(addr);
	IIC_Wait_Ack();

	IIC_Send_Byte(reg);
	IIC_Wait_Ack();
	
	temp = (u8)(data>>8);
	IIC_Send_Byte(temp);
	IIC_Wait_Ack();

	temp = (u8)(data&0x00FF);
	IIC_Send_Byte(temp);
	IIC_Wait_Ack();
	
	IIC_Stop();
}

//讀取數(shù)據(jù)
u16 INA226_ReadData(u8 addr)
{
	u16 temp=0;
	IIC_Start();

	IIC_Send_Byte(addr+1);
	IIC_Wait_Ack();
	
	temp = IIC_Read_Byte(1);
	temp<<=8;	
	temp |= IIC_Read_Byte(0);
	
	IIC_Stop();
	return temp;
}
//1mA/bit
u16 INA226_GetShunt_Current(u8 addr)
{
	u16 temp=0;	
	INA226_SetRegPointer(addr,CUR_REG);
	temp = INA226_ReadData(addr);
	if(temp&0x8000)	temp = ~(temp - 1);	
	return temp;
}

//獲取id
void INA226_Get_ID(u8 addr)
{
	u32 temp=0;
	INA226_SetRegPointer(addr,INA226_GET_ADDR);
	temp = INA226_ReadData(addr);
	ina226_data.ina226_id = temp;
}

//獲取校準值
u16 INA226_GET_CAL_REG(u8 addr)
{	
	u32 temp=0;
	INA226_SetRegPointer(addr,CAL_REG);
	temp = INA226_ReadData(addr);
	return (u16)temp;
}

//1.25mV/bit
u16 INA226_GetVoltage(u8 addr)
{
	u32 temp = 0;
	INA226_SetRegPointer(addr,BV_REG);
	temp = INA226_ReadData(addr);
	return (u16)temp;	
}

//2.5uV/bit
u16 INA226_GetShuntVoltage(u8 addr)
{
	int16_t temp = 0;
	INA226_SetRegPointer(addr,SV_REG);
	temp = INA226_ReadData(addr);
	if(temp&0x8000)	temp = ~(temp - 1);	
	return (u16)temp;	
}

//獲取電壓
void GetVoltage(float *Voltage)//mV
{
	*Voltage = INA226_GetVoltage(INA226_ADDR1)*Voltage_LSB;
}

//獲取分流電壓
void Get_Shunt_voltage(float *Voltage)//uV
{
	*Voltage = (INA226_GetShuntVoltage(INA226_ADDR1)*INA226_VAL_LSB);//如需矯正電流分流參數(shù)請將這里改為2.5
}

//獲取電流
void Get_Shunt_Current(float *Current)//mA
{
	*Current = (INA226_GetShunt_Current(INA226_ADDR1)* CURRENT_LSB);
}

//獲取功率= 總線電壓 * 電流
void get_power()//W
{
	GetVoltage(&ina226_data.voltageVal);			//mV
	Get_Shunt_voltage(&ina226_data.Shunt_voltage);	//uV
	Get_Shunt_Current(&ina226_data.Shunt_Current);	//mA
	Get_Power(&ina226_data.Power);
	ina226_data.Power_Val = ina226_data.voltageVal*0.001f * ina226_data.Shunt_Current*0.001f; 	//mV*mA
}

//獲取功率裝載值,ina226內部計算的的功率,由于未經校準,故不采用

u16 INA226_Get_Power(u8 addr)
{
	int16_t temp=0;
	INA226_SetRegPointer(addr,PWR_REG);
	temp = INA226_ReadData(addr);
	return (u16)temp;
}

//獲取功率,ina226內部計算,不準確,不采用
void Get_Power(float *Power)//W
{
	*Power = (INA226_Get_Power(INA226_ADDR1)*POWER_LSB);
}

//不設置報警,舍棄
/*
u8 INA226_AlertAddr()
{
	u8 temp;
	IIC_Start();

	IIC_Send_Byte(INA226_GETALADDR);
	IIC_Wait_Ack();
	
	temp = IIC_Read_Byte(1);
	
	IIC_Stop();
	return temp;
}
*/

5.5 BH1750環(huán)境光強度

#include "bh1750.h"
float Read_BH1750_Data()
{
    unsigned char t0;
    unsigned char t1;
    float t;
    u8 r_s=0;
    IIC_Start(); //發(fā)送起始信號
    IIC_WriteOneByteData(0x46);
    r_s=IIC_GetACK();//獲取應答
    if(r_s)printf("error:1\r\n");
    IIC_WriteOneByteData(0x01);
    r_s=IIC_GetACK();//獲取應答
     if(r_s)printf("error:2\r\n");
    IIC_Stop(); //停止信號 
    
    IIC_Start(); //發(fā)送起始信號
    IIC_WriteOneByteData(0x46);
    r_s=IIC_GetACK();//獲取應答
    if(r_s)printf("error:3\r\n");
    IIC_WriteOneByteData(0x01);
    r_s=IIC_GetACK();//獲取應答
    if(r_s)printf("error:4\r\n");
    IIC_Stop(); //停止信號 
    
    IIC_Start(); //發(fā)送起始信號
    IIC_WriteOneByteData(0x46);
    r_s=IIC_GetACK();//獲取應答
    if(r_s)printf("error:5\r\n");
    IIC_WriteOneByteData(0x10);
    r_s=IIC_GetACK();//獲取應答
    if(r_s)printf("error:6\r\n");
    IIC_Stop(); //停止信號 
    
    DelayMs(100); //等待
    
    IIC_Start(); //發(fā)送起始信號
    IIC_WriteOneByteData(0x47);
    r_s=IIC_GetACK();//獲取應答
    if(r_s)printf("error:7\r\n");
    
    t0=IIC_ReadOneByteData(); //接收數(shù)據(jù)
    IIC_SendACK(0); //發(fā)送應答信號
    t1=IIC_ReadOneByteData(); //接收數(shù)據(jù)
    IIC_SendACK(1); //發(fā)送非應答信號
    IIC_Stop(); //停止信號
    
     t=(((t0<<8)|t1)/1.2);
     return t;  
}


審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 物聯(lián)網

    關注

    2926

    文章

    45776

    瀏覽量

    386898
  • STM32
    +關注

    關注

    2288

    文章

    10997

    瀏覽量

    361915
  • 智慧路燈
    +關注

    關注

    3

    文章

    887

    瀏覽量

    17507
  • 華為云
    +關注

    關注

    3

    文章

    2760

    瀏覽量

    18076
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于STM32+華為設計的智慧煙感系統(tǒng)

    當前基于STM32華為,設計了一種智慧煙感系統(tǒng),該系統(tǒng)可以檢測煙霧,同時將檢測到的數(shù)據(jù)上傳到云端進行處理和分析。系統(tǒng)可用于家庭、辦公室等需要安裝煙霧報警器場所。
    的頭像 發(fā)表于 04-26 11:16 ?8073次閱讀
    基于<b class='flag-5'>STM32+</b><b class='flag-5'>華為</b><b class='flag-5'>云</b>設計的<b class='flag-5'>智慧</b>煙感系統(tǒng)

    華為與德國聯(lián)合打造智慧城市

    IoT (物聯(lián)網)等領域。具體來說,在計算基礎設施層面,華為提供技術的“萊茵”是杜伊斯堡城市化戰(zhàn)略提供基礎平臺,萊茵
    發(fā)表于 09-04 15:47

    基于NB-IoT智慧路燈監(jiān)控系統(tǒng)(NB-IoT專欄—實戰(zhàn)篇2:硬件開發(fā))精選資料分享

    CubeMX底層環(huán)境搭建2.3、Keil5編寫控制模塊實現(xiàn)代碼1、設備選型基于NB-IoT智慧路燈監(jiān)管系統(tǒng)在感知層可實現(xiàn)實時采集路燈節(jié)點的工作狀態(tài)(亮滅狀態(tài))、...
    發(fā)表于 07-30 07:46

    設計基于STM32+機智的手機APP點燈遇到哪些問題

    設計基于STM32+機智的手機APP點燈遇到哪些問題?怎樣去解決?
    發(fā)表于 10-14 07:55

    如何實現(xiàn)基于小熊派的NB-IOT智慧路燈的設計?

    如何實現(xiàn)基于小熊派的NB-IOT智慧路燈的設計?
    發(fā)表于 12-03 07:39

    基于OpenHarmony的智慧路燈實現(xiàn)

    的開關;搭載OpenHarmony系統(tǒng)的小凌派RK2206開發(fā)板支持連接華為服務器,后續(xù)文章將更新智慧路燈華為
    發(fā)表于 04-22 13:43

    【小凌派RK2206開發(fā)板試用體驗】連上華為體驗人體感應

    小凌派PK226的資料 D為物聯(lián)網類的例程,我選擇的是人體感應,想著弄一個智慧路燈的,所以就先學習做智慧路燈。1、打開例程 iot_clou
    發(fā)表于 05-03 08:34

    基于OpenHarmony的華為IoT智慧路燈實現(xiàn)

    。前面的文章介紹了基于OpenHarmony的智慧路燈實現(xiàn),本文將在前面文章的基礎上,添加華為IoT功能,實現(xiàn)基于OpenHarmony系
    發(fā)表于 05-10 09:36

    每日推薦 | 小凌派RK2206開發(fā)板實現(xiàn)華為IoT智慧路燈,電源模塊PCB布局方法

    ,為了讓更多的工程師掌握更加詳盡的音頻功放知識,本文對以上說的音頻功放做詳細的說明。3、基于OpenHarmony的華為IoT智慧路燈實現(xiàn)
    發(fā)表于 05-10 10:28

    基于OpenHarmony的華為IoT智慧路燈

    。前面的文章介紹了基于OpenHarmony的智慧路燈實現(xiàn),本文將在前面文章的基礎上,添加華為IoT功能,實現(xiàn)基于OpenHarmony系
    發(fā)表于 05-11 10:06

    【小凌派RK2206開發(fā)板試用體驗】OpenHarmony華為IoT應用開發(fā)-智慧井蓋

    本帖最后由 周安平 于 2022-6-4 10:07 編輯 【小凌派RK2206開發(fā)板試用體驗】OpenHarmony華為IoT應用開發(fā)-智慧井蓋
    發(fā)表于 06-03 20:48

    OpenHarmony華為IoT應用開發(fā)-智慧井蓋

    華為IoT平臺產品創(chuàng)建 1、登錄華為 華為
    發(fā)表于 06-06 10:40 ?11次下載

    基于OpenHarmony的華為IoT智慧路燈實現(xiàn)

    一、智慧路燈簡介我們平時看到的傳統(tǒng)路燈基本是通過定時開啟、定時關閉來控制路燈亮滅,在夏天白晝時間長,路燈過早開啟,造成能源浪費;在冬天白晝時
    的頭像 發(fā)表于 05-24 09:25 ?990次閱讀
    基于OpenHarmony的<b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>IoT</b><b class='flag-5'>智慧</b><b class='flag-5'>路燈</b>實現(xiàn)

    基于OpenHarmony的華為IoT智慧路燈實現(xiàn)

    一、智慧路燈簡介我們平時看到的傳統(tǒng)路燈基本是通過定時開啟、定時關閉來控制路燈亮滅,在夏天白晝時間長,路燈過早開啟,造成能源浪費;在冬天白晝時
    的頭像 發(fā)表于 06-14 11:04 ?1290次閱讀
    基于OpenHarmony的<b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>IoT</b><b class='flag-5'>智慧</b><b class='flag-5'>路燈</b>實現(xiàn)

    IoT畢業(yè)設計 | STM32+機智AIoT平臺實現(xiàn)智能鴿籠控制

    摘要本智能鴿籠控制系統(tǒng)由貴州大學電氣工程專業(yè)的劉磊、王民慧設計開發(fā)完成,基于STM32+機智AIoT平臺設計專為賽鴿進籠檢測的裝置,利用機智平臺進行數(shù)據(jù)的傳輸交換,通過WiFi模
    的頭像 發(fā)表于 06-23 14:30 ?1349次閱讀
    <b class='flag-5'>IoT</b>畢業(yè)設計 | <b class='flag-5'>STM32+</b>機智<b class='flag-5'>云</b>AIoT<b class='flag-5'>云</b>平臺實現(xiàn)智能鴿籠控制