项目简介
本项目是一个MNIST TensorFlow Lite云物联网服务器/客户端框架。ESP8266运行Arduino固件作为TCP客户端,连接到运行Python脚本的TCP服务器,请求对负载进行推理。服务器需具备运行Python 3和TensorFlow的能力,已在Jetson nano和普通工作站上测试。
项目的主要特性和功能
- ESP8266客户端:ESP8266作为客户端,通过TCP协议与服务器通信,发送序列化数据请求推理。支持通过串口发送特定命令控制推理请求,如单次请求、定时请求和停止定时请求。
- 服务器端:服务器端使用Python实现,可运行在Jetson nano或普通工作站上,对客户端发送的数据进行推理,并返回结果。
- Jupyter notebook支持:提供Jupyter notebook,方便在Jetson nano上运行和调试。
- 压力测试工具:提供
tcp - stress - tool
工具,可对服务器进行压力测试,评估服务器的性能。
安装使用步骤
ESP8266固件
- 打开Arduino IDE(版本 > 1.8),打开
esp8266 - tf - client/esp8266 - tf - client.ino
文件。 - 根据网络设置修改代码中的以下变量: ```cpp
define SSID "SSID"
define SSID_PASSWD "PASSWORD"
define SERVER_IP "192.168.0.123"
define SERVER_PORT 32001
3. 若将ESP8266运行频率从160MHz改为80MHz,需修改`MS_CONST`:
cpp
define MS_CONST 80000.0f
``
4. 点击
Verify和
Upload`构建并上传固件。
服务器端
Jupyter notebook
若使用Jetson nano运行Jupyter notebook,安装好依赖后,运行以下命令:
sh
sudo jupyter notebook --allow - root --ip 192.168.0.86 --port 8888
替换ip
和port
为合适的值,然后运行所有单元格。
TfliteServer
运行TfliteServer
前,需修改jupyter_notebook/TfliteServer/TfliteServer.py
中的IP和端口,然后在终端运行:
sh
python3 TfliteServer
压力测试工具
- 进入
tcp - stress - tool
目录,运行以下命令编译工具:sh make
- 使用以下命令运行压力测试:
sh ./tcp - stress - tool [server ip] [server port] [num of connections]
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】