ESP6288-01
Napsal: 08 úno 2020, 14:40
Dobrý den,
Mám takový problém s meteostanicí,nechcou se mi posílat data na thingspeak,zkoušel jsem nahrát program a sledovat na sériovém monitoru ale tam se mi nic nezobrazivalo
Mám tam za senzory:
DHT 11
ESP6288-01
BMP280
LDR
Děkuji za odpověd
Tady je kód:
#include <SoftwareSerial.h>
#include <Wire.h>
#include <DHT.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#define DEBUG 0 // změňte hodnotu na 1 a aktivujte ladění pomocí sériového monitoru
#define pinDHT 0 // definující pin A0 pro DHT senzor
#define lightSensor A1 // definující pin A1 jako vstupní pin pro dělič napětí LDR
#define typDHT11 DHT11
// nastavení adresy senzoru
#define BMP280_ADRESA (0x76)
// inicializace senzoru BMP z knihovny
Adafruit_BMP280 bmp;
// konstanta s korekcí měření v hPa
int korekce = 32;
// inicializace DHT senzoru s nastaveným pinem a typem senzoru
DHT mojeDHT(pinDHT, typDHT11);
SoftwareSerial esp8266Module(10, 11); // RX, TX
String network = "MOJR"; // SSID vašeho přístupového bodu
String password = "E276T474A7K3E5AD664E"; // vaše heslo přístupového bodu wifi
#define IP "184.106.153.149" // IP adresa thingspeak.com
String GET = "GET /update?key=9GGHK2RM2TXLZ7YX"; // replace with your channel key
void setup()
{
// komunikace přes sériovou linku rychlostí 9600 baud
Serial.begin(9600);
// zapnutí komunikace s teploměrem DHT
mojeDHT.begin();
if(DEBUG){
Serial.begin(9600); // Nastavení hardwarové sériové přenosové rychlosti na 9600
}
esp8266Module.begin(9600); // Nastavení hardwarové sériové přenosové rychlosti na 9600
if (!bmp.begin(BMP280_ADRESA)) {
if(DEBUG){
Serial.println("BMP280 senzor nnalezen, zkontrolujte zapojení!");
}
while (1) {}
}
delay(2000);
}
void loop()
{
setupEsp8266();
//mojeDHT.read(dht_pin);
double humi = mojeDHT.readHumidity();
double bmp_temp = bmp.readTemperature();
double bmp_pressure = bmp.readPressure();
int lightIntensity = analogRead(lightSensor);
updateTemp(String(bmp_temp) ,String(lightIntensity),String(bmp_pressure),String(humi));
delay(30000);
}
//-------------------------------------------------------------------
// Po nastavení funkce připojte esp8266 do připravené stanice a
// připojit se k přístupovému bodu wifi.
//------------------------------------------------------------------
void setupEsp8266()
{
if(DEBUG){
Serial.println("Reseting esp8266");
}
esp8266Module.flush();
esp8266Module.println(F("AT+RST"));
delay(7000);
if (esp8266Module.find("OK"))
{
if(DEBUG){
Serial.println("Found OK");
Serial.println("Changing espmode");
}
esp8266Module.flush();
changingMode();
delay(5000);
esp8266Module.flush();
connectToWiFi();
}
else
{
if(DEBUG){
Serial.println("OK not found");
}
}
}
//-------------------------------------------------------------------
// Following function sets esp8266 to station mode
//-------------------------------------------------------------------
bool changingMode()
{
esp8266Module.println(F("AT+CWMODE=1"));
if (esp8266Module.find("OK"))
{
if(DEBUG){
Serial.println("Mode changed");
}
return true;
}
else if(esp8266Module.find("NO CHANGE")){
if(DEBUG){
Serial.println("Already in mode 1");
}
return true;
}
else
{
if(DEBUG){
Serial.println("Error while changing mode");
}
return false;
}
}
//-------------------------------------------------------------------
// Following function connects esp8266 to wifi access point
//-------------------------------------------------------------------
bool connectToWiFi()
{
if(DEBUG){
Serial.println("inside connectToWiFi");
}
String cmd = F("AT+CWJAP=\"");
cmd += network;
cmd += F("\",\"");
cmd += password;
cmd += F("\"");
esp8266Module.println(cmd);
delay(15000);
if (esp8266Module.find("OK"))
{
if(DEBUG){
Serial.println("Connected to Access Point");
}
return true;
}
else
{
if(DEBUG){
Serial.println("Could not connect to Access Point");
}
return false;
}
}
//-------------------------------------------------------------------
// Following function sends sensor data to thingspeak.com
//-------------------------------------------------------------------
void updateTemp(String voltage1,String voltage2,String voltage3,String voltage4)
{
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += IP;
cmd += "\",80";
esp8266Module.println(cmd);
delay(5000);
if(esp8266Module.find("Error")){
if(DEBUG){
Serial.println("ERROR while SENDING");
}
return;
}
cmd = GET + "&field1=" + voltage1 + "&field2=" + voltage2 + "&field3=" + voltage3 + "&field4=" + voltage4 + "\r\n";
esp8266Module.print("AT+CIPSEND=");
esp8266Module.println(cmd.length());
delay(15000);
if(esp8266Module.find(">"))
{
esp8266Module.print(cmd);
if(DEBUG){
Serial.println("Data sent");
}
}else
{
esp8266Module.println("AT+CIPCLOSE");
if(DEBUG){
Serial.println("Connection closed");
}
}
}
Mám takový problém s meteostanicí,nechcou se mi posílat data na thingspeak,zkoušel jsem nahrát program a sledovat na sériovém monitoru ale tam se mi nic nezobrazivalo
Mám tam za senzory:
DHT 11
ESP6288-01
BMP280
LDR
Děkuji za odpověd
Tady je kód:
#include <SoftwareSerial.h>
#include <Wire.h>
#include <DHT.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#define DEBUG 0 // změňte hodnotu na 1 a aktivujte ladění pomocí sériového monitoru
#define pinDHT 0 // definující pin A0 pro DHT senzor
#define lightSensor A1 // definující pin A1 jako vstupní pin pro dělič napětí LDR
#define typDHT11 DHT11
// nastavení adresy senzoru
#define BMP280_ADRESA (0x76)
// inicializace senzoru BMP z knihovny
Adafruit_BMP280 bmp;
// konstanta s korekcí měření v hPa
int korekce = 32;
// inicializace DHT senzoru s nastaveným pinem a typem senzoru
DHT mojeDHT(pinDHT, typDHT11);
SoftwareSerial esp8266Module(10, 11); // RX, TX
String network = "MOJR"; // SSID vašeho přístupového bodu
String password = "E276T474A7K3E5AD664E"; // vaše heslo přístupového bodu wifi
#define IP "184.106.153.149" // IP adresa thingspeak.com
String GET = "GET /update?key=9GGHK2RM2TXLZ7YX"; // replace with your channel key
void setup()
{
// komunikace přes sériovou linku rychlostí 9600 baud
Serial.begin(9600);
// zapnutí komunikace s teploměrem DHT
mojeDHT.begin();
if(DEBUG){
Serial.begin(9600); // Nastavení hardwarové sériové přenosové rychlosti na 9600
}
esp8266Module.begin(9600); // Nastavení hardwarové sériové přenosové rychlosti na 9600
if (!bmp.begin(BMP280_ADRESA)) {
if(DEBUG){
Serial.println("BMP280 senzor nnalezen, zkontrolujte zapojení!");
}
while (1) {}
}
delay(2000);
}
void loop()
{
setupEsp8266();
//mojeDHT.read(dht_pin);
double humi = mojeDHT.readHumidity();
double bmp_temp = bmp.readTemperature();
double bmp_pressure = bmp.readPressure();
int lightIntensity = analogRead(lightSensor);
updateTemp(String(bmp_temp) ,String(lightIntensity),String(bmp_pressure),String(humi));
delay(30000);
}
//-------------------------------------------------------------------
// Po nastavení funkce připojte esp8266 do připravené stanice a
// připojit se k přístupovému bodu wifi.
//------------------------------------------------------------------
void setupEsp8266()
{
if(DEBUG){
Serial.println("Reseting esp8266");
}
esp8266Module.flush();
esp8266Module.println(F("AT+RST"));
delay(7000);
if (esp8266Module.find("OK"))
{
if(DEBUG){
Serial.println("Found OK");
Serial.println("Changing espmode");
}
esp8266Module.flush();
changingMode();
delay(5000);
esp8266Module.flush();
connectToWiFi();
}
else
{
if(DEBUG){
Serial.println("OK not found");
}
}
}
//-------------------------------------------------------------------
// Following function sets esp8266 to station mode
//-------------------------------------------------------------------
bool changingMode()
{
esp8266Module.println(F("AT+CWMODE=1"));
if (esp8266Module.find("OK"))
{
if(DEBUG){
Serial.println("Mode changed");
}
return true;
}
else if(esp8266Module.find("NO CHANGE")){
if(DEBUG){
Serial.println("Already in mode 1");
}
return true;
}
else
{
if(DEBUG){
Serial.println("Error while changing mode");
}
return false;
}
}
//-------------------------------------------------------------------
// Following function connects esp8266 to wifi access point
//-------------------------------------------------------------------
bool connectToWiFi()
{
if(DEBUG){
Serial.println("inside connectToWiFi");
}
String cmd = F("AT+CWJAP=\"");
cmd += network;
cmd += F("\",\"");
cmd += password;
cmd += F("\"");
esp8266Module.println(cmd);
delay(15000);
if (esp8266Module.find("OK"))
{
if(DEBUG){
Serial.println("Connected to Access Point");
}
return true;
}
else
{
if(DEBUG){
Serial.println("Could not connect to Access Point");
}
return false;
}
}
//-------------------------------------------------------------------
// Following function sends sensor data to thingspeak.com
//-------------------------------------------------------------------
void updateTemp(String voltage1,String voltage2,String voltage3,String voltage4)
{
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += IP;
cmd += "\",80";
esp8266Module.println(cmd);
delay(5000);
if(esp8266Module.find("Error")){
if(DEBUG){
Serial.println("ERROR while SENDING");
}
return;
}
cmd = GET + "&field1=" + voltage1 + "&field2=" + voltage2 + "&field3=" + voltage3 + "&field4=" + voltage4 + "\r\n";
esp8266Module.print("AT+CIPSEND=");
esp8266Module.println(cmd.length());
delay(15000);
if(esp8266Module.find(">"))
{
esp8266Module.print(cmd);
if(DEBUG){
Serial.println("Data sent");
}
}else
{
esp8266Module.println("AT+CIPCLOSE");
if(DEBUG){
Serial.println("Connection closed");
}
}
}