序号 | 名称 | 数量 | 备注 |
1 | 电脑 | 1台 | 系统Windows7及以上 |
2 | STM32底座模块 | 2个 | · |
3 | Wifi模块 | 1个 | · |
4 | 蜂鸣器模块 | 1个 | · |
5 | ST-Link下载器 | 1个 | · |
6 | ST-Link下载器连接线 | 1根 | · |
7 | 蜂鸣器控制实验代码 | 2份 | · |
ST-Link下载器 & ST-Link下载器连接线
WIFI英语全称是Wireless Fidelity,中文译成无线保真。WIFI是建立连接和进行通讯的手段,它对应一套通讯的规则,保证让两个节点能互相连接,设备连接建立后,通过TCP/IP和UDP等协议,传输数据,连接互联网络。WIFI模块的STA模式和AP模式。
AP模式:Access Point,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下。AP和AP之间允许相互连接。Sta模式(SP模式):Station类似于无线终端,sta本身并不接受无线的接入,它可以连接到AP,一般无线网卡即工作在该模式。对照表如下:
分类 | AP模式 | SP模式 |
接入网络 | 接受 | 不接受 |
网卡 | 需要 | 不需要 |
终端 | 有线 | 无线 |
RS485采用平衡发送和差分接收方式实现通信:发送端将串行口的ttl电平信号转换成差分信号a,b两路输出,经过线缆传输之后在接收端将差分信号还原成ttl电平信号。由于传输线通常使用双绞线,又是差分传输,所以有极强的抗共模干扰的能力,总线收发器灵敏度很高,可以检测到低至200mv电压。故传输信号在千米之外都是可以恢复。rs-485最大的通信距离约为1219m,最大传输速率为10mb/s,传输速率与传输距离成反比,在100kb/s的传输速率下,才可以达到最大的通信距离,如果需传输更长的距离,需要加485中继器。rs-485采用半双工工作方式,支持多点数据通信。rs-485总线网络拓扑一般采用终端匹配的总线型结构。即采用一条总线将各个节点串接起来,不支持环形或星型网络。如果需要使用星型结构,就必须使用485中继器或者485集线器才可以。rs-485总线一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。
**抗干扰性:**RS485 接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。RS232 接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰。
**传输距离:**RS485 接口的最大传输距离标准值为 1200 米(9600bps 时),实际上可达 3000 米。RS232 传输距离有限,最大传输距离标准值为 50 米,实际上也只能用在 15 米左右。
**通信能力:**RS-485 接口在总线上是允许连接多达128个收发器,用户可以利用单一的 RS-485 接口方便地建立起设备网络。RS-232只允许一对一通信。
**传输速率:**RS-232传输速率较低,在异步传输时,波特率为20Kbps。RS-485 的数据最高传输速率为 10Mbps。 信号线:RS485 接口组成的半双工网络,一般只需二根信号线。RS-232 口一般只使用 RXD、TXD、GND 三条线。
**电气电平值:**RS-485的逻辑"1"以两线间的电压差为+(2-6)V表示;逻辑"0"以两线间的电压差为-(2-6)V表示。在 RS-232-C 中任何一条信号线的电压均为负逻辑关系。即:逻辑"1",-5- -15V;逻辑"0 " +5- +15V。
每个底座周边都有RS485总线接口,由底座的485信号由MCU的UART信号+MAX3485 485总线转换芯片组成。
node-red
。text
控件实现表头(显示界面背景信息),新Group,如下图:button
,如下图:button
,拖入编辑界面中。拖入button控件button
控件,编辑button
,参数如下图。Group的选择一定要注意,否则部署后会看不到相应的控件。tcp out
搜索函数节点,如下图:tcp out
拖入编辑界面中,如下图:tcp out
节点弹出tcp out
节点编辑界面,进行参数设置,如下图:Project
-> Open Project
,选择工程文件:NodeRED平台实验\9.蜂鸣器控制实验\WiFi模块程序\USER\WiFi.uvprojx
并打开。Project
-> Open Project
,选择工程文件:NodeRED平台实验\9.蜂鸣器控制实验\蜂鸣器模块程序\USER\beep.uvprojx
并打开。① 程序目录结构,如下图。CORE文件夹为STM32内核代码,HALLIB文件文件夹为底层HAL库文件,我们主要关心,main.c及HARDWARE中的代码。
② main.c中对串口、蜂鸣器模块、RS485协议进行初始化。初始化完成后。调用函数DataHandling_485()获取控制指令,依控制指令控制蜂鸣器打开或关闭。蜂鸣器是无源蜂鸣器,代码采用1ms切换一次蜂鸣器电平的方式,输出一个500Hz的方波控制蜂鸣器响起。当BeepState=0,时无方波输出,蜂鸣器不响,BeepState = 1,有500Hz方波输出蜂鸣器响起。
int main(void)
{
HAL_Init();//初始化HAL库
Beep_Init();//初始化蜂鸣
Rs485_Init();//初始化485
UART1_Init(115200);//初始化串口1,用于485通信
USART3_Init(115200);
printf("this usart3 print\r\n");
while(1)
{
if(!DataHandling_485(Addr_BEEP)){//是发给本机的指令
printf("get data\r\n");
BeepCmd = Rx_Stack.Data[0];//控制指令
if(BeepCmd){
BeepState = 1;//打开蜂鸣器
}
else{
BeepState = 0;//关闭蜂鸣器
}
}
if(BeepState){
HAL_Delay(1);//延时1ms,蜂鸣器的声音频率为500HZ
BEEP_IO_TOGGLE();//蜂鸣器IO电平反转
}
else{
BEEP_IO_LOW();//停止蜂鸣器
}
}
}
① 程序目录结构,如下图。CORE文件夹为STM32内核代码,HALLIB文件文件夹为底层HAL库文件,我们主要关心,main.c及HARDWARE中的代码。
② main.c中对串口、RS485协议进行初始化,并WIFI初始化并连接NODE-Red平台。初始化完成后,接收平台的指令,根据平台指令控制风扇节点的风扇状态。控制命令通过调用Rs485_Send()进行发送。
int main(void)
{
HAL_Init();//初始化HAL库
Rs485_Init();//初始化485
UART1_Init(115200);//初始化串口1 485总线使用
UART2_Init(115200);//初始化串口2
USART3_Init(115200);//调试串口
printf("this usart3 print\r\n");
WiFi_Init();//初始化WiFi,并连接NODE-Red
while(1)
{
if(USART2_RX_STA){
HAL_Delay(50);//延时50ms等待接收完成
printf("get cmd=%s\r\n",USART2_RX_BUF);//调试打印
if(strstr((void*)&USART2_RX_BUF[0],(const char*)"$BEEP")){
Beep_Ctrl = 1 - Beep_Ctrl;//蜂鸣控制命令
Rs485_Send(Addr_WiFi,Addr_BEEP,BEEP_CTRL,1,(void*)&Beep_Ctrl);//发送命令控制蜂鸣器
}
USART2_RX_STA = 0;//清空串口接收计数器
memset((void*)USART2_RX_BUF,0,USART2_REC_LEN);//清空接收缓冲
}
}
}