Synchronize Serial communication between simulink and Arduino

11 views (last 30 days)
I am trying to build a model that sends two floats over serial to an arduino and waits for two values to be sent back. For now am trying to send back the same values to ensure that the arduino is reading the values correctly. I think right now I am having a problem were simulink is sending the values so fast that its overflowing the buffer and the arduino is reading garbage.
Is is possible to trigger a Simulink serial send command when it reads a value from the Serial port?

Answers (1)

Himanshu
Himanshu on 30 Apr 2024
Hey Nathaniel,
Yes, there is a way to synchronize serial communication between Simulink and Arduino.
This can be achieved by implementing a handshake mechanism between Simulink and Arduino, where the Arduino sends a ready signal to Simulink, indicating it's prepared to receive the next set of data, and only after that, Simulink proceeds to send the next data packet.
Here is a step by step approach to design such a mechanism:
  • Start by programming the Arduino to send a specific signal (e.g., a simple character like 'R' for ready) over the serial port once it's ready to receive the next set of floats. Ensure the Arduino reads the incoming data and, after processing or echoing it back, sends the ready signal again.
  • Use 'Serial Receive Block' to continuously listen for the ready signal ('R') from the Arduino. Configure it with the correct COM port and baud rate. Implement logic using 'MATLAB Function Block' or 'Stateflow' to check the received signal. When the 'R' signal is detected, trigger the next step.
  • Serial Send Block block should be conditionally executed to send data only when the ready signal is detected. You might use an Enabled Subsystem that gets activated by the signal detection logic.
  • Use delays judiciously in the Arduino code to manage processing time and avoid sending data back-to-back too quickly.
Hope this helps!

Categories

Find more on Arduino Hardware in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!