This commit is contained in:
Diego Freitas 2024-05-08 15:43:42 -03:00
parent 5de9ae8ffd
commit 4461f00701
42 changed files with 114 additions and 44 deletions

Binary file not shown.

View File

@ -1,5 +1,6 @@
using AgroBase.Forms;
using AgroBase.Services;
using Emgu.CV.ML;
using Emgu.CV.Structure;
using Newtonsoft.Json;
using System;
@ -539,6 +540,34 @@ namespace AgroBase.Models.Modules
Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloCarroBussola = angulo;
Console.WriteLine("x: " + x + ", y: " + y + ", z: " + z);
// Calcula o ângulo em radianos usando Math.Atan2(z, x)
double angleRad = Math.Atan2(z, x);
// Converte o ângulo de radianos para graus
double angleDeg = angleRad * (180 / Math.PI);
// Ajusta o ângulo para estar entre 0 e 360 graus
if (angleDeg < 0)
{
angleDeg += 360;
}
Console.WriteLine("xz: " + angleDeg);
double angleRad2 = Math.Atan2(y, x);
// Converte o ângulo de radianos para graus
double angleDeg2 = angleRad2 * (180 / Math.PI);
// Ajusta o ângulo para estar entre 0 e 360 graus
if (angleDeg2 < 0)
{
angleDeg2 += 360;
}
Console.WriteLine("xy: " + angleDeg2);
AtualizaGrafico = true;
break;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
[{"Momento":"2024-05-07T15:03:24.0754304-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":130.0733310470406,"AnguloCarroBussola":0.0,"AnguloCarro":130.0733310470406,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:28.8724617-03:00","VelocidadeMedia":0.055,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[1.5159836441025689],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":41.402606415230593,"AnguloCarroBussola":0.0,"AnguloCarro":41.402606415230593,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:33.8868472-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[2.8395621033797918],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":145.82708321395091,"AnguloCarroBussola":0.0,"AnguloCarro":145.82708321395091,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:38.886932-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[7.5533992949426789],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":165.57818474637634,"AnguloCarroBussola":0.0,"AnguloCarro":165.57818474637634,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:43.8979192-03:00","VelocidadeMedia":0.03,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[9.1535074923871509],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":44.527629629184787,"AnguloCarroBussola":0.0,"AnguloCarro":44.527629629184787,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:48.9469204-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[10.997372504326716],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":177.05573200896538,"AnguloCarroBussola":0.0,"AnguloCarro":177.05573200896538,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:53.9059201-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[15.357085247674101],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":287.15120341137487,"AnguloCarroBussola":0.0,"AnguloCarro":287.15120341137487,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:58.8953487-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[16.093005713272017],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":300.27951033696468,"AnguloCarroBussola":0.0,"AnguloCarro":300.27951033696468,"SonarFrontal":null},{"Momento":"2024-05-07T15:04:03.8999344-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[16.093005713272017],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":300.27951033696468,"AnguloCarroBussola":0.0,"AnguloCarro":300.27951033696468,"SonarFrontal":null},{"Momento":"2024-05-07T15:04:08.8873012-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[16.093005713272017],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":300.27951033696468,"AnguloCarroBussola":0.0,"AnguloCarro":300.27951033696468,"SonarFrontal":null},{"Momento":"2024-05-07T15:04:13.8925877-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[16.093005713272017],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":300.27951033696468,"AnguloCarroBussola":0.0,"AnguloCarro":300.27951033696468,"SonarFrontal":null},{"Momento":"2024-05-07T15:04:18.8902042-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[16.093005713272017],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":300.27951033696468,"AnguloCarroBussola":0.0,"AnguloCarro":300.27951033696468,"SonarFrontal":null},{"Momento":"2024-05-07T15:04:19.2209745-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[16.093005713272017],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":300.27951033696468,"AnguloCarroBussola":0.0,"AnguloCarro":300.27951033696468,"SonarFrontal":null}]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -25,7 +25,7 @@
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<style>
#map_6227825fcfe3138a1083ba65f3196abb {
#map_53919f79def30ee03668a0e43878c433 {
position: relative;
width: 100.0%;
height: 100.0%;
@ -39,14 +39,14 @@
<body>
<div class="folium-map" id="map_6227825fcfe3138a1083ba65f3196abb" ></div>
<div class="folium-map" id="map_53919f79def30ee03668a0e43878c433" ></div>
</body>
<script>
var map_6227825fcfe3138a1083ba65f3196abb = L.map(
"map_6227825fcfe3138a1083ba65f3196abb",
var map_53919f79def30ee03668a0e43878c433 = L.map(
"map_53919f79def30ee03668a0e43878c433",
{
center: [0.0, 0.0],
crs: L.CRS.EPSG3857,
@ -60,13 +60,13 @@
var tile_layer_8562fa9f4e23ecf0bdee06bb23fe1d3f = L.tileLayer(
var tile_layer_8c56bc42fc2c45759a346328e3be129b = L.tileLayer(
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
);
tile_layer_8562fa9f4e23ecf0bdee06bb23fe1d3f.addTo(map_6227825fcfe3138a1083ba65f3196abb);
tile_layer_8c56bc42fc2c45759a346328e3be129b.addTo(map_53919f79def30ee03668a0e43878c433);
</script>
@ -87,7 +87,7 @@
}
trajeto_json_add({"features": []});
trajeto_json.addTo(map_6227825fcfe3138a1083ba65f3196abb);
trajeto_json.addTo(map_53919f79def30ee03668a0e43878c433);
function adicionarGeometria(novaGeometria) {
trajeto_json.addData(novaGeometria);
@ -145,7 +145,7 @@
var marcadorDinamico = L.marker([0, 0], {
icon: customIcon
}).addTo(map_6227825fcfe3138a1083ba65f3196abb);
}).addTo(map_53919f79def30ee03668a0e43878c433);
// Conectar ao broker MQTT
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura
@ -184,7 +184,7 @@
marcadorDinamico.setRotationAngle(angulo);
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
map_6227825fcfe3138a1083ba65f3196abb.setView(novaPosicao, map_6227825fcfe3138a1083ba65f3196abb.getZoom());
map_53919f79def30ee03668a0e43878c433.setView(novaPosicao, map_53919f79def30ee03668a0e43878c433.getZoom());
});
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {

View File

@ -1 +1 @@
{"Conectado":false,"QuantidadeBicos":4,"DensidadeHerbicida":1.05,"CapacidadeReservatorio":30.0,"AtuacaoNivelAlto":true,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":34.42987713140743},{"ID":"B02","Posicao":2,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":14.876485059544191},{"ID":"B03","Posicao":3,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":18.103588945512129},{"ID":"B04","Posicao":4,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":18.437319738098896},{"ID":"B05","Posicao":5,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B06","Posicao":6,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B07","Posicao":7,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B08","Posicao":8,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B09","Posicao":9,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B10","Posicao":10,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0}],"BombaPressurizadora":{"ID":"BOMBA","BombaAtuada":false,"Ligado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[14,35,36,37,5],"PressaoSP":85.0,"Pressao":82.01,"Potencia":0.0},"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":23,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":true,"DelayAmostragem":300,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[],"UnidadeMedida":"mL/s","Leituras":[0.0,0.0],"ValorMinimo":0.0,"ValorMaximo":25222.0,"LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","Leituras":[1117263.12],"ValorMinimo":-1.281631101976581E+32,"ValorMaximo":2.8836731440342142E+24,"LimiteMaximo":50.0,"LimiteMinimo":5.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[["Vmin","000.00"],["Vmax","004.50"],["Pmax","174.04"]],"UnidadeMedida":"psi","Leituras":[82.01],"ValorMinimo":0.0,"ValorMaximo":127.63,"LimiteMaximo":120.0,"LimiteMinimo":60.0}],"PercentualInicioPulverizacao":0.3,"ScriptDeteccaoErvas":"weed-detector-v7.py","_MassaRef":0.8,"_MassaLeituraRef":40876.37,"_MassaLeituraExtra":1895800.0,"_MassaLeitura":1117263.12,"MassaReservatorio":15.236908365395459,"VolumeReservatorio":14.511341300376627,"PercentualReservatorio":48.371137667922085,"VolumeVazaoAferido":102.0,"_FluxoMlRef":102.0,"_FluxoPulsoRef":80.0,"_LeituraPulsos":0,"_LeituraPeriodo":0,"VazaoFluxoMLpS":0.0,"VolumeVazaoML":0.0,"_PressaoVmin":0.0,"_PressaoVmax":4.5,"_PressaoMax":174.045,"_LeituraPressao":2631.0,"PressaoLinha":82.01,"PressaoLinhaCalc":82.0030336996337}
{"Conectado":false,"QuantidadeBicos":4,"DensidadeHerbicida":1.05,"CapacidadeReservatorio":30.0,"AtuacaoNivelAlto":true,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Atuado":true,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":34.42987713140743},{"ID":"B02","Posicao":2,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":14.876485059544191},{"ID":"B03","Posicao":3,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":18.103588945512129},{"ID":"B04","Posicao":4,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":18.437319738098896},{"ID":"B05","Posicao":5,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B06","Posicao":6,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B07","Posicao":7,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B08","Posicao":8,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B09","Posicao":9,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B10","Posicao":10,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0}],"BombaPressurizadora":{"ID":"BOMBA","BombaAtuada":false,"Ligado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[14,35,36,37,5],"PressaoSP":85.0,"Pressao":82.01,"Potencia":0.0},"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":23,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":true,"DelayAmostragem":300,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[],"UnidadeMedida":"mL/s","Leituras":[0.0,0.0],"ValorMinimo":0.0,"ValorMaximo":25222.0,"LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","Leituras":[1117263.12],"ValorMinimo":-1.281631101976581E+32,"ValorMaximo":2.8836731440342142E+24,"LimiteMaximo":50.0,"LimiteMinimo":5.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[["Vmin","000.00"],["Vmax","004.50"],["Pmax","174.04"]],"UnidadeMedida":"psi","Leituras":[82.01],"ValorMinimo":0.0,"ValorMaximo":127.63,"LimiteMaximo":120.0,"LimiteMinimo":60.0}],"PercentualInicioPulverizacao":0.3,"ScriptDeteccaoErvas":"weed-detector-v7.py","_MassaRef":0.8,"_MassaLeituraRef":40876.37,"_MassaLeituraExtra":1895800.0,"_MassaLeitura":1117263.12,"MassaReservatorio":15.236908365395459,"VolumeReservatorio":14.511341300376627,"PercentualReservatorio":48.371137667922085,"VolumeVazaoAferido":102.0,"_FluxoMlRef":102.0,"_FluxoPulsoRef":80.0,"_LeituraPulsos":0,"_LeituraPeriodo":0,"VazaoFluxoMLpS":0.0,"VolumeVazaoML":0.0,"_PressaoVmin":0.0,"_PressaoVmax":4.5,"_PressaoMax":174.045,"_LeituraPressao":2631.0,"PressaoLinha":82.01,"PressaoLinhaCalc":82.0030336996337}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -290,6 +290,8 @@ class Motor {
GrausPino = (_AgRef < 0 ? -1.0 : 1.0) * _AgRef;
Referenciado = true;
*evento = false;
_Angulo = CalculaAnguloPino(anguloReferencia, *estadoAtual);
}
}
@ -360,41 +362,49 @@ class Motor {
void ReferenciarMotor() {
int AgP1 = RefMax / 2;
int AgP2 = RefMax;
// Verifica se o motor já está na posição de referência (dentro da margem de 0º).
if (Referenciado && (_Angulo >= -_Margem && _Angulo <= _Margem)) {
Referenciando = false;
_MotorLigado = false;
} else {
// Inicia o processo de referenciamento se o motor está parado.
if (_Sentido_SP == Parado) {
}
else {
if (_Sentido_SP == Parado && _Angulo == 0) {
_Angulo_SP = AgP1;
_Sentido_SP = Horario;
}
// Verifica se o motor excedeu a margem de referência enquanto se move no sentido horário.
else if (_Sentido_SP == Horario && _Angulo > _Margem) {
_Angulo_SP = -AgP1; // Muda para antihorário para tentar encontrar o ponto de referência.
else if (_Sentido_SP == Horario) {
if (_Angulo > _Margem && Referenciado) {
_Angulo_SP = AgP1;
_Sentido_SP = Antihorario;
}
// Verifica se o motor excedeu a margem de referência enquanto se move no sentido antihorário.
else if (_Sentido_SP == Antihorario && _Angulo < -_Margem) {
_Angulo_SP = AgP1; // Muda para horário para tentar encontrar o ponto de referência.
else if (_Angulo >= AgP1) {
_Angulo_SP = AgP1;
_Sentido_SP = Antihorario;
}
else if (_Angulo >= RefMax) {
_Angulo_SP = AgP2;
_Sentido_SP = Antihorario;
}
}
else if (_Sentido_SP == Antihorario) {
if (_Angulo < -_Margem && Referenciado) {
_Angulo_SP = AgP1;
_Sentido_SP = Horario;
}
// Continua o processo de referenciamento conforme a lógica original.
else if (_Sentido_SP == Horario && _Angulo >= AgP1) {
_Angulo_SP = -AgP1;
else if (_Angulo <= -AgP1) {
_Angulo_SP = AgP2;
_Sentido_SP = Antihorario;
}
else if (_Sentido_SP == Antihorario && _Angulo <= -AgP1) {
_Angulo_SP = AgP1 * 2;
else if (_Angulo <= -AgP2) {
_Angulo_SP = AgP2;
_Sentido_SP = Horario;
}
else if (_Angulo <= RefMin) {
_Angulo_SP = AgP2;
_Sentido_SP = Horario;
}
else if (_Sentido_SP == Horario && _Angulo >= AgP1 * 2) {
_Angulo_SP = -AgP1 * 2;
_Sentido_SP = Antihorario;
}
// Adiciona mais condições conforme necessário para cobrir o processo completo de referenciamento.
}
}

View File

@ -569,15 +569,19 @@ void RecalcularRelacaoPPR() {
}
void BalanceamentoTask(void *pvParameters) {
while (1)
{
unsigned long firstMilis = millis();
int _delay = delayBalanceamento > 0 ? delayBalanceamento : 5000;
if (Conectado && delayBalanceamento > 0) {
while (1)
{
long intMillis = (millis() - firstMilis);
if (Conectado && intMillis >= _delay) {
BalancearCargasMotores();
firstMilis = millis();
}
vTaskDelay(_delay);
vTaskDelay(1);
}
}