如何使用arduino将以太网模块连接到gps模块
首先,我为我平庸的英语道歉,您好,我正在为大学做一个项目,我需要使用GY-GPS6MV2 gps模块,使用这个模块,我需要使用enc28j60以太网模块将gps数据保存在网页上,然后使用api。我正在使用下面的代码,但没有得到任何数据。最初我只使用与以太网模块相关的代码,以便以后可以添加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
#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通信的方法。请参阅以太网库的一些示例。首先,阅读请求。浏览器不希望在完成发送整个请求之前收到响应。