Stránka 1 z 3

ESP6288-01

Napsal: 08 úno 2020, 14:40
od zacatecnik1
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");
}
}
}

Re: ESP6288-01

Napsal: 06 bře 2020, 11:47
od zacatecnik1
Omlouvám se je to esp8266

Re: ESP6288-01

Napsal: 06 bře 2020, 12:30
od pavel1tu
Kod příště vkládej pomocí </> tlačítka ...

Ladění a výpis po seriovem portu aktivuješ změnou "0" na "1"

Kód: Vybrat vše

#define DEBUG 0
Dále - nastavil jsi správně tyto věci ?

Kód: Vybrat vše

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

nevím odkud jsi vzal kod, ale použití DELAY bych se časem až to rozchodíš vyhnul

Re: ESP6288-01

Napsal: 07 bře 2020, 11:19
od zacatecnik1
Tak jsem to zkusil a nechce se mi to připojit k Wi-fi.
Ty věci jsem nastavil správně až na to id toho webu protože nevim jestli to je správně ale to by němělo vadik k připojení k Wi-fi ne?
Jinak je to z tadyma
https://create.arduino.cc/projecthub/Bl ... r&offset=1

Re: ESP6288-01

Napsal: 07 bře 2020, 13:10
od pavel1tu
Nevím,
doma mám jen ESP32, pokud najdu čas, testnu alespoń to WiFi

PS: podívej se do routeru zda to mů vůbec snahu připojit se a nebo proč to router vykopl ...

Re: ESP6288-01

Napsal: 07 bře 2020, 13:38
od zacatecnik1
Dobře děkuji

Re: ESP6288-01

Napsal: 07 bře 2020, 16:04
od RomanB
Když připojíš ESP na sériový převodník, reaguje ti ESP na AT příkazy?

Restartuj WiFi router.

Re: ESP6288-01

Napsal: 08 bře 2020, 19:03
od vanyj
Ahoj
Zkontroluj si jestli máš dobře nastavenou rychlost přenosu. Já používám na esp 115200 baudů, vždy když testuji nový čidlo. Musíš to změnit i v sériovém monitoru.
Až budeš mít čidla otestovaná že ti dávají dobré hodnoty můžeš pokračovat dál.

ps. několik měsíců mi běží esp + bme280 + thinkspeak

Re: ESP6288-01

Napsal: 20 bře 2020, 11:13
od zacatecnik1
No já nahrávám program do arduina které stím komunikuje tak tam mám jen rychlost přenosu do arduina

Re: ESP6288-01

Napsal: 21 bře 2020, 13:10
od afilip
Jestli jsem to dobře pochopil, tak máš k Arduinu připojený ESP8266, a chceš přes něj posílat data na Thinkspeak.
V první řadě musíš do ESP nahrát ověřený AT firmware. Použij starý, ale asi nejstabilnější FW esp_iot_sdk_v1.5.0_15_11_27.zip
Druhá věc, nepoužívej pevnou IP adresu 184.106.153.149. Thingspeak adresy serveru průběžně dynamicky mění, a tato adresa nemusí být vždy k dispozici. Je proto potřeba použít jet přes DNS, a v programu použít "api.thingspeak.com".
Když se ti to podaří na Thingspeak odeslat, tak potom mohou grafy fypadat např. takto:
https://thingspeak.com/plugins/9545
AT FW esp_iot_sdk_v1.5.0_15_11_27.zip najdeš i s návodem, jak ho do ESP dostat na mojí stránce:
http://xanadu.khnet.info/esp8266.php