EC20和esp32 串口做wifi透传
方案
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透传相关推荐
- 基于ESP32实现一个WIFI透传模块demo
esp32作为一个热门芯片,网上的文章很多,sdk里的例子和官网的教程也是比较详细.不过作为新玩家,还是要先做一些小改动才更容易入门.所以这里就综合几个example代码,写一个简单的透传demo. ...
- 【沧海拾昧】WiFi串口通信ESP8266模块基本介绍(附野火WiFi透传实例)
#C0104 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 [如有问题必是本集记录有谬 ...
- esp32拍照传输到手机android,ESP32 之 esp32-cam wifi拍照传图系统2
ESP32 之 esp32-cam wifi拍照传图系统2 ESP32 之 esp32-cam wifi拍照传图系统2 ESP32 之 esp32-cam wifi拍照传图系统 补充说明 ESP32- ...
- wifi android透传源代码,【终极版】ESP8266远程控制wifi透传模块带调试app
本帖最后由 ITEAD创易工作室 于 2016-1-27 11:57 编辑 你好,2016!ITEAD给大家带来新年的第一帖!发财贴! 为什么说是发财贴呢?今天要介绍给大家的是一款成品级的wifi远程 ...
- 在龙芯1C单片机上使用ESP8266 wifi透传模块
龙芯1C既可以运行linux,也可以当作单片机用.当用作linux时,可以通过USB wifi模块RTL8192C,RTL8188ETV等,当作单片机用时,可以像STM32那样使用串口透传wifi模块 ...
- 用20块的摄像头(不带fifo的OV7670)做WiFi实时传图小车
博客地址 用20块的摄像头(不带fifo的OV7670)做WiFi实时传图小车 – Infinite's Blog 零.导读 在这篇文章中,你将看到如下内容: OV7670 QVGA配置的注意事项: ...
- ESP32 之 esp32-cam wifi拍照传图系统1
文章目录 ESP32 之 esp32-cam wifi拍照传图系统 1.效果演示 2.材料准备 3.原理图接线 4.下载代码 ESP32 之 esp32-cam wifi拍照传图系统 1.效果演示 2 ...
- ESP32 之 esp32-cam wifi拍照传图系统2
ESP32 之 esp32-cam wifi拍照传图系统 补充说明 ESP32-CAM总结 一. ESP32初识 ESP32-CAM模组的核心芯片:ESP32-S 模块是一款超小体积的多功能通用型 8 ...
- ESP32串口转WiFi双天线ESP32-S模组
▌ESP32小模块 1.外置管脚功能图 安信可原厂直销 WiFi+蓝牙模块ESP32串口转WiFi双天线ESP32-S模组 2.自动下载电路 参考下载电路分析 ESP8266专题-ESP8266自动下 ...
- 虚拟服务器透传步骤,moxa串口服务器配置点对点透传模式步骤
moxa串口服务器配置点对点透传模式步骤 MOXA串口服务器基本要点: 使用TCP/IP通讯协议,需要2个串口服务器配对使用. 将串口服务器A设置为Server模式(出厂默认模式),另一个串口服务器B ...
最新文章
- 给你的网站穿上外衣 - HTTPS 免费部署指南
- free是自由,不是免费,从王开源说起
- linux内核 漏洞扫描,Linux kernel中存在15年的漏洞
- 将可执行程序的内存空间扩展到3GB(windows)
- mysql 多值属性_数据库 名词解释:单值属性和多值属性
- mapreduce分组统计_mongodb中使用mapreduce进行分组统计
- 【Kafka】kafka zk下注册的信息 get /brokers/ids/1 “host“:null “port“:-1
- php html转ubb,php实现转换ubb代码的方法
- 遍历Map集合的4种常用方法
- SpeechSynthesisUtterance 语音合成使用 文字语音播报
- python爬虫:批量下载qq空间里的照片(二)
- 微博相互关注互粉mysql表实现_用MySQL实现微博关注关系的方案分析
- PDF压缩文件怎么压缩最小?用迅读PDF大师,一键无损压缩
- Event Loop、宏任务和微任务(动态演示)
- 2019.10.8 \t\n艾希练习
- 【基础入门题026】佩尔数列Pell(n)
- 以太网之父鲍勃·梅特卡夫获2022图灵奖,76岁进入新领域再出发!
- 使用Python解析JSON
- 互联网晚报 | 11月23日 星期二 | 格力电器宣布实行双休工作制;知乎月活跃用户首次突破1亿大关;微博入局英雄联盟...
- 新版付费塔罗牌测算源码 (附带搭建教程)