掌桥专利:专业的专利平台
掌桥专利
首页

一种无线广告牌及其工作方法

文献发布时间:2023-06-19 09:27:35


一种无线广告牌及其工作方法

技术领域

本发明实施例涉及广告牌技术领域,具体涉及一种无线广告牌及其工作方法。

背景技术

现在电子技术的发展,电子广告显示牌已经慢慢变成了一种比较常见的广告显示终端。随着它的发展,它开始慢慢地具有非常广泛的商用和民用价值,但是现在市面上常见到的一些电子显示终端都是需要事先把显示的信息固化在所要使用的系统中的,后期不容易对显示内容进行更改替换,而且这种设备如果是在经常需要更换显示内容的应用场所使用,会花费很大的人力和财力,特别麻烦。还有一些显示设备为了避免上面的这种情况,会选择让电子显示牌和微机直接用线连接的方法通信,用微机来发送更改的显示内容,这样虽然暂时的解决了实时更换显示广告内容的问题,但由于是有线连接方式,又在增加控制成本和控制的复杂程度,在某些场合或时间限制了系统的放置及使用,有一定的局限性。

发明内容

为此,本发明实施例提供一种无线广告牌及其工作方法,以解决现有的电子广告牌存在的不容易对显示内容进行更改替换,设备与微机有线连接导致控制成本和控制的复杂程度增加,使用存在局限性的问题。

为了实现上述目的,本发明实施例提供如下技术方案:

根据本发明实施例的第一方面,提出了一种无线广告牌,所述无线广告牌包括主控芯片和显示模块,所述显示模块连接所述主控芯片,所述主控芯片与外部通信设备无线连接,所述外部通信设备用于在与主控芯片建立无线连接后,访问所述主控芯片上预先建立的HTTPS服务器,并将用户在所述HTTPS服务器上输入的显示内容信息发送至主控芯片,所述主控芯片用于对获取到所述显示内容信息解析后控制在显示模块上进行显示。

进一步地,所述主控芯片采用ESP32模块。

进一步地,所述显示模块采用64*16的LED点阵显示屏。

进一步地,所述外部通信设备包括手机或电脑。

进一步地,所述主控芯片使用IO建立时序通过HUB08接口控制显示模块显示出对应的内容。

根据本发明实施例的第二方面,提出了一种无线广告牌的工作方法,所述方法包括:

主控芯片初始化GPIO使用模拟的方式完成HUB08通信接口,完成之后显示模块开始按输入要求输出默认的显示内容;

网络初始化,设置主控芯片工作在AP模式,即路由模式,允许带浏览器的外部通信设备的接入;

主控芯片上建立HTTPS服务器,用于建立通信的网页,以便用户使用外部通信设备通过浏览器登录创建的网页,并在网页中输入显示内容信息;

主控芯片对获取到所述显示内容信息解析后控制在显示模块上进行显示。

本发明实施例具有如下优点:

本发明实施例提出的一种无线广告牌及其工作方法,包括主控芯片和显示模块,所述显示模块连接所述主控芯片,所述主控芯片与外部通信设备无线连接,所述外部通信设备用于在与主控芯片建立无线连接后,访问所述主控芯片上预先建立的HTTPS服务器,并将用户在所述HTTPS服务器上输入的显示内容信息发送至主控芯片,所述主控芯片用于对获取到所述显示内容信息解析后控制在显示模块上进行显示。通过无线方式控制广告牌的内容显示,摒弃传统的通过特定的控制软件和有线的方式实现控制显示内容,系统简单容易操作,显示内容更换灵活,控制成本和控制复杂程度低,使用范围广。

附图说明

为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。

图1为本发明实施例1提供的一种无线广告牌的结构示意图;

图2为HUB08接口示意图;

图3为点阵显示示意图;

图4为索引表和字库查找示意图;

图5为“Single factory app,no OTA”模式分区定义表;

图6为显示缓冲区示意图;

图7为暂存区左移示意图;

图8为屏幕刷新示意图;

图9为本发明实施例2提供的一种无线广告牌的工作方法流程示意图。

具体实施方式

以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

本发明实施例提出了一种无线广告牌,如图1所示,该无线广告牌包括主控芯片100和显示模块200,显示模块200连接主控芯片100,主控芯片100与外部通信设备300无线连接,外部通信设备300用于在与主控芯片100建立无线连接后,访问主控芯片100上预先建立的HTTPS服务器,并将用户在HTTPS服务器上输入的显示内容信息发送至主控芯片100,主控芯片100用于对获取到显示内容信息解析后控制在显示模块200上进行显示。

本实施例中,主控芯片100采用ESP32模块。显示模块200采用64*16的LED点阵显示屏。外部通信设备300包括手机或电脑。主控芯片100使用IO建立时序通过HUB08接口控制显示模块200显示出对应的内容。

具体的,ESP32模块作为整个系统设计的核心,一方面它需要建立HTTPS服务器去接收需要显示的数据,另一方面,它需要驱动LED点阵屏幕显示相应的广告内容。在HTTPS服务器方面,ESP32只能够运行起轻量级的Web服务器,但是对于本设计中的HTTPS服务器只需要一个输入框和一个提交按钮,所以ESP32模块自带的Web组件足够完成系统对Web的需要。ESP32的Wi-Fi具有三种功能,可以做为一个站点连接路由器,也可以作为路由器接受其他站点的连接,还可以两者兼具。在本设计中若选择使用Station模式则需要ESP32连接到一个路由才可以提供HTTPS服务,使用AP模式则可以直接由ESP32建立Wi-Fi热点,然后通过可以使用浏览器的设备就可以连接控制广告牌的显示信息。本设计采用ESP32模组做为核心控制器,原因在于ESP32可以快速简单的实现从Web服务器到控制器的所有功能。ESP32模块具有的最高主频是240M,简单的网页请求时处理速度基本可以达到要求,也能很好的控制点阵的刷新频率。

在系统中,HTTPS服务器主要是用来让ESP32主控与一个任意的外部设备取得无线连接,并将接收到的字符显示在LED显示牌上。

ESP32模块上提供了HTTPS Server的组件,所以可以在模块上运行轻量级的Web服务器功能。该组件构建在esp_http_server之上,HTTPS是HTTP协议加上安全套接层协议构成的。HTTPS服务器使用常规HTTP服务器中的钩子和函数覆盖的方法来使用OpenSSL提供加密的。下面是使用HTTP服务器组件来构件API的基本步骤:

httpd_start():创建网页服务器的实例,此时需要根据具体的需求配置为其分配内存和资源,并且返回创建服务器实例的句柄。服务器在创建后使用了两个套接字,一个套接字被用来监听HTTP信号(TCP类型),另一个则用来处理控制信号(UDP类型),这两个套接字在服务器的任务循环中被轮流使用。通过向httpd_start()传递httpd的参数配置结构体,可以在创建服务器实例的时候配置任务的优先级以及定义堆栈的大小。TCP信号会被解析为HTTP的请求,根据请求的URI(即网址)来调用用户已经注册好的处理程序,然后在处理程序中将会回发响应数据,响应数据可以使一段简单的HTML代码,浏览器会根据此渲染出对应的页面。

httpd_stop():根据传入的句柄停止对应的服务器,并释放与此服务器有关的内存和资源。这个函数是阻塞执行的,首先会发送一个停止信号给服务器,服务器来执行停止该任务的命令,然后等待该任务被终止。期间服务器接受的这个任务将会断开所有已经打开了的连接,删除所有注册好的URI处理程序,并且把所有会话的上下文数据清除为空。

httpd_register_uri_handler():用httpd_uri_t结构体类型的对象来注册URI处理的程序。这个结构体包含以下成员:uri名字,请求类型,esp_err_t*handler(httpd_req_t*req)类型的函数指针,指向用户上下文数据的user_ctx指针。

需要注意的是ESP32建立的Web服务器在被访问时会提示安全问题,这是因为我们的安全证书是自签的安全证书,除非在自己要登录网页的浏览器中预加载安全证书,否则这个问题都会一直存在。在安全访问限制出来之后在浏览器上直接选择信任也可以直接访问到网页。

本系统的显示模块200为一块64*16的LED点阵显示屏,该点阵屏有16行,每行又由64个点组成,每一个点可以独立发光。本设计采用64*16的LED点阵显示屏模块采用了HUB08接口,这个接口协议规定每个点可以分别发出红色光或者黄色光,也要求可以同时发红光和黄光组成的绿光,而在本设计中采用的LED点阵模块只能发出红光。该LED点阵模块本质上是由串行输入并行输出芯片和选择器芯片组成的一个简单的电路系统。

常见的LED点阵显示屏的通用接口形式有:04接口、08接口和12接口,本系统中选择使用的是08接口。在本设计中要使用HUB08接口控制外部显示点阵,ESP32模组硬件本身没有HUB08接口协议,所以使用模拟的方式实现控制。

图2为HUB08接口示意图。管脚ADDR_A、ADDR_B、ADDR_C、ADDR_D表示的是行选择信号;管脚RED_1、RED_2、GREEN_1、GREEN_2表示的是列信号,数据从这个四个管脚串行输入;ENABLE管脚是使能信号的端口;CLOCK管脚表示的是时钟信号端口;LATCH管脚表示的是锁存信号的端口;GND管脚表示的是接地端的端口。管脚ADDR_A、ADDR_B、ADDR_C、ADDR_D是通过74595来控制行信号,通过分步同时控制行信号和列信号来实现LED点阵显示屏1/16的扫描方式。其中,用两个3-8译码器74HC138芯片级联来实现行信号的控制,这两个芯片的级联实质上实现了如下具体的功能:

当ADDR_D、ADDR_C、ADDR_B和ADDR_A四个IO口的数据为0000时,LED点阵显示屏的第一行会被选中;此时74HC595上接收到的数据就会在第一行显示,按照74HC595输出的数据控制第一行LED的每一个点的点亮或者熄灭;

当ADDR_D、ADDR_C、ADDR_B和ADDR_A四个IO口的数据为0001时,LED点阵显示屏的第二行就会被选中,具体的形式和上一段描述的一样,后面就不继续复述了;

当ADDR_D、ADDR_C、ADDR_B、ADDR_A四个IO口的数据为0010时,LED点阵显示屏的第三行就会被选中,形式如上;

以此类推,当IO口ADDR_D、ADDR_C、ADDR_B、ADDR_A的数据为1111时,LED显示屏的第十六行就被选中,形式如上;

这样,我们就可以通过08接口的ADDR_A、ADDR_B、ADDR_C和ADDR_D四个行信号来控制LED显示屏的16行;将08接口的四个列控制信号都拉低置0,再给四个行信号依次循环输入从0000到1111的16个高低电平信号,这样就可以点亮整个LED点阵显示屏幕了。但是,如果要在LED点阵显示屏上显示出汉字、图形或者是其他字符的特殊图形,只对行信号或列信号进行控制是达不到预期显示效果的,还需要对控制点阵的列信号进行选择控制。

对LED点阵显示屏的每一列进行驱动时使用了74HC595芯片,该芯片具有将输入的8位串行数据转化成8位串行/并进行输出的功能,还有8位数据锁存的功能。对于系统中用到的64*32的LED点阵显示屏来说,因为LED显示屏总共有64列,所以需要通过对8个74HC595芯片进行级联,才能达到预期的列控制,8个74HC595芯片级联可以将64位串行输入信号扩展为64位并进行信号输出,从而实现对64*32个信号点进行同时控制,达到显示一张完整图片画面的效果。

08接口方式中的RED_1、RED_2、GREEN_1和GREEN_2四个IO口是用来输入64位串行输入数据的。其中,RED_1和GREEN_1分别可以用来控制上半个显示屏(16行)的红、绿信号的选择;RED_2和GREEN_2分别可以用来控制下半个显示屏(16行)的红、绿信号的选择。那么,对于64*32的双色LED点阵显示屏来说,总共需要使用4*8=32个74HC595芯片。这样就可以让LED显示屏显示出任意我们想要的汉字、字符或者是其他特殊图形了。

HUB08本质上使用了74HC138和74HC595芯片组成控制电路,74HC138用来控制选择要输出的行,然后数据串行输入8片74HC595组成的串行转并行电路,数据转为并行信号输出到该行的每一个控制端,从而控制该行的显示。

基本时序是:

第一步、EN管脚拉低为0。

第二步、64bit串行数据进行输入,具体为将CLK管脚拉低为0,设置数据管脚为相应的电平,再将CLK拉高为1,那么一位完整的数据就会在CLK的上升沿输入系统。

第三步、设置EN管脚为高电平。

第四步、选定使能行,拉高ADDR_AT管脚为1,拉低ADDR_AT管脚为0。

第五步、EN管脚拉低为0。

如上所述,重复16次上述这样的过程(即行选择从0000-1111经历一边)就可以显示一屏完整的内容。

字符模型是对字符依据点阵显示原理取模后的一个数组,如图3所示,要在一个16*16的点阵上显示汉字“二”,按照行序依次输出每行的数据,比如第一行0000000000000000第五行0001111111111000。每一个字符对应一个16*16位的数据块,将这些数据按照一定的规则组合成一个可以查询表,就构成字库。在LED点阵显示屏上显示的每一个字符都需要由16*16个点阵组成,也就是说我们的显示模块一次最多可以显示4个完整的字符。

16×16÷8=32(byte)

存储一个字符需要32个字节,字库是由23940个汉字、字母以及符号组成的。存储这个字库需要

32×23940=766080(byte)=748(KB)

程序本身无法支持式上式中计算的这样大的数据表的堆栈定义,所以我们选择一段引导程序和应用程序都未使用的FADDR_Ash将这一段数据直接写到FADDR_Ash之中,然后建立一个索引表来查找到对应的位置。

索引表中存储每一个字符对应的汉字ANSI编码,即一个字符占据3个字节,所以索引表的大小为

3×23940=71820(byte)

但是C语言中没有三字节的数据类型,所以本设计使用4字节的int类型存储索引表

4×23940=95760(byte)

经过测试ESP32模块可以支持式上式所计算出来的这么大的堆栈定义,所以我们在程序中直接定义这个表。通过查找我们定义的字库表的方式定位到FADDR_Ash中我们用到的字符所在的位置。具体过程如图4。

首先从索引表里查找字符对应的下标,然后在FADDR_Ash中从0X210000地址加上对应下标乘以32的位置开始取出32个字节就是该字符对应要显示的点阵数据。

关于FADDR_Ash地址的选择,首先要了解ESP32模组关于FADDR_Ash存储空间的划分,首先ESP32的模块里有两级引导程序,一级引导程序已经被固化在了ESP32的内部ROM中,它会从FADDR_Ash的0x1000偏移地址处开始加载二级引导程序至RAM(IRAM&DRAM)中,二级引导程序从FADDR_Ash中加载分区表和主程序镜像至内存中,在系统的主程序中包含有RAM段和通过FADDR_Ash高速缓存映射的只读段。其中分区表对FADDR_Ash的存储空间进行了规定,即规定了从某个地址到某个地址用来存储那些数据,在存储字库时需要避开这些位置,以免影响系统功能的正常运行。

默认分区的位置是从FADDR_Ash的0x8000位置开始的。分区表可以自己手动定义,也可以选择系统默认的分区表,系统默认有两种分区表,在考虑本系统的特性后,设计时选择了“Single factory app,no OTA”模式,本模式分区表的基本定义如图5。由表可见在FADDR_Ash最后的0x10000到0x210000位置存储了应用程序,之后的地址并没有再使用,所以我们从0x210000位置开始存储我们的字库。

网页返回的数据是由ASSIC编码的字符串构成的,数据开头前五个字符为“text=”,在等号之后的内容就是返回的提交的字符串,这些字符串的编码是汉字使用汉字ANSI编码,英文字符使用ASSIC编码,每个汉字字符前面有一个“%”,即如:

%XX%XX%XXYYYY%XX%XX%XX

其中X和Y都表示十六进制的字符,%XX%XX%XX这样的九个字符就表示一个汉字,YY这样的一个两个字符就表示一个ASSIC编码的英文字符,所以首先对这个字符串进行数据转换,将所有字符全部转为汉字ANSI编码的格式,转换的核心是根据百分号的ASSIC编码为25,每遇到一个字节为25就判定遇到一个汉字,将从此字节开始的9个字节解码为一个汉字,若未遇到25就判定为一个英文字符串,将从此字节开始的两个字节解码为一个字符。

为了方便的存储数显示据本设计建立了三个存储区,分别是用来存储接收数据的recv_buff存储区,起中间沟通作用的buff存储区,还有最终用于显示的dispaly_data存储区,如图6所示。

首先,服务器接收到数据,将数据解析成汉字ANSI编码,然后通过查找表找到对应的点阵显示数据存储到recv_buff,并设置接收标志为已接收到新的数据,然后现实任务在检测到接收数据标志被设置之后,将数据取出到buff之中,在下一次显示刷新时,数据会被读取到dispADDR_Ay_buff之中,并且被显示到屏幕之上。

为了实现左移显示全部的内容,定义了一个比显示数据多一个字符存储大小的暂存区。首先,先从定义好的dispaly_buff中取出一个字符大小的数据放到暂存区的末尾处。

如图7和图8所示描述暂存区的内存模型,暂存区模型是每行80个位,一共16行组成,从每行的第一个位开始提取显示数据,每次显示一定的次数,造成视觉暂留的效果,然后p_data这个指针向右移动一位,开始下一次显示。直到显示16次之后结束。暂存区数据整体前移一个显示字符所占内存的大小,取dispADDR_Ay_buff的下一个字到暂存区的末尾,直到所有dispADDR_Ay_buff中的字符都被显示。

服务器建立好之后,使用手机电脑平板等设备连接到ESP32模块自带的Wi-Fi热点,下一步在外部设备的浏览器中输入IP地址hppts://192.168.4.,然后就可以直接访问到本系统设计中建立的传输显示内容的简易网页。在这里还有两点内容需要注意一下,一是ESP32模块在使用AP模式时会默认本机的IP地址为192.168.4.1。另一个是在第一次访问该网址时浏览器会提示此网址不止安全的连接,此时需要设置浏览器信任该站点。当输入的字符数量太多超出所能处理的能力时服务器返回提示信息“超出接受字符串最多范围”。

实施例2

本发明实施例2提出了一种无线广告牌的工作方法,首先完成硬件显示电路初始化和Web服务器的搭建,HTTPS在接收到数据之后会触发系统的回调,在系统回调中处理接收到的数据,然后系统创建任务不停地刷新需要显示的信息。如图9所示,具体方法包括:

主控芯片初始化GPIO使用模拟的方式完成HUB08通信接口,完成之后显示模块开始按输入要求输出默认的显示内容;

网络初始化,设置主控芯片工作在AP模式,即路由模式,允许带浏览器的外部通信设备的接入;

主控芯片上建立HTTPS服务器,用于建立通信的网页,以便用户使用外部通信设备通过浏览器登录创建的网页,并在网页中输入显示内容信息;

主控芯片对获取到显示内容信息解析后控制在显示模块上进行显示。

虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

技术分类

06120112169703