ajustado pinout do sensoriamento e encodedr magnetico

This commit is contained in:
Diego Freitas 2024-05-10 09:28:14 -03:00
parent 5de9ae8ffd
commit baec91d453
52 changed files with 716 additions and 325 deletions

Binary file not shown.

View File

@ -3,24 +3,8 @@
"WorkspaceRootPath": "C:\\ZendionINC\\agrobot_base\\AgroBase\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\models\\operacoes\\operacaomapagpsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\operacoes\\operacaomapagpsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\forms\\frmsimulacaomapagps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmsimulacaomapagps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\mapasmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\mapasmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\forms\\frmsimulacaomapagps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmsimulacaomapagps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\services\\gpsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\gpsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\frmpinout.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmpinout.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@ -35,65 +19,14 @@
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "OperacaoMapaGPSModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
"RelativeToolTip": "AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
"ViewState": "AQIAAAEBAAAAAAAAAAAuwBwBAABuAAAA",
"Title": "frmPinout.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmPinout.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmPinout.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmPinout.cs",
"RelativeToolTip": "AgroBase\\Forms\\frmPinout.cs",
"ViewState": "AQIAALcAAAAAAAAAAAAYwB8BAAAMAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-05-06T19:42:55.483Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "GPSService.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\GPSService.cs",
"RelativeDocumentMoniker": "AgroBase\\Services\\GPSService.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\GPSService.cs",
"RelativeToolTip": "AgroBase\\Services\\GPSService.cs",
"ViewState": "AQIAAMAAAAAAAAAAAAAAANgAAAA0AAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-05-05T13:17:27.166Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "frmSimulacaoMapaGPS.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmSimulacaoMapaGPS.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmSimulacaoMapaGPS.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmSimulacaoMapaGPS.cs",
"RelativeToolTip": "AgroBase\\Forms\\frmSimulacaoMapaGPS.cs",
"ViewState": "AQIAALMAAAAAAAAAAIAywDkBAAAMAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-05-03T22:41:17.732Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "frmSimulacaoMapaGPS.cs [Design]",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmSimulacaoMapaGPS.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmSimulacaoMapaGPS.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmSimulacaoMapaGPS.cs [Design]",
"RelativeToolTip": "AgroBase\\Forms\\frmSimulacaoMapaGPS.cs [Design]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-05-03T22:39:04.958Z",
"EditorCaption": " [Design]"
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "MapasModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\MapasModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\MapasModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\MapasModel.cs",
"RelativeToolTip": "AgroBase\\Models\\MapasModel.cs",
"ViewState": "AQIAADgAAAAAAAAAAIAywMYAAAAMAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-05-06T16:37:41.166Z",
"WhenOpened": "2024-05-10T11:31:13.293Z",
"EditorCaption": ""
}
]

View File

@ -31,6 +31,8 @@ namespace AgroBase.Forms
{
this.pnlMapa = new System.Windows.Forms.Panel();
this.pnlBotoes = new System.Windows.Forms.Panel();
this.btnCalcular = new System.Windows.Forms.Button();
this.btnCalcularPontos = new System.Windows.Forms.Button();
this.lblMapa = new System.Windows.Forms.Label();
this.btnCarregar = new System.Windows.Forms.Button();
this.pnlBotoes.SuspendLayout();
@ -41,40 +43,63 @@ namespace AgroBase.Forms
this.pnlMapa.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.pnlMapa.Location = new System.Drawing.Point(9, 10);
this.pnlMapa.Margin = new System.Windows.Forms.Padding(2);
this.pnlMapa.Location = new System.Drawing.Point(12, 12);
this.pnlMapa.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlMapa.Name = "pnlMapa";
this.pnlMapa.Size = new System.Drawing.Size(772, 464);
this.pnlMapa.Size = new System.Drawing.Size(1029, 571);
this.pnlMapa.TabIndex = 1;
//
// pnlBotoes
//
this.pnlBotoes.Controls.Add(this.btnCalcular);
this.pnlBotoes.Controls.Add(this.btnCalcularPontos);
this.pnlBotoes.Controls.Add(this.lblMapa);
this.pnlBotoes.Controls.Add(this.btnCarregar);
this.pnlBotoes.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlBotoes.Location = new System.Drawing.Point(0, 479);
this.pnlBotoes.Margin = new System.Windows.Forms.Padding(2);
this.pnlBotoes.Location = new System.Drawing.Point(0, 589);
this.pnlBotoes.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlBotoes.Name = "pnlBotoes";
this.pnlBotoes.Size = new System.Drawing.Size(790, 46);
this.pnlBotoes.Size = new System.Drawing.Size(1053, 57);
this.pnlBotoes.TabIndex = 2;
//
// btnCalcular
//
this.btnCalcular.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnCalcular.Location = new System.Drawing.Point(697, 14);
this.btnCalcular.Name = "btnCalcular";
this.btnCalcular.Size = new System.Drawing.Size(158, 32);
this.btnCalcular.TabIndex = 3;
this.btnCalcular.Text = "Calcular Trecho";
this.btnCalcular.UseVisualStyleBackColor = true;
this.btnCalcular.Click += new System.EventHandler(this.btnCalcular_Click);
//
// btnCalcularPontos
//
this.btnCalcularPontos.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnCalcularPontos.Location = new System.Drawing.Point(533, 14);
this.btnCalcularPontos.Name = "btnCalcularPontos";
this.btnCalcularPontos.Size = new System.Drawing.Size(158, 32);
this.btnCalcularPontos.TabIndex = 2;
this.btnCalcularPontos.Text = "Registrar Ponto";
this.btnCalcularPontos.UseVisualStyleBackColor = true;
this.btnCalcularPontos.Click += new System.EventHandler(this.btnCalcularPontos_Click);
//
// lblMapa
//
this.lblMapa.AutoSize = true;
this.lblMapa.Location = new System.Drawing.Point(9, 17);
this.lblMapa.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblMapa.Location = new System.Drawing.Point(12, 21);
this.lblMapa.Name = "lblMapa";
this.lblMapa.Size = new System.Drawing.Size(91, 13);
this.lblMapa.Size = new System.Drawing.Size(114, 16);
this.lblMapa.TabIndex = 1;
this.lblMapa.Text = "Mapa carregado: ";
//
// btnCarregar
//
this.btnCarregar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnCarregar.Location = new System.Drawing.Point(684, 11);
this.btnCarregar.Margin = new System.Windows.Forms.Padding(2);
this.btnCarregar.Location = new System.Drawing.Point(912, 14);
this.btnCarregar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnCarregar.Name = "btnCarregar";
this.btnCarregar.Size = new System.Drawing.Size(98, 26);
this.btnCarregar.Size = new System.Drawing.Size(131, 32);
this.btnCarregar.TabIndex = 0;
this.btnCarregar.Text = "Carregar mapa";
this.btnCarregar.UseVisualStyleBackColor = true;
@ -82,12 +107,12 @@ namespace AgroBase.Forms
//
// frmMapa
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(790, 525);
this.ClientSize = new System.Drawing.Size(1053, 646);
this.Controls.Add(this.pnlBotoes);
this.Controls.Add(this.pnlMapa);
this.Margin = new System.Windows.Forms.Padding(2);
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.Name = "frmMapa";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Mapas";
@ -104,5 +129,7 @@ namespace AgroBase.Forms
private System.Windows.Forms.Panel pnlBotoes;
private System.Windows.Forms.Label lblMapa;
private System.Windows.Forms.Button btnCarregar;
private System.Windows.Forms.Button btnCalcularPontos;
private System.Windows.Forms.Button btnCalcular;
}
}

View File

@ -21,6 +21,8 @@ namespace AgroBase.Forms
{
private MapasModel Mapa;
List<GPSModel> Pontos = new List<GPSModel>();
public frmMapa()
{
InitializeComponent();
@ -40,5 +42,25 @@ namespace AgroBase.Forms
Mapa.btnCarregar_Click(sender, e);
}
private void btnCalcularPontos_Click(object sender, EventArgs e)
{
GPSModel P1 = new GPSModel()
{
Latitude = GPSService.UltimaLeitura.Latitude,
Longitude = GPSService.UltimaLeitura.Longitude,
DataHora = DateTime.Now,
};
Pontos.Add(P1);
MessageBox.Show("Ponto " + Pontos.Count() + " Registrado!");
}
private void btnCalcular_Click(object sender, EventArgs e)
{
double distancia = GPSService.DistanciaDoTrecho(Pontos);
double orientacao = GPSService.CalcularOrientacao(Pontos[0], Pontos[Pontos.Count() - 1]);
MessageBox.Show("Distancia: " + distancia.ToString("0.00") + ", Orientacao: " + orientacao.ToString("0.00"));
Pontos = new List<GPSModel>();
}
}
}

View File

@ -227,7 +227,7 @@ namespace AgroBase.Forms
Pinout.ExpansorGPIO = chbMCP1.Checked;
Pinout.EnderecoExpansor = txtMCP1.Text;
PinoutModel.SalvarPinout(Pinout, "pinout" + Enum.GetName(typeof(T_Code), TipoDisp) + ".pin");
PinoutModel.SalvarPinout(Pinout, Variaveis.CaminhoParametros + "pinout" + Enum.GetName(typeof(T_Code), TipoDisp) + ".pin");
switch (TipoDisp)
{
@ -289,6 +289,7 @@ namespace AgroBase.Forms
foreach (var cmb in cmbs)
{
cmb.Visible = Pinout.Pinos.Any(x => x.Descricao == cmb.Name.Replace("cmb", ""));
cmb.Enabled = cmb.Visible ? Pinout.Pinos.First(x => x.Descricao == cmb.Name.Replace("cmb", "")).Habilitado : false;
}
cbTipo.SelectedIndex = (int)TipoControlador;

View File

@ -59,11 +59,12 @@ namespace AgroBase.Models.Modules
FuncoesPinout.PUL,
FuncoesPinout.DIR,
FuncoesPinout.ENA,
FuncoesPinout.EncoderA,
/*FuncoesPinout.EncoderA,
FuncoesPinout.EncoderB,
FuncoesPinout.REF000,
FuncoesPinout.REF090,
FuncoesPinout.REF270,
FuncoesPinout.REF270,*/
FuncoesPinout.EncoderAbsoluto
}
},
new DirSensoriamentoMotor() {
@ -80,11 +81,12 @@ namespace AgroBase.Models.Modules
FuncoesPinout.PUL,
FuncoesPinout.DIR,
FuncoesPinout.ENA,
FuncoesPinout.EncoderA,
/*FuncoesPinout.EncoderA,
FuncoesPinout.EncoderB,
FuncoesPinout.REF000,
FuncoesPinout.REF090,
FuncoesPinout.REF270,
FuncoesPinout.REF270,*/
FuncoesPinout.EncoderAbsoluto
}
},
new DirSensoriamentoMotor() {
@ -101,11 +103,12 @@ namespace AgroBase.Models.Modules
FuncoesPinout.PUL,
FuncoesPinout.DIR,
FuncoesPinout.ENA,
FuncoesPinout.EncoderA,
/*FuncoesPinout.EncoderA,
FuncoesPinout.EncoderB,
FuncoesPinout.REF000,
FuncoesPinout.REF090,
FuncoesPinout.REF270,
FuncoesPinout.REF270,*/
FuncoesPinout.EncoderAbsoluto
}
},
new DirSensoriamentoMotor() {
@ -122,11 +125,12 @@ namespace AgroBase.Models.Modules
FuncoesPinout.PUL,
FuncoesPinout.DIR,
FuncoesPinout.ENA,
FuncoesPinout.EncoderA,
/*FuncoesPinout.EncoderA,
FuncoesPinout.EncoderB,
FuncoesPinout.REF000,
FuncoesPinout.REF090,
FuncoesPinout.REF270,
FuncoesPinout.REF270,*/
FuncoesPinout.EncoderAbsoluto
}
}
}
@ -137,15 +141,15 @@ namespace AgroBase.Models.Modules
public List<string> ProtocoloConfiguracao(bool Conectar)
{
List<string> Config = Motores.Select(x => x.ProtocoloConfiguracaoMotor(Conectar)).ToList();
string ProtocoloMOD =
string ProtocoloMOD =
((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
"MD" + SerialService.SplitParams +
"MD" + SerialService.SplitParams +
(Conectar ? "1" : "0") + SerialService.SplitParams +
_TaxaAmostragem.ToString("00000") + SerialService.SplitParams +
(AA_Ref000 ? "1" : "0") + SerialService.SplitParams +
(AA_Ref090 ? "1" : "0") + SerialService.SplitParams +
(AA_Ref270 ? "1" : "0") + SerialService.SplitParams +
PinoutModel.PinoProtocolo(Pinout, Funcoes);
_TaxaAmostragem.ToString("00000"); // + SerialService.SplitParams +
//(AA_Ref000 ? "1" : "0") + SerialService.SplitParams +
//(AA_Ref090 ? "1" : "0") + SerialService.SplitParams +
//(AA_Ref270 ? "1" : "0") + SerialService.SplitParams +
//PinoutModel.PinoProtocolo(Pinout, Funcoes);
Config.Add(ProtocoloMOD);
return Config;
}
@ -181,12 +185,15 @@ namespace AgroBase.Models.Modules
int _angulo = 0;
int.TryParse(Dados[3].ToString(), out _angulo);
Motor.Angulo = _angulo;
Motor.Ref000 = Dados[4] == "1";
/*Motor.Ref000 = Dados[4] == "1";
Motor.Ref090 = Dados[5] == "1";
Motor.Ref270 = Dados[6] == "1";
bool r1 = Dados[7] == "1";
bool r2 = Dados[8] == "1";
bool r2 = Dados[8] == "1";*/
bool r1 = Dados[4] == "1";
bool r2 = Dados[5] == "1";
Motor.Referenciando = r1;
Motor.Referenciado = r2;

View File

@ -357,6 +357,7 @@ namespace AgroBase.Models.Modules
Sinaleiro,
ServoX,
ServoY,
EncoderAbsoluto
}
public static class PinoutUtils

View File

@ -17,6 +17,7 @@ namespace AgroBase.Models
public static string CaminhoLogsDispositivos { get; } = "Logs/";
public static string CaminhoOperacoes { get; } = "Operacoes/";
public static string CaminhoMapasConvertidos { get; } = "Mapas/";
public static string CaminhoParametros { get; } = "Parametros/";
public static List<IDispositivosService> DispositivosConectados { get; set; } = new List<IDispositivosService>();
public static OperacaoModel OperacaoEmAndamento { get; set; } = new OperacaoModel(ModoOperacao.Manual);
public static MqttService MqttService { get; set; } = new MqttService("localhost", 1883);

View File

@ -226,27 +226,27 @@ namespace AgroBase.Comum
frmConfig = new frmMovConfig();
Dados.IniciarRegistrador();
MovimentacaoModel.Pinout = PinoutModel.CarregarPinout("pinout" + Enum.GetName(typeof(T_Code), Dispositivo) + ".pin");
MovimentacaoModel.Pinout = PinoutModel.CarregarPinout(Variaveis.CaminhoParametros + "pinout" + Enum.GetName(typeof(T_Code), Dispositivo) + ".pin");
break;
case T_Code.Dir:
Dados = CarregarParametros(DirecionalModel.CarregarParametrosIniciais());
frmPlot = new frmDirPlot();
frmConfig = new frmDirConfig();
DirecionalModel.Pinout = PinoutModel.CarregarPinout("pinout" + Enum.GetName(typeof(T_Code), Dispositivo) + ".pin");
DirecionalModel.Pinout = PinoutModel.CarregarPinout(Variaveis.CaminhoParametros + "pinout" + Enum.GetName(typeof(T_Code), Dispositivo) + ".pin");
break;
case T_Code.Sen:
Dados = CarregarParametros(SensoriamentoModel.CarregarParametrosIniciais());
frmConfig = new frmSenConfig();
((frmSenConfig)frmConfig).Dispositivo = T_Code.Sen;
SensoriamentoModel.Pinout = PinoutModel.CarregarPinout("pinout" + Enum.GetName(typeof(T_Code), Dispositivo) + ".pin");
SensoriamentoModel.Pinout = PinoutModel.CarregarPinout(Variaveis.CaminhoParametros + "pinout" + Enum.GetName(typeof(T_Code), Dispositivo) + ".pin");
break;
case T_Code.Atu:
Dados = CarregarParametros(AtuadorModel.CarregarParametrosIniciais());
frmConfig = new frmAtuConfig();
AtuadorModel.Pinout = PinoutModel.CarregarPinout("pinout" + Enum.GetName(typeof(T_Code), Dispositivo) + ".pin");
AtuadorModel.Pinout = PinoutModel.CarregarPinout(Variaveis.CaminhoParametros + "pinout" + Enum.GetName(typeof(T_Code), Dispositivo) + ".pin");
break;
default:
Dados = default(T);
@ -878,7 +878,7 @@ namespace AgroBase.Comum
public T CarregarParametros(object empty)
{
string nomeArquivo = "parameters" + Enum.GetName(typeof(T_Code), Dispositivo) + ".par";
string nomeArquivo = Variaveis.CaminhoParametros + "parameters" + Enum.GetName(typeof(T_Code), Dispositivo) + ".par";
if (!File.Exists(nomeArquivo))
{
var newConfig = empty;
@ -891,7 +891,7 @@ namespace AgroBase.Comum
public void SalvarParametros(DispositivoBaseModel newConfig)
{
File.WriteAllText("parameters" + Enum.GetName(typeof(T_Code), Dispositivo) + ".par", JsonConvert.SerializeObject(newConfig));
File.WriteAllText(Variaveis.CaminhoParametros + "parameters" + Enum.GetName(typeof(T_Code), Dispositivo) + ".par", JsonConvert.SerializeObject(newConfig));
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
[{"Momento":"2024-05-07T10:02:45.703269-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":70.198321038788436,"AnguloCarroBussola":0.0,"AnguloCarro":70.198321038788436,"SonarFrontal":null},{"Momento":"2024-05-07T10:02:50.6463898-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.96761566228770768],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":137.20698509575618,"AnguloCarroBussola":0.0,"AnguloCarro":137.20698509575618,"SonarFrontal":null},{"Momento":"2024-05-07T10:02:55.7457575-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[2.6799472775081847],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":221.57973754411964,"AnguloCarroBussola":0.0,"AnguloCarro":221.57973754411964,"SonarFrontal":null},{"Momento":"2024-05-07T10:03:00.7233267-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[7.139992887194702],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":226.02195642068034,"AnguloCarroBussola":0.0,"AnguloCarro":226.02195642068034,"SonarFrontal":null},{"Momento":"2024-05-07T10:03:04.5337717-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[9.1534782519544127],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":269.99999983127896,"AnguloCarroBussola":0.0,"AnguloCarro":269.99999983127896,"SonarFrontal":null}]

View File

@ -0,0 +1 @@
[{"Latitude":-22.2131595,"Longitude":-47.38154766666667,"DataHora":"2024-05-07T10:02:26","Altitude":619.0,"Velocidade":0.16853200000000002,"NumeroSatelites":6,"PrecisaoHorizontal":1.44,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213163,"Longitude":-47.381549833333331,"DataHora":"2024-05-07T10:02:27","Altitude":619.3,"Velocidade":0.192608,"NumeroSatelites":6,"PrecisaoHorizontal":1.44,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213166166666667,"Longitude":-47.3815515,"DataHora":"2024-05-07T10:02:28","Altitude":619.9,"Velocidade":0.272244,"NumeroSatelites":6,"PrecisaoHorizontal":1.44,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213167,"Longitude":-47.381550666666669,"DataHora":"2024-05-07T10:02:29","Altitude":620.3,"Velocidade":0.387068,"NumeroSatelites":6,"PrecisaoHorizontal":1.44,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213166,"Longitude":-47.381548833333333,"DataHora":"2024-05-07T10:02:30","Altitude":620.6,"Velocidade":0.70931600000000006,"NumeroSatelites":6,"PrecisaoHorizontal":1.44,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213167833333333,"Longitude":-47.381551,"DataHora":"2024-05-07T10:02:31","Altitude":620.6,"Velocidade":0.49818800000000008,"NumeroSatelites":7,"PrecisaoHorizontal":1.29,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213175833333334,"Longitude":-47.381558666666663,"DataHora":"2024-05-07T10:02:32","Altitude":621.8,"Velocidade":0.533376,"NumeroSatelites":8,"PrecisaoHorizontal":1.11,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213184833333333,"Longitude":-47.381569666666664,"DataHora":"2024-05-07T10:02:33","Altitude":623.4,"Velocidade":0.692648,"NumeroSatelites":7,"PrecisaoHorizontal":1.11,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213190833333332,"Longitude":-47.381578833333336,"DataHora":"2024-05-07T10:02:34","Altitude":625.9,"Velocidade":1.113052,"NumeroSatelites":6,"PrecisaoHorizontal":3.03,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213202,"Longitude":-47.381591333333333,"DataHora":"2024-05-07T10:02:35","Altitude":628.7,"Velocidade":1.011192,"NumeroSatelites":5,"PrecisaoHorizontal":3.56,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213212833333333,"Longitude":-47.381605,"DataHora":"2024-05-07T10:02:36","Altitude":631.2,"Velocidade":1.5279,"NumeroSatelites":5,"PrecisaoHorizontal":3.56,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213213,"Longitude":-47.381605333333333,"DataHora":"2024-05-07T10:02:37","Altitude":631.1,"Velocidade":1.153796,"NumeroSatelites":4,"PrecisaoHorizontal":4.79,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213213,"Longitude":-47.3816065,"DataHora":"2024-05-07T10:02:38","Altitude":631.2,"Velocidade":0.80191600000000007,"NumeroSatelites":4,"PrecisaoHorizontal":4.78,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0}]

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 @@
{"Conectado":false,"AA_Ref000":false,"AA_Ref090":false,"AA_Ref270":false,"Motores":[{"Canal":0,"ID":"ET","Descricao":"Esquerdo Trás","Comandar":true,"Inicializado":false,"Sentido_SP":0,"Sentido":0,"Angulo_SP":0.0,"Angulo":0.0,"Angulo_Offset":0.0,"Velocidade":50,"Ref000":false,"Ref090":false,"Ref180":false,"Ref270":false,"Referenciando":false,"Referenciado":false,"Controlar":true,"Estabilizar":false,"Referenciar":false,"Livre":false,"ConfigSentidos":{"Frente":0,"Tras":0,"Esquerda":1,"Direita":2,"Parado":0},"Testando":false,"LogTestes":[],"LogGrafico":[],"Funcoes":[13,9,14,41]},{"Canal":1,"ID":"EF","Descricao":"Esquerdo Frente","Comandar":true,"Inicializado":false,"Sentido_SP":0,"Sentido":0,"Angulo_SP":0.0,"Angulo":0.0,"Angulo_Offset":0.0,"Velocidade":50,"Ref000":false,"Ref090":false,"Ref180":false,"Ref270":false,"Referenciando":false,"Referenciado":false,"Controlar":true,"Estabilizar":true,"Referenciar":false,"Livre":false,"ConfigSentidos":{"Frente":0,"Tras":0,"Esquerda":1,"Direita":2,"Parado":0},"Testando":false,"LogTestes":[],"LogGrafico":[],"Funcoes":[13,9,14,41]},{"Canal":2,"ID":"DT","Descricao":"Direito Trás","Comandar":true,"Inicializado":false,"Sentido_SP":0,"Sentido":0,"Angulo_SP":0.0,"Angulo":0.0,"Angulo_Offset":0.0,"Velocidade":50,"Ref000":false,"Ref090":false,"Ref180":false,"Ref270":false,"Referenciando":false,"Referenciado":false,"Controlar":true,"Estabilizar":true,"Referenciar":false,"Livre":false,"ConfigSentidos":{"Frente":0,"Tras":0,"Esquerda":2,"Direita":1,"Parado":0},"Testando":false,"LogTestes":[],"LogGrafico":[],"Funcoes":[13,9,14,41]},{"Canal":3,"ID":"DF","Descricao":"Direito Frente","Comandar":true,"Inicializado":false,"Sentido_SP":0,"Sentido":0,"Angulo_SP":0.0,"Angulo":0.0,"Angulo_Offset":0.0,"Velocidade":50,"Ref000":false,"Ref090":false,"Ref180":false,"Ref270":false,"Referenciando":false,"Referenciado":false,"Controlar":true,"Estabilizar":true,"Referenciar":false,"Livre":false,"ConfigSentidos":{"Frente":0,"Tras":0,"Esquerda":1,"Direita":2,"Parado":0},"Testando":false,"LogTestes":[],"LogGrafico":[],"Funcoes":[13,9,14,41]}]}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"ExpansorGPIO":false,"EnderecoExpansor":"","Pinos":[{"Controlador":1,"Barramento":0,"Pino":99,"Descricao":"1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":98,"Descricao":"2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":36,"Descricao":"3","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":39,"Descricao":"4","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":34,"Descricao":"5","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":35,"Descricao":"6","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":32,"Descricao":"7","Funcao":12,"Habilitado":true,"ComponenteID":"TMVET"},{"Controlador":1,"Barramento":0,"Pino":33,"Descricao":"8","Funcao":12,"Habilitado":true,"ComponenteID":"TMVEF"},{"Controlador":1,"Barramento":0,"Pino":25,"Descricao":"9","Funcao":12,"Habilitado":true,"ComponenteID":"TMVDT"},{"Controlador":1,"Barramento":0,"Pino":26,"Descricao":"10","Funcao":12,"Habilitado":true,"ComponenteID":"TMVDF"},{"Controlador":1,"Barramento":0,"Pino":27,"Descricao":"11","Funcao":38,"Habilitado":true,"ComponenteID":"LEDMN"},{"Controlador":1,"Barramento":0,"Pino":14,"Descricao":"12","Funcao":38,"Habilitado":true,"ComponenteID":"LEDAT"},{"Controlador":1,"Barramento":0,"Pino":12,"Descricao":"13","Funcao":38,"Habilitado":true,"ComponenteID":"LEDOP"},{"Controlador":1,"Barramento":0,"Pino":97,"Descricao":"14","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":13,"Descricao":"15","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":9,"Descricao":"16","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":10,"Descricao":"17","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":11,"Descricao":"18","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":96,"Descricao":"19","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":6,"Descricao":"26","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":7,"Descricao":"27","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":8,"Descricao":"28","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":15,"Descricao":"29","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":2,"Descricao":"30","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":0,"Descricao":"31","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":4,"Descricao":"32","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":16,"Descricao":"33","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":17,"Descricao":"34","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":5,"Descricao":"35","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":18,"Descricao":"36","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":19,"Descricao":"37","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":95,"Descricao":"38","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":21,"Descricao":"39","Funcao":33,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":3,"Descricao":"40","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":1,"Descricao":"41","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":22,"Descricao":"42","Funcao":34,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":23,"Descricao":"43","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":94,"Descricao":"44","Funcao":0,"Habilitado":false,"ComponenteID":""}]}

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_485de4fe4992e7b597d3f52d56de1299 {
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_485de4fe4992e7b597d3f52d56de1299" ></div>
</body>
<script>
var map_6227825fcfe3138a1083ba65f3196abb = L.map(
"map_6227825fcfe3138a1083ba65f3196abb",
var map_485de4fe4992e7b597d3f52d56de1299 = L.map(
"map_485de4fe4992e7b597d3f52d56de1299",
{
center: [0.0, 0.0],
crs: L.CRS.EPSG3857,
@ -59,15 +59,6 @@
var tile_layer_8562fa9f4e23ecf0bdee06bb23fe1d3f = 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);
</script>
<script>
@ -87,7 +78,7 @@
}
trajeto_json_add({"features": []});
trajeto_json.addTo(map_6227825fcfe3138a1083ba65f3196abb);
trajeto_json.addTo(map_485de4fe4992e7b597d3f52d56de1299);
function adicionarGeometria(novaGeometria) {
trajeto_json.addData(novaGeometria);
@ -145,7 +136,7 @@
var marcadorDinamico = L.marker([0, 0], {
icon: customIcon
}).addTo(map_6227825fcfe3138a1083ba65f3196abb);
}).addTo(map_485de4fe4992e7b597d3f52d56de1299);
// Conectar ao broker MQTT
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura
@ -184,7 +175,7 @@
marcadorDinamico.setRotationAngle(angulo);
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
map_6227825fcfe3138a1083ba65f3196abb.setView(novaPosicao, map_6227825fcfe3138a1083ba65f3196abb.getZoom());
map_485de4fe4992e7b597d3f52d56de1299.setView(novaPosicao, map_485de4fe4992e7b597d3f52d56de1299.getZoom());
});
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
{"ExpansorGPIO":false,"EnderecoExpansor":"","Pinos":[{"Controlador":0,"Barramento":0,"Pino":99,"Descricao":"1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":98,"Descricao":"2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":97,"Descricao":"3","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":4,"Descricao":"4","Funcao":12,"Habilitado":true,"ComponenteID":"TMVDT"},{"Controlador":0,"Barramento":0,"Pino":5,"Descricao":"5","Funcao":12,"Habilitado":true,"ComponenteID":"TMVDF"},{"Controlador":0,"Barramento":0,"Pino":6,"Descricao":"6","Funcao":12,"Habilitado":true,"ComponenteID":"TMVEF"},{"Controlador":0,"Barramento":0,"Pino":7,"Descricao":"7","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":15,"Descricao":"8","Funcao":12,"Habilitado":true,"ComponenteID":"TMVET"},{"Controlador":0,"Barramento":0,"Pino":16,"Descricao":"9","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":17,"Descricao":"10","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":18,"Descricao":"11","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":8,"Descricao":"12","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":3,"Descricao":"13","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":46,"Descricao":"14","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":9,"Descricao":"15","Funcao":38,"Habilitado":true,"ComponenteID":"LEDOP"},{"Controlador":0,"Barramento":0,"Pino":10,"Descricao":"16","Funcao":38,"Habilitado":true,"ComponenteID":"LEDAT"},{"Controlador":0,"Barramento":0,"Pino":11,"Descricao":"17","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":12,"Descricao":"18","Funcao":38,"Habilitado":true,"ComponenteID":"LEDMN"},{"Controlador":0,"Barramento":0,"Pino":13,"Descricao":"19","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":14,"Descricao":"20","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":96,"Descricao":"21","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":95,"Descricao":"22","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":94,"Descricao":"23","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":93,"Descricao":"24","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":19,"Descricao":"25","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":20,"Descricao":"26","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":21,"Descricao":"27","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":47,"Descricao":"28","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":48,"Descricao":"29","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":45,"Descricao":"30","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":0,"Descricao":"31","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":35,"Descricao":"32","Funcao":40,"Habilitado":true,"ComponenteID":"SNR_F"},{"Controlador":0,"Barramento":0,"Pino":36,"Descricao":"33","Funcao":39,"Habilitado":true,"ComponenteID":"SNR_F"},{"Controlador":0,"Barramento":0,"Pino":37,"Descricao":"34","Funcao":30,"Habilitado":true,"ComponenteID":"SNR_F"},{"Controlador":0,"Barramento":0,"Pino":38,"Descricao":"35","Funcao":31,"Habilitado":true,"ComponenteID":"SNR_F"},{"Controlador":0,"Barramento":0,"Pino":39,"Descricao":"36","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":40,"Descricao":"37","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":41,"Descricao":"38","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":42,"Descricao":"39","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":2,"Descricao":"40","Funcao":34,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":1,"Descricao":"41","Funcao":33,"Habilitado":true,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":44,"Descricao":"42","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":43,"Descricao":"43","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":0,"Barramento":0,"Pino":92,"Descricao":"44","Funcao":0,"Habilitado":false,"ComponenteID":""}]}

View File

@ -441,4 +441,4 @@ C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Models\deeplabv3pl
C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\Debug\AgroBase.exe.config
C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\Debug\AgroBase.exe
C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\Debug\AgroBase.pdb
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.CopyComplete
C:\ZendionINC\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.Up2Date

View File

@ -345,13 +345,13 @@ class Motor {
}
if (_pinoRef000.Definido()) {
Ag0 = _Ag0;
Ag0 = _Ag0;
}
if (_pinoRef090.Definido()) {
Ag90 = _Ag90;
Ag90 = _Ag90;
}
if (_pinoRef270.Definido()) {
Ag270 = _Ag270;
Ag270 = _Ag270;
}
}

View File

@ -0,0 +1,8 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
"version": "0.2.0",
"configurations": [
]
}

View File

@ -0,0 +1,362 @@
// Dispositivo: Direcional
// Versão Firmware: 8
// Ultima atualização: 09/05/2024
// Atualização: Inclusão do encoder magnético de posição absoluta
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\SerialService.h"
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\Pinout.h"
#define D_Code Dir
#define VERSION 8
#define _pinoLED RGB_BUILTIN
long _baudRate = 115200;
bool Conectado = false;
int _TaxaAmostragem;
int FrequenciaMaxima = 10000;
double _Margem = 0.5;
int dutyCycle = 512;
double _frequencia = 4000;
PinoModel _pinoGeral;
class Motor {
public:
// Construtor
Motor(String desc) {
_ID = desc;
}
// Definições
String _ID;
int _canal;
PinoModel _pinoENA;
PinoModel _pinoDIR;
PinoModel _pinoPUL;
PinoModel _pinoEncoder;
bool Iniciado = false;
bool Testando = false;
bool Referenciando = false;
// Consumo
double _Angulo;
Sentido _Sentido;
// Entrada de dados
double _Angulo_SP;
double _Angulo_Offset = 0;
Sentido _Sentido_SP = Parado;
bool _MotorLigado = false;
bool _Estabilizar = true;
bool _Referenciar = true;
bool Referenciado = false;
int RefMax = 90;
int RefMin = -90;
void Inicializar() {
if (Iniciado) {
EnviarDadosSerial(_ID + " ja inicializado");
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
return;
}
if (_pinoPUL.Definido()) {
AtualizarPWM();
}
_pinoENA.Conectar(true);
_pinoDIR.Conectar(false);
_pinoEncoder.Conectar();
xTaskCreatePinnedToCore(&Motor::RampaTaskWrapper, "RampaTask", 5000, this, 20 - _canal, &RampaTaskHandle, tskNO_AFFINITY);
ResetRef(_Referenciar);
EnviarDadosSerial(_ID + " Iniciado");
Iniciado = true;
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
}
void ResetRef(bool _Ref) {
_Sentido_SP = Parado;
_Sentido = Parado;
Referenciado = !_Ref;
Referenciando = _Ref;
_MotorLigado = _Ref;
}
void AtualizarPWM() {
ledcSetup(_canal, _frequencia, 10);
ledcAttachPin(_pinoPUL.num, _canal);
ledcWrite(_canal, dutyCycle);
}
void Desligar() {
if (!Iniciado) {
EnviarDadosSerial(_ID + " nao esta inicializado");
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
return;
}
// Parar a execução das tarefas
vTaskDelete(RampaTaskHandle);
// Redefinir as configurações para os valores iniciais
_pinoENA.Desconectar();
_pinoDIR.Desconectar();
_pinoPUL.Desconectar();
_pinoEncoder.Desconectar();
EnviarDadosSerial(_ID + " Desligado");
Iniciado = false;
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
}
void Testar() {
Testando = true;
Testando = false;
}
private:
TaskHandle_t RampaTaskHandle = NULL;
static void RampaTaskWrapper(void *pvParameters) {
Motor *motor = static_cast<Motor*>(pvParameters);
motor->RampaTask();
}
void RampaTask() {
unsigned long previousMillisRampa = millis();
while (true) { // Loop infinito mais claro
// Verifica a conexão antes de prosseguir
if (!Conectado) {
// Espera por 1 segundo para reduzir o uso da CPU se não estiver conectado
vTaskDelay(1000 / portTICK_PERIOD_MS);
continue; // Pula para a próxima iteração do loop
}
// Executa as funções de controle e monitoramento do motor
AferirPosicao();
if (Referenciando) {
ReferenciarMotor();
} else {
VerificarAnguloSP();
}
Atualizar();
// Envia dados via serial em intervalos definidos por _TaxaAmostragem
if (millis() - previousMillisRampa >= _TaxaAmostragem) {
previousMillisRampa = millis(); // Atualiza o tempo para o próximo envio
EnviarDadosSerial(MontarProtocoloSensor(sENC, _ID, MontarDadosProtocoloEncoderAbsoluto(_Sentido, _Angulo, Referenciando, Referenciado)));
}
// Libera a CPU para outras tarefas por um curto período
vTaskDelay(1 / portTICK_PERIOD_MS); // Torna o delay mais explícito e ajustado ao tick do sistema
}
}
void Atualizar() {
_pinoENA.set(!_MotorLigado);
_pinoDIR.set(_Sentido_SP != Horario);
}
void AferirPosicao() {
if (_pinoEncoder.Definido()) {
// Lê o valor analógico do pino conectado à saída analógica do AS5600
int sensorValue = _pinoEncoder.get();
// Converte a leitura para ângulo (0V a 3.3V corresponde a 0 a 360 graus)
double _angulo = (sensorValue / 4095.0) * 360.0;
// Ajusta o ângulo com o offset
double angulo_com_offset = _angulo - _Angulo_Offset; // Considerando que o offset pode ser positivo ou negativo
// Normaliza o ângulo para o intervalo de -180 a 180 graus
while (angulo_com_offset > 180) angulo_com_offset -= 360;
while (angulo_com_offset < -180) angulo_com_offset += 360;
_Angulo = angulo_com_offset;
}
}
void VerificarAnguloSP() {
if (_MotorLigado) {
if (_Angulo_SP > -1) {
if (_Sentido_SP == Horario && _Angulo >= _Angulo_SP) {
_MotorLigado = false;
}
else if (_Sentido_SP == Antihorario && _Angulo <= (_Angulo_SP * -1)) {
_MotorLigado = false;
}
}
else {
if (Referenciado && (_Sentido_SP == Horario && _Angulo >= RefMax)) {
_MotorLigado = false;
}
else if (Referenciado && (_Sentido_SP == Antihorario && _Angulo <= RefMin)) {
_MotorLigado = false;
}
}
}
else {
if (_Estabilizar && _Sentido_SP == Parado && _Angulo != _Angulo_SP) {
_Sentido_SP = _Angulo > _Angulo_SP ? Antihorario : Horario;
_MotorLigado = true;
}
}
}
void ReferenciarMotor() {
_Angulo_SP = 0;
Referenciado = false;
if (Referenciando && (_Angulo >= -_Margem && _Angulo <= _Margem)) {
Referenciando = false;
Referenciado = true;
_MotorLigado = false;
}
else {
_Sentido_SP = (_Angulo < 0) ? Horario : Antihorario;
}
}
};
Motor M1("ET");
Motor M2("EF");
Motor M3("DT");
Motor M4("DF");
Motor* MotorPorID(String ID) {
Motor* _motor =
ID == "ET" ? &M1 :
ID == "EF" ? &M2 :
ID == "DT" ? &M3 :
ID == "DF" ? &M4 :
nullptr;
return _motor;
}
void setup() {
Serial.begin(_baudRate);
//iniciarMCP(D_Code, 8, 18, 0x20, false);
}
void loop() {
std::vector<ProtocoloSerial> protocolos = LerBufferSerialFila();
for (int i = 0; i < protocolos.size(); i++) {
ProcessarProtocolo(protocolos[i].protocolo, protocolos[i].funcao, protocolos[i].idMensagem);
}
}
void ProcessarProtocolo(String Protocolo, F_Code _funcao, int idMensagem) {
if (_funcao == Chk) {
EnviarDadosSerial(MontarProtocoloVerificacao(D_Code, VERSION));
}
else if (_funcao == Cfg) {
std::vector<String> Partes = SplitString(Protocolo, (char*)",");
String ID = Partes[0];
bool Conectar = Partes[1] == "1";
if (ID == "MD") {
_TaxaAmostragem = Partes[2].toInt();
EnviarDadosSerial(MontarProtocoloSensor(sCFG, "MD", Conectar ? "1" : "0"));
vTaskDelay(pdMS_TO_TICKS(100));
Conectado = Conectar;
}
else {
Motor* _motor = MotorPorID(ID);
int canal = Partes[2].toInt();
bool motor_ativado = Partes[3] == "1";
bool estabilizar = Partes[4] == "1";
bool referenciar = Partes[5] == "1";
int _offset = Partes[6].toInt();
TiposBarramentos pulB = (TiposBarramentos)Partes[7].toInt();
int pul = Partes[8].toInt();
TiposBarramentos dirB = (TiposBarramentos)Partes[9].toInt();
int dir = Partes[10].toInt();
TiposBarramentos enaB = (TiposBarramentos)Partes[11].toInt();
int ena = Partes[12].toInt();
TiposBarramentos encB = (TiposBarramentos)Partes[13].toInt();
int encoder = Partes[14].toInt();
if (motor_ativado) {
if (Conectar) {
_motor->_canal = canal;
_motor->_Estabilizar = estabilizar;
_motor->_Referenciar = referenciar;
_motor->_Angulo_Offset = _offset;
_motor->_pinoPUL = PinoModel(pul, pulB, _PWM);
_motor->_pinoDIR = PinoModel(dir, dirB, _OUTPUT);
_motor->_pinoENA = PinoModel(ena, enaB, _OUTPUT);
_motor->_pinoEncoder = PinoModel(encoder, encB, _INPUT, ANALOGICO);
_motor->Inicializar();
}
else {
_motor->Desligar();
}
vTaskDelay(500);
}
}
}
else if (_funcao == Cmd) {
std::vector<String> Partes = SplitString(Protocolo, (char*)",");
String ID = Partes[0];
Motor* _motor = MotorPorID(ID);
Sentido sentido = (Sentido)Partes[1].toInt();
int angulo = Partes[2].toInt();
int porcentagem = Partes[3].toInt();
double frequencia = (porcentagem / 100.0) * FrequenciaMaxima;
bool referenciar = Partes[4] == "1";
int _offset = Partes[5].toInt();
_frequencia = frequencia;
_motor->_Sentido_SP = sentido;
_motor->_Angulo_SP = angulo;
_motor->_Angulo_Offset = _offset;
_motor->AtualizarPWM();
if (referenciar) {
_motor->ResetRef(referenciar);
}
else {
_motor->_MotorLigado = sentido != Parado;
}
}
else if (_funcao == Tst) {
std::vector<String> Partes = SplitString(Protocolo, (char*)",");
String ID = Partes[0];
Motor* _motor = MotorPorID(ID);
bool EmTeste = _motor->Testando;
if (!EmTeste) {
_motor->Testar();
}
}
EnviarDadosSerial(MontarProtocoloMensagemRecebida(idMensagem));
}

View File

@ -0,0 +1,8 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
"version": "0.2.0",
"configurations": [
]
}

View File

@ -178,6 +178,15 @@ String MontarDadosProtocoloEncoder(Sentido sentido, int angulo, bool ref0, bool
return Protocolo;
}
String MontarDadosProtocoloEncoderAbsoluto(Sentido sentido, int angulo, bool referenciando, bool referenciado) {
String Protocolo =
(String)sentido + ";" +
(String)angulo + ";" +
(referenciando ? "1" : "0") + ";" +
(referenciado ? "1" : "0");
return Protocolo;
}
String MontarDadosProtocoloBicoPulverizador(bool statusBico) {
String Protocolo =
String(statusBico ? "1" : "0");

View File

@ -26,8 +26,8 @@ bool Conectado = false;
int _TaxaAmostragem;
int FrequenciaMaxima = 10000;
int _pinoSDA = 1;
int _pinoSCL = 2;
int _pinoSDA = 21;
int _pinoSCL = 22;
class SensorTemperatura {