如何使用arduino将以太网模块连接到gps模块

如何使用arduino将以太网模块连接到gps模块,gps,arduino-uno,ethernet,Gps,Arduino Uno,Ethernet,首先,我为我平庸的英语道歉,您好,我正在为大学做一个项目,我需要使用GY-GPS6MV2 gps模块,使用这个模块,我需要使用enc28j60以太网模块将gps数据保存在网页上,然后使用api。我正在使用下面的代码,但没有得到任何数据。最初我只使用与以太网模块相关的代码,以便以后可以添加gps代码 #include <SoftwareSerial.h> #include <TinyGPS.h> #include <UIPEthernet.h> Etherne

首先,我为我平庸的英语道歉,您好,我正在为大学做一个项目,我需要使用GY-GPS6MV2 gps模块,使用这个模块,我需要使用enc28j60以太网模块将gps数据保存在网页上,然后使用api。我正在使用下面的代码,但没有得到任何数据。最初我只使用与以太网模块相关的代码,以便以后可以添加gps代码

#include <SoftwareSerial.h>
#include <TinyGPS.h>
#include <UIPEthernet.h>

EthernetServer server = EthernetServer(80);
SoftwareSerial serial1(6, 7); // RX, TX
TinyGPS gps1;
void setup() {
  serial1.begin(9600);
  Serial.begin(9600);
  uint8_t mac[6] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};

  IPAddress myIP(192, 168, 0, 200);

  Ethernet.begin(mac, myIP);
  server.begin();

  Serial.println("GPS  Animal Tracker...");
}

void loop() {
   bool recebido = false;

  while (serial1.available()) {
    char cIn = serial1.read();
    recebido = gps1.encode(cIn);
  }
  if (recebido) {
    Serial.println("----------------------------------------");
    long latitude, longitude;
    unsigned long idadeInfo;
    gps1.get_position(&latitude, &longitude,  &idadeInfo);

    if (latitude != TinyGPS::GPS_INVALID_F_ANGLE) {
      Serial.print("Latitude: ");
      Serial.println(float(latitude) / 100000, 6);
    }

    if (longitude != TinyGPS::GPS_INVALID_F_ANGLE) {
      Serial.print("Longitude: ");
      Serial.println(float(longitude) / 100000, 6);
    }

    if (idadeInfo != TinyGPS::GPS_INVALID_AGE) {
      Serial.print("Idade da Informacao (ms): ");
      Serial.println(idadeInfo);
    }
    int ano;
      byte mes, dia, hora, minuto, segundo, centesimo;

      gps1.crack_datetime(&ano, &mes, &dia, &hora, &minuto, &segundo, &idadeInfo);

      Serial.print("Data (GMT): ");
      Serial.print(dia);
      Serial.print("/");
      Serial.print(mes);
      Serial.print("/");
      Serial.println(ano);

      Serial.print("Horario (GMT): ");
      Serial.print(hora);
      Serial.print(":");
      Serial.print(minuto);
      Serial.print(":");
   size_t size;

    if (EthernetClient client = server.available())
    {

      while ((size = client.available()) > 0)
      {
        uint8_t* msg = (uint8_t*)malloc(size);
        size = client.read(msg, size);
        Serial.write(msg, size);
        free(msg);
      }
      client.println("<h1>ModuloEletronica</h1>");
      client.print("<h1>Latitude</h1>");
      //client.print((float(latitude) / 100000, 6));
      client.println();
      client.print ("<h1>Longitude</h1>");
      //client.print ((float(longitude) / 100000, 6));
      client.println();
      client.stop();
    }                                                                                                                                                              

      Serial.print(segundo);




  }
#包括
#包括
#包括
EthernetServer服务器=EthernetServer(80);
软件系列1(6,7);//接收,发送
TinyGPS-gps1;
无效设置(){
serial1.begin(9600);
Serial.begin(9600);
uint8_t mac[6]={0x00,0x01,0x02,0x03,0x04,0x05};
IPAddress myIP(192168,0200);
以太网开始(mac,myIP);
server.begin();
序列号println(“GPS动物跟踪器…”);
}
void循环(){
bool recebido=false;
while(serial1.available()){
char cIn=serial1.read();
recebido=gps1.encode(cIn);
}
如果(接收){
Serial.println(“--------------------------------------------------------”;
长纬度、经度;
无符号长信息;
gps1.获取_位置(纬度、经度和idadeInfo);
if(纬度!=TinyGPS::GPS\U无效\U角度){
连续打印(“纬度:”);
串行打印LN(浮动(纬度)/100000,6);
}
if(经度!=TinyGPS::GPS\u无效\u角度){
连续打印(“经度:”);
串行打印LN(浮动(经度)/100000,6);
}
如果(idadeInfo!=TinyGPS::GPS\u无效\u年龄){
连续打印(“Idade da Informacao(ms):”;
序列号:println(idadeInfo);
}
INTANO;
字节mes、dia、hora、minuto、segundo、centesimo;
gps1.crack_datetime(&ano,&mes,&dia,&hora,&minuto,&segundo,&idadeInfo);
串行打印(“数据(GMT):”;
连续打印(直径);
序列号。打印(“/”);
串行打印(mes);
序列号。打印(“/”);
序列号println(ano);
连续打印(“Horario(GMT):”;
连续打印(hora);
连续打印(“:”);
串行打印(minuto);
连续打印(“:”);
大小;
if(EthernetClient=server.available())
{
而((size=client.available())>0)
{
uint8_t*msg=(uint8_t*)malloc(大小);
size=client.read(msg,size);
串行写入(消息、大小);
免费(味精);
}
客户。println(“ModuleLetronica”);
客户。打印(“纬度”);
//打印((浮动(纬度)/100000,6));
client.println();
client.print(“经度”);
//client.print((浮动(经度)/100000,6));
client.println();
client.stop();
}                                                                                                                                                              
串行打印(segundo);
}

不要在小型MCU上使用malloc。这不是通过Arduino网络API接收TCP通信的正确方法。请参阅以太网库的一些示例。首先,阅读请求。浏览器不希望在完成发送整个请求之前收到响应。不要在小型MCU上使用malloc。这不是正确的方法使用Arduino networking API接收TCP通信的方法。请参阅以太网库的一些示例。首先,阅读请求。浏览器不希望在完成发送整个请求之前收到响应。