数码之家

 找回密码
 立即注册
搜索
查看: 3645|回复: 2

ESP8266与零知板使用SPI接口连接 提高传输速率

[复制链接]
发表于 2019-9-19 18:56:02 | 显示全部楼层 |阅读模式
我们在使用ESP8266模块的时候,大多数情况下使用时串口连接,这对于少量数据传输情况下比较方便,特别是对于AT指令使用非常方便,但是在传输数据量较大的情况下,使用串口就大大限制了传输速率,也使得8266模块没有发挥其强大的WIFI大量数据传输的功能;下面在零知-增强板上介绍使用SPI接口连接ESP8266模块,加快数据传输速率。
1、硬件
零知ESP8266

零知增强板

杜邦线

2、硬件连接
硬件上只需要把零知增强板的SPI接口和WIFI模块的SPI接口对应连接即可,当然这里实际上是8266的HSPI引脚,连接方式比较简单:


当然还需要连接电源和地引脚到零知板的3.3和GND上。这里为了方便使用的是NodeMCU板,你也可以使用其他带SPI接口的esp8266模块。


3、我们要使用SPI的方式进行通信,那么ESP8266模块和零知板都需要相应SPI相关代码,这里为了简便就直接使用相关的库进行操作了。
(1)ESP8266端代码

(参与评论即可获得所有资料)
下载这个文件后,使用Arduino ESP8266方式下载到NodeMCU上,下载前配置如下:

(2)零知增强板端代码编写

(评论区留言,还有邮箱哦)
首先下载这个库,并放置到零知平台对应软件库目录下,然后编写如下程序:
  1. /*
  2. WiFiSPI example: esp8266连接AP,UDP传输数据

  3. 电路连接:
  4.    1. On ESP8266 must be running (flashed) WiFiSPIESP application.
  5.      
  6.    2. Connect the Arduino to the following pins on the esp8266:

  7.             ESP8266         |
  8.     GPIO    NodeMCU   Name  |   Lingzhi Enhanced Board
  9.    ===================================
  10.      15       D8       SS   |   53
  11.      13       D7      MOSI  |   51
  12.      12       D6      MISO  |   50
  13.      14       D5      SCK   |   52
  14. */

  15. #include "WiFiSpi.h"
  16. #include "WiFiSpiUdp.h"

  17. //热点名称
  18. char ssid[] = "lingzhilab";     
  19. char pass[] = "lingzhilab.com";  

  20. unsigned int localPort = 8081;

  21. char udpServerIP[] = "192.168.0.122";
  22. int serverPort = 8081;

  23. #define PACKET_SIZE 256
  24. byte packetBuffer[PACKET_SIZE];

  25. const int UDP_TIMEOUT = 2000;

  26. WiFiSpiUdp udpClient;

  27. void setup()
  28. {
  29.   // initialize serial for debugging
  30.   Serial.begin(9600);
  31.   // initialize the ESP module
  32.   WiFiSpi.init();

  33.   // 检查是否连接了运行SPIWifi程序的8266模块
  34.   if (WiFiSpi.status() == WL_NO_SHIELD) {
  35.     Serial.println("WiFi shield not present");
  36.     // don't continue
  37.     while (true);
  38.   }

  39.   int status = WL_IDLE_STATUS;
  40.   // attempt to connect to WiFi network
  41.   while (status != WL_CONNECTED) {
  42.     Serial.print("Attempting to connect to WPA SSID: ");
  43.     Serial.println(ssid);
  44.     // Connect to WPA/WPA2 network
  45.     status = WiFiSpi.begin(ssid, pass);
  46.   }

  47.   // you're connected now, so print out the data
  48.   Serial.println("You're connected to the network");
  49.    
  50.   udpClient.begin(localPort);
  51. }

  52. void loop()
  53. {
  54.   sendPacket(udpServerIP); // send an packet to server
  55.    
  56.   // wait for a reply for UDP_TIMEOUT miliseconds
  57.   unsigned long startMs = millis();
  58.   while (!udpClient.parsePacket() && (millis() - startMs) < UDP_TIMEOUT) {}

  59.   // when there should be a packet do not call parsePacket() once more, call available() instead
  60.   if (udpClient.available()) {
  61.     Serial.println("packet received:");
  62.     // We've received a packet, read the data from it into the buffer
  63.     udpClient.read(packetBuffer, PACKET_SIZE);

  64.     Serial.println((char*)packetBuffer);
  65.      
  66.     Serial.println();
  67.      
  68.   }

  69.   // wait ten seconds before asking for the time again
  70.   delay(1000);
  71. }

  72. // send an packet to server
  73. void sendPacket(char *server)
  74. {
  75.   // set all bytes in the buffer to 0
  76.   memset(packetBuffer, 0, PACKET_SIZE);
  77.      
  78.   strcpy((char*)packetBuffer, "message from UDP client\r\n");

  79.   udpClient.beginPacket(server, serverPort);

  80.   udpClient.write(packetBuffer, PACKET_SIZE);

  81.   udpClient.endPacket();
  82. }
复制代码
上面的代码需要更改为自己的wifi名称和密码,并更改在第三步得到的UDP server的IP地址,验证完成后下载到零知-增强板。
完整工程代码:


4、验证测试
我们下载好所有的代码并连接好硬件后,首先在手机上连接同一个Wifi,如上面的“lingzhilab”,然后打开网络调试助手工具,并开启UDP-Server模式,填写上面代码中一样的端口号8081,这里会分配到一个服务端地址,这个地址就需要填写到上面的
  1. char udpServerIP[] = "192.168.0.122";
复制代码
上面准备工作完成后,我们就可以看到在手机网络调试助手上接收到从零知板发来的信息,同时也可以发送信息给零知板,如下:

零知板接收到手机端发送来的信息:


更多精彩尽在零知实验室。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 楼主| 发表于 2019-9-19 18:57:40 | 显示全部楼层
记得留QQ邮箱,欢迎大家的参与和交流
回复 支持 反对

使用道具 举报

发表于 2021-5-11 19:01:44 | 显示全部楼层
哪位朋友有代码可以共享一吗?希望研究一下:lol:

打赏

参与人数 1家元 +20 收起 理由
jf201006 + 20 我很贊同

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-9 18:44 , Processed in 0.218400 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表