Software apps and online services
Detailed documentation of the codes and steps for this tutorial can be found here.
Check out our EASE Crowd Supply Campaign Page: https://www.crowdsupply.com/harmonic-bionics/ease
In this tutorial, you will learn how to set up and use the EtherCAT Arduino Shield by Esmacat (EASE) Slave device on top of an Arduino subsystem and interface it with an LCD and Motor Shield to enable data transfer between the two slave devices via the EtherCAT master (Raspberry Pi).
- First, some general information about Raspberry Pi and the shields is discussed.
- After learning to set up the devices, you will learn to implement a practical project involving both the LCD and Motor Shields to control the Motors connected via the buttons on the LCD Shield by exchanging data between the 2 slave devices and the EtherCAT master. The data about the current motor to be controlled and its state (speed/position) is also printed on the terminal of the Pi.
EASE is an EtherCAT slave that connects to an EtherCAT master (PC/ Laptop/ Dedicated Master devices like the Esmacat Master S and Esmacat Master C. It can be stacked on top of Arduino, Arduino-like boards and Arduino Shields. This shield allows high-speed communication with an industry-standard EtherCAT protocol for high-performance robotic applications.
This shield has 8 registers that can be used to send/receive data between devices via ethernet cables attached to the shield.
More info: https://www.esmacat.com/ease
Suggested Reading: EASE Datasheet.Raspberry Pi:
Raspberry Pi is a tiny, dual-display, low-cost desktop computer that is used widely in robot brains, smart home hubs, media centers, as a networked AI core and factory controllers. It can also be used as an EtherCAT master just like a Laptop/PC. However, it should be noted that the Pi is a Linux based computer.
Suggested Reading: Section 4.2 Getting Started with EASE, Motor & LCD Shields.LCD Shield:
The LCD shield used in the tutorial is a 16x02 LCD display with six buttons which is simple and convenient to stack it onto the Arduino Uno board. There are 5 control buttons (Select, Up, Down, Left, Right) and a reset button. The 5 buttons are connected with the A0 analog input of the Arduino board.
Suggested Reference: keyestudio LCD 1602 Expansion Shield.Motor Shield:
The Adafruit Motor Shield is a stackable motor shield that allows up to a maximum of 2 Servo motors, 4 DC motors or 2 Stepper Motors to be controlled using a single shield. By configuring the shield for our requirement one can control the motors as per the need. In this tutorial 1 servo motor, 1 dc motor and 1 stepper motor has been controlled as a proof of concept.
Suggested Reference: Adafruit Motor Shield V2 datasheet.Hardware Connections:
The primary hardware components include,
- EtherCAT slave1 (EASE with Arduino)
- EtherCAT slave2 (EASE with Arduino)
- EtherCAT Master (Raspberry Pi)
- Power Over Ethernet (POE Injector)
- Motor Shield
- LCD Shield
- Ethernet cables
- DC Adapter (for POE) and
- Power Source (battery to power the motors)
Since EASE uses a POE injector, there is no need to power the Arduino boards separately. EASE can power the board through EtherCAT!
The connections are as shown in the two schematics attached in the "Schematics" section of this tutorial. "The Hardware setup schematic" gives an overview of the connections to be made while the "Physical connection schematic" shows the setup once all the connections are made.
- Make sure the Ethernet connections are fit tightly into the sockets. (Loose connections may lead to the slave device not being recognized.)
There are two libraries that will be used for this tutorial.
- An EASE Library for Arduino to communicate with the Arduino subsystem.
- An Esmacat Master Library for the master (PC) to communicate with the EASE slave device.
The link to both the libraries have been included under the Code section. Install these libraries to get started with the coding part.
Refer to the links below to get more detailed step by step help with installing these libraries.
Suggested Reading: EASE Master Software structure.
Suggested Reading: Getting started with EASE.Software :
The software required for this tutorial involves coding for
- the Esmacat Master and
- the Arduino.
Programming the Esmacat Master:
Open Visual Studio or any other (IDE) and copy all the 4 C++ codes available from the Code section (source files starting with ease_lcd_motor_control/) into a new project folder and build the source code.
Refer to the links below to get more detailed step by step help with building source codes in EtherCAT Master,
Suggesting Reading: Getting started with the Esmacat Master (Windows).
Suggesting Reading: Getting started with the Esmacat Master (Linux).
Coding the Arduino:
Open the Arduino IDE and create 2 new sketch files. The complete code for this tutorial is available under the Code section.
Copy and paste the code within the "Arduino with EASE and Motor Shield Code" into one of the sketch files. Compile and Upload this code into the Arduino board connected with EASE and Motor Shield.
Repeat the same process by copying the "Arduino with EASE and LCD Shield Code" into the other sketch file and upload the code into the Arduino board connected with EASE and LCD Shield.
Note: Make sure you check whether the Board and Port are chosen correctly in the IDE.Running the Master Code:
On running the master code you get a result similar to the following on the Master terminal (the result attached below is an example result on execution on a Windows PC) with the motor selected and the desired position/speed change.
By now you have successfully programmed the 2 Arduino boards and the Esmacat master! The button (Up, Down & Select) pressed on the LCD Shield can be used to control the motors connected to the Motor Shield similar to the GIF attachment at the start of this tutorial and the video below.
Final Notes: A detailed step by step tutorial for this project can be found in the document attached below.
Suggested Reading: EASE with Motor & LCD Shields.