91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

如何快速搭建遠程控制燈LoRa智能燈控(51單片機篇)?

AIoT行業(yè)洞察 ? 來源:AIoT行業(yè)洞察 ? 作者:AIoT行業(yè)洞察 ? 2025-09-09 15:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

文章目錄

一、概述

二、接線

三、燒錄(測試程序)

四、AT指令

五、通信測試

六、遠程燈控(開關(guān))

七、遠程燈控(指定設(shè)備)

01、概述

安信可 LoRa 系列模塊,用于超長距離擴頻通信,抗干擾性強,能夠最大限度降低電流消耗,高靈敏度,傳輸距離遠,可靠性高。(以下教程以安信可Ra-01、Ra-01HRa-02為例)

02、接線

如下是Ra-01,Ra-01H,Ra-02對應(yīng)51測試板的接線:

(LoRa模塊上的8線分別與測試板上的,如下圖所示)

LoRa模塊 MCU
NSS CSN
MOSI MOSI
MISO MISO
SCK SCK
RESET CE
DIO0 IRQ
3.3V VCC
GND GND

03、燒錄(測試程序)

(本測試程序是使用51系列的單片機開發(fā)的,僅提供測試參考用于驗證模塊的性能與良好,如需在此程序上進行二次開發(fā),則不提供源碼編寫支持)

示例固件燒錄

示例固件下載地址(https://docs.ai-thinker.com/lora)

測試板燒錄方法

●用串口工具連接51測試板RX,TX,GND,連接方法如下圖所示(燒錄時請對應(yīng)相應(yīng)的單片機型號,此程序?qū)?yīng)的單片機為為安信可提供的STC15W408AS型號)。

wKgZPGi_3j2AMqydAABDTN4f7x8487.jpg

●軟件下載請到官網(wǎng)上(http://www.stcmcu.com/)下載

●打開STC-ISP工具,點擊檢測MCU選項,模塊會自動完成軟件配置

●點擊“打開程序文件”,選擇MCU的Hex固件,注意輸入用戶程序運行時的IRC頻為22.1184MHz

●點擊下載編程后工具會將所選擇的固件燒錄到單片機里,此時完成下載(注:如果點擊監(jiān)測和下載工具界面無反應(yīng),那么請嘗試點擊以后進行一次復(fù)位啟動)

wKgZO2i_3j2AS2miAAJMQzrHX1Q946.jpg

示例固件測試

固件下載完成后,請重新復(fù)位測試板。

插上LoRa轉(zhuǎn)接板,此測試必須要兩塊測試板,一塊用來發(fā)送,另外一塊用來接收。

當模塊上電時不做任何操作,則LoRa模塊進入接收模式。當其中一個測試板按下按鍵,模塊進入發(fā)送模式,模塊右邊的燈會亮起,另外一個模塊處于接收模塊,如果收到數(shù)據(jù),左邊的燈會閃爍。

wKgZPGi_3j6AULMtAABqq313ZDo541.jpg

按照如圖所示,在測試板上接入USB轉(zhuǎn)TTL工具,打開串口可以收到模塊發(fā)送的打印信息

04、AT指令

(本次測試基本參數(shù)均為出廠默認參數(shù),均采用Ra-06的出廠固件,在測試串口時,需配置串口默認波特率9600,偶校驗才能進行數(shù)據(jù)收發(fā)和AT指令測試)

AT 指令采用基于 ASCII 碼的命令行,命令格式如下:

請求消息格式為:AT+[OPTION][para, …][r][n]??梢圆患訐Q行符(rn)!

AT指令分為如下幾塊:

(1)基本執(zhí)行指令

(2)系統(tǒng)參數(shù)設(shè)置指令

(3)LoRa參數(shù)配置設(shè)置指令

(4)數(shù)據(jù)傳輸格式指令

詳細的指令語法以及參數(shù)調(diào)配請參照如下鏈接中的AT指令文檔:

https://docs.ai-thinker.com/_media/ra-06_at_command-20191104.pdf

05、通信測試

(本次測試基本參數(shù)均為出廠默認參數(shù),均采用Ra-06的出廠固件,在測試串口時,需配置串口默認波特率9600,偶校驗才能進行數(shù)據(jù)收發(fā)和AT指令測試,測試時請加裝符合規(guī)格參數(shù)的天線,否則可能導(dǎo)致數(shù)據(jù)傳輸錯誤或者無法通信)

點對點通信

步驟一(主機):

AT+ADDR=2 //設(shè)置本機主機地址為2

AT+TADDR=3 //設(shè)置目標地址為3

步驟二(節(jié)點1):

AT+ADDR=3 //設(shè)置本機主機地址為2

AT+TADDR=1 //設(shè)置目標地址為1

AT+RECV=1 //接收數(shù)據(jù)

步驟三(主機):

AT+MSG=Ai-Tinker //主機發(fā)送數(shù)據(jù)

wKgZO2i_3j6AFy-ZAAGjvhC23Mc430.jpg

一對多廣播通信測試示例

步驟一(主機):

AT+ADDR=1 //設(shè)置本機主機地址為1

AT+TADDR=65535 //設(shè)置目標地址為廣播地址

步驟二(節(jié)點1):

AT+ADDR=2 //設(shè)置本機主機地址為2

AT+TADDR=1 //設(shè)置目標地址為1

AT+RECV=1 //接收數(shù)據(jù)

步驟三(節(jié)點2):

AT+ADDR=3 //設(shè)置本機主機地址為2

AT+TADDR=1 //設(shè)置目標地址為1

AT+RECV=1 //接收數(shù)據(jù)

步驟四(主機):

AT+MSG=1234567890 //主機發(fā)送數(shù)據(jù)

wKgZPGi_3j-ASfRJAAKZKYg40Ts328.jpg

06、遠程燈控(開關(guān))

來深度解析一下Lora在照明設(shè)備中的應(yīng)用原理。做過或者接觸過物聯(lián)網(wǎng)設(shè)備開發(fā)的朋友應(yīng)該比較清楚,無線模塊在這個行業(yè)中所占的比重,無線控制其實就是A端發(fā)送一個信號,B端收到以后做出相應(yīng)動作的一個過程。

設(shè)備組成

今天用的設(shè)備比較簡單,就是入門級的STC主控MCU,2個含SX1278芯片的Ra-01模塊,2根彈簧天線。

安信可淘寶店是默認一個Ra-01模組配送一根433MHz彈簧天線的,很方便。 推薦bug一個!另外生成的HEX文件,用串口燒錄。

遠程燈控(開關(guān))

原理分析

目前手上有兩個同樣的設(shè)備,燒錄同樣的程序,程序運行在MCU中,通過外接的SPI驅(qū)動Ra-01射頻模塊發(fā)射和接收數(shù)據(jù),接收端接收到這個數(shù)據(jù)做出響應(yīng),實現(xiàn)一個遠程控制燈開和關(guān)的方案。

基本通信

首先需要兩個模組間能夠進行通信,代碼中需要編輯發(fā)射機以及接收機;

這里定義出接收機和發(fā)送機的邏輯代碼,完成發(fā)送和接收,這部分直接放在了主函數(shù)中了,可以把它放在單獨文件中這樣就便于觀察條理了。

else {
			P32 = 1;
			RF_EX0_STATUS = SX1276ReadBuffer( REG_LR_IRQFLAGS);
if (RF_EX0_STATUS > 0) {
if ((RF_EX0_STATUS & 0x40) == 0x40) {
					CRC_Value = SX1276ReadBuffer( REG_LR_MODEMCONFIG2);
if (CRC_Value & 0x04 == 0x04) {
						SX1276WriteBuffer(REG_LR_FIFOADDRPTR, 0x00);
						SX1278_RLEN = SX1276ReadBuffer(REG_LR_NBRXBYTES);
						lpTypefunc.lpSwitchEnStatus(enOpen);
						lpTypefunc.lpByteWritefunc(0x00);
for (RF_REC_RLEN_i = 0; RF_REC_RLEN_i < SX1278_RLEN;RF_REC_RLEN_i++) {
recv[RF_REC_RLEN_i] = lpTypefunc.lpByteReadfunc();
						}
						lpTypefunc.lpSwitchEnStatus(enClose);
recv[RF_REC_RLEN_i] = '';
						RF_RECEIVE();						
						uartSendString(recv);
						P17 = 0;
					}
				} 
else if ((RF_EX0_STATUS & 0x04) == 0x04) {
if ((RF_EX0_STATUS & 0x01) == 0x01) { //表示CAD 檢測到擴頻信號 模塊進入了接收狀態(tài)來接收數(shù)據(jù)
						SX1276LoRaSetOpMode(Stdby_mode);
						SX1276WriteBuffer(REG_LR_IRQFLAGSMASK, IRQN_RXD_Value); //打開發(fā)送中斷
						SX1276WriteBuffer(REG_LR_HOPPERIOD, PACKET_MIAX_Value);
						SX1276WriteBuffer( REG_LR_DIOMAPPING1, 0X02);
						SX1276WriteBuffer( REG_LR_DIOMAPPING2, 0x00);
						SX1276LoRaSetOpMode(Receiver_mode);
					} 
else {                          
						SX1276LoRaSetOpMode(Stdby_mode);
						SX1276WriteBuffer(REG_LR_IRQFLAGSMASK,IRQN_SEELP_Value);   //打開發(fā)送中斷
						SX1276WriteBuffer( REG_LR_DIOMAPPING1, 0X00);
						SX1276WriteBuffer( REG_LR_DIOMAPPING2, 0X00);
						SX1276LoRaSetOpMode(Sleep_mode);
//PA_SEELP_OUT();
					}
				}
else {
					SX1276LoRaSetOpMode(Stdby_mode);
					SX1276WriteBuffer(REG_LR_IRQFLAGSMASK, IRQN_RXD_Value);  //打開發(fā)送中斷
					SX1276WriteBuffer(REG_LR_HOPPERIOD, PACKET_MIAX_Value);
					SX1276WriteBuffer( REG_LR_DIOMAPPING1, 0x02);
					SX1276WriteBuffer( REG_LR_DIOMAPPING2, 0x00);
					SX1276LoRaSetOpMode(Receiver_mode);
				}
				RF_REC_RLEN_i = 0;
				SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
				Delay1s(300);
			} else {
				P17 = 1;
			}
		}

編輯通信內(nèi)容代碼

定義兩組通信,分別為內(nèi)容分別為1和2,這個對應(yīng)后面邏輯中的兩個按鍵。

SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
FUN_RF_SENDPACKET("1",1);
Delay1s(1000);
SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);

SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
FUN_RF_SENDPACKET("2",1);
Delay1s(1000);
SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);

應(yīng)用層邏輯設(shè)計

如上所示,通信步驟就完成了,接下來就是觸發(fā)邏輯以及響應(yīng)邏輯的應(yīng)用層代碼了,這一部分需要結(jié)合應(yīng)用設(shè)備功能來設(shè)計,硬件資源一共有10個LED和兩個按鍵,就以目前資源來來做一個按鍵控制燈的邏輯。

按照原理圖定義IO口

#ifndef __GPIO_H
#define __GPIO_H
#define KEY                                  P30
#define KEY2                                 P31
#define led                                  P16
#define led2                                 P35
#define UART_TX_PIN                          P31

按鍵控制邏輯

if (P30 == 0) {
P17 = 1;
P32 = 0;
SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
FUN_RF_SENDPACKET("1",1);
Delay1s(1000);
SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
		} 
else if (P31 == 0) {
P17 = 1;
P32 = 0;
SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
FUN_RF_SENDPACKET("2",1);
Delay1s(1000);
SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
		}

if(recv[0] == '1') 
						{
							P35 = ~P35;
						}
else if(recv[0] == '2')
						{
							P16=0;
							P35=1;
						}

至此就完成了遠程控制燈開關(guān)的邏輯編寫了,利用提供的源碼稍作修改就能做出這個效果。

07、遠程燈控(指定設(shè)備)

原理分析

上述的設(shè)備應(yīng)用在實際場景中已經(jīng)能做到星型組網(wǎng),但是這個組網(wǎng)的通信方式就不是很符合燈控設(shè)備的控制邏輯。

因為在上述所寫的代碼中,這個設(shè)備是全頻段通信的,也就是說同一個固件,燒錄在不同設(shè)備中,只要按下按鍵,所有的設(shè)備都會響應(yīng)。

所以接下來做的操作就是在這個代碼的基礎(chǔ)上做出修改讓主控可以隨意控制多個設(shè)備。一對多單個控制方式很多,先來做一種最簡單的方法,按鍵A控制發(fā)射在470頻段,按鍵B控制發(fā)送在480頻段。

主機代碼

下面是計算好的頻段

unsigned char Frequency[3] = { 0x6c, 0x80, 0x00 };//470Mhz
//unsigned char Frequency[3] = { 0x6c, 0x80, 0x00 };//430Mhz 頻率設(shè)置
//unsigned char Frequency[3] = { 0x6c, 0x80, 0x12 };//475.5Mhz 頻率設(shè)置
//unsigned char Frequency[3] = { 0x78, 0x10, 0x00 };//480.25Mhz 頻率設(shè)置
//unsigned char Frequency[3] = { 0x78, 0x20, 0x00 };//480.5Mhz 頻率設(shè)置

在按鍵B處定義出按鍵數(shù)組,表示按下按鍵B模塊跳到480頻段發(fā)送數(shù)據(jù)2

} else if (P31 == 0) {
Frequency[0] = 0x78;
Frequency[1] = 0x20;
Frequency[2] = 0x00;
SX1276LoRaSetRrequency();
		    SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
FUN_RF_SENDPACKET("2",1);
Delay1s(1000);
SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
		}

#define IRQN_TXD_Value                               0xF7
#define IRQN_RXD_Value                               0x9F
#define IRQN_CAD_Value                               0xFA
#define IRQN_SEELP_Value                             0xFF
#define PACKET_MIAX_Value                            0xff
extern unsigned char Frequency[3];

從機代碼

在這里,要單獨生成480和470頻段的接收機代碼固件,分別燒錄到我們的從機模塊中,我們只要控制以下代碼段就可以完成對不同頻段的控制效果。(這里的從機代碼,我們可以直接使用第一節(jié)中的燈控代碼即可)

unsigned char Frequency[3] = { 0x6c, 0x80, 0x00 };//470Mhz
//unsigned char Frequency[3] = { 0x6c, 0x80, 0x00 };//430Mhz 頻率設(shè)置
//unsigned char Frequency[3] = { 0x6c, 0x80, 0x12 };//475.5Mhz 頻率設(shè)置
//unsigned char Frequency[3] = { 0x78, 0x10, 0x00 };//480.25Mhz 頻率設(shè)置
//unsigned char Frequency[3] = { 0x78, 0x20, 0x00 };//480.5Mhz 頻率設(shè)置

總結(jié)

第一步:要確保能夠通信,然后在通信的基礎(chǔ)上再來對收到的值進行判斷,并且做出相對的輸出結(jié)果(控制燈的方案),到這里完成了最主要的內(nèi)容——通信部分。

第二步:考慮需要實現(xiàn)的一個主機控制不同的設(shè)備,這樣可以把從機工作在不同頻段,主機切換頻段來完成通信。

審核編輯 黃宇

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

    關(guān)注

    4

    文章

    729

    瀏覽量

    37114
  • LoRa
    +關(guān)注

    關(guān)注

    355

    文章

    1898

    瀏覽量

    238094
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    類似51單片機可以能驅(qū)動智能顯示模塊嗎?

    51單片機就可以驅(qū)動智能顯示模塊嗎?
    發(fā)表于 01-19 15:50

    學(xué)習(xí)單片機快速方法

    的很不錯了。告訴大家我學(xué)51單片機只用了兩個星期。普通的應(yīng)用差不多都會了,可以自己設(shè)計一個國旗升降系統(tǒng)、溫度自動控制系統(tǒng)之類的電路和程序。當然想要這么短的時間內(nèi)精通是不可能的。 學(xué)習(xí)單片機
    發(fā)表于 01-14 07:42

    什么是WiFi遠程控制模塊?技術(shù)特點和應(yīng)用場景有哪些?

    隨著科技的發(fā)展,智能家居逐漸走進了我們的生活,越來越多的人開始體驗到通過互聯(lián)網(wǎng)控制家電的便利。而WiFi遠程控制模塊作為智能家居的核心組成部分,其獨特的功能和優(yōu)勢使得家庭和工作場所的設(shè)
    的頭像 發(fā)表于 11-29 14:10 ?514次閱讀
    什么是WiFi<b class='flag-5'>遠程控制</b>模塊?技術(shù)特點和應(yīng)用場景有哪些?

    51單片機RS485編程實例資料

    詳細介紹51單片機RS485通信接線和編程代碼
    發(fā)表于 10-20 14:57 ?4次下載

    1個APP控制千盞?拆解睿澤物聯(lián)單控制器的智能奧秘

    睿澤物聯(lián)的單控制器,不僅是一臺設(shè)備,更是城市照明的智能化入口。1個APP控制千盞,看似簡單,背后卻是物聯(lián)網(wǎng)、大數(shù)據(jù)、節(jié)能技術(shù)的深度整合。
    的頭像 發(fā)表于 08-27 19:25 ?1146次閱讀
    1個APP<b class='flag-5'>控制</b>千盞<b class='flag-5'>燈</b>?拆解睿澤物聯(lián)單<b class='flag-5'>燈</b><b class='flag-5'>控制</b>器的<b class='flag-5'>智能</b>奧秘

    單片機最小系統(tǒng)工作原理及搭建

    單片機最小系統(tǒng)是指使單片機正常運行所需的最簡電路配置,它是所有單片機應(yīng)用的開發(fā)基礎(chǔ)。以下是其核心組成、工作原理及搭建指南: 一、最小系統(tǒng)核心組成
    的頭像 發(fā)表于 08-11 10:55 ?3773次閱讀
    <b class='flag-5'>單片機</b>最小系統(tǒng)工作原理及<b class='flag-5'>搭建</b>

    助力工業(yè)物聯(lián)網(wǎng)升級,智能遠程控制系統(tǒng)功不可沒

    在工業(yè)4.0的浪潮中,工業(yè)物聯(lián)網(wǎng)(IIoT)正從概念走向規(guī)?;涞兀?b class='flag-5'>智能遠程控制系統(tǒng)作為其核心組件,如同“神經(jīng)傳導(dǎo)中樞”,將分散的設(shè)備、數(shù)據(jù)與決策端緊密連接??缭綍r空的精準操作,都依賴于智能
    的頭像 發(fā)表于 08-06 16:23 ?1056次閱讀

    AT89C51 單片機中文資料

    電子發(fā)燒友網(wǎng)站提供《AT89C51 單片機中文資料.pdf》資料免費下載
    發(fā)表于 06-24 15:29 ?1次下載

    智能照明控制開關(guān)模塊,WiFi通訊,遠程調(diào)控照明效果

    智能化和場景化。 一、核心功能 1. 基礎(chǔ)開關(guān)控制 - 通過手機App、物理按鍵遠程控制燈光的開關(guān)。 - 支持單路或多路獨立控制(如控制
    的頭像 發(fā)表于 04-24 15:10 ?1544次閱讀

    50A磁保持遠程控制模塊是什么設(shè)備

    協(xié)議(如Wi-Fi、4G、LoRa等)進行遠程操作,兼具高可靠性與智能化管理能力。 一、技術(shù)原理 50A磁保持遠程控制模塊的核心部件是磁保持繼電器,其工作原理基于永磁體的磁場鎖定機制。
    的頭像 發(fā)表于 04-22 16:12 ?722次閱讀

    新概念51單片機C語言教程入門、提高、開發(fā)、拓展全攻略

    資料介紹 從實際應(yīng)用入手,以實驗過程和實驗現(xiàn)象為主導(dǎo),循序漸進地講述51單片機C語言編程方法以及51單片機的硬件結(jié)構(gòu)和功能應(yīng)用。全書共分5
    發(fā)表于 04-15 13:57

    基于51/32單片機按鍵控制步進電機正反轉(zhuǎn),A4988驅(qū)動

    基于51/32單片機按鍵控制步進電機正反轉(zhuǎn),A4988驅(qū)動
    發(fā)表于 04-14 15:05 ?7次下載

    使用單片機驅(qū)動多組LED實現(xiàn)呼吸效果電路

    各位大佬,請教下,當前我需要使用單片機驅(qū)動控制20路并聯(lián)LED,需要PWM驅(qū)動實現(xiàn)呼吸的效果,目前我是直接使用三極管驅(qū)動,這種電路會有什么問題?跟有些使用三極管
    發(fā)表于 04-11 14:24

    物聯(lián)網(wǎng)單控制聯(lián)網(wǎng)單控制

    物聯(lián)網(wǎng)單控制聯(lián)網(wǎng)單控制
    的頭像 發(fā)表于 04-03 10:53 ?909次閱讀
    物聯(lián)網(wǎng)單<b class='flag-5'>燈</b><b class='flag-5'>控制</b>器 <b class='flag-5'>燈</b>聯(lián)網(wǎng)單<b class='flag-5'>燈</b><b class='flag-5'>控制</b>器

    智慧路燈如何實現(xiàn)遠程控制?

    引言 在智慧城市建設(shè)的進程中,叁仟智慧路燈作為重要的基礎(chǔ)設(shè)施,其遠程控制功能發(fā)揮著關(guān)鍵作用。遠程控制使得叁仟智慧路燈能夠擺脫地域限制,實現(xiàn)高效、精準的管理,極大地提升了城市照明系統(tǒng)的運行效率與智能
    的頭像 發(fā)表于 03-18 12:27 ?1047次閱讀
    智慧路燈如何實現(xiàn)<b class='flag-5'>遠程控制</b>?