SHYAM GANESH K S

About Me

An Aspiring Embedded Software Engineer with entry-level experience in C/C++ programming and microcontrollers. I'm passionate about creating efficient embedded solutions and enhancing hardware/software performance. I'm eager to contribute my skills to a dynamic team and tackle challenging projects.

Skills

C Embedded C C++ (Beginner) UART I2C SPI CAN TCP/IP Keil IDE VS Code Arduino IDE Keil-Debugger Proteus NI Multisim DIA Lux MATLAB CANoe ARM 7-Rhydolabz LPC2129 8051 Windows Linux-Ubuntu RTOS Problem-Solving Communication Teamwork and Collaboration Time Management and Organization Leadership and Responsibility Interpersonal Skills

Projects

Body Control Automation Using CAN

Problem: Traditional vehicle body functions (indicators, wipers) face wiring complexity and communication issues.

Solution: Implemented CAN protocol for efficient and reliable communication with fault recovery and noise reduction.

Implementation: Used four ARM-based boards with sensors, actuators, and CAN transceivers for seamless data transfer and real-time control.

Key Technologies: ARM7 Microcontrollers, CAN protocol, Embedded C

Code Snippet (Example - CAN):

void can1_init() 
    {
        VPBDIV = 1;                // PCLK = CCLK
        PINSEL1 |= (1 << 18);      // P0.0 as RD1
        PINSEL1 &= ~(1 << 19);     // P0.1 as TD1
        C1MOD = 0x01;              // Enter Reset Mode
        AFMR = 0x02;               // Bypass Filter Mode (Accept all messages)
        C1BTR = 0x001C001D;        // 125 Kbps
        C1MOD = 0x00;              // Normal Mode
    }
    
void can1_tx(u32 id, u32 rtr, u32 dlc, u32 byteA, u32 byteB) 
    {
        C1TID1 = id;
        C1TFI1 = (dlc << 16) | (rtr ? (1 << 30) : 0);
        if (!rtr) {
            C1TDA1 = byteA;
            C1TDB1 = byteB;
        }
        C1CMR = (1 << 0) | (1 << 5);   // Start Transmission
        while (!(C1SR & (1 << 3)));    // Wait for TX complete
    }
    
void can1_rx(u32 *id, u32 *rtr, u32 *dlc, u32 *byteA, u32 *byteB) 
    {
        while (!(C1SR & 0x01));   // Wait for RX data
        *id = C1RID;
        *rtr = (C1RFS >> 30) & 1;
        *dlc = (C1RFS >> 16) & 0xF;
        *byteA = C1RDA;
        *byteB = C1RDB;
        C1CMR = (1 << 2);         // Release RX buffer
    }

            
View Project on GitHub

Automatic Coconut Farm Land Maintenance Rover

Problem: Traditional coconut farming relies on manual labor for weeding and herbicide spraying, leading to physical strain and health risks.

Solution: An autonomous rover automates these tasks with precision, reducing labor and chemical exposure.

Implementation: Equipped with ultrasonic sensors, a microcontroller-based motor system, and a 16Ah battery, the rover operates autonomously.

Key Technologies: Arduino, Ultrasonic Sensors, Motor Control, Autonomous Navigation

Automation on Pulp Tank Monitoring and Water Jet Cutting System

Problem: Manual monitoring of pulp levels and water jet cutting in paperboard manufacturing causes inefficiencies.

Solution: Automated system using an Arduino Uno for real-time monitoring, precise level control, and optimized cutting.

Implementation: Ultrasonic sensors detect pulp levels, and Arduino controls the motor and water jet cutter.

Key Technologies: Arduino Uno, Ultrasonic Sensors, Motor Control, Water Jet Cutting

Certifications

Advanced Course in Embedded System, Vector India Pvt. Ltd.

Gained comprehensive knowledge and hands-on experience in embedded software and hardware development.

GitHub

Check out my projects and contributions on GitHub:

shyamganesh-ks darkweb-lord

Contact

Email: ksshyam03435@gmail.com

LinkedIn: linkedin.com/in/shyamganeshks

HackerRank: hackerrank.com/profile/shyamganeshks