方案
EC20和ESP32通过串口SLIP接收传输WIFI数据
数据流
EC20上层应用-> EC20通过slip串口发送数据->ESP32接收到数据->传输到ESP32 TCP层 ->传输到ESP32的IP层(通过IP地址的不同选择netif接口转发数据)
注意
EC20和ESP32在wifi这里对外是当作一体的,所以EC20设置的IP地址可以是ESP32获取到的wifi地址,slip需要设置一个netif,wifi有一个netif,在IP层通过src地址和dest 地址选择相应的netif进行转发

SLIP
• 定义
①IP数据包以END(0xc0)的特殊字符结束,而有些数据报的开始处也传一个END字符以防止数据报到来之前的线路噪声当做数据报内容。
②若IP报文中某个字符为END,那么就连续传输两个字节oxdb和oxdc来取代(oxdb这个特殊字符被称作SLIP的ESC字符)。
③若IP报文中某个字符为ESC,那么就连续传输两个字节oxdb和oxdd来取代。
• 缺陷
①数据帧中没有类型字段,这代表若一条串行线路上使用SLIP进行传输数据报,那么其不能使用其他协议。
②每一段必须知道对方的IP地址且无法把本段的IP地址通知给另一端。
③SLIP没有在数据帧中加入检验和,若SLIP传输的报文发生错误,只能通过上层协议来发现其错误。
• MAC 层协议,三种实现方式
1. For NO_SYS==0, an RX thread can be used which blocks on sio_read() until data is received.
2. In your main loop, call slipif_poll() to check for new RX bytes, completed packets are fed into netif->input().
3. Call slipif_received_bytes from your serial RX ISR and slipif_process_rxqueue() from your main loop. ISR level decodes packets and puts completed packets on a queue which is fed into the stack from the main loop (needs SYS_LIGHTWEIGHT_PROT for pbuf_alloc to work on ISR level!).
• 注意
选择的是第一种,第三种因为没法在中断中调用slipif_received_byte,开始选择第三种的时候一直在丢包。

EC20需要设置
• 波特率配置为3Mbps,只能通过EC20串口的接口去配置 (也可以通过stty -F /dev/ttyHS0 ispeed 3000000 ospeed 3000000 cs8)
• slattach /dev/ttyHS0 -p slip -m -F &
• ifconfig sl0 192.168.1.xx pointopoint 192.168.1.yy up (第一个IP是设置EC20的IP(ESP32 WIFI GOT IP获取到的IP),第二个IP是ESP32 slip设置的ip)
• route add default gw 192.168.1.yy
• 设置DNS vi /etc/resolv.conf
nameserver 8.8.8.8
注意
开始调试的时候可以使用115200 bps 设置方法:slattach /dev/ttyHS0 -p slip -s 115200 -m -F &
• linux ubuntu 1804上配置slip协议和ESP32进行调试
1.slattach -s 115200 -p slip /dev/ttyHS0 -m &
2.ifconfig sl0 192.168.6.x pointopoint 3.192.168.6.y up
3.route add default gw 192.168.6.2y
3.ping 192.168.6.y
• 调试
可以ping 局域网ip,网关,外网ip,运行http程序

SLIP 需要设置
• 配置slip ip地址,网关,掩码
LWIP

数据流
上行: slipif_loop_thread–>slipif_rxbyte_input–>slipif_rxbyte(slip 接收数据并解决)–>netif->input–>tcpip_input()–>tcpip_inpkt–>tcpip_thread–>ip4_input–>ip4_forward(根据src地址判断从WIFI接口输出)–>netif->output–>low_level_output–>esp_wifi_internal_tx
下行: wlanif_input–>netif->input–>-->tcpip_input()–>tcpip_inpkt–>tcpip_thread–>ip4_input–>ip4_forward(根据dst地址判断从slip接口输出)–>netif->output–>slipif_output_v4–>slipif_output
注意: 通过netif_add设置数据给TCP层的接口,在slipif_init的配置slip输出函数,wlanif_init配置wifi输出函数

IP &TCP校验
• IP校验
1、 把校验和字段置为0;
2、 对IP头部中的每16bit进行二进制求和;
3、 如果和的高16bit不为0,则将和的高16bit和低16bit反复相加,直到和的高16bit为0,从而获得一个16bit的值; 4、 将该16bit的值取反,存入校验和字段。
• TCP校验
tcp校验需要将ip伪首部、tcp报头、tcp数据分为16位的字,然后进行累加(如果总长度为奇数个字节,则在最后增添一个位都为0的字节 ),最后对累加的和进行按位取反即可。
Ip伪首部包括源ip地址(4字节)、目的ip地址(4字节)、协议号(两字节)、tcp包长(2字节) ,共14字节。

抓包工具
• wireshark
可以抓本机ip的报文,抓别的ip的报文(需要专门的网卡)
注意:
wireshark中IP头部没有进行校验判断,TCP协议中也没有进行数据的校验判断
• omnipeak
抓包数据比较详细,需要有专门的无线网卡
• 路由器抓包 可以使用h3c路由器抓包 网址192.168.1.1

EC20和esp32 串口做wifi透传相关推荐

  1. 基于ESP32实现一个WIFI透传模块demo

    esp32作为一个热门芯片,网上的文章很多,sdk里的例子和官网的教程也是比较详细.不过作为新玩家,还是要先做一些小改动才更容易入门.所以这里就综合几个example代码,写一个简单的透传demo. ...

  2. 【沧海拾昧】WiFi串口通信ESP8266模块基本介绍(附野火WiFi透传实例)

    #C0104 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 [如有问题必是本集记录有谬 ...

  3. esp32拍照传输到手机android,ESP32 之 esp32-cam wifi拍照传图系统2

    ESP32 之 esp32-cam wifi拍照传图系统2 ESP32 之 esp32-cam wifi拍照传图系统2 ESP32 之 esp32-cam wifi拍照传图系统 补充说明 ESP32- ...

  4. wifi android透传源代码,【终极版】ESP8266远程控制wifi透传模块带调试app

    本帖最后由 ITEAD创易工作室 于 2016-1-27 11:57 编辑 你好,2016!ITEAD给大家带来新年的第一帖!发财贴! 为什么说是发财贴呢?今天要介绍给大家的是一款成品级的wifi远程 ...

  5. 在龙芯1C单片机上使用ESP8266 wifi透传模块

    龙芯1C既可以运行linux,也可以当作单片机用.当用作linux时,可以通过USB wifi模块RTL8192C,RTL8188ETV等,当作单片机用时,可以像STM32那样使用串口透传wifi模块 ...

  6. 用20块的摄像头(不带fifo的OV7670)做WiFi实时传图小车

    博客地址 用20块的摄像头(不带fifo的OV7670)做WiFi实时传图小车 – Infinite's Blog 零.导读 在这篇文章中,你将看到如下内容: OV7670 QVGA配置的注意事项: ...

  7. ESP32 之 esp32-cam wifi拍照传图系统1

    文章目录 ESP32 之 esp32-cam wifi拍照传图系统 1.效果演示 2.材料准备 3.原理图接线 4.下载代码 ESP32 之 esp32-cam wifi拍照传图系统 1.效果演示 2 ...

  8. ESP32 之 esp32-cam wifi拍照传图系统2

    ESP32 之 esp32-cam wifi拍照传图系统 补充说明 ESP32-CAM总结 一. ESP32初识 ESP32-CAM模组的核心芯片:ESP32-S 模块是一款超小体积的多功能通用型 8 ...

  9. ESP32串口转WiFi双天线ESP32-S模组

    ▌ESP32小模块 1.外置管脚功能图 安信可原厂直销 WiFi+蓝牙模块ESP32串口转WiFi双天线ESP32-S模组 2.自动下载电路 参考下载电路分析 ESP8266专题-ESP8266自动下 ...

  10. 虚拟服务器透传步骤,moxa串口服务器配置点对点透传模式步骤

    moxa串口服务器配置点对点透传模式步骤 MOXA串口服务器基本要点: 使用TCP/IP通讯协议,需要2个串口服务器配对使用. 将串口服务器A设置为Server模式(出厂默认模式),另一个串口服务器B ...

最新文章

  1. 给你的网站穿上外衣 - HTTPS 免费部署指南
  2. free是自由,不是免费,从王开源说起
  3. linux内核 漏洞扫描,Linux kernel中存在15年的漏洞
  4. 将可执行程序的内存空间扩展到3GB(windows)
  5. mysql 多值属性_数据库 名词解释:单值属性和多值属性
  6. mapreduce分组统计_mongodb中使用mapreduce进行分组统计
  7. 【Kafka】kafka zk下注册的信息 get /brokers/ids/1 “host“:null “port“:-1
  8. php html转ubb,php实现转换ubb代码的方法
  9. 遍历Map集合的4种常用方法
  10. SpeechSynthesisUtterance 语音合成使用 文字语音播报
  11. python爬虫:批量下载qq空间里的照片(二)
  12. 微博相互关注互粉mysql表实现_用MySQL实现微博关注关系的方案分析
  13. PDF压缩文件怎么压缩最小?用迅读PDF大师,一键无损压缩
  14. Event Loop、宏任务和微任务(动态演示)
  15. 2019.10.8 \t\n艾希练习
  16. 【基础入门题026】佩尔数列Pell(n)
  17. 以太网之父鲍勃·梅特卡夫获2022图灵奖,76岁进入新领域再出发!
  18. 使用Python解析JSON
  19. 互联网晚报 | 11月23日 星期二 | 格力电器宣布实行双休工作制;知乎月活跃用户首次突破1亿大关;微博入局英雄联盟...
  20. 新版付费塔罗牌测算源码 (附带搭建教程)

热门文章

  1. 超酷!Python 绘制属于你的世界地图
  2. my android机器人作文,机器人作文400字
  3. 焦作哪里有学机器人编程_焦作自学plc入门梯形图编程去哪学
  4. IC卡、ID卡、CPU卡、RFID、NFC大致区分一览表
  5. 一次性密码本-绝对不会被破译的密码
  6. 2021年河南省中等职业教育技能大赛 网络搭建与应用项目
  7. 小白入门该如何学习PR视频剪辑软件及辅助工具的使用呢?
  8. ad自动布线过孔_AD15布线方法汇总
  9. 贝壳云php源码,贝壳云P1 刷机指南
  10. 微软开源网络攻防模拟工具CyberBattleSim介绍及源码分析