应用例程:以太网UDP消息的自由发送与接收(基于ESP8266模块)


基本信息

通过两块STM32F103RCT6核心板,演示如何通过UDP消息进行数据的发送与接收。核心板B采集电位器的数据,转换为电压后,通过UDP消息发送到核心板A,核心板A接收到数据后,将数据通过OLED屏显示出来。UDP消息通过ESP8266模块传递,核心板A驱动ESP8266模块A工作在AP模式(创建WIFI接入点),并监听指定端口的UDP报文。核心板B驱动ESP8266模块B工作在Station模式(加入现有的WIFI接入点),并向特定IP地址的指定端口发送UDP报文。因为使用其中一个ESP8266模块创建了WIFI接入点,因此不需要无线路由器。

视频下载

暂无

实验硬件

STM32F103RCT6核心板(2块)[ 购买 ]

CH340E通讯小板(2块)[ 购买 ]

Micro-USB通讯线(2根)[ 购买 ]

OLED屏SSD1306(1块)[ 购买 ]

可调电位器模块(1块)[ 购买 ]

ESP8266通讯模块(2块)[ 购买 ]

电路参考

  • CH340E通讯小板A通过Micro-USB通讯线到连接电脑。
  • CH340E通讯小板A连接STM32F103xC核心板A
    CH340E通讯小板AGND----GNDP4端子STM32F103xC核心板A
    +5V----5V
    TXD----RX
    RXD----TX
  • CH340E通讯小板B通过Micro-USB通讯线到连接电脑。
  • CH340E通讯小板B连接STM32F103xC核心板B
    CH340E通讯小板BGND----GNDP4端子STM32F103xC核心板B
    +5V----5V
    TXD----RX
    RXD----TX
  • OLED屏插入STM32F103xC核心板A的P5端子。
    OLED屏SSD1306GND----GNDP5端子STM32F103xC核心板A
    VCC----V3
    D0----PB3
    D1----PB5
    RES----PD2
    DC----PA15
    CS----PC12
  • 可调电位器模块连接STM32F103xC核心板B
    可调电位器模块OUT----PA5P1端子STM32F103xC核心板B
    VCC----V3P3端子
    GND----GND
  • ESP8266通讯模块A连接STM32F103xC核心板A
    ESP8266通讯模块A3V3----V3P3端子STM32F103xC核心板A
    RST----V3
    EN----V3
    GND----GND
    TX----PA3P1端子
    RX----PA2
  • ESP8266通讯模块B连接STM32F103xC核心板B
    ESP8266通讯模块B3V3----V3P3端子STM32F103xC核心板B
    RST----V3
    EN----V3
    GND----GND
    TX----PA3P1端子
    RX----PA2

关键配置说明

为了简化,这里STM32F103xC核心板A与核心板B采用同一套硬件配置。

添加Tcp蓝图,在蓝图中添加TCP/IP通讯管理模块TcpIp、TCP/IP底层驱动ESP8266_TcpIpL、串口通讯底层USART2_AscL。

蓝图中选择USART2_AscL模块,在配置节点中选择Pin,确认单片机使用的管脚是:PA2、PA3。因为ESP8266模块默认的波特率时115200,速率比较高,这里建议打开DMA数据传输。

蓝图中选择Asc模块,在配置节点中选择Device,添加节点Device0,使用的串口底层实现为USART2_AscL。

蓝图中选择ESP8266_TcpIpL模块,在配置节点中选择LocalAddr,添加本地网卡LocalAddr0,使用的串口通讯设备为Device1。WIFI模式为AP,自己创建WIFI接入点,接入点名称是MCUBEE,接入点密码是12345678。TCP/IP模式为:作为服务器等待客户端连接。

蓝图中选择TcpIp模块,在配置节点LocalAddr中添加本地网卡LocalAddr0,使用的物理网卡为ESP8266_TcpIpL模块中的本地网卡LocalAddr0。

蓝图中选择TcpIp_Fe模块,在配置节点Port中,添加用户端口Port0。Port0会在TcpIp模块中的本地网卡LocalAddr0中自动创建一个网络连接TcpIp_Fe_Port0_Socket。

A/D转换器、OLED屏的配置可以参考以下两个例程:

应用程序

梯形图(核心板A,接收并显示)

NETWORK 0 用SM0.0保持以太网连接,并设置连接Port0的端口为3308

NETWORK 1 用SM0.0驱动UDP消息接收任务,一旦任务完成,下一个周期立即重新开启接收

NETWORK 2 当接收任务完成且没有错误时,统计总的报文和有效报文

液晶屏配置(核心板A,接收并显示)

梯形图(核心板B,采集并发送)

NETWORK 0 用SM0.0保持以太网连接,并设置连接Port0的端口为3308

NETWORK 1 获取AIW0的变化情况,保存到变量VW2

NETWORK 2 如果不在发送冷却时间内,且数据变化大于4,则更新VW0,并设置因为数据变化需要发送的请求M0.0

NETWORK 3 如果不在发送冷却时间内,且超过1秒没有发送过数据了,设置因为超时需要发送的请求M0.1

NETWORK 4 若有发送请求M0.0或者是M0.1,处理下数据然后启动发送任务

NETWORK 5 统计发送成功的次数

系统块配置(核心板B,采集并发送)

在硬件配置中,ESP8266默认是工作在AP模式,因为核心板B需要驱动ESP8266工作在Staion模式,因此需要在系统块中修改ESP8266的工作模式。这里将WIFI模式设置为Station(加入WIFI接入点);TCP/IP模式设置为Client(客户端)。核心板A会在启动后建立建立一个WIFI接入点MCUBEE_XXXX,系统会根据MCU的硬件ID在MCUBEE后面加上下划线和4个数字。为了确认这4个数字,可以先让核心板A正常上电启动,然后用带无线网卡的笔记本搜索一下当前的可用WIFI接入点,确认名字后再填写到核心板B的系统快配置中。系统块配置必须在下载到核心板,重新上电后才能生效!

实验步骤

  • 将配置上传到服务器,固件下载到STM32F103xC核心板A和B。

  • 将梯形图A下载到STM32F103xC核心板A。

  • 重新启动STM32F103xC核心板A,然后用带无线网卡的笔记本搜索一下当前的可用WIFI接入点,确认STM32F103xC核心板A创建的WIFI接入点的名字。

  • 将WIFI接入点的名字填入梯形图B中的系统块,然后将梯形图B下载到STM32F103xC核心板B。

  • 重新启动核心板B,大约4,5秒左右,核心板B将登陆核心板A创建的WIFI接入点。一旦建立连接,即使电位器保持不动时,也可以看到核心板B定时向核心板A发送数据。扭动电位器时,核心板A上显示的电压立即变化。

指令说明

相关下载