This article introduces you to Waijung and Matlab & Simulink for uses in embedded system development, that can be much faster, easier, and more fun.

Computer and handheld devices (like smart phones, tablets) have revolutionized the world. Now we can play online games with our friends, share media, manage inventory, analyzing huge stock exchange data and many more things with these devices while sitting at a remote location. Having a video call on social media websites or doing online shopping is now quite easy but how these things are made possible.

Computer is a dump machine in-fact a very dump machine. Computers by itself cannot do anything. It don’t have power to make decisions. They are programmed so that they can act according to our ‘clicks’ and ‘touches’. To program a tablet or a computer to follow the instructions is not that straight forward. A house which looks very clean and beautiful is the result of hard efforts of the cleaner, home décor designer and the architect. An application ‘app’ available on our smart tablets – programmers and developers who work round the clock to deliver it.

A computer is an electronics device which works under the set of instructions stored in its own memory. From this definition we can analyses previously it was mentioned that computer is a dump device and it cannot do anything/make decisions at its own. Whatever is stored inside its own memory, it will work according to that. We can visualize the information process cycle of the computer or related device as in Figure 1.

Figure 1: Information Process Cycle

It is interesting to share information that a computer not only contains electric and electronic components but also some mechanical components [1]. These components are known as hardware. We can categorize the computer hardware as in Figure 2.

Figure 2: Computer hardware

An operating system (OS) is a set of programs containing instructions that work in conjunction with the hardware to perform the desired tasks. Main responsibilities of an OS are:

- Start and shutdown computer
- Provide user interface
- Manage programs
- Memory management
- Coordinate tasks
- Configuration of devices
- Establish internet connection
- Monitor performance
- Provide utilities
- Network control
- Administer security

We can broadly classify the computers as:

- Mobile computers and mobile devices
- Personal computers
- Game consoles
- Servers
- Mainframes
- Supercomputers
- Embedded computers

A micro-controller is an integrated circuit with built-in Central Processing Unit (CPU), programming and non-programmable memory, input/output (I/O) ports, digital to analog convertor and vice versa.

Now a question can come in mind that what is the difference between a microcontroller and microprocessor of general purpose computer. Table 1 will explain this question.

Table 1: Comparison between Microprocessor and Microcontroller

*An embedded system is a computer system with a dedicated function within a larger mechanical or electrical system, often with real-time computing constraints ^{2}.* From the definition, it can be observed that an embedded system is different from general purpose computer but may contain similar components.

An embedded system can be called as a mini computer which has en ability to work in an intelligent standalone manner. Embedded systems are widely in used because they are:

- Cheap
- Energy efficient
- Compact size
- Moderate weight

Examples of embedded system are as follows:

- Microwave ovens
- Cell phones
- Calculators
- Digital watches
- GPS devices
- Heart monitors
- Laser printers
- Engine controllers
- Digital cameras
- MP3 player
- Washing machines
- Set-up box
- Television
- Remote controls
- Bread machines
- Elevators
- Coffee makers
- Thermostats
- Parking meters
- Fax machines
- Cash registers
- Treadmills
- Gas pumps,
- Card readers

MALTAB is developed by MathWorks which is a leading developer of mathematical computation software. *MATLAB® is a high-level language and interactive environment for numerical computation, visualization, and programming [3].* The definition above have two keywords. When we refer to ‘high-level language’ the first thing which comes to mind should be: it is easy to do programming, have a lot of built-in functions and developing a program is simpler and more understandable to human beings. ‘Interactive environment for MATLAB refers to the availability of ‘Apps’, Graphical User Interface (GUI), multi-dimensional visualization.

MATLAB is used by mathematicians and statisticians as it helps them in solving linear and differential equations, applying optimization techniques to solve their problems, availability of statistical and machine learning algorithms for organizing, analyzing and modeling the data etc. MATLAB is used by engineers and scientists as it helps them in modeling an engineering system like vehicular area network, communication system, and aeronautical system. It helps them in signal and image processing, data visualization, control and fuzzy logic systems and many more. MATLAB is used by economists and financiers as functions in MATLAB are available for modeling an economic and financial data. Applications of MATLAB are not exhausted here. MATLAB can be used by any person who wants a computerized solution for his/her problem. As the programming in MATLAB is far easier, people often use MATLAB to write their program in MATLAB and then convert them into C or C++ in which writing code is quite hard as compared to MATLAB. More than 1 million people from industry and academia are using MATLAB – the language of technical computing. By now, reader can feel that MATLAB can be really helpful in solving a simple as well as complex problems.

Before some very basic examples are introduced in this section, it is assumed that the user has already installed MATLAB correctly and have some fundamental knowledge about programming. While installation, a user might have observed one thing i.e. installation time of MATLAB is significant. This is because of the richness of MATLAB in terms of libraries, built-in functions, variety of toolboxes, coders, blocksets etc. To start with, a MATLAB code to generate a sine wave is given and how we can visualize that sine wave.

This example shows how sine wave and cosine wave can be generated. Furthermore they are plotted against time to observe their phase difference. In order to do so, we need to know the two important things.

- What should be the center frequency of the signal?
- What should be the sampling frequency of the signal? If the sampling frequency is too low then we will not be able to get a nice sinusoidal wave. If the sampling frequency is too high then wave will be very smooth but computation time will be increased.

**MATLAB Code**

Figure 3: Plotting a sine and cosine wave

Moving a step forward, we know that a simple communication system consists of three entities i.e. transmitter, channel and the receiver. Channel can be wired (copper cable, twisted pair, optical fiber) or wireless (air, vacuum) [4]. Channel is the point where most of the noise is introduced in the transmitted signal. In the code below we do the following steps:

- Create two sine waves of different frequencies
- Add some random noise to the sine waves
- Do plotting to observe the effect of noise on the signal. If the noise is very strong then the signal will be distorted considerably and if the noise if low then the effect will not be strong.
- Using Fast Fourier Transform (FFT) algorithm to compute the Discrete Fourier Transform (DTF).
- Computing power spectral density
- Plot and observe the graphs

We can observe that even after the addition of the noise, FFT enables us to recover back the center frequency of the two signals. At the bottom of Figure 4, we can observe two peaks at 50Hz and 120Hz respectively which are the same as the signal frequency which we choose in the beginning.

**MATLAB CODE**

% Show the use of the FFT function for spectral analysis.

% Create signal at 50 Hz and 120 Hz

t = 0:.001:.25;

x1 = sin(2*pi*50*t);

x2 = sin(2*pi*120*t);

x = x1 + x2;

% Add some random noise

y = x + 2*randn(size(t));

subplot(611),plot(x1), title(‘Sine wave at 50 Hz’)

subplot(612),plot(x2), title(‘Sine wave at 120 Hz’)

subplot(613),plot(x), title(‘Sine wave at 50 Hz + 120 Hz’)

subplot(614),plot(y), title(‘Noisy time domain signal’)

% Finding the discrete Fourier transform

Y = fft(y,256);

% Compute the power spectral density

Pyy = Y.*conj(Y)/256;

f = 1000/256*(0:127);

subplot(615),plot(y), title(‘Noisy time domain signal’)

subplot(616), plot(f,Pyy(1:128)), title(‘Power spectral density’)

xlabel(‘Frequency (Hz)’)

Figure 4: Discrete Fourier transform and power spectral density calculations

No matter from which domain a researcher is, it is always important for him/her to represent his/her work in a meaningful way. Graphs are one excellent way of representing a large data which can yield a meaningful information. Fortunately, MATLAB is very rich in plotting graphs and have a lot of built-in functions. In the code below, a reader can find ways how a data can be represented using MATLAB. In this example, same data is represented in seven different ways i.e. scatter, stem, polar, error-bar, stair-step, bar and line plot.

**MATLAB CODE**

clear all, close all

% Scatter Plot

figure; load count.dat

scatter(count(:,1),count(:,2),’r*’)

xlabel(‘Number of Cars on Street A’);

ylabel(‘Number of Cars on Street B’);

title(‘Scatter Plot’)

% Stem Plot

figure; x = 0:0.1:4;

y = sin(x.^2).*exp(-x);

stem(x,y)

title(‘Stem Plot’)

% Polar Plot

figure; t=0:0.01:2*pi;

polar(t,abs(sin(2*t).*cos(2*t)));

title(‘Polar Plot’)

% Errorbar Plot

figure; x=-2:0.1:2;

y=erf(x); e = rand(size(x))/10;

errorbar(x,y,e);

title(‘Errorbar Plot’)

% Stairstep Plot

figure; x=0:0.25:10;

stairs(x,sin(x));

title(‘Stairstep Plot’)

% Bar Plot

figure; x = -2.9:0.2:2.9;

bar(x,exp(-x.*x));

title(‘Bar Plot’)

% Line Plot

figure; x=0:0.05:5;

y=sin(x.^2);

plot(x,y);

xlabel(‘Time’); ylabel(‘Amplitude’)

title(‘Line Plot’)

Figure 5: Different ways of representing data

Matlab is not only meant for doing some serious research but something romantic can also be created using few lines of MATLAB. Here is a sample code to create a heart.

**MATLAB CODE**

close all; clear all; clc v = -1.5:.02:1.5; [x,y,z] = meshgrid(v,v,v); w = (2*x.^2+y.^2+z.^2-1).^3-(1/10)*x.^2.*z.^3-y.^2.*z.^3; hp = patch(isosurface(w,0)); set(hp,’facecolor’,’r’,’edgecolor’,’none’) light; lighting phong; view(99,18)

Figure 6: Drawing a Heart

For more examples, please refer to Section ‘List of Resources’.

By today, MATLAB has more than 40 toolboxes which allows scientist and researchers to complete their tasks with easy. The list of the toolbox can be found from the following link.

http://www.mathworks.com/products/

In order to check which toolboxes, blocksets and version of MATLAB is installed in the computer, user need to type command ‘ver’ in command line.

Figure 7: Using command ver to check MATLAB version and installation products

Simulink is a block diagram environment for multi-domain simulation and Model-Based Design. It supports simulation, automatic code generation, and continuous test and verification of embedded systems [5]. Like MATLAB, Simulink was also developed by Mathworks. Its principal interface is a graphical block tool and a customizable set of block libraries. Simulink can be used in conjunction with the MATLAB. Capabilities of Simulink are as follows:

Figure 8: Simulink capabilities

Aimagin is specialized in utilizing the capability of Simulink to connect with hardware. The later part of this tutorial will leads us to connect Aimagin hardware with Simulink but before tutorial goes into that detail it is very important to understand the Simulink first.

In order to run Simulink, user need to type simulink in the MATLAB command window. MathWorks also provides an icon to Simulink but the icon position and colors may vary with the different versions of MATLAB so for the beginning it is preferred to go by typing Simulink in MATLAB command window which works on all the version of MATLAB. The result is shown in Figure 9.

Figure 9: Starting Simulink

A list of block library will appear. User can select a block of desired characteristics from these libraries. The most commonly use block libraries are:

- Integrator
- State Space
- Transfer Function
- Transport Delay
- Add
- Gain
- Product
- Sum
- Mux
- Demux
- Scope
- XY Graph
- Step
- Signal Generator
- Ramp
- Random Number
- AWGN Channel

To create a new model, the user need to do go to *File -> New ->Model.* In order to open an existing model, user need to go to _ File ->Open ->_ Specify the model location on the hard disk.

Figure 10: Opening a new model

When we click on Model, a new window will open which is shown below in Figure 11.

Figure 11: New model in Simulink

Now, we are all set to create a model. We need to first plan, what actually we want to build and what are the components required. Please keep in mind that just by simply connecting the blocks in the model, things will not work. Input of the second block must be matching with the output of the first block and so on. Indeed drawing modeling in Simulink is far easier than doing programming but don’t think Simulink like Microsoft Visio. Don’t get disappointed if while running the model, you get some error. Read about the block properties, the background knowledge of relevant field and the nature of input/output signals. As like other learning tools, beginning is little difficult but things becomes easier with the passage of time. So we start with a simple case and our agenda is to create a detailed digital communication system.

We start with the simplest case. Open a new model. Save a model with a legit name. Now a reader should think before going further, what blocks are required in order to create and sine wave and see the created sine wave. The answer is very simple. Two things i.e. something which can generate a sine wave and something which is like a oscilloscope in the labs to see it. We search for these two items in ‘Simulink Library Browser’. When right choice of component is found, simply drag that block to the new model created.

Figure 12: Dragging appropriate components to the model

Now both the required blocks are with us. Now it’s the time to see if it is possible that by doing so simple task, sine wave can be created and observed. Click on ‘play’ button or Ctrl + T. Simulink will start compiling and when it’s done, double click on scope button the observe the output which is shown in Figure 13. Please note that the properties of Sine wave block (or any other block) can be customized by double click on the block. Similarly, model configuration parameters can be changed from Simulation -> Model Configuration Parameters.

Figure 13: Observing the sine wave

Please note that in order to obtain the results in Figure 13, following customization has been done.

- Amplitude of the sine wave has been changed to 5 by ‘double click’ on Sine Wave.
- By going to
*Simulation -> Model Configuration Parameters,*two changes have been made. Simulation stop time to 20.0 and Max step size to 0.2 from auto.

Figure 14: Setting model configuration parameters

- When graph is obtained after running the model and double click on the scope. Click on setting icon and changed the style of line. Note any color of thickness to the sine wave graph can be assigned. The remaining properties are left on reader to explore.

Figure 15: Scope parameter properties configuration

Now, we can move forward quickly. For the next example, we require the following blocks.

- Sine wave
- Integrator
- Scope
- Gain
- Bus creator

These blocks are arranged in the following order as shown in Figure 16 and the output is shown in Figure 17.

Figure 16: Integrating a sine wave

Figure 17: Output of the block diagram of Figure 16

Yellow line is for the output after passing through gain and integrator and purple line is for the sine wave generated. It can be observed that it is a simple procedure to apply gain and applying little complex mathematical operation like integration.

Figure 18 shows the inverted pendulum on the cart. This is a typical engineering problems since ages and it can be modeled and visualized in Simulink with so ease.

Figure 18: Inverted pendulum on the cart

For more examples, please refer to Section ‘List of Resources’.

After analyzing some program written in MALTAB, a question may come in reader’s mind that in which programming language MATLAB is written? The answer to this question is not that straightforward. MATLAB is not written in a single programming language but in many programming languages which are:

- C
- C++
- Common Intermediate Language (CIL)
- NVidia CUA
- Bash Shell Script
- Fortran
- Java
- MATLAB
- Perl Windows Batch Files

MATLAB/Simulink have a lot of advantages which engineers, researchers, scientists and students can enjoy [6].

- Easy to use and simple for designing and analyzing engineering and non-engineering systems.
- Basic data element is matrix and MATLAB has mathematical operations that works on matrix are built in.
- The graphical output of optimized for interaction.
- More than 1 million users are using MATLAB. A very lucid online documentation support is available both from MathWorks as well as other websites.
- MathWorks is also very active in providing online support.

It uses a large amount of memory and slow down the computer.

- It sits ‘on top’ of operating system thus can only be allocated CPU time which operating system allows. This is a bottle neck for using MATLAB for high speed real time applications.

From the discussion above, reader can realize that the programming in C/C++/Assembly is not very easy however MATLAB/Simulink is a powerful tool to overcome this issue. Specifically talking about Simulink, things can be done by connecting the respective blocks without writing even a single line of code. While designing and analyzing a system like intelligent control system/signal processing/communication system etc. MATLAB/Simulink gives wings i.e. design and analysis process is simple and easy but comprehensive. Simulation using MATLAB/Simulink tools will save time and cost. Furthermore, detailed analysis gives an opportunity to avoid any unwanted situation.

For the real system implementation using MATLAB/Simulink tool, there are two major concerns.

- Connecting hardware with MATLAB/Simulink
- Time sensitive applications bottle neck

In order to connect hardware with Simulink, Aimagin has made a customized blockset named ‘Waijung’. This provide an opportunity the Aimagin hardware with the Simulink and a user can realize a real system. So with Waijung blockset, from design to implementation, the whole process is fast, easy, fun and not forget to mention …NO C/C++ code is required. We explain the advantage of our blockset with an example. For example a user wants to make a chair. In order to make a chair he/she needs a hammer, nails, sandpaper and wood. Now there are two options available.

* Option 1:* Make hammer, nails and sandpaper yourself. Go to the forest to cut tree and bring wood. When everything is done, start making chair

* Option 2:* Buy/use already available hammer, nails, sandpaper and wood in the market and make a chair

Indeed option 2 is better than option 1 in terms of time and skills required.

MATLAB gives a tool to convert a MATLAB written code in C (and other languages) which can fit well in time sensitive applications. Generated code from Matlab contains more overhead than hand coding but the former one is faster a suitable for rapid prototyping. A detailed explanation how a C code can be generated from MATLAB algorithm is given in the following link.

http://blogs.mathworks.com/loren/2011/11/14/generating-c-code-from-your-matlab-algorithms/

Readers should not get an impression that merely connecting Aimagin hardware via USB with a computer will get everything done. For example if a user want to add two numbers using a calculator, then he must know that he should enter first number then press + button and then enter the second number. At the end, the user should press = button the get the output. Similarly using Waijung with hardware, the user must know the mathematics/equations involved while realizing a system, how to use the tools, how to connect the circuit, how circuit works etc.

Currently significant literature is available online and the company is constantly adding more and more literature, examples, tutorials and videos so that the users can benefit more from Aimagin products. To get hands on and for some mini projects, the users can refer to blog.aimagin.com where they can find more than 20 sample projects and tutorials.

Quick reference for sample project is as under

http://aimagin.com/blog/topics/sample-project-th/?lang=th

Quick reference for mini projects

http://aimagin.com/blog/mini-project-kmutnb-mechatronics-56/?lang=th

Quick reference for tutorials

http://aimagin.com/blog/topics/tutorials-th/?lang=th

Reference Manual about Waijung can be accessed from the below mentioned link. From here Waijung blockset can be downloaded.

Video tutorials which gives a great insight about our product can be accessed from

Information about Aimagin previous RapidSTM32 block set can be found from

A large resources in terms of tutorials, examples, videos books etc. are available. For instance

Here is the list of few tutorials on the MATLAB. Please note that this is not a complete list but only very few references how to get started with MATLAB. After gaining the basic knowledge, the user can search for more resources of the web.

http://www.mathworks.com/academia/student_center/tutorials/launchpad.html

http://www.mathworks.com/academia/student_center/tutorials/?s_tid=gn_ac_sv_tu

http://www.math.utah.edu/lab/ms/matlab/matlab.html

http://ctms.engin.umich.edu/CTMS/index.php?aux=Basics_Matlab

http://www.math.mtu.edu/~msgocken/intro/intro.html

http://www.cs.utexas.edu/~grauman/courses/spring2011/matlab.pdf

http://www.matlabtutorials.com/

http://www.youtube.com/watch?v=QbRLoMH9a24

Same is true for the tutorials for Simulink. The list goes on and here are only few…

http://www.mathworks.com/academia/student_version/learnsimulink_sp3.pdf

http://web.mit.edu/acmath/matlab/course16/slides_16.06_16.07_matlab_simulink.pdf

http://classes.soe.ucsc.edu/cmpe242/Winter14/Simulink.pdf

http://www.youtube.com/watch?v=TfXBw51xKr0

http://www.tufts.edu/~rwhite07/PRESENTATIONS_REPORTS/simulink.pdf

http://ocw.usu.edu/Electrical_and_Computer_Engineering/Signals_and_Systems/Simulink_Tutorial.html

Mathworks website is the best tool to search for MATLAB/Simulink books. More than 1500 titles are available.

http://www.mathworks.com/support/books/

http://www.orchardpublications.com/1934404071ex.pdf

Waijung is a valuable addition to MATLAB/Simulink blockset. Our company works in a modern philosophy ‘Make it work now – optimize later’. Our ultimate goal is to en-power the students to create more complex algorithms in less time. This will be more beneficial to the industry in terms of better products, more values and more business.

With the ambition of making complex and hard to understand process simple, currently our company is mainly focusing on (but not limited to) digital signal and image processing, network monitoring and control systems. We really appreciate new innovative ideas from our users. In a very short period of time, our products are being used and appreciated by good number of researchers and they are quite happy and contented with our products. Some of the testimonials from our valuable users can be found from the following link

https://www.aimagin.com/customer_testimonials/

We hope that with our products students will be able to learn and use industrial standards tools. From the students our hopes are:

- Understanding of basic principles of studies much better via simulation technology with connections to hardware.
- Learn about new industrial trends – the use of model-based design and rapid prototyping technology.
- Able to make complex systems work or solve more complex problems in shorter time, creating higher values to product development in shorter cycle to serve real industries.

Users can use the following channels to ask question

- Forum http://www.aimagin.com/forum/
- Social Media https://www.facebook.com/fioboards

https://www.facebook.com/pages/Aimagin/263308030369020

- Email help@aimagin.com

[1]. Shelly, Gary, Glenda Gunter, and Randolph Gunter. *Teachers Discovering Computers: Integrating Technology in a Connected World.* Cengage Learning, 2011.

[2]. http://www.barrgroup.com/Embedded-Systems/Glossary-A

[3]. http://www.mathworks.com/products/matlab/

[4]. Saadi, M., et al. “Visible light communication: opportunities, challenges and channel models.” *International Journal of Electronics & Informatics* 2.1 (2013).

[5]. http://www.mathworks.com/products/simulink/

[6]. http://www.csee.wvu.edu/~xinl/courses/ee465/programming_tips.pdf