Getting Started with Raspberry Pi® Hardware

This example shows you how to use Simulink Support Package for Raspberry Pi Hardware to run a Simulink® model on Raspberry Pi® hardware.


Simulink Support Package for Raspberry Pi Hardware enables you to create and run Simulink models on Raspberry Pi hardware. The target includes a library of Simulink blocks for configuring and accessing Raspberry Pi hardware's I/O peripherals and communication interfaces. Additionally, the target enables you to monitor and tune algorithms running on Raspberry Pi hardware from the same Simulink models from which you developed the algorithms.

In this example you will learn how to create and run a simple Simulink model on Raspberry Pi hardware, and how to tune and monitor the algorithm in real time as it is executing. When you are developing algorithms, it is often necessary to determine appropriate values of critical algorithm parameters in iterative fashion. For example, an algorithm that detects hand clapping may use a threshold to determine hand clapping in the presence of ambient noise. If the threshold value is set too low, the algorithm may confuse any sound for hand clapping. If the threshold value is set too high, the algorithm may not be able to detect any sound at all. In such cases, the right threshold value may be obtained by trying different values until the desired algorithm performance is reached. This iterative process is called parameter tuning.

Simulink's External mode feature enables you to accelerate the process of parameter tuning by letting you change certain parameter values while the model is running on target hardware, without stopping the model. When you change parameter values from within Simulink, the modified parameter values are communicated to the target hardware immediately. The effects of the parameters tuning activity may be monitored by viewing algorithm signals on scopes or displays in Simulink.

This example introduces the Simulink External mode feature by showing you how to:

  • Configure communications between Simulink and Raspberry Pi hardware

  • Tune parameters of an algorithm from the same Simulink model that is running on the Raspberry Pi hardware

  • Use Simulink scopes to monitor results from an algorithm running on Raspberry Pi hardware


If you are new to Simulink, we recommend completing Interactive Simulink TutorialInteractive Simulink Tutorial, reading the Getting Started section of the Simulink documentationSimulink documentation and running Simulink Getting Started exampleSimulink Getting Started example.

Required Hardware

To run this example you will need the following hardware:

  • Raspberry Pi hardware

Task 1 - Create a Model

In this task, you will create a simple model that will run on your Raspberry Pi hardware.

1. In MATLAB®, select HOME > New > Simulink Model.

2. Enter simulinksimulink at the MATLAB command line to open the Simulink Library Browser.

3. Click on Simulink > Sources tab in the Simulink Library Browser. Drag and drop a Sine Wave block to the model. Double-click on the Sine Wave block to set parameters of the block as shown in the picture below. Click OK to save and close the block mask.

4. Click on Simulink > Math Operations tab in the Simulink Library Browser. Drag and drop a Slider Gain block to the model. Connect the output port of the Sine Wave block to the input port of the Slider Gain block.

5. Click on Simulink > Sinks tab on the Simulink Library Browser. Drag and drop a Scope block to the model. Connect the output port of the Slider Gain block to the input port of the Scope block.

6. Save your model.

Task 2 - Configure and Run the Model on Raspberry Pi Hardware

In this task, you will configure your model to run on Raspberry Pi hardware. You will then run your model on Raspberry Pi hardware in External mode. When you are prototyping and developing an algorithm, it is useful to monitor and tune the algorithm while it runs on hardware. The External mode feature in Simulink enables this capability.

1. If your Raspberry Pi hardware is not connected to an Ethernet network, follow the instructions in Configure IP Settings on the Raspberry Pi HardwareConfigure IP Settings on the Raspberry Pi Hardware.

2. In your model, set simulation stop time to 'inf' to run the simulation until you explicitly pause or stop the model.

3. In your Simulink model, click Tools > Run on Target Hardware> Prepare to Run....

4. When the Configuration Parameters page opens up, set the Target hardware parameter to Raspberry Pi. Review the other parameters on that page. If you performed a Firmware Update, Board information will be automatically populated with the IP address, user name and password of your Raspberry Pi hardware. Also, notice the TCP/IP port edit box under Signal monitoring and parameter tuning. The default value of TCP/IP port is 17725. Simulink uses this TCP/IP port to communicate with Raspberry Pi hardware. Leave the TCP/IP port parameter to its default value. Click OK when you are done.

5. In your Simulink model, make sure that the Simulation mode on the toolbar is set to External. Then, click the Run button on the toolbar.

6. The model will now run on the Raspberry Pi hardware. A system command window will open that shows the messages coming from the model running on Raspberry Pi hardware:

7. Open the Scope block. Observe the scope displaying a sine wave.

8. Double-click the Slider Gain block. Change the Slider Gain value and observe that the amplitude of the waveform on the Scope block changes appropriately in response.

9. When you are done changing model parameters, press the Stop button on the model. Observe that system command window opened in the previous step indicates that the model has been stopped. At this point, you may close the system command window.

10. Save your model. A pre-configured modelmodel is included for your convenience.


This example introduced the workflow for creating an algorithm in a Simulink model, and then running the model on Raspberry Pi hardware. Using External mode, you tuned an algorithm parameter while the model was running and observed the effects of parameter value changes.

Was this topic helpful?