版本协议

BSD

标签
MQTT P2P

#第五届立创电子设计大赛#借助MQTT实现P2P内网穿透的4G拍摄及DTU透传功能模块

创建时间:11个月前

项目主题:自由主题

视频

描述

<p>注:*为必填项。</p> <p>【请在报名阶段填写 ↓】 <em>  1、本人电子工程师一枚,从事嵌入式开发12年,主要为stm系列及ESP系列开发和C#上位机开发 </em>  2、本项目主要功能有:4G通信和500万像素拍摄,TF卡存图,RS485串口总线,MQTT通信,P2P通信。借助阿里云物联网MQTT平台,连接内网主机和4G拍摄模块,并借助公网云实现UDP-NAT端口映射,从而实现P2P打洞内网透传,然后两者就能绕过MQTT平台进行图像大文件或DTU数据流的直接透传。 核心硬件主要由GD32F103CB、CPLD、SDRAM、OV5640图像sensor以及SIM7600CE全网通4G模块搭建。 软件主要为:单片机嵌入式C,CPLD的VerilogHDL,上位机用C#写,分为主控面板和打洞程序,打洞程序部署在租用的腾讯云上。</p> <p>【请在竞赛阶段填写 ↓】 *  1、描述项目详情         (1)、MQTT协议以及其平台作为目前物联网应用领域的主流,在很多物联网产品上都用到了。但它通常只用在小包短报的通信应用上,并不适合于大文件或者数据流的场合。另一方面,目前关于图像视频的应用多数都采用linux或安卓的平台方案,比如海思或树莓派等,成本高功耗大,且有一定的入门门槛。同时对于视频图像的传输场合,最好的是可以使数据交流的双方能直接连通,无需中介服务器。而我这个项目就是想要用低成本低功耗低门槛的方式来实现MQTT+图像流直通的功能。         (2)本项目可以按照通信类型分为MQTT通信和P2P通信。         首先是MQTT的通信。目前MQTT-Broker服务商现在很多互联网公司都可以提供接入服务,并且费用很低。我选择了阿里云的物联网平台作为服务提供方。而在单片机上跑MQTT协议的资料和例子都可在网上找到。鉴于我开发的单片机C程序用FreeRTOS作为骨架,于是我也从FreeRTOS官网上找到了MQTT的很好的代码,很方便就移植到我的单片机上。 而MQTT是基于TCP协议的,我采用的4G模块SIM7600CE,本身就带有TCP/IP栈,通过几句串口的AT指令可以很方便快捷建立TCP连接,连接到阿里云上面。而PC主机上用C#写的控制界面程序,网上也有成熟的MQTT.NET.DLL的库方便调用。于是我用了一周左右时间就搭建起两者的MQTT通信通道。这里注意的是,由于我要采用自定义的命令格式,因此需要设置阿里云控制台的转发规则。当我要转发时,在单片机或PC程序上把转发的二进制数据经过base64转为字符串,再用json格式封装后发给MQTT服务器,服务器才会解析正确并帮我转发。         其次是P2P通信。P2P是工作在UDP上的,它的打洞原理是基于路由的锥形NAT映射。因此我需要有个公网的服务器作为映射中介。具体做法是:用C#写个回音程序,部署在公网IP的云上。回音程序会一直监听UDP端口,若有谁查询自己所属的对外NAT的IP端口号,回音程序就会返回给它。 打洞的过程为:当内网主机得知4G模块已经连上MQTT后,先向回音程序查询自己对外的NATip端口,然后通过MQTT发给4G模块,4G模块用这个IP端口尝试发UDP包给主机,若主机所在网关是锥形NAT类型,则会收到4G模块的包;若对称的NAT类型,则不能收到,此时需要互换角色,让4G先获得自己的NATIP端口,然后通过MQTT发给主机,让主机尝试打洞。这样只要双方有任一个为锥形NAT,都能打洞成功。我自己PC是两层TPLink内网,经测试联通4G卡和移动家庭宽带是锥形NAT,移动4G卡是对称NAT,其他未测试过。一旦打洞成功后要每隔一段时间要发心跳,保持路由器的NAT列表有效才能保持P2P通道的畅通。而SIm7600CE上也自带UDP协议栈,可以方便使用。         (3)综上,我的终端模块和主机程序上都分别跑了两种通信协议,其中MQTT用于控制报文,P2P用于大文件数据传输。         (4)在图像拍摄方面,由于OV5640是带JPG引擎的芯片,因此我只要设置好它的输出格式并及时接收缓存下来就可以了。由于OV5640的输出总线带宽较高,因此我这里另外采用了CPLD+SDRAM的方式来专门缓存JPG数据,然后当单片机需要图像数据的时候就又通过CPLD分包读取SDRAM缓存的数据。所以CPLD是作为中转站的角色,它的代码用到VerilogHDL来编写。         (5)从我提供的视频可见,P2P通道下图片传输的速率大概是40~50KB,对于500万像素的JPG通常可以10s传完,并且这里还加入了丢包重传的逻辑。如果以后搭建MJPG视频流,不用考虑丢包重传的话,估计可以达到70KB,那这个速度对于传输320<em>240分辨率的MJPG来说应该也有7帧/s。并且SIM7600自带GPS功能,以后可以做台无人驾驶遥控小车,通过地图+实时视频远程遥控,只要有4G的地方都能去哈哈。 </em>  2、描述项目所面临的挑战及所解决的问题         由于本项目涉及到比较多方面的技术,所以即使有些技术是有资源参考的,也要花不少时间整合和调试。并且是跨平台跨网络的项目,因此开发起来也有一定难度,也有不少乐趣的。比如其中的P2P传输,因为其工作在UDP之上,所以传输图像所需的保证数据完整性的逻辑就要我自己定义来写。这里我是参考了TCP的窗口技术和丢包重传技术,稍微简化后用在P2P传输上。 <em>  3、描述项目硬件、软件部分涉及到的关键点       (1)  在这个项目上我共自定义了两套协议,一套是封装在MQTT包里的控制报文协议,比如打洞,IO外设控制,串口小包转发,拍摄参数设置等;另一套是专门在P2P上的大文件或流传输协议。        (2)硬件上我自己开发的CPLD+SDRAM图像采集方案比较原创性,同时也可以引申到其他项目上解决低端单片机不能采集图像的痛点。         (3)这个项目的主要精力时间都是花在单片机代码设计和编程上,而我采用的FreeRTOS操作系统是很强大的一个工具,并且是开源免费的。 </em>  4、项目材料清单展示         拍摄模块</p> <table><thead><tr><th>0.1u</th> <th>C1, C2, C3, C4, C7, C8, C9, C10, C12, C15, C16, C20, C23, C24, C25, C27, C28, C29, C30, C35</th> <th>0603-C</th> <th>风华</th> </tr></thead><tbody><tr><td>10u/6.3V</td> <td>C5, C11, C13, C14, C17, C22, C26, C31, C32, C34</td> <td>0603-C</td> <td>风华</td> </tr><tr><td>22u/6.3V</td> <td>C18, C33</td> <td>0805-C</td> <td>风华</td> </tr><tr><td>10u/25v</td> <td>C6, C19, C21</td> <td>0805-C</td> <td>风华</td> </tr><tr><td>SMAJ5.0CA</td> <td>D1</td> <td>SMA-TVS</td> <td>长电</td> </tr><tr><td>磁珠</td> <td>L1, L2, L3, L4</td> <td>0603-R</td> <td></td> </tr><tr><td>红色贴片LED</td> <td>LD1</td> <td>0603-LED</td> <td></td> </tr><tr><td>蓝色贴片LED</td> <td>LD2</td> <td>0603-LED</td> <td></td> </tr><tr><td>SI2301</td> <td>Q1, Q2</td> <td>SOT-23</td> <td>长电</td> </tr><tr><td>10k</td> <td>R1, R2, R3, R5, R9, R10, R11, R12, R14, R17, R23</td> <td>0603-R</td> <td>风华</td> </tr><tr><td>1K</td> <td>R4</td> <td>0603-R</td> <td>风华</td> </tr><tr><td>51k</td> <td>R6, R13, R18, R19, R20, R21</td> <td>0603-R</td> <td>风华</td> </tr><tr><td>5k1</td> <td>R7, R8, R22</td> <td>0603-R</td> <td>风华</td> </tr><tr><td>330</td> <td>R15, R16</td> <td>0603-R</td> <td>风华</td> </tr><tr><td>W9864G6KH</td> <td>U1</td> <td>TSOP54</td> <td>华邦</td> </tr><tr><td>EPM240T100</td> <td>U2</td> <td>TQFP100</td> <td>altera</td> </tr><tr><td>ME6206P1V5</td> <td>U4</td> <td>SOT-23</td> <td>长电</td> </tr><tr><td>ME6206P2V8</td> <td>U5</td> <td>SOT-23</td> <td>长电</td> </tr><tr><td>GD32F103CB</td> <td>U6</td> <td>LQFP48</td> <td>兆易</td> </tr><tr><td>ME6206A33P</td> <td>U7, U8</td> <td>SOT-89</td> <td>长电</td> </tr><tr><td>SP485EE</td> <td>U9</td> <td>SOP8</td> <td>SP</td> </tr><tr><td>48M晶振</td> <td>XT1</td> <td>XTAL-5032</td> <td></td> </tr></tbody></table><p>4G模块</p> <table><thead><tr><th>Value</th> <th>Designator</th> <th>Footprint</th> <th>厂家</th> </tr></thead><tbody><tr><td>ME6306</td> <td>U1, U2</td> <td>SOT-23-6P</td> <td>长电</td> </tr><tr><td>4G</td> <td>U5</td> <td>SIM7600</td> <td>SIMCOM</td> </tr><tr><td>0.1u</td> <td>C1, C2, C7, C9, C10, C14, C17, C18, C20, C24, C25, C27, C28, C31</td> <td>0603-C</td> <td>风华</td> </tr><tr><td>100u6V</td> <td>C6, C21, C22, C26, C30, C33</td> <td>1206-C</td> <td>三星</td> </tr><tr><td>10R</td> <td>R8, R15, R17, R18</td> <td>0603-R</td> <td>风华</td> </tr><tr><td>10u</td> <td>C13, C15, C23, C29, C32</td> <td>0603-C</td> <td>风华</td> </tr><tr><td>22u16V</td> <td>C3, C4, C5, C11</td> <td>0805-C</td> <td>风华</td> </tr><tr><td>28K 1%</td> <td>R1, R4, R10</td> <td>0603-R</td> <td>风华</td> </tr><tr><td>330</td> <td>R9</td> <td>0603-R</td> <td>风华</td> </tr><tr><td>33p</td> <td>C8, C12, C16, C19, C34, C35</td> <td>0603-C</td> <td>风华</td> </tr><tr><td>5K1</td> <td>R2, R5, R7, R11, R12, R13, R14, R16, R19, R20</td> <td>0603-R</td> <td>风华</td> </tr><tr><td>6.8uH2A</td> <td>L3</td> <td>Pwr-Indu-0402</td> <td></td> </tr><tr><td>6.8uH6A</td> <td>L2</td> <td>Pwr-Indu-0603</td> <td></td> </tr><tr><td>68R</td> <td>L4</td> <td>0603-R</td> <td>风华</td> </tr><tr><td>6K8 1%</td> <td>R3, R6</td> <td>0603-R</td> <td>风华</td> </tr><tr><td>DSK34</td> <td>D1</td> <td>SOD-123</td> <td>长电</td> </tr><tr><td>GD25Q32</td> <td>U6</td> <td>SOIC8-WIDE</td> <td>兆易</td> </tr><tr><td>GRE</td> <td>LD2</td> <td>0603-LED</td> <td></td> </tr><tr><td>ME6206P-3V3</td> <td>U3</td> <td>SOT-23</td> <td>长电</td> </tr><tr><td>SI2302</td> <td>Q1</td> <td>SOT-23</td> <td>长电</td> </tr><tr><td>SIM Card</td> <td>SIM</td> <td>SIM_NANO_FLIP</td> <td></td> </tr><tr><td>SP3485</td> <td>U8</td> <td>SOP8</td> <td></td> </tr><tr><td>SRV05-4</td> <td>U7</td> <td>SOT-23-6P</td> <td></td> </tr><tr><td>TXB0102DCU</td> <td>U4</td> <td>sot-70-dcu</td> <td></td> </tr><tr><td>LEDv</td> <td>LD1</td> <td>0603-LED</td> <td></td> </tr></tbody></table><p>*  5、项目图片上传           5.1、PCB上印制大赛logo图片,若无视为放弃参赛 <img src="//image.lceda.cn/pullimage/rzRjL13f7hvjswxZ4xrhP2OCUIZh7LaHMAHekVs5.jpeg" alt="IMG_20200920_202059.jpg" /><img src="//image.lceda.cn/pullimage/eeczPg0kds24ZWprI3dbymThI0pRqEHT7Xrj80vV.jpeg" alt="fomr.jpg" /><img src="//image.lceda.cn/pullimage/wQkAhCWypgfjCmGHPWjQ41GcekDrV6GhHcop083N.jpeg" alt="IMG_20200920_194204.jpg" /><img src="//image.lceda.cn/pullimage/epSxRq47jBVleKbHcgzEosqMVu8CJUvC9Tz3ab7q.jpeg" alt="IMG_20200920_202050.jpg" />           5.2、项目其它图片         PC控制台界面 <img src="//image.lceda.cn/pullimage/1kFCXWxvhT3Iti2bLq6s78zK9nCG4IowxgMVm1hZ.png" alt="console.png" /> 4G模块原理图 <img src="//image.lceda.cn/pullimage/oKeofmuJBMj7OUGAs3IUeWFIa5eP1siRt1dicHAM.png" alt="image.png" /></p> <p>拍摄模块原理图 <img src="//image.lceda.cn/pullimage/bNLIodr5KK3a7kGSHrtRQ7Mvu6ZeGfvGIYoF04Hr.png" alt="image.png" /> *   6、演示您的项目并录制成视频上传           6.1、视频上传大赛官网           6.2、B站视频标题和链接 <a href="https://www.bilibili.com/video/BV1Jz4y1Z7BU/" target="_blank" rel="noreferrer noopener">https://www.bilibili.com/video/BV1Jz4y1Z7BU/</a> 第五届立创电子设计大赛-《借助MQTT实现P2P穿透的4G拍摄及DTU透传功能模块》-之功能演示</p> <p>< span class="colour" style="color:rgb(170, 170, 170)">< span class="size" style="font-size:12px">注意事项:①:视频要求:请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;②:视频上传:请同步上传至大赛官网和B站(<a href="www.bilibili.com">www.bilibili.com</a>),B站人气TOP10项目将获得1000-5000元现金奖励,其它上传项目获得100元立创商城无门槛券;③:视频标题:第五届立创电子设计大赛:{项目名称}-{视频模块名称};如第五届立创电子设计大赛:《自动驾驶》项目-团队介绍。< /span>< /span>< br> < br> <em>  7、属于首次公开发布     首次公开发布 </em>  8、开源文档     原理图,BOM *  9、参考文献 FreeRTOS官网 CSDN官网 .NET 官网 github官网 兆易创新官网 《TCP/IP原理》 《单片机原理》 《精通C#》</p> <p>点击链接了解更多详情:<a href="https://www.szlcsc.com/go/dsxq" target="_blank" rel="noreferrer noopener">https://www.szlcsc.com/go/dsxq</a></p>

文档

BOM

暂无

附件

附件名 下载
4G通信模块原理图.pdf
拍摄模块原理图.pdf
IMG_20200920_194204.jpg
IMG_20200920_202059.jpg
IMG_20200920_202050.jpg
拍摄模块 BOM.xlsx
通信模块BOM_V1.1.xls
FreeRTOS_Reference_Manual_V10.0.0.pdf
Using_the_FreeRTOS_Real_Time_Kernel_A_Practical_GuideforM3.pdf
SIM7500_SIM7600 Series_AT Command Manual _V1.12.pdf

成员

评论(8)

成功
工程所有者当前已关闭评论
LCDS 回复

距提交截止仅剩20天,立即完善项目有机会赢3万元现金大奖、知名创投机构投资意向、名企名校资深评委指导、优秀项目全方位包装宣传机会;更多大赛详情见:https://diy.szlcsc.com/posts/34f1707c52034835810b0b5719b583bb

razorwu 回复

@LCDS 我的项目有两块PCB组成的,其中一块有大赛的logo,另一块没有,这样可以吗?

LCDS 回复

“GD32杯”第五届立创电子设计大赛【网络人气TOP榜单】更新中,入榜TOP10将获得1000-5000元奖励,详见:https://diy.szlcsc.com/posts/77584d2f66a34eed97ebf5ae488004fb

LCDS 回复

@razorwu 可以

razorwu 回复

待续未完,等完善所有功能后会公布详情网址,预计年底前

LCDS 回复

恭喜您的项目在第五届立创电子设计大赛中获得人气奖!

razorwu 回复

@LCDS 哦谢谢,怎样给你们地址寄发证书?

LCDS 回复

@razorwu 工作人员会联系您这边的

goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow