Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:vstoica:nicusor.zaharia0308 [2025/05/30 06:40]
nicusor.zaharia0308 [Hardware Design]
pm:prj2025:vstoica:nicusor.zaharia0308 [2025/05/30 09:53] (current)
nicusor.zaharia0308 [Conclusions and Concepts]
Line 12: Line 12:
  
 **Schematic:​** **Schematic:​**
-{{:​pm:​prj2025:​vstoica:​nicusor.zaharia0308:​schema_proiect_pm_v2.pdf|Schematic}}+{{:​pm:​prj2025:​vstoica:​nicusor.zaharia0308:​schema_proiect_pm_v5.pdf|Schematic}}
  
 The schematic for the project was created using the [[https://​docs.arduino.cc/​resources/​schematics/​A000067-schematics.pdf|Schematic of MEGA2560_Rev3]] and the [[https://​content.arduino.cc/​assets/​Pinout-Mega2560rev3_latest.pdf|Pinout Mega2560rev3]]. Also, for the Uno part, the schematic is [[https://​docs.arduino.cc/​resources/​schematics/​A000066-schematics.pdf|here]] and the pinout is [[https://​docs.arduino.cc/​resources/​pinouts/​A000066-full-pinout.pdf|here]]. The schematic for the project was created using the [[https://​docs.arduino.cc/​resources/​schematics/​A000067-schematics.pdf|Schematic of MEGA2560_Rev3]] and the [[https://​content.arduino.cc/​assets/​Pinout-Mega2560rev3_latest.pdf|Pinout Mega2560rev3]]. Also, for the Uno part, the schematic is [[https://​docs.arduino.cc/​resources/​schematics/​A000066-schematics.pdf|here]] and the pinout is [[https://​docs.arduino.cc/​resources/​pinouts/​A000066-full-pinout.pdf|here]].
  
 The schematic contains 5 main systems. The schematic contains 5 main systems.
-The first one represents the board used: An **Arduino Mega with an ATMega2560**. This is the µC used to control ​everything.+    * The first one represents the board used: An **Arduino Mega with an ATMega2560**. This is the µC used to control ​the tracking system.
  
-The next system is **Direction & Speed Control System**. This is used for controlling the direction and speed of the train. A L298N Dual H-Bridge Motor Driver connected to a power supply represents the interface between the ATMega2560 and the railway.+    * The next system is **Direction & Speed Control System**. This is used for controlling the direction and speed of the train. A L298N Dual H-Bridge Motor Driver connected to a power supply represents the interface between the ATMega2560 and the railway.
  
-Following, we have **Position Control System** - a set of sensors to detect the position of train on the track. This way, the train can stop, change direction and speed. Those also work well with the **Railway Barrier** in order to lower or raise the barrier.+    * Following, we have **Position Control System** - a set of sensors to detect the position of train on the track. This way, the train can stop, change direction and speed.
  
-Besides these a **Track Switch System** that uses 4 MOSFETs ​controlled by 4 pins is used to change the direction of the track. To simulate more trains, a **RFID reader RC522** detects various tags and commands the rail switch accordingly.+    * Besides these a **Track Switch System** that uses 4 relays ​controlled by 4 pins is used to change the direction of the track. To simulate more trains, a **RFID reader RC522** detects various tags and commands the rail switch accordingly.
  
-A sheet with componentsdatasheets and link to buy can be found here:​{{:​pm:​prj2025:​vstoica:​nicusor.zaharia0308:​components.xlsx|}}+    * The last but not leastis the **Arduino Uno with the Braccio shield**This helps to simulate the idea of "more trains"​ because it changes RFID tags that help the ATMega2560 with the RFID scanner to make a decision to change the direction of the rail.
  
 +    * A sheet with components, datasheets and link to buy can be found here:​{{:​pm:​prj2025:​vstoica:​nicusor.zaharia0308:​components.xlsx|}}
 +    * An image with the most important components:
 +{{:​pm:​prj2025:​vstoica:​nicusor.zaharia0308:​componente.jpeg?​600|}}
  
 +===== Hardware Description =====
  
 +    * I'll start with the ATMega2560. Pins D2(PE4), D3(PE5), D4(PG5), D5(PE3) are outputs for the 4-channel relay module. This system helps changing the direction of the track in one of the three directions, using 2 [[https://​trennet.ro/​produs/​actionare-macaz-sine-piko-55271-ho/​|switch machines]] that have 2 states. Those are powered by a 14V, 1.1A power supply.
  
-===== Software Design =====+    * Next pins used are D6(PH3), D7(PH4) for the **ultrasonic sensor** placed at one of the extremities.
  
 +    * The pins that are used for the direction and speed of the train are D42(PL7), D43(PL6), D44(PL5). PL5 allows **PWM** so it is perfect for speed modulation. Those are connected to the **l298n motor driver**
 +alongside a power supply of 12V, 0.5A DC.
  
-<note tip> +    ​Pins from D49 to D53 are used for the **MFRC522** scannerIt communicates with it using **SPI**.
-Descrierea codului aplicaţiei (firmware):​ +
-  ​mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +
-  ​librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  ​algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  ​(etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+    * For the other extremity of the railway is placed a simple **Infra Red Sensor** that detects when the train reaches a certain position.
  
-<note tip> +    * Here **Braccio**,​ a robotic arm made from 6 servomotors replaces the RFID tagsThis is controlled through a **shield placed on Arduino Uno (ATMega328p)**. The communication between the 2 μC is facilitated by **I2C/TWI**. The pins used on the ATMega2560 are PD0 and PD1 and for the ATMega328p PC4 and PC5. Arduino Uno controls Braccio using 6 PWM signals for the 6 servos, PD3, PD5, PD6, PB1, PB2, PB3. 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +{{:​pm:​prj2025:​vstoica:​nicusor.zaharia0308:​pregatire.jpeg?​600|}}
-</note>+
  
-===== Concluzii ​=====+===== Decision Making ===== 
 + 
 +At first, I thought that an Arduino Uno was enough. Quickly I realized that using Braccio not only consumes all of my PWM pins but also overlaps with the RFID scanner. So I used an Arduino Mega instead. To be fair, initially I wanted to add two more infrared sensors and another servo to symbolize an intersection between cars and railway, but cable management and wire connectivity quickly became a problem, so that was the main reason I wanted an Arduino Mega. Also I didn't think that it would improve the project as it just adds a few sensors and one servo. 
 +Having both an Arduino Uno and a Mega got me thinking that I could do **I2C communication** between them in order to learn something new. I also thought that I could use **interrupts** to signal Braccio to start to move and that's what I did. 
 + 
 +===== Software Design ​=====
  
-===== Download =====+The full code can be found on [[https://​github.com/​NickZaharia308/​Train-Control-System/​tree/​main/​Code|GitHub]]
  
-<note warning> +Libraries used in the project: 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurseschemeetcUn fişier READMEun ChangeLogun script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+    * **MFRC522**Used to interface with the RFID sensor. It reads RFID cards to determine which train rail to switch toensuring the train is directed onto the correct track. 
 +    * **SPI**: Required by the RFID readeras it uses SPI for communication with the microcontroller. 
 +    * **Wire**: Used for I2C communication to control the Braccio robotic arm from the Master device. When the train arrives at the stationthe Master sends a signal via I2Ctriggering Braccio to pick up the old RFID card and replace it with a new one. (The Arduino Mega is the Master and the Uno is the slave)
 +    * **Braccio**:​ A library used to simplify control of the Braccio robotic arm’s six servo motors, allowing for easier/​safer coordination of complex movements. 
 +    * **Servo**: dependency required by the Braccio library to control individual servo motors.
  
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**Namespace-ul în care se încarcă fişierele este de tipul **:pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +The trains keeps going until a sensor halts it's movementIts motion is controlled based on feedback from two sensors: 
-</​note>​+    ​An infrared sensor positioned at the starting point. 
 +    ​An ultrasonic sensor placed at the end of the track. 
 +When the train reaches the end and is detected by the ultrasonic sensor, it automatically reverses direction and moves backward. 
 +If the infrared sensor at the starting point detects the train’s return, the train stops and waits for further action. 
 +At this point, the Braccio robotic arm is triggered via I2C communication ​(with the Arduino Mega acting as the master and the Uno as the slave). Braccio then performs the following sequence: 
 +    ​Picks up the old RFID card from the cargo bay. 
 +    ​Replaces it with a new RFID card. 
 +The new RFID card is then scanned by the RFID sensorwhich determines the appropriate track the train should take next based on the card’s data.
  
-===== Jurnal =====+Bugs and difficulties encountered along the way of building such a challenging project: 
 +    * The RFID module can sometimes behave unreliably. Issues observed include intermittent failures to detect cards, entering an unresponsive or sleep state, and inconsistent readings 
 +    * Infrared Sensor: readings can be affected by ambient light in the environment. In darker conditions, the sensor tends to return lower values due to reduced infrared interference,​ while bright lighting or direct sunlight can cause higher or unstable readings. Also depending on the material properties, the sensor will give higher or lower values. 
 +    * Electrical Instability:​ due to imperfect connections,​ excessive voltage, or high current on the breadboard, one of the track switches overheated to the point where it physically melted. This highlights the importance of ensuring secure, low-resistance connections and staying within the rated voltage and current limits for all components. Breadboards,​ in particular, are not designed to handle high current and can become unreliable or even dangerous under such conditions. 
 +    * Cable management: having long tracks of wires and a big board it is difficult to have a great cable management especially that some components (like MFRC522) have pins instead of holes.
  
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
-===== Bibliografie/​Resurse ​=====+===== Youtube videos ​=====
  
-<​note>​ +Two videos can be found [[https://​youtu.be/​Cf_taeLb9fo|here]] and [[https://​youtube.com/​shorts/​iZsClUN0Juc?​feature=share|here]]. The first one describes the components and the interaction between them and the second one describes how does the whole project work. 
-Listă cu documentedatasheet-uriresurse Internet folositeeventual grupate pe **Resurse Software** şi **Resurse Hardware**. +===== Conclusions and Concepts ===== 
-</​note>​+    * **GPIOsInterruptsPWMADC, SPI, I2C** directly used in the project through microcontrollers. 
 +    ​* **UART, Multimeter, Oscilloscope,​ Soldering and other instruments** used for testing, debugging
 +.
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ 
  
pm/prj2025/vstoica/nicusor.zaharia0308.1748576436.txt.gz · Last modified: 2025/05/30 06:40 by nicusor.zaharia0308
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0