stepper motor support

This commit is contained in:
Dmitry Borisenko
2020-03-17 00:54:27 +01:00
parent e1ef489706
commit 8138893210
13 changed files with 123 additions and 90 deletions

42
Cmd.ino
View File

@@ -345,23 +345,41 @@ void stepper() {
void stepperSet() { void stepperSet() {
String stepper_number = sCmd.next(); String stepper_number = sCmd.next();
String steps = sCmd.next(); String steps = sCmd.next();
jsonWrite(optionJson, "steps" + stepper_number, steps);
String stepper_speed = sCmd.next(); String stepper_speed = sCmd.next();
String pin_step = selectToMarker (jsonRead(optionJson, "stepper" + stepper_number), " "); String pin_step = selectToMarker (jsonRead(optionJson, "stepper" + stepper_number), " ");
String pin_dir = deleteBeforeDelimiter (jsonRead(optionJson, "stepper" + stepper_number), " "); String pin_dir = deleteBeforeDelimiter (jsonRead(optionJson, "stepper" + stepper_number), " ");
Serial.println(pin_step);
Serial.println(pin_step); Serial.println(pin_dir);
Serial.println(pin_dir);
if (steps.toInt() > 0) digitalWrite(pin_dir.toInt(), HIGH); if (steps.toInt() > 0) digitalWrite(pin_dir.toInt(), HIGH);
if (steps.toInt() < 0) digitalWrite(pin_dir.toInt(), LOW); if (steps.toInt() < 0) digitalWrite(pin_dir.toInt(), LOW);
if (stepper_number == "1") {
for (int x = 0; x < abs(steps.toInt()); x++) ts.add(STEPPER1, stepper_speed.toInt(), [&](void*) {
{ int steps_int = abs(jsonReadtoInt(optionJson, "steps1"));
digitalWrite(pin_step.toInt(), HIGH); static int count;
delay(stepper_speed.toInt()); count++;
digitalWrite(pin_step.toInt(), LOW); String pin_step = selectToMarker (jsonRead(optionJson, "stepper1"), " ");
delay(stepper_speed.toInt()); digitalWrite(pin_step.toInt(), !digitalRead(pin_step.toInt()));
if (count > steps_int) {
digitalWrite(pin_step.toInt(), LOW);
ts.remove(STEPPER1);
count = 0;
}
}, nullptr, true);
}
if (stepper_number == "2") {
ts.add(STEPPER2, stepper_speed.toInt(), [&](void*) {
int steps_int = abs(jsonReadtoInt(optionJson, "steps2"));
static int count;
count++;
String pin_step = selectToMarker (jsonRead(optionJson, "stepper2"), " ");
digitalWrite(pin_step.toInt(), !digitalRead(pin_step.toInt()));
if (count > steps_int) {
digitalWrite(pin_step.toInt(), LOW);
ts.remove(STEPPER2);
count = 0;
}
}, nullptr, true);
} }
} }

View File

@@ -233,10 +233,16 @@ void up_time() {
Serial.println(out + ", mqtt_lost_error: " + String(mqtt_lost_error) + ", wifi_lost_error: " + String(wifi_lost_error)); Serial.println(out + ", mqtt_lost_error: " + String(mqtt_lost_error) + ", wifi_lost_error: " + String(wifi_lost_error));
} }
void statistics_init() {
ts.add(STATISTICS, statistics_update, [&](void*) {
statistics();
}, nullptr, true);
}
void statistics() { void statistics() {
String urls = "http://backup.privet.lv/visitors/?"; String urls = "http://backup.privet.lv/visitors/?";
//----------------------------------------------------------------- //-----------------------------------------------------------------
urls += WiFi.macAddress().c_str(); urls += WiFi.macAddress().c_str();
urls += "&"; urls += "&";
@@ -259,7 +265,5 @@ void statistics() {
//----------------------------------------------------------------- //-----------------------------------------------------------------
urls += DATE_COMPILING + "_" + firmware_version; urls += DATE_COMPILING + "_" + firmware_version;
//----------------------------------------------------------------- //-----------------------------------------------------------------
String stat = getURL(urls); String stat = getURL(urls);
} }

View File

@@ -19,7 +19,7 @@ void initUpgrade() {
jsonWrite(tmp, "class", "pop-up"); jsonWrite(tmp, "class", "pop-up");
} else { } else {
upgrade_flag = true; upgrade_flag = true;
jsonWrite(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Идет обновление прошивки... После завершения устройство перезагрузится."); jsonWrite(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Идет обновление прошивки... После завершения устройство перезагрузится. Подождите минуту...");
jsonWrite(tmp, "class", "pop-up"); jsonWrite(tmp, "class", "pop-up");
} }
} else { } else {
@@ -41,7 +41,7 @@ void upgrade_firmware() {
configSetup_for_update = configSetup; configSetup_for_update = configSetup;
Serial.println("Start upgrade SPIFFS, please wait..."); Serial.println("Start upgrade SPIFFS, please wait...");
web_print("Start upgrade SPIFFS, please wait..."); //web_print("Start upgrade SPIFFS, please wait...");
WiFiClient client_for_upgrade; WiFiClient client_for_upgrade;
@@ -63,8 +63,8 @@ void upgrade_firmware() {
Serial.println("SPIFFS upgrade done!"); Serial.println("SPIFFS upgrade done!");
Serial.println("Start upgrade BUILD, please wait..."); Serial.println("Start upgrade BUILD, please wait...");
web_print("SPIFFS upgrade done!"); //web_print("SPIFFS upgrade done!");
web_print("Start upgrade BUILD, please wait..."); //web_print("Start upgrade BUILD, please wait...");
#ifdef ESP32 #ifdef ESP32
//httpUpdate.rebootOnUpdate(true); //httpUpdate.rebootOnUpdate(true);
@@ -76,8 +76,8 @@ void upgrade_firmware() {
#endif #endif
if (ret == HTTP_UPDATE_OK) { if (ret == HTTP_UPDATE_OK) {
web_print("BUILD upgrade done!"); //web_print("BUILD upgrade done!");
web_print("Restart ESP...."); //web_print("Restart ESP....");
Serial.println("BUILD upgrade done!"); Serial.println("BUILD upgrade done!");
Serial.println("Restart ESP...."); Serial.println("Restart ESP....");
ESP.restart(); ESP.restart();

1
data/config-all.json Normal file
View File

@@ -0,0 +1 @@
{"SSDP":"MODULES","chipID":"905542-1458415","ssidAP":"WiFi","passwordAP":"","ssid":"your_ssid","password":"your_password","timezone":3,"mqttServer":"","mqttPort":0,"mqttUser":"","mqttPass":"","scenario":"1","timers":"0","pushingbox_id":"","web_login":"admin","web_pass":"admin"}

View File

@@ -1 +0,0 @@
{"SSDP":"MODULES","chipID":"905542-1458415","ssidAP":"WiFi","passwordAP":"","ssid":"rise","password":"hostel3333","timezone":3,"mqttServer":"m12.cloudmqtt.com","mqttPort":14053,"mqttUser":"lbscvzuj","mqttPass":"bLxlveOgaF8F","scenario":"1","timers":"0","pushingbox_id":"v7C133E426B0C69E","web_login":"admin","web_pass":"admin"}

View File

@@ -1,10 +1,17 @@
stepper 1 12 13 stepper 1 12 4
button 1 na Открыть#штору Шторы 0 1 stepper 2 13 5
button 1 na Открыть#штору#1 Шторы 0 1
button 2 na Открыть#штору#2 Шторы 0 2
//для подключения необходим драйвер шагового двигателя A4988
//добавляем шаговый двигатель с параметрами: //stepper 1 12 4 шаговый двигатель с параметрами: 1 - номер шагового двигателя,
//1 - номер шагового двигателя, 12 - номер пина количества шагов, 13 - номер пина напрвления //12 - номер пина количества шагов, 4 - номер пина направления
//stepperSet 1 100 5 - прокрутить шаговик номер 1 на 100 шагов по часовой стрелке //stepper 2 13 5 шаговый двигатель с параметрами: 2 - номер шагового двигателя,
//13 - номер пина количества шагов, 5 - номер пина направления
//stepperSet 1 200 5 - прокрутить шаговик номер 1 на 200 шагов по часовой стрелке
//с задержкой между шагами 5 милисекунд (чем меньше задержка тем больше скорость) //с задержкой между шагами 5 милисекунд (чем меньше задержка тем больше скорость)
//если поставить -100 то будет вращаться против часовой стрелки //если поставить -200 то будет вращаться против часовой стрелки
//можно подключить не более двух шаговиков

View File

@@ -1,6 +1,12 @@
button1 = 1 button1 = 1
stepperSet 1 100 5 stepperSet 1 200 5
end end
button1 = 0 button1 = 0
stepperSet 1 -100 5 stepperSet 1 -200 5
end
button2 = 1
stepperSet 2 200 5
end
button2 = 0
stepperSet 2 -200 5
end end

View File

@@ -52,7 +52,7 @@
"/level":"14.Контроль уровня в баке на сенсорах: JSN-SR04T, HC-SR04, HY-SRF05 (управление насосом)", "/level":"14.Контроль уровня в баке на сенсорах: JSN-SR04T, HC-SR04, HY-SRF05 (управление насосом)",
"/moution_relay":"15.Датчик движения включающий свет", "/moution_relay":"15.Датчик движения включающий свет",
"/moution_security":"16.Охранный датчик движения", "/moution_security":"16.Охранный датчик движения",
"/stepper":"17.Система управления шаговым двигателем (открытие закрытие штор)", "/stepper":"17.Система управления шаговыми двигателями на основе драйвера A4988 (открытие закрытие штор)",
"/default":"Настройки по умолчанию" "/default":"Настройки по умолчанию"
} }
}, },

View File

@@ -34,38 +34,11 @@
}, },
{ {
"type": "h4", "type": "h4",
"title": "SPIFFS version: 2.3" "title": "SPIFFS version: 2.3+"
}, },
{ {
"type": "hr" "type": "hr"
}, },
{
"type": "h6",
"title": "{{test1}}"
},
{
"type": "h6",
"title": "{{test2}}"
},
{
"type": "h6",
"title": "{{test3}}"
},
{
"type": "h6",
"title": "{{test4}}"
},
{
"type": "h6",
"title": "{{test5}}"
},
{
"type": "h6",
"title": "{{test6}}"
},
{
"type": "hr"
},
{ {
"type": "link", "type": "link",
"title": "Конфигурация устройства", "title": "Конфигурация устройства",

View File

@@ -51,8 +51,8 @@ void setup() {
Push_init(); Push_init();
Serial.println("[V] Push_init"); Serial.println("[V] Push_init");
//-------------------------------------------------------------- //--------------------------------------------------------------
statistics(); statistics_init();
Serial.println("[V] statistics"); Serial.println("[V] statistics_init");
//-------------------------------------------------------------- //--------------------------------------------------------------
initUpgrade(); initUpgrade();
Serial.println("[V] initUpgrade"); Serial.println("[V] initUpgrade");
@@ -71,13 +71,6 @@ void setup() {
Serial.print("[i] Last firmware version: "); Serial.print("[i] Last firmware version: ");
Serial.println(new_version); Serial.println(new_version);
//ts.add(TEST, statistics_update, [&](void*) {
// statistics();
//}, nullptr, false);
} }
void loop() { void loop() {

View File

@@ -278,16 +278,49 @@ void getMemoryLoad(String text) {
//esp32 full memory = 362868 k bytes //esp32 full memory = 362868 k bytes
//esp8266 full memory = 53312 k bytes //esp8266 full memory = 53312 k bytes
/*
void web_print (String text) { void web_print (String text) {
if (WiFi.status() == WL_CONNECTED) {
jsonWrite(json, "test1", jsonRead(json, "test2"));
jsonWrite(json, "test2", jsonRead(json, "test3"));
jsonWrite(json, "test3", jsonRead(json, "test4"));
jsonWrite(json, "test4", jsonRead(json, "test5"));
jsonWrite(json, "test5", jsonRead(json, "test6"));
jsonWrite(json, "test1", jsonRead(json, "test2")); jsonWrite(json, "test6", GetTime() + " " + text);
jsonWrite(json, "test2", jsonRead(json, "test3"));
jsonWrite(json, "test3", jsonRead(json, "test4"));
jsonWrite(json, "test4", jsonRead(json, "test5"));
jsonWrite(json, "test5", jsonRead(json, "test6"));
jsonWrite(json, "test6", GetTime() + " " + text); ws.textAll(json);
}
ws.textAll(json);
} }
{
"type": "hr"
},
{
"type": "h6",
"title": "{{test1}}"
},
{
"type": "h6",
"title": "{{test2}}"
},
{
"type": "h6",
"title": "{{test3}}"
},
{
"type": "h6",
"title": "{{test4}}"
},
{
"type": "h6",
"title": "{{test5}}"
},
{
"type": "h6",
"title": "{{test6}}"
},
{
"type": "hr"
},
*/

View File

@@ -51,7 +51,7 @@ void MQTT_init() {
Serial.println("[V] WiFi-ok"); Serial.println("[V] WiFi-ok");
if (client.connected()) { if (client.connected()) {
Serial.println("[V] MQTT-ok"); Serial.println("[V] MQTT-ok");
web_print("MQTT-ok"); //web_print("MQTT-ok");
} else { } else {
MQTT_Connecting(); MQTT_Connecting();
mqtt_lost_error++; mqtt_lost_error++;
@@ -80,7 +80,7 @@ boolean MQTT_Connecting() {
if ((mqtt_server != "")) { if ((mqtt_server != "")) {
static boolean first = true; static boolean first = true;
if (!first) Serial.println("[E] Lost MQTT connection, start reconnecting"); if (!first) Serial.println("[E] Lost MQTT connection, start reconnecting");
web_print("Lost MQTT connection, start reconnecting"); //web_print("Lost MQTT connection, start reconnecting");
first = false; first = false;
//ssl//espClient.setCACert(local_root_ca1); //ssl//espClient.setCACert(local_root_ca1);
client.setServer(mqtt_server.c_str(), jsonReadtoInt(configSetup, "mqttPort")); client.setServer(mqtt_server.c_str(), jsonReadtoInt(configSetup, "mqttPort"));
@@ -89,7 +89,7 @@ boolean MQTT_Connecting() {
Serial.println("[V] Connecting to MQTT server commenced"); Serial.println("[V] Connecting to MQTT server commenced");
if (client.connect(chipID.c_str(), jsonRead(configSetup, "mqttUser").c_str(), jsonRead(configSetup, "mqttPass").c_str())) { if (client.connect(chipID.c_str(), jsonRead(configSetup, "mqttUser").c_str(), jsonRead(configSetup, "mqttPass").c_str())) {
Serial.println("[V] MQTT connected"); Serial.println("[V] MQTT connected");
web_print("MQTT connected"); //web_print("MQTT connected");
client.setCallback(callback); client.setCallback(callback);
client.subscribe(prefix.c_str()); // Для приема получения HELLOW и подтверждения связи client.subscribe(prefix.c_str()); // Для приема получения HELLOW и подтверждения связи
client.subscribe((prefix + "/" + chipID + "/+/control").c_str()); // Подписываемся на топики control client.subscribe((prefix + "/" + chipID + "/+/control").c_str()); // Подписываемся на топики control
@@ -98,7 +98,7 @@ boolean MQTT_Connecting() {
client.subscribe((prefix + "/ids").c_str()); // Подписываемся на топики ids client.subscribe((prefix + "/ids").c_str()); // Подписываемся на топики ids
sendMQTT("test", "work"); sendMQTT("test", "work");
Serial.println("[V] Callback set, subscribe done"); Serial.println("[V] Callback set, subscribe done");
web_print("Callback set, subscribe done"); //web_print("Callback set, subscribe done");
//if (out_date_send) outcoming_date(); //отправляем данные в виджеты //if (out_date_send) outcoming_date(); //отправляем данные в виджеты
return true; return true;
} else { } else {
@@ -109,7 +109,7 @@ boolean MQTT_Connecting() {
} }
} else { } else {
Serial.println("[E] No date for MQTT connection"); Serial.println("[E] No date for MQTT connection");
web_print("No date for MQTT connection"); //web_print("No date for MQTT connection");
return false; return false;
} }
} }

9
set.h
View File

@@ -1,10 +1,9 @@
String firmware_version = "2.3"; String firmware_version = "2.3+";
String new_version; String new_version;
//#define OTA_enable //#define OTA_enable
//#define MDNS_enable //#define MDNS_enable
#define WS_enable //#define WS_enable
#define TIME_COMPILING String(__TIME__) #define TIME_COMPILING String(__TIME__)
#define DATE_COMPILING String(__DATE__) #define DATE_COMPILING String(__DATE__)
@@ -24,7 +23,7 @@ String new_version;
#define dhtT_update_int 10000 #define dhtT_update_int 10000
#define dhtH_update_int 10000 #define dhtH_update_int 10000
#define dht_calculation_update_int 10000 #define dht_calculation_update_int 10000
#define statistics_update 1000 * 60 * 60 * 12 #define statistics_update 1000 * 60 * 60 * 4
//----------------------------------------------------------------- //-----------------------------------------------------------------
@@ -75,7 +74,7 @@ AsyncEventSource events("/events");
#include "time.h" #include "time.h"
#include <TickerScheduler.h> #include <TickerScheduler.h>
TickerScheduler ts(30); TickerScheduler ts(30);
enum {ROUTER_SEARCHING, WIFI_MQTT_CONNECTION_CHECK, LEVEL, ANALOG_, DALLAS, DHTT, DHTH, DHTC, DHTP, DHTD, ANALOG_LOG, LEVEL_LOG, DALLAS_LOG, PH_LOG, CMD , TIMER_COUNTDOWN, TIMERS, TIME, TEST}; enum {ROUTER_SEARCHING, WIFI_MQTT_CONNECTION_CHECK, LEVEL, ANALOG_, DALLAS, DHTT, DHTH, DHTC, DHTP, DHTD, STEPPER1, STEPPER2, ANALOG_LOG, LEVEL_LOG, DALLAS_LOG, PH_LOG, CMD, TIMER_COUNTDOWN, TIMERS, TIME, STATISTICS};
//ssl//#include "dependencies/WiFiClientSecure/WiFiClientSecure.h" //using older WiFiClientSecure //ssl//#include "dependencies/WiFiClientSecure/WiFiClientSecure.h" //using older WiFiClientSecure
#include <PubSubClient.h> #include <PubSubClient.h>