Taisomas ESP-05

Jump to navigation Jump to search

Dėmesio: Jūs nesate prisijungęs. Jūsų IP adresas bus viešai matomas, jei atliksite kokius nors keitimus. Jeigu prisijungsite arba sukursite paskyrą, jūsų keitimai bus priskirti jūsų naudotojo vardui; drauge įgysite naujų galimybių.

Keitimas gali būti atšauktas. Prašome patikrinti palyginimą, esantį žemiau, kad patvirtintumėte, kad jūs tai ir norite padaryti, ir tada išsaugokite pakeitimus, esančius žemiau, kad užbaigtumėte keitimo atšaukimą.

Dabartinė versija Jūsų tekstas
32 eilutė: 32 eilutė:
 
* Arduino Digital 3 -> RX
 
* Arduino Digital 3 -> RX
 
* Arduino GND -> GND
 
* Arduino GND -> GND
* RST nereikalingas
 
 
   
 
   
== Patikrinimas ==
+
Patikrinimas
 
 
 
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
 
#include <SoftwareSerial.h>
 
#include <SoftwareSerial.h>
62 eilutė: 60 eilutė:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Paprastas web serveris ==
+
Paprastas web serveris
  
 
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
247 eilutė: 245 eilutė:
 
   delay(waitTime);
 
   delay(waitTime);
 
   clearESP8266SerialBuffer();
 
   clearESP8266SerialBuffer();
}
 
</syntaxhighlight>
 
 
MQTT Senderis / Receiveris
 
 
<syntaxhighlight lang="cpp">
 
#include <WiFiEsp.h>
 
#include "SoftwareSerial.h"
 
#include <PubSubClient.h>
 
WiFiEspClient espClient;
 
int status = WL_IDLE_STATUS;
 
PubSubClient mqtt(espClient);
 
unsigned long previousMillis = 0;
 
char msg[50];
 
 
 
// ################# Nustatymai ###########
 
//TX pin 2, RX pin 3 to ESP-05 module
 
SoftwareSerial esp8266(2, 3);
 
#define WIFI_AP "wifi_name" // wifi access point name
 
#define WIFI_PASSWORD "pass" // wifi pass
 
char* mqtt_server = "192.168.0.1"; // mqtt server
 
int mqtt_port = 1883; // mqtt server port
 
char* mqtt_clientID = "ESP8266_power_meter"; // mqtt client id
 
char* mqtt_username = ""; // mqtt username
 
char* mqtt_password = ""; // mqtt password
 
char* mqtt_publish_topic = "power_meter/things/srove"; // mqtt publish topic
 
char* mqtt_subscribe_topic = "power_meter/things/testas"; // mqtt subscribe to topic
 
// mqtt update interval
 
const long interval = 8000;
 
// ########################################
 
 
 
 
void setup()
 
{
 
  Serial.begin(115200);
 
  // it default runs at 115200
 
  esp8266.begin(115200);
 
  // we need to override to 9600 to clear the unknown characters
 
  esp8266.println("AT+UART_DEF=9600,8,1,0,0");
 
  esp8266.begin(9600);
 
  InitWiFi();
 
}
 
 
 
void reconnect_mqtt() {
 
  // Loop until we're reconnected
 
  while (!mqtt.connected()) {
 
    Serial.print("Attempting MQTT connection...");
 
    // Attempt to connect
 
    if (mqtt.connect(mqtt_clientID, mqtt_username, mqtt_password)) {
 
      Serial.println("connected");
 
      //Subscribe
 
      mqtt.subscribe(mqtt_subscribe_topic);
 
    } else {
 
      Serial.print("failed, rc=");
 
      Serial.print(mqtt.state());
 
      Serial.println(" try again in 5 seconds");
 
      // Wait 5 seconds before retrying
 
      delay(5000);
 
    }
 
  }
 
}
 
 
void loop() {
 
 
  status = WiFi.status();
 
  if ( status != WL_CONNECTED) {
 
    while ( status != WL_CONNECTED) {
 
      Serial.print("Attempting to connect to WPA SSID: ");
 
      Serial.println(WIFI_AP);
 
      // Connect to WPA/WPA2 network
 
      status = WiFi.begin(WIFI_AP, WIFI_PASSWORD);
 
      delay(500);
 
    }
 
    Serial.println("Connected to AP");
 
  }
 
 
  if (!mqtt.connected()) {
 
    reconnect_mqtt();
 
  }
 
 
  mqtt.loop();
 
 
  // push to mqtt with time interval
 
  unsigned long currentMillis = millis();
 
  if (currentMillis - previousMillis >= interval) {
 
    // save the last time a message was sent
 
    previousMillis = currentMillis;
 
    // some random value
 
    int Rvalue = 1337;
 
    Serial.print(F("Publish message: "));
 
    String msg_a = "{\"value\":" + String(Rvalue) + "}";
 
    msg_a.toCharArray(msg, 50);
 
    Serial.println(msg);
 
    //Publish
 
    mqtt.publish(mqtt_publish_topic, msg);
 
    Serial.println();
 
  }
 
 
 
}
 
}
  
  
void callback(char* topic, byte* payload, unsigned int length) {
 
  Serial.print("Message arrived [");
 
  Serial.print(topic);
 
  Serial.print("] ");
 
  for (int i = 0; i < length; i++) {
 
    Serial.print((char)payload[i]);
 
  }
 
  Serial.println();
 
  
  // Switch on the LED if an 1 was received as first character
 
  if ((char)payload[0] == '1') {
 
    Serial.println("Ijungiam ka nors");
 
    //digitalWrite(LED_PIN, HIGH);  // Turn the LED on
 
  } else {
 
    Serial.println("Isjungiam ka nors");
 
    //digitalWrite(LED_PIN, LOW);  // Turn the LED off
 
  }
 
  
}
 
 
 
void InitWiFi()
 
{
 
  // initialize serial for ESP module
 
  esp8266.begin(9600);
 
  // initialize ESP module
 
  WiFi.init(&esp8266);
 
  // check for the presence of the shield
 
  if (WiFi.status() == WL_NO_SHIELD) {
 
    Serial.println("WiFi shield not present");
 
    // don't continue
 
    while (true);
 
  }
 
  Serial.println("Connecting to AP ...");
 
  // attempt to connect to WiFi network
 
  while ( status != WL_CONNECTED) {
 
    Serial.print("Attempting to connect to WPA SSID: ");
 
    Serial.println(WIFI_AP);
 
    // Connect to WPA/WPA2 network
 
    status = WiFi.begin(WIFI_AP, WIFI_PASSWORD);
 
    delay(500);
 
  }
 
  Serial.println("Connected to AP");
 
  mqtt.setServer(mqtt_server, mqtt_port);
 
  mqtt.setCallback(callback);
 
}
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 
  
 
[[Category:Arduino]]
 
[[Category:Arduino]]

Primename, kad viskas, kas patenka į Žinynas, yra skelbiama pagal GNU Free Documentation License 1.2 (plačiau – Žinynas:Autorinės teisės). Jei nenorite, kad jūsų indėlis būtų be gailesčio kaitaliojamas ir platinamas, nerašykite čia.
Jūs taip pat pasižadate, kad tai jūsų pačių rašytas turinys arba kopijuotas iš viešų ar panašių nemokamų šaltinių. Nekopijuokite autorinėmis teisėmis apsaugotų darbų be leidimo!

Kad apsaugotume vikį nuo automatinio keitimų šlamšto, prašome išspręsti šį CAPTCHA:

Atšaukti Kaip redaguoti (atsidaro naujame lange)