Подключение проводов и кодирование в GPS-модуле GY-NEO6MV2 с ESP8266-01

Вот ссылка: https://www.circuito.io/ app?comComponents=10167,11021,12083,13678,13959,975601

Я новичок и понятия не имею, как подключать провода модуля GPS

#include "DHT.h"
#include "NewPing.h"
#include <SoftwareSerial.h>
#define DEBUG true
 SoftwareSerial esp8266(11,10);
  //SoftwareSerial gps(8,9);
 #define DHTPIN 2       // Подключение выходного контакта DHT-11
 #define DHTTYPE DHT11   // Тип DHT — DHT 11 (AM2302)
 #define TRIGGER_PIN 4
 #define ECHO_PIN 3
 #define MAX_DISTANCE 400

 NewPing sonar(TRIGGER_PIN,ECHO_PIN,MAX_DISTANCE);

 float hum;
 float temp;   

 DHT dht(DHTPIN, DHTTYPE); 

 void setup() {
 Serial.begin (9600);
 Serial.println("START");
 esp8266.listen();
 esp8266.begin(9600);
 gps.begin(9600);
 dht.begin();


  pinMode(TRIGGER_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);


  sendData("AT+RST\r\n",2000,DEBUG);            // команда для сброса
  module
     sendData("AT+CWMODE=2\r\n",1000,DEBUG);       // Это настроит
     the mode 
     as access point
   sendData("AT+CIFSR\r\n",1000,DEBUG);          // Эта команда получит
   the ip 
   address
  sendData("AT+CIPMUX=1\r\n",1000,DEBUG);       // Это настроит
  esp 
for multiple connections
sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // Эта команда включится
the 
server on port 80
}

void loop()
{

 delay(2000);  // Задержка, чтобы датчик DHT-11 мог стабилизироваться

 hum = dht.readHumidity();  // Получаем значение влажности
 temp= dht.readTemperature();  // Получаем значение температуры

  digitalWrite(TRIGGER_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIGGER_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIGGER_PIN, LOW);

long duration,distance;
duration= pulseIn(ECHO_PIN,HIGH);

distance = duration/58.2;

Serial.print("Humid: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.print(" C, ");
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(50); 

gps.listen();
while (gps.available())
Serial.write(gps.read());

esp8266.listen();
if(esp8266.available())         // Эта команда проверит, есть ли esp
    is sending a message 
    {    
    if(esp8266.find("+IPD,"))
    {
    delay(1000);

    int connectionId = esp8266.read()-48; /* We are subtracting 48 from the 
    output because the read() function returns 
                                        the ASCII decimal value and the 
    first decimal number which is 0 starts at 48*/
     String webpage = "<head><meta http-equiv=\"refresh\" content=\"5; 
     url=192.168.4.1/\"></head>";
     webpage += "<h1>Mabalacat City College Garbage Monitoring System</h1>";
    webpage += "<p><h2>";   
    if (distance<=5)
    {
    webpage+= " Trash can is Red";
    }
    if (distance == 20)
    {
      webpage+= " Trash can is Orange";
      }
      if (distance == 35)
    {
      webpage+= " Trash can is Light Orange";
      }
      if (distance == 50)
    {
      webpage+= " Trash can is Yellow";
      }
      if (distance == 70)
    {
      webpage+= " Trash can is 2st Light Yellow";
      }
      if (distance == 85)
    {
      webpage+= " Trash can is 1st Light Yellow";
      }
      if (distance == 95)
    {
      webpage+= " Trash can is Green";
      }
      if (distance >= 100)
    {
      webpage+= " Trash can is Empty";
      }
      webpage+= "<br>";
      webpage+="Distance: ";
      webpage+=distance;
      webpage+=" cm";
      webpage+= "<br>";
      webpage+="Temperature: ";
      webpage+= temp;
      webpage+=" celsius";
      webpage+= "<br>";
      webpage+= "Humidity: ";
      webpage+= hum;
      webpage+= " %";

 webpage += "</h2></p></body>";  
 String cipSend = "AT+CIPSEND=";
 cipSend += connectionId;
 cipSend += ",";
 cipSend +=webpage.length();
 cipSend +="\r\n";
 sendData(cipSend,1000,DEBUG);
 sendData(webpage,1000,DEBUG);    
 String closeCommand = "AT+CIPCLOSE="; 
 closeCommand+=connectionId; 
 closeCommand+="\r\n";
 sendData(closeCommand,3000,DEBUG);
}
   }
  }

  String sendData(String command, const int timeout, boolean debug)
{
esp8266.listen();
String response = "";   
esp8266.print(command); 
long int time = millis();
while( (time+timeout) > millis())
{
  while(esp8266.available())
  {
    char c = esp8266.read(); 
    response+=c;
  }  
}
if(debug)
{
  Serial.print(command);
  Serial.print("> ");
  Serial.print(response);
}
gps.listen();
return response;
}

, 👍-1


1 ответ


Лучший ответ:

0
GPS - Arduino
---------------
GND -  GND
TX  -  pin of SoftwareSerial RX
RX  -  pin of SoftwareSerial TX
Vcc -  3.3 V

Прослушивать может только один экземпляр SoftwareSerial. Метод Listen() определяет какой именно. Поэтому вы должны добавить esp8266.listen(); перед разговором с esp8266 и gps.listen(); перед разговором с модулем GPS.

  • в setup() добавьте esp8266.listen() перед первым вызовом sendData
  • в loop() добавьте gps.listen() перед while (gps.available())
  • в loop() добавьте esp8266.listen() перед if (esp8266.available())
,