From 17f3f0a680cf658750be9ca50eda412dcaef0c93 Mon Sep 17 00:00:00 2001 From: tutvictor404 <112187097+tutvictor404@users.noreply.github.com> Date: Mon, 31 Mar 2025 12:07:12 -0400 Subject: [PATCH] Add files via upload Addition of dash code and S2C module code --- dash/dash.ino | 275 ++++++++++++++++++++++++++++++++++++++++++++++ my_S2C/my_S2C.ino | 194 ++++++++++++++++++++++++++++++++ 2 files changed, 469 insertions(+) create mode 100644 dash/dash.ino create mode 100644 my_S2C/my_S2C.ino diff --git a/dash/dash.ino b/dash/dash.ino new file mode 100644 index 0000000..9a8aac0 --- /dev/null +++ b/dash/dash.ino @@ -0,0 +1,275 @@ +//July 20, 2023: Added Nextion code to show most of the information on the dash except for Throttle, RPM, and AC Current +#include +#include +#include +#include + + +//#include "EasyNextionLibrary.h" +#include +FlexCAN_T4 Can0; +CAN_message_t msg; + +//EasyNex myNex(Serial1); +int pageNum = 0; +boolean inCanSniff = true; + +#define NUM_TX_MAILBOXES 2 +#define NUM_RX_MAILBOXES 8 + +int Pack_Current; +int Pack_Inst_Vol; +int Pack_Inst_Vol_Pt2; +int Pack_SOC; +int Relay_State; +int Pack_DCL; +int High_Temp; +int Low_Temp; +int ERPM_Pt1; +int ERPM_Pt2; +int acCurrent_Pt1; +int acCurrent_Pt2; +int cellTemp_Pt1; +int cellTemp_Pt2; + + +void setup(void) { +//myNex.begin(9600); + pinMode(LED_BUILTIN, OUTPUT); + Serial.begin(115200); delay(400); //9600 baud should theoretically also work + Can0.begin(); + Can0.setBaudRate(500000); //500 000 baud rate of our can + Can0.setMaxMB(NUM_TX_MAILBOXES + NUM_RX_MAILBOXES); + for (int i = 0; i +#include +#include "Arduino.h" +#include "FlexCAN_T4.h" +#include + +#define IR1 0x3A // Update to 0x5A // Tire Inside +#define IR2 0x5B // Tire Middle +#define IR3 0x5C // Tire Outside +#define IR4 0x5D // Brake Temperature + +Adafruit_MLX90614 mlx; +FlexCAN_T4 can0; + +int inside_tire_temp = 0; +int middle_tire_temp = 0; +int outside_tire_temp = 0; +int brake_temp = 0; + +int wheel_freq = 0; + +CAN_message_t msg; +double sum=0; +int count=0; + +void setup() { + Serial.begin(9600); + + FreqMeasure.begin(); + + Serial.println("Starting S2C Module"); + + mlx.begin(); + + FreqMeasure.begin(); + + can0.begin(); + can0.setBaudRate(500000); + can0.enableFIFO(); + can0.enableMBInterrupt(FIFO); + // can0.onReceive(FIFO, canSniff); + delay(500); + //Serial.println("CAN setup finished"); + can0.setMB(MB0,TX,EXT); + + msg.len = 8; + msg.flags.extended = 1; + + msg.id = 0x0010; // SET THE ACTUAL VALUES FOR EACH MODULE + + msg.buf[0] = 00; + msg.buf[1] = 00; + msg.buf[2] = 00; + msg.buf[3] = 00; + msg.buf[4] = 00; + msg.buf[5] = 00; + msg.buf[6] = 00; + msg.buf[7] = 00; + // can1.write(msg); + delay(500); + + Serial.println("S2C Initialization Complete."); + +} + +void loop() { + + mlx.AddrSet(IR1); + // Serial.print("IR1: "); + // Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C"); + inside_tire_temp = mlx.readObjectTempC(); + delay(50); + + mlx.AddrSet(IR2); + // Serial.print("IR2: "); + // Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C"); + middle_tire_temp = mlx.readObjectTempC(); + delay(50); + + mlx.AddrSet(IR3); + // Serial.print("IR3: "); + // Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C"); + outside_tire_temp = mlx.readObjectTempC(); + delay(50); + + mlx.AddrSet(IR4); + // Serial.print("IR3: "); + // Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C"); + brake_temp = mlx.readObjectTempC(); + delay(50); + + // Measure frequency + wheel_freq = FreqMeasure.countToFrequency(FreqMeasure.read()); + + + + msg.buf[0] = dec_to_hexa_conversion(inside_tire_temp); + msg.buf[1] = dec_to_hexa_conversion(middle_tire_temp); + msg.buf[2] = dec_to_hexa_conversion(outside_tire_temp); + msg.buf[3] = dec_to_hexa_conversion(brake_temp); + + // MAY NEED TO PLAY AROUND WITH THIS, POTENTIALLY CONVERT TO RPM/KMH + msg.buf[4] = dec_to_hexa_conversion(wheel_freq); + + can0.write(msg); + + Serial.print("IR1: "); + Serial.print(inside_tire_temp); + + Serial.print(" IR2: "); + Serial.print(middle_tire_temp); + + Serial.print(" IR3: "); + Serial.println(outside_tire_temp); + + Serial.print("Rotor Freq: "); + Serial.println(wheel_freq); + + // if (FreqMeasure.available()) { + // Serial.println("IN"); + // // average several reading together + // sum = sum + FreqMeasure.read(); + // count = count + 1; + // if (count > 30) { + // float frequency = FreqMeasure.countToFrequency(sum / count); + // Serial.println(frequency); + // sum = 0; + // count = 0; + // } + // } + + + //delay(500); +} + + + +int dec_to_hexa_conversion(int decimal_Number) +// VERIFY THAT THIS IS CORRECT +// CURRENTLY RETURNING THE WRONG THING IN THE WRONG FORMAT... +{ + int i = 1, j, temp; + char hexa_Number[100]; + + // if decimal number is not + // equal to zero then enter in + // to the loop and execute the + // statements + while (decimal_Number != 0) { + temp = decimal_Number % 16; + + // converting decimal number + // in to a hexa decimal + // number + if (temp < 10) + temp = temp + 48; + else + temp = temp + 55; + hexa_Number[i++] = temp; + decimal_Number = decimal_Number / 16; + } + return hexa_Number; + // printing the hexa decimal number + // printf("Hexadecimal value is: "); + // for (j = i - 1; j > 0; j--) + // printf("%c", hexa_Number[j]); +} + +// void canSniff(const CAN_message_t &msg) { +// Serial.println("Interrupted"); +// Serial.print("MB "); +// Serial.print(msg.mb); +// Serial.print(" OVERRUN: "); +// Serial.print(msg.flags.overrun); +// Serial.print(" LEN: "); +// Serial.print(msg.len); +// Serial.print(" EXT: "); +// Serial.print(msg.flags.extended); +// Serial.print(" TS: "); +// Serial.print(msg.timestamp); +// Serial.print(" ID: "); +// Serial.print(msg.id, HEX); +// Serial.print(" Buffer: "); +// for ( uint8_t i = 0; i < msg.len; i++ ) { +// Serial.print(msg.buf[i], HEX); +// Serial.print(" "); +// } +// Serial.println(); +// } \ No newline at end of file