mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-27 06:32:19 +03:00
Fixed Ultrasonic, Start uart
This commit is contained in:
@@ -3,8 +3,8 @@
|
||||
"chipID": "",
|
||||
"apssid": "IoTmanager",
|
||||
"appass": "",
|
||||
"routerssid": "rise",
|
||||
"routerpass": "hostel3333",
|
||||
"routerssid": "VOLODYA",
|
||||
"routerpass": "BELCHENKO",
|
||||
"timezone": 1,
|
||||
"ntp": "pool.ntp.org",
|
||||
"mqttServer": "wqtt.ru",
|
||||
|
||||
@@ -1 +1 @@
|
||||
0;ultrasonic-cm;id;anydata;Сенсоры;Расстояние;order;cin;map[0,500,0,100];c[1]
|
||||
0;ultrasonic-cm;id;anydata;Сенсоры;Расстояние;order;cin;map[0,500,0,100];c[1];int[10]
|
||||
@@ -15,8 +15,8 @@ extern void buttonInSet();
|
||||
extern void analogAdc();
|
||||
extern void analogReading();
|
||||
|
||||
extern void ultrasonicCm();
|
||||
extern void ultrasonicReading();
|
||||
//extern void ultrasonicCm();
|
||||
//extern void ultrasonicReading();
|
||||
|
||||
extern void dallasTemp();
|
||||
extern void dallasReading();
|
||||
|
||||
7
include/SoftUART.h
Normal file
7
include/SoftUART.h
Normal file
@@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "SoftwareSerial.h"
|
||||
|
||||
extern void uartInit();
|
||||
extern void uartHandle();
|
||||
extern void parse(String& incStr);
|
||||
@@ -29,4 +29,4 @@ class SensorConvertingClass : public LineParsing {
|
||||
}
|
||||
return input;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,49 +1,49 @@
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
|
||||
#include "Class/LineParsing.h"
|
||||
#include "Global.h"
|
||||
#include "items/SensorConvertingClass.h"
|
||||
#include "GyverFilters.h"
|
||||
|
||||
GMedian<6, int> testFilter;
|
||||
|
||||
class SensorUltrasonic : public SensorConvertingClass {
|
||||
public:
|
||||
SensorUltrasonic() : SensorConvertingClass(){};
|
||||
void init() {
|
||||
sensorReadingMap10sec += _key + ",";
|
||||
String trig = selectFromMarkerToMarker(_pin, ",", 0);
|
||||
String echo = selectFromMarkerToMarker(_pin, ",", 1);
|
||||
pinMode(trig.toInt(), OUTPUT);
|
||||
pinMode(echo.toInt(), INPUT);
|
||||
jsonWriteStr(configOptionJson, _key + "_trig", trig);
|
||||
jsonWriteStr(configOptionJson, _key + "_echo", echo);
|
||||
jsonWriteStr(configOptionJson, _key + "_map", _map);
|
||||
jsonWriteStr(configOptionJson, _key + "_с", _c);
|
||||
}
|
||||
|
||||
void SensorUltrasonicRead(String key) {
|
||||
int trig = jsonReadStr(configOptionJson, key + "_trig").toInt();
|
||||
int echo = jsonReadStr(configOptionJson, key + "_echo").toInt();
|
||||
int value;
|
||||
|
||||
digitalWrite(trig, LOW);
|
||||
delayMicroseconds(2);
|
||||
digitalWrite(trig, HIGH);
|
||||
delayMicroseconds(10);
|
||||
digitalWrite(trig, LOW);
|
||||
long duration_ = pulseIn(echo, HIGH, 30000); // 3000 µs = 50cm // 30000 µs = 5 m
|
||||
value = duration_ / 29 / 2;
|
||||
|
||||
value = testFilter.filtered(value);
|
||||
|
||||
value = this->mapping(key, value);
|
||||
float valueFl = this->correction(key, value);
|
||||
eventGen2(key, String(valueFl));
|
||||
jsonWriteStr(configLiveJson, key, String(valueFl));
|
||||
publishStatus(key, String(valueFl));
|
||||
SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl));
|
||||
}
|
||||
};
|
||||
extern SensorUltrasonic mySensorUltrasonic;
|
||||
//#pragma once
|
||||
//#include <Arduino.h>
|
||||
//
|
||||
//#include "Class/LineParsing.h"
|
||||
//#include "Global.h"
|
||||
//#include "items/SensorConvertingClass.h"
|
||||
//#include "GyverFilters.h"
|
||||
//
|
||||
//GMedian<6, int> testFilter;
|
||||
//
|
||||
//class SensorUltrasonic : public SensorConvertingClass {
|
||||
// public:
|
||||
// SensorUltrasonic() : SensorConvertingClass(){};
|
||||
// void init() {
|
||||
// sensorReadingMap10sec += _key + ",";
|
||||
// String trig = selectFromMarkerToMarker(_pin, ",", 0);
|
||||
// String echo = selectFromMarkerToMarker(_pin, ",", 1);
|
||||
// pinMode(trig.toInt(), OUTPUT);
|
||||
// pinMode(echo.toInt(), INPUT);
|
||||
// jsonWriteStr(configOptionJson, _key + "_trig", trig);
|
||||
// jsonWriteStr(configOptionJson, _key + "_echo", echo);
|
||||
// jsonWriteStr(configOptionJson, _key + "_map", _map);
|
||||
// jsonWriteStr(configOptionJson, _key + "_с", _c);
|
||||
// }
|
||||
//
|
||||
// void SensorUltrasonicRead(String key) {
|
||||
// int trig = jsonReadStr(configOptionJson, key + "_trig").toInt();
|
||||
// int echo = jsonReadStr(configOptionJson, key + "_echo").toInt();
|
||||
// int value;
|
||||
//
|
||||
// digitalWrite(trig, LOW);
|
||||
// delayMicroseconds(2);
|
||||
// digitalWrite(trig, HIGH);
|
||||
// delayMicroseconds(10);
|
||||
// digitalWrite(trig, LOW);
|
||||
// long duration_ = pulseIn(echo, HIGH, 30000); // 3000 µs = 50cm // 30000 µs = 5 m
|
||||
// value = duration_ / 29 / 2;
|
||||
//
|
||||
// value = testFilter.filtered(value);
|
||||
//
|
||||
// value = this->mapping(key, value);
|
||||
// float valueFl = this->correction(key, value);
|
||||
// eventGen2(key, String(valueFl));
|
||||
// jsonWriteStr(configLiveJson, key, String(valueFl));
|
||||
// publishStatus(key, String(valueFl));
|
||||
// SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl));
|
||||
// }
|
||||
//};
|
||||
//extern SensorUltrasonic mySensorUltrasonic;
|
||||
47
include/items/vSensorUltrasonic.h
Normal file
47
include/items/vSensorUltrasonic.h
Normal file
@@ -0,0 +1,47 @@
|
||||
#pragma once
|
||||
#include "Global.h"
|
||||
#include <Arduino.h>
|
||||
#include "items/SensorConvertingClass.h"
|
||||
#include "GyverFilters.h"
|
||||
|
||||
class SensorUltrasonic;
|
||||
|
||||
typedef std::vector<SensorUltrasonic> MySensorUltrasonicVector;
|
||||
|
||||
|
||||
|
||||
class SensorUltrasonic : public SensorConvertingClass {
|
||||
public:
|
||||
|
||||
SensorUltrasonic(String key, unsigned long interval, unsigned int trig, unsigned int echo, int map1, int map2, int map3, int map4, float c);
|
||||
~SensorUltrasonic();
|
||||
|
||||
void loop();
|
||||
void readUltrasonic();
|
||||
|
||||
private:
|
||||
|
||||
unsigned long currentMillis;
|
||||
unsigned long prevMillis;
|
||||
unsigned long difference;
|
||||
|
||||
unsigned long _interval;
|
||||
|
||||
String _key;
|
||||
unsigned int _echo;
|
||||
unsigned int _trig;
|
||||
|
||||
int _map1;
|
||||
int _map2;
|
||||
int _map3;
|
||||
int _map4;
|
||||
|
||||
float _c;
|
||||
|
||||
};
|
||||
|
||||
extern MySensorUltrasonicVector* mySensorUltrasonic;
|
||||
|
||||
extern void ultrasonic();
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "Global.h"
|
||||
//
|
||||
#include "items/vSensorDallas.h"
|
||||
#include "items/vSensorUltrasonic.h"
|
||||
#include "items/vButtonOut.h"
|
||||
#include "items/vPwmOut.h"
|
||||
#include "items/vInOutput.h"
|
||||
@@ -53,7 +54,7 @@ void csvCmdExecute(String& cmdStr) {
|
||||
sCmd.addCommand(order.c_str(), analogAdc);
|
||||
}
|
||||
else if (order == F("ultrasonic-cm")) {
|
||||
sCmd.addCommand(order.c_str(), ultrasonicCm);
|
||||
sCmd.addCommand(order.c_str(), ultrasonic);
|
||||
}
|
||||
else if (order == F("dallas-temp")) {
|
||||
sCmd.addCommand(order.c_str(), dallas);
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "items/vImpulsOut.h"
|
||||
#include "items/vButtonOut.h"
|
||||
#include "items/vSensorDallas.h"
|
||||
#include "items/vSensorUltrasonic.h"
|
||||
#include "items/vInOutput.h"
|
||||
#include "items/vPwmOut.h"
|
||||
#include "items/vCountDown.h"
|
||||
@@ -43,6 +44,10 @@ void Device_init() {
|
||||
if (mySensorDallas2 != nullptr) {
|
||||
mySensorDallas2->clear();
|
||||
}
|
||||
//======clear ultrasonic params======
|
||||
if (mySensorUltrasonic != nullptr) {
|
||||
mySensorUltrasonic->clear();
|
||||
}
|
||||
//======clear logging params======
|
||||
if (myLogging != nullptr) {
|
||||
myLogging->clear();
|
||||
|
||||
27
src/SoftUART.cpp
Normal file
27
src/SoftUART.cpp
Normal file
@@ -0,0 +1,27 @@
|
||||
#include "SoftUART.h"
|
||||
|
||||
SoftwareSerial* myUART{ nullptr };
|
||||
|
||||
void uartInit() {
|
||||
if (!myUART) {
|
||||
myUART = new SoftwareSerial(4, 5);
|
||||
}
|
||||
}
|
||||
|
||||
void uartHandle() {
|
||||
static String incStr;
|
||||
if (myUART->available()) {
|
||||
char inc;
|
||||
inc = myUART->read();
|
||||
incStr += inc;
|
||||
if (inc == 0x0A) {
|
||||
parse(incStr);
|
||||
incStr = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void parse(String& incStr) {
|
||||
|
||||
|
||||
}
|
||||
@@ -1,20 +1,20 @@
|
||||
#include "BufferExecute.h"
|
||||
#include "items/SensorUltrasonicClass.h"
|
||||
//#ifdef SensorUltrasonicEnabled
|
||||
//=========================================Модуль ультрозвукового дальномера==================================================================
|
||||
//ultrasonic-cm;id;anydata;Сенсоры;Расстояние;order;pin[12,13];map[1,100,1,100];c[1]
|
||||
//=========================================================================================================================================
|
||||
SensorUltrasonic mySensorUltrasonic;
|
||||
void ultrasonicCm() {
|
||||
mySensorUltrasonic.update();
|
||||
String key = mySensorUltrasonic.gkey();
|
||||
sCmd.addCommand(key.c_str(), ultrasonicReading);
|
||||
mySensorUltrasonic.init();
|
||||
mySensorUltrasonic.clear();
|
||||
}
|
||||
|
||||
void ultrasonicReading() {
|
||||
String key = sCmd.order();
|
||||
mySensorUltrasonic.SensorUltrasonicRead(key);
|
||||
}
|
||||
//#endif
|
||||
//#include "BufferExecute.h"
|
||||
//#include "items/SensorUltrasonicClass.h"
|
||||
////#ifdef SensorUltrasonicEnabled
|
||||
////=========================================Модуль ультрозвукового дальномера==================================================================
|
||||
////ultrasonic-cm;id;anydata;Сенсоры;Расстояние;order;pin[12,13];map[1,100,1,100];c[1]
|
||||
////=========================================================================================================================================
|
||||
//SensorUltrasonic mySensorUltrasonic;
|
||||
//void ultrasonicCm() {
|
||||
// mySensorUltrasonic.update();
|
||||
// String key = mySensorUltrasonic.gkey();
|
||||
// sCmd.addCommand(key.c_str(), ultrasonicReading);
|
||||
// mySensorUltrasonic.init();
|
||||
// mySensorUltrasonic.clear();
|
||||
//}
|
||||
//
|
||||
//void ultrasonicReading() {
|
||||
// String key = sCmd.order();
|
||||
// mySensorUltrasonic.SensorUltrasonicRead(key);
|
||||
//}
|
||||
////#endif
|
||||
89
src/items/vSensorUltrasonic.cpp
Normal file
89
src/items/vSensorUltrasonic.cpp
Normal file
@@ -0,0 +1,89 @@
|
||||
#include "items/vSensorUltrasonic.h"
|
||||
#include "Class/LineParsing.h"
|
||||
#include "Global.h"
|
||||
#include "BufferExecute.h"
|
||||
#include <Arduino.h>
|
||||
|
||||
GMedian<5, int> testFilter;
|
||||
|
||||
SensorUltrasonic::SensorUltrasonic(String key, unsigned long interval, unsigned int trig, unsigned int echo, int map1, int map2, int map3, int map4, float c) {
|
||||
_interval = interval * 1000;
|
||||
_key = key;
|
||||
_trig = trig;
|
||||
_echo = echo;
|
||||
|
||||
_map1 = map1;
|
||||
_map2 = map2;
|
||||
_map3 = map3;
|
||||
_map4 = map4;
|
||||
|
||||
_c = c;
|
||||
|
||||
pinMode(_trig, OUTPUT);
|
||||
pinMode(_echo, INPUT);
|
||||
}
|
||||
|
||||
SensorUltrasonic::~SensorUltrasonic() {}
|
||||
|
||||
void SensorUltrasonic::loop() {
|
||||
currentMillis = millis();
|
||||
difference = currentMillis - prevMillis;
|
||||
if (difference >= _interval) {
|
||||
prevMillis = millis();
|
||||
readUltrasonic();
|
||||
}
|
||||
}
|
||||
|
||||
void SensorUltrasonic::readUltrasonic() {
|
||||
|
||||
static unsigned int counter;
|
||||
counter++;
|
||||
|
||||
int value;
|
||||
|
||||
digitalWrite(_trig, LOW);
|
||||
delayMicroseconds(2);
|
||||
digitalWrite(_trig, HIGH);
|
||||
delayMicroseconds(10);
|
||||
digitalWrite(_trig, LOW);
|
||||
long duration_ = pulseIn(_echo, HIGH, 30000); // 3000 µs = 50cm // 30000 µs = 5 m
|
||||
value = duration_ / 29 / 2;
|
||||
|
||||
value = testFilter.filtered(value);
|
||||
|
||||
value = map(value, _map1, _map2, _map3, _map4);
|
||||
float valueFloat = value * _c;
|
||||
|
||||
if (counter > 10) {
|
||||
eventGen2(_key, String(valueFloat));
|
||||
jsonWriteStr(configLiveJson, _key, String(valueFloat));
|
||||
publishStatus(_key, String(valueFloat));
|
||||
SerialPrint("I", "Sensor", "'" + _key + "' data: " + String(valueFloat));
|
||||
}
|
||||
}
|
||||
|
||||
MySensorUltrasonicVector* mySensorUltrasonic = nullptr;
|
||||
|
||||
void ultrasonic() {
|
||||
myLineParsing.update();
|
||||
String interval = myLineParsing.gint();
|
||||
String pin = myLineParsing.gpin();
|
||||
String key = myLineParsing.gkey();
|
||||
String map = myLineParsing.gmap();
|
||||
String c = myLineParsing.gc();
|
||||
myLineParsing.clear();
|
||||
|
||||
unsigned int trig = selectFromMarkerToMarker(pin, ",", 0).toInt();
|
||||
unsigned int echo = selectFromMarkerToMarker(pin, ",", 1).toInt();
|
||||
|
||||
int map1 = selectFromMarkerToMarker(map, ",", 0).toInt();
|
||||
int map2 = selectFromMarkerToMarker(map, ",", 1).toInt();
|
||||
int map3 = selectFromMarkerToMarker(map, ",", 2).toInt();
|
||||
int map4 = selectFromMarkerToMarker(map, ",", 3).toInt();
|
||||
|
||||
static bool firstTime = true;
|
||||
if (firstTime) mySensorUltrasonic = new MySensorUltrasonicVector();
|
||||
firstTime = false;
|
||||
mySensorUltrasonic->push_back(SensorUltrasonic(key, interval.toInt(), trig, echo, map1, map2, map3, map4, c.toFloat()));
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "items/vImpulsOut.h"
|
||||
#include "items/vSensorDallas.h"
|
||||
#include "items/vCountDown.h"
|
||||
#include "items/vSensorUltrasonic.h"
|
||||
#include "Telegram.h"
|
||||
|
||||
void not_async_actions();
|
||||
@@ -169,6 +170,11 @@ void loop() {
|
||||
mySensorDallas2->at(i).loop();
|
||||
}
|
||||
}
|
||||
if (mySensorUltrasonic != nullptr) {
|
||||
for (unsigned int i = 0; i < mySensorUltrasonic->size(); i++) {
|
||||
mySensorUltrasonic->at(i).loop();
|
||||
}
|
||||
}
|
||||
if (myCountDown != nullptr) {
|
||||
for (unsigned int i = 0; i < myCountDown->size(); i++) {
|
||||
myCountDown->at(i).loop();
|
||||
|
||||
Reference in New Issue
Block a user