Connecting Arduino to ARC

Description

Program an Arduino and connect it to ARC to become an EZ-B.

Compatible Arduinos

This tutorial currently covers what Arduino's are compatible with ARC, where to download the firmware, how to flash the Arduino and connect to ARC.

Once you follow this tutorial and program an Arduino, you will be able to connect an Arduino to ARC and control the Arduino. Essentially, you will be converting an Arduino into an EZB. The best part about this is having access to the source code means you can add new functionalities to the Arduino and extend the capabilities of ARC. The one item to note is each Arduino will have different capabilities or lacking capabilities (i.e. video, audio, etc.).

ARC Version
- This feature works with ARC 2019.01.31.00 Beta or newer

Arduino Capabilities
Additionally, each Arduino model will have a different MCU (microcontroller) with different capabilities for servos, PWM, and Analog. Consult the datasheet/manual of the Arduino you're using to ensure you understand what ports are available for different commands. For example, some Arduino models only allow PWM/Servos on specific digital ports. Meanwhile, other Arduino's share I2C with Analog ports. You will have to determine what ports are available because we have no idea due to the number of Arduino versions out there. For example, servo ports on Arduino UNO must be PWM ports 3, 5, 6, 9, 10, and 11. These limitations are that of the Arduino libraries and hardware.

There's a significant number of Arduino's variations out there each with slight modifications. This means the base firmware provided in this tutorial can be modified for various Arduino configurations. Also, you are free to add new features to the Arduino firmware and register them as Capabilities to be used in ARC. But, that's a future edit of this tutorial :).

User-inserted image

*Arduino Mega showed in the picture above


Compatible Official Arduinos
The ARC software is compatible with a number of Arduino products, which the firmware can be found on their respective pages. Find your Arduino board and download the firmware from this page: https://synthiam.com/Support/Hardware/Hardware-Overview

Download the firmware source code for your Arduino version or compatible from the above link and continue to the next step of this tutorial. *Note: compatible or clone Arduino's will require a toolset and library installation to compile the firmware. Check the Arduino compatible product manual for instructions on adding libraries and tools to the Arduino IDE for clone hardware.

Netherlands
#53  
Has there been any updates on the tutorial on how to customize the firmware? I was really hoping I could use ARC to bridge an arduino UNO with an LCD panel and a laptop to do some more robust AI stuff
PRO
Synthiam
#54   — Edited
Hey Lipe, what specifically are you looking for to customize the firmware? You'd have to learn how to program in Arduino to customize the firmware. There's nothing specific about the firmware that requires any additional knowledge. Simply open the arduino firmware sketch into the arduino editor and modify the pieces you're interested in. 

However, if you merely want an LCD panel, then that doesn't require the firmware to be modified. You can start by getting a Serial (UART) LCD panel. Then, you can send Serial commands through the Arduino from ARC to the LCD.

Here's a link I found that will be helpful: https://synthiam.com/Community/Questions/Lcd-Display-Help-1165/comments
#55  
Hello everyone, 

I  am using Arduino Mega and controlling it with ARC. Currently communicating through the USB port COM3. The Arduino Mega has 53 ports. EZB only seems to let me have dropdowns to program 23 pins. 23 pins, that's it? Am I missing something with an option? 

I 3D printed Johnny 5's head from the movie Short Circuit. I have servos for every little part, relay boards, RGB eyes, lasers, voice and there's just no more room for another Arduino board for yet another COM port. I put so much into this project. Rebuilt so many times. Cursed endlessly. Please offer any advice. 

Thank you.
PRO
Synthiam
#56  
There would need to be a modified firmware and some sort of robot skill that extends the d24 ports to v ports. I’d have to think on that.
PRO
Synthiam
#57  
I have an idea for you, but it’ll take a few days to make
#58  
DJ Sures, Thank you so much for your response. If you do think of a way that would really be great. You have no idea how much I've already struggled. I knew I was already taking on a big challenge. Thank you!
PRO
Synthiam
#59  
I have some ideas. Running a few excitements but the plan is to allow a robot skill to extend the servo ports into the Vx ports for arduino firmware. Stay tuned:) and thanks for the kind words
PRO
USA
#61  
I presume you will use your Arduino Mega to control a mix of servos and digital ports.

One easy option:
change the firmware code to map:  
EZB 0-23 servos to control arduino mega servo ports 0-23.
EZB 0-23 digital ports to control arduino mega digital ports 24-47

so you can control 24 servos and 24 digital ports, is this ok ?
PRO
Synthiam
#62  
Oh that’s a good idea - it would be easiest change right away. Smart Ptp:)
PRO
USA
#63  
DJ taking in consideration Arduino Mega hardware limitations:

I would map the following:
Analog:
A0-A7

Servos:
mega ports D22-D43 = 22 Servos = EZB 0-21 
mega ports D68-D69 = 2 Servos = EZB 22-23
Total = 24 servos

PWM Ports:
mega ports D02-D10 = 9 ports  = EZB 0-8
mega ports D13         = 1 ports  = EZB 9
mega ports D44-D46 = 3 ports  = EZB 10-12
Total = 13 pwm ports

Digital Ports:
EZB 0-12 = same as PWM ports in mega (above)
EZB 13-14 = D11-D12 = 2 ports
EZB 15-20 = D62-D67 = 6 ports 
Total = 21 ports ( 8 exclusive for Digital IO and 13 shared with PWM ports)


pin 0 and 1 are serial port 0 / usb port (avoid these ports)

and you have the following:
Serial1 on pins 19 (RX) and 18 (TX),
Serial2 on pins 17 (RX) and 16 (TX),
Serial3 on pins 15 (RX) and 14 (TX).

I2C:
D20 - sda
D21 - scl

With the above setup:
24 servos
13 pwm ports  / digital ports
8 digital ports
8 analog ports
serial ports available/free
i2c available/free
PRO
Synthiam
#64  
Super smart. I like it! I’ll make changes and publish. This will be much easier. Thanks again for the idea ptp
PRO
Synthiam
#65  
I made the firmware changes to the mega firmware for the pins that ptp outlined. I have a mega on order and it should be here in a few days. I'll be able to test it before uploading the firmware. Stay tuned
PRO
Synthiam
#67   — Edited
Got the mega - modified firmware. Will be testing today. Expect new firmware online in the next few days
#68  
Hey DJ Sures,
How is everything? I just got back from a work trip and excited to work on this again. I might not be sure where to look for new versions or changes to firmware. Were you successful in getting the Arduino Mega to run the change?
PRO
USA
#70  
Hi DJ,
When I click on the link to download the latest mega firmware I get this message...; please advise.  Thanks.

"Hi there!

Looks like you are lost!

What you are looking for is not here. If you think this is a mistake let the humans behind Synthiam know that there was a 404 error when you tried to access this page by sending an email to info@synthiam.com."
PRO
USA
#71   — Edited
Edited: I move this question to hardware.