This tutorial will show you how to take over the controls of the OWI Robotic Arm with the help of an Arduino compatible, open-source PLC called the Controllino MAXI,
together with Cayenne (my go-to iOT application for remote connection to my Arduino projects).
The Controllino MAXI will provide the physical connections to the OWI robotic arm, and Cayenne will allow me to control the arm via my web browser
or via the Cayenne app on my phone.
The Controllino will connect to the internet via the Ethernet port onboard.
You do not need the Controllino library for this project, however, if you have a Controllino, you might as well install the library.
You can read the Controllino library installation instructions from their GitHub webpage here: https://github.com/CONTROLLINO-PLC/CONTROLLINO_Library.
You will need to notify the Arduino IDE of the Controllino MAXI board by pasting the supplied URL into the "Additional Boards Manager URLs" in the Arduino IDE.
This is located under: FILE - PREFERENCES - Additional Boards Manager URLs.
The URL that you need to paste is in STEP 3 of the Controllino Library installation instructions on their GitHub page.
The video at the top of this tutorial may help clarify the process.
ARDUINO CODE:
The code above is very simple, however you will need to create a dashboard of widgets from within your Cayenne account in order to control the OWI robotic Arm from your phone or via the Dashboard webpage.
Setting up Cayenne Dashboard
Once you have created your Cayenne account, you will be presented with a webpage to choose a board to connect to. Controllino is an Arduino compatible PLC, so make sure to follow these instructions for setting up the Controllino in your Cayenne Account.
Select Arduino from the available list of boards.
Make sure to install the necessary libraries if your have not done so already.
Select Arduino MEGA from the avaliable list of Arduino boards
Select Ethernet Shield W5100
Copy and paste the Arduino code that pops up on screen into your Arduino IDE and upload to the Controllino.
Alternatively, copy and paste the code from above, however you will need to insert your Authentication token to get it to work
After you upload the code to the Controllino, and providing it has an ethernet cable connected to the internet router (and has access to the internet), and is powered on, it will connect
to your Cayenne Dashboard. You can now add widgets to the dashboard in real time to interact with the Controllino, and without uploading any more code to the open source PLC.
Adding Widgets
We need to add a number of widgets in order to activate the relays on the Controllino. The relavent digital pins that we will need to know about can be found on the Controllino website here:
https://controllino.biz/downloads/.
"Armed" with that knowledge, we can now create the widgets which are necessary to control the relays on the Controllino. From within the Cayenne dashboard, please follow these instructions to create a widget:
Select - ADD NEW
Select - DEVICE/WIDGET
Select - ACTUATORS
Then - RELAY from the dropdown box
Select - RELAY SWITCH
Give the widget a descriptive name to differentiate it from the other widgets and a name that is somewhat informative (eg. R0 - Pos)
I gave the first widget the name "R0 - Pos", because it will connect to Relay R0, and that relay will be connected to the Positive (POS) terminal of the OWI robotic arm.
Select the device you would like to connect to. Be aware that you can change the name of the device in the settings. If you followed this tutorial, it should have the
name "Arduino MEGA", but I changed the name of the device to "Controllino" to be more accurate.
We will be using a digital pin to control the relay, therefore select "Digital" as the Connectivity option
For this specific widget, we will be controlling R0, which is activated by digital pin D22 on the Controllino. Therefore select "D22" from the "Pin" dropdown box.
Choose a "Button" as the widget type
Choose an icon from the dropdown box that makes sense to you
Skip Step 1
Select Step 2: Add actuator
You should now see your new widget on the dashboard. Select the widget to enable or activate that relay. If you do this, and if everything goes to plan, you will see the LED for R0 illuminate on the Controllino.
You now have to add the rest of the widgets to the dashboard in order to control the rest of the relays on the Controllino.
Widget Dashboard
Here is a table to show you how I setup my dashboard.
Fritzing diagram
OWI Robotic Arm Pins
Normal OWI Robotic Arm Circuit
The following circuit diagram will show you how the wired control box is normally connected to the OWI Robotic arm. This is the circuit diagram of the OWI robotic arm under normal operating contidtions.
OWI Robotic Arm Circuit when connected to Controllino
The following circuit diagram will show you how the OWI Robotic Arm will be controlled by the relays of the Controllino. This is the circuit diagram of the OWI robotic arm when it is connected to the Controllino.
All connected
The OWI Robotic Arm is connected to a breadboard using the female-to-male jumper wires. Solid core wire is then fed through to the relay terminals of the Controllino. You could
just wire it up so that the robotic arm is connected directly to the Controllino, however, I did not have the right connectors for this purpose.
The Controllino is also connected to my internet router via a normal RJ-45 ethernet cable, and is powered by a 12V DC power adapter.
Summary
Now that you have all the physical connections made, uploaded the code to the Controllino, and have created your dashboard in Cayenne, you should be able to control your OWI Robotic arm from
anywhere in the world. As demonstrated in the video at the start of this tutorial, the robotic arm has quite a bit of give on each of the joints, which makes it difficult to achieve
certain tasks that require an element of precision. There goes that idea of being able to perform surgery with this thing !!! At least you can get it to make you a cup of tea, and if you
are patient enough, you might even get a grape once in a while.
Thank you to Controllino and Cayenne for making this tutorial possible. If you would like your product featured in my tutorials, please contact me on my contact page.
If you like this page, please do me a favour and show your appreciation :
Using the HMC5883L magnetometer sensor of the GY-80 module from ICStation to monitor a garage door and notify when it has been opened or closed.
The Cayenne service provides much of the monitoring and notifying functionality. A major feature of this project. Cayenne takes care of all of the complicated work behind the scenes,
making it easy to connect your Arduino to the cloud and allow you to monitor your garage from virtually anywhere.
This project was created specifically to monitor a garage, but you will soon discover that this project could be used to monitor a whole host of other things.
Monitor your front door, your back door, your bag, your chair, your cookie jar.
Monitor for peace of mind, or catch someone in the act of stealing your stuff. This project has got you covered. Let's see how:
You can find the datasheet for the HMC5883L pretty easily by searching on the internet. HMC5883L datasheet - Sparkfun
Arduino Libraries and IDE
Here is a link to the Arduino IDE download. The IDE is required to upload code to the Seeeduino Cloud.
You need the Cayenne Library installed in your Arduino IDE. You can find the Cayenne library here: Cayenne Libarary
There are libraries on the internet for the GY-80 module, however, it is relatively easy to use the magnetometer on this module. And therefore no libraries are required for the sensor.
If you would like some more information about using the magnetometer sensor, and how to get the most out of it, then please have a look at my previous tutorial which goes into much more detail.
ARDUINO CODE:
You need to make sure to insert your OWN Cayenne token into the sketch above. You will get this token when connecting your Arduino to the Cayenne service.
Watch the video for further explanation.
Fritzing diagram
Cayenne Widgets
Please make sure to watch the video to see how to connect the Seeeduino Cloud to Cayenne and how to create the Cayenne widgets.
Cayenne widgets are necessary to create the dashboard on your phone or browser.
They will also interact with the Arduino sketch, and will also be involved in creating the notification system.
The following links will take you to the relevant part of the video:
The Master switch button is used to switch monitoring from OFF to ON (and vice versa). Therefore you can choose when to monitor the garage and when to stop monitoring.
When first installing the project onto your garage door, and turning the Seeeduino Cloud on, it will automatically calibrate each sensor to a value of 1000.
If you experience any drift away from 1000 for whatever reason, simply press the Request calibration button, and each sensor will be recalibrated back to 1000.
The x,y and z axis widgets are there so that you can see the readings coming from the magnetometer sensor. And when any of the axis variables breach the threshold
away from 1000, it will trigger the Door Status widget. This is how we can tell if the door is open or closed.
We also use the Door Status widget to help with the notification system.
When the Door status changes from "Closed" to "Open", a notification trigger will be activated, and a message will be sent via email or SMS.
This notification is useful for monitoring when the door was opened. If you happen to recalibrate when the door is open. You will get a notification when the garage door closes.
Concluding comments
This project is relatively simple, and quite easy to set up. What I liked about this project was the versatility and alternate uses. You can use the same setup to monitor many
different things. It is not just limited to monitoring a garage door. But being able to tell whether my garage door is opened or closed, especially after I have driven away from my house
, is really cool. Now I don't have to drive all the way back home to check.
Let me know if you have replicated this project, and also what kinds of things you decided to monitor with this project.
Arduino is well known for the large variety of sensors / modules that can be connected.
It is quite easy to hook up a temperature or humidity sensor to get instant feedback about the surrounding environmental conditions.
However, sometimes you do not have a temperature sensor. Sometimes you have a sensor, but would like to know the temperature in other cities !
Or you would like to know what the temperature will be tomorrow?
Well now you can !!
All you need is a Temboo account, an internet connection and the following components:
An Arduino UNO (and Ethernet Shield) queries Yahoo using a Temboo account, and retrieves weather information.
The data is filtered and processed, and then passed on to another Arduino UNO to be displayed on a TFT LCD module.
Two Arduino UNOs are used because the Ethernet library and the UTFT library are both memory hungry, and together
consume more memory than one Arduino UNO can handle.
Yes - I could have used a different board such as the Arduino MEGA, but where is the fun in that ??
This project will teach you many things:
How to use an Ethernet Shield with a Temboo account to retrieve internet data
How to use a TFT LCD module (ITDB02-1.8SP)
How to reduce memory consumption when using the UTFT library
How to power two Arduinos with a single USB cable
How to transmit data from one Arduino to another (via jumper wires)
All of this and a whole lot more !!
Video
Have a look at the following video to see the project in action.
You will need to create a Temboo account to run this project:
Temboo Account Creation
Step 1:
Visit the Temboo website : https://www.temboo.com/
Create an account by entering a valid email address.
Then click on the Sign Up button.
Step 2:
Verify your email address by clicking on the link provided in the email sent by Temboo.
Step 3:
You will be directed to the account setup page:
Create an Account Name, and Password for future access to your Temboo Account
Check the terms of service and if you agree, then tick the box
Press the Go! button
Step 4:
You will then encounter the "Welcome!" screen:
Step 5:
Navigate to the top right of the screen and select the LIBRARY tab
Step 6:
On the left hand side you will see a list of choreos.
Type Yahoo into the search box on the top left of the screen.
Navigate to the GetWeatherByAddress Choreo by clicking on...
Yahoo _ Weather _ GetWeatherByAddress
Step 7:
Turn the IoT Mode to ON (in the top right of screen)
Step 8:
What's your platform / device? : Arduino
How is it connected? : Arduino Ethernet
The following popup box will appear:
Step 9:
Name: EthernetShield - you can choose any name. Letters and numbers only. No spaces.
Shield Type: Arduino Ethernet
MAC Address : You can normally find the MAC address of the Ethernet shield on the underside.
Enter the MAC address without the hyphens. Then click SAVE.
Step 10:
Move to the INPUT section.
Enter the Address of the place you want the Temperature for.
Address = Perth, Western Australia
Expand the Optional INPUT for extra functionality
Units = c - If you want the temperature in Celcius.
Step 11:
This will automatically generate some Arduino CODE and a HEADER FILE.
Don't worry about the Arduino code for now... because I will provide that for you.
However, you will need the automatically generated HEADER file. I will show you what to do with that soon.
So don't lose it !'
Temboo Library Install
The Temboo library will need to be installed before you copy the Arduino code in the sections below.
To install the Temboo library into your Arduino IDE, please follow the link to their instructions:
Installing the Temboo Arduino Library
UTFT Library Install
Download the UTFT library from this site:
http://www.henningkarlsen.com/electronics/library.php?id=51
Once downloaded and extracted. Go into the UTFT folder and look for the memorysaver.h file.
Open this file in a text editor, and "uncomment" all of the TFT modules that are not relevant to this project.
I disabled all of the TFT modules except the last 3 (which made reference to ST7735) - see picture below.
The TFT module we are using in this project is the ITDB02-1.8SP from ITEAD Studio.
Save the memorysaver.h file, and then IMPORT the library into the Arduino IDE as per the normal library import procedure.
If you do not modify the memorysaver.h file, the Arduino SLAVE sketch will not compile.
Arduino Code (MASTER)
This project uses 2 Arduino UNOs.
One will be the Master, and one will be the Slave.
The following code is for the Arduino MASTER.
Open up the Arduino IDE.
(I am using Arduino IDE version 1.6)
Paste the following code into the Arduino IDE code window.
PLEASE NOTE: You may need to change some of the lines to accomodate your INPUTS from step 10.
Have a look around line 36 and 37.
/* =============================================================================== Project: Weather Reporter: Temboo, Ethernet, Arduino Title: ARDUINO MASTER: Get temperature from Yahoo using Temboo Author: Scott C Created: 27th February 2015 Arduino IDE: 1.6.0 Website: http://arduinobasics.blogspot.com/p/arduino-basics-projects-page.html Description: The following sketch was designed for the Arduino MASTER device. It will retrieve temperature/weather information from Yahoo using your Temboo account (https://www.temboo.com/), which will then be sent to the Arduino Slave device to be displayed on a TFT LCD module. Libraries : Ethernet Library (that comes with Arduino IDE) Temboo Arduino Library - https://www.temboo.com/sdk/arduino Temboo Library installation instructions for Arduino: https://www.temboo.com/arduino/others/library-installation You will also need to copy your Temboo Account information into a new tab and call it TembooAccount.h. Please follow the instructions on the ArduinoBasics blog for more information.---------------------------------------------------------------------------------- */
#include <SPI.h>
#include <Dhcp.h>
#include <Dns.h>
#include <Ethernet.h>
#include <EthernetClient.h>
#include <Temboo.h>
#include "TembooAccount.h"// Contains Temboo account information - in a new tab.
#include <Wire.h>
byte ethernetMACAddress[] = ETHERNET_SHIELD_MAC; //ETHERNET_SHIELD_MAC variable located in TembooAccount.hEthernetClient client;
String Address = "Perth, Western Australia"; // Find temperature for Perth, Western AustraliaString Units = "c"; // Display the temperature in degrees CelciusString ForeCastDay[7]; //String Array to hold the day of the week String ForeCastTemp[7]; //String Array to hold the temperature for that day of week.int counter1=0; //Counters used in FOR-LOOPS.int counter2=0;
boolean downloadTemp = true; // A boolean variable which controls when to query Yahoo for Temperature information.voidsetup() {
Wire.begin(); // join i2c bus : Used to communicate to the Arduino SLAVE device. // Ethernet shield must initialise properly to continue with sketch.if (Ethernet.begin(ethernetMACAddress) == 0) {
while(true);
}
//Provide some time to get both Arduino's ready for Temperature Query.delay(2000);
}
voidloop() {
if (downloadTemp) {
downloadTemp=false; //Stop Arduino from Querying Temboo repeatedly
getTemperature(); //Retrieve Temperature data from Yahoo
transmitResults(); //Transmit the temperature results to the Slave Arduino
}
}
/* This function will Query Yahoo for Temperature information (using a Temboo account) */void getTemperature(){
TembooChoreo GetWeatherByAddressChoreo(client);
// Invoke the Temboo client
GetWeatherByAddressChoreo.begin();
// Set Temboo account credentials
GetWeatherByAddressChoreo.setAccountName(TEMBOO_ACCOUNT); //TEMBOO_ACCOUNT variable can be found in TembooAccount.h file or tab
GetWeatherByAddressChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME); //TEMBOO_APP_KEY_NAME variable can be found in TembooAccount.h file or tab
GetWeatherByAddressChoreo.setAppKey(TEMBOO_APP_KEY); //TEMBOO_APP_KEY variable can be found in TembooAccount.h file or tab// Set Choreo inputs
GetWeatherByAddressChoreo.addInput("Units", Units); // Set the Units to Celcius
GetWeatherByAddressChoreo.addInput("Address", Address); // Set the Weather Location to Perth, Western Australia// Identify the Choreo to run
GetWeatherByAddressChoreo.setChoreo("/Library/Yahoo/Weather/GetWeatherByAddress");
// This output filter will extract the expected temperature for today
GetWeatherByAddressChoreo.addOutputFilter("Temperature", "/rss/channel/item/yweather:condition/@temp", "Response");
// These output filters will extract the forecasted temperatures (we need to know the day and temperature for that day)
GetWeatherByAddressChoreo.addOutputFilter("ForeCastDay", "/rss/channel/item/yweather:forecast/@day", "Response");
GetWeatherByAddressChoreo.addOutputFilter("ForeCastHigh", "/rss/channel/item/yweather:forecast/@high", "Response");
// Run the Choreo;
GetWeatherByAddressChoreo.run();
//Reset our counters before proceeding
counter1 = 0;
counter2 = 0;
while(GetWeatherByAddressChoreo.available()) {
// This will get the first part of the outputStringname = GetWeatherByAddressChoreo.readStringUntil('\x1F');
name.trim(); // get rid of newlines// This will get the second part of the outputString data = GetWeatherByAddressChoreo.readStringUntil('\x1E');
data.trim(); // get rid of newlines//Fill the String Arrays with the Temperature/Weather dataif (name == "Temperature") {
ForeCastDay[counter1] = "Today";
ForeCastTemp[counter2] = data;
counter1++;
counter2++;
}
if(name=="ForeCastDay"){
ForeCastDay[counter1] = data;
counter1++;
}
if(name=="ForeCastHigh"){
ForeCastTemp[counter2] = data;
counter2++;
}
}
//Close the connection to Temboo website
GetWeatherByAddressChoreo.close();
}
/* This function is used to transmit the temperature data to the Slave Arduino */void transmitResults(){
char tempData[10];
int tempStringLength = 0;
//Modify the current temp to "Now"
ForeCastDay[0] = "Now";
//Send * to Slave Arduino to prepare for Temperature TransmissionWire.beginTransmission(4); // Transmit to device #4 (Slave Arduino)Wire.write("*");
delay(500);
Wire.endTransmission();
delay(500);
//Send the temperatures on the Slave Arduino to be displayed on the TFT module.for (int j=0; j<20; j++){
for (int i=0; i<6; i++){
memset(tempData,0,sizeof(tempData)); //Clear the character arrayString tempString = String(ForeCastDay[i] + "," + ForeCastTemp[i] + ".");
tempStringLength = tempString.length();
tempString.toCharArray(tempData, tempStringLength+1);
Wire.beginTransmission(4); // Transmit to device #4 (Slave Arduino)Wire.write(tempData);
delay(1000);
Wire.endTransmission();
delay(4000);
}
}
/* ---------------------------------------------------------------------- // You can use this to send temperature results to the Serial Monitor. // However, you will need a Serial.begin(9600); statement in setup(). Serial.println("The Current Temperature is " + ForeCastTemp[5] + " C"); Serial.println(); Serial.println("The Expected Temperature for"); for (int i=0; i<5; i++){ Serial.println(ForeCastDay[i] + " : " + ForeCastTemp[i] + " C"); } ---------------------------------------------------------- */
}
Select "New Tab" from the drop-down menu on the top right of the IDE.
Name the file: TembooAccount.h
Paste the contents of the HEADER file from the Temboo webpage (Step 11 above) into the TembooAccount.h tab.
If you do not have the TembooAccount.h tab with the contents of this HEADER file next to your Arduino Master sketch,
then it will NOT work.
Make sure to SAVE the Arduino Sketch and upload the code to the Arduino (MASTER)
Arduino Code (SLAVE)
This project uses 2 Arduino UNOs.
One will be the Master, and one will be the Slave.
The following code is for the Arduino SLAVE.
Make sure to disconnect the Arduino MASTER from your computer, and keep it to one side.
Connect the Arduino SLAVE to your computer, and upload the following code to it.
Make sure to create a new sketch for this code (File _ New).
/* =============================================================================== Project: Weather Reporter: Temboo, Ethernet, Arduino Title: ARDUINO SLAVE: Display temperature on TFT LCD Module Author: Scott C Created: 27th February 2015 Arduino IDE: 1.6.0 Website: http://arduinobasics.blogspot.com/p/arduino-basics-projects-page.html Description: The following sketch was designed for the Arduino SLAVE device. It will receive temperature information from the Arduino MASTER and then display this information on the ITDB02-1.8SP TFT LCD Module. Please read the important notes below.----------------------------------------------------------------------------------NOTES:This sketch makes use of the UTFT.h library from : http://www.henningkarlsen.com/electronics/library.php?id=51Please note: You will need to modify the memorysaver.h file in the UTFT folder with a text editor to disable any unused TFT modules. This will save memory, and allow you to run this sketch on an Arduino UNO. I disabled all TFT modules inthat file except the last 3 (which made reference to ST7735).I used a ITDB02-1.8SP TFT LCD Module from ITEAD Studio.PinOut:Arduino SLAVE ITDB02-1.8SP TFT 3.3V ---- VDD33 Digital9 (D9)---- CS Digital8 (D8)---- SCL Digital7 (D7)---- SDA Digital6 (D6)---- RS Digital5 (D5)---- RST GND ---- GND 5V ---- VINUsage: UTFT myGLCD(<model code>, SDA, SCL, CS, RST, RS);Example: UTFT myGLCD(ITDB18SP,7,8,9,5,6);-----------------------------------------------------------------------------------This sketch also makes use of the Wire.h library. The Wire.h library comes with the Arduino IDE.This enables communication between Arduino Master and Arduino Slave.PinOut:Arduino MASTER Arduino SLAVE Analog4(A4) ---- Analog4 (A4) Analog5(A5) ---- Analog5 (A5) GND ---- GND-----------------------------------------------------------------------------------The Arduino Slave is powered by the Arduino Master:PinOut:Arduino MASTER Arduino SLAVE 5V ---- VIN==================================================================================*/
#include <UTFT.h>
#include <Wire.h>
//Declare all of the fonts
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];
// Usage: UTFT myGLCD(<model code>, SDA, SCL, CS, RST, RS);UTFT myGLCD(ITDB18SP,7,8,9,5,6);
boolean tempDisplay = false; //Helps with processing the data from the Arduino MASTERboolean readTemp = false; //Helps to differentiate the day from the temperature valuesString dayOfWeek=""; //Variable used to hold the Day of the WeekString tempReading=""; //Variable used to hold the Temperature for that dayString Units = "'C "; //Display Temperature in CelciusString Address = "Perth, WA"; //Address to show at top of Displayvoidsetup(){
// Initialise the TFT LCD
myGLCD.InitLCD();
initialiseLCD();
delay(5000);
//Setup the Serial communication between the Arduino MASTER and SLAVEWire.begin(4); // join i2c bus with address #4Wire.onReceive(receiveEvent); // register event
}
voidloop(){
delay(50);
}
/* This function initialises the TFT LCD, and draws the initial screen.*/void initialiseLCD(){
//Clear the screen
myGLCD.clrScr();
//Draw the borders (top and bottom)
myGLCD.setColor(25, 35, 4);
myGLCD.fillRect(0, 0, 159, 13);
myGLCD.fillRect(0, 114, 159, 127);
myGLCD.drawLine(0,18,159,18);
myGLCD.drawLine(0,109,159,109);
//Header and Footer Writing
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(25, 35, 4);
myGLCD.setFont(SmallFont);
myGLCD.print("arduinobasics", CENTER, 1);
myGLCD.print("blogspot.com", CENTER, 114);
}
/* This function executes whenever data is received from Arduino master It will ignore all data from the Master until it receives a '*' character. Once this character is received, it will call the receiveTemp() function in order to receive Temperature data from the Arduino Master.*/void receiveEvent(int howMany){
if(tempDisplay){
receiveTemp();
}else{
while(0 < Wire.available()){
char c = Wire.read(); // receive byte as a characterif(c=='*'){ // Searching for a '*' character
tempDisplay=true; // If '*' received, then call receiveTemp() function
}
}
}
}
/* This function is used to receive and process the Temperature data from the Arduino Master and pass it on to the displayTemp() funtion.*/void receiveTemp(){
tempReading="";
dayOfWeek = "";
while(0 < Wire.available()){
char c = Wire.read(); // receive byte as a characterif(readTemp){
if(c=='.'){ // If a . is detected. It is the end of the line.
readTemp=false;
}else{
tempReading=tempReading+c;
}
}else{
if(c==','){
} else {
dayOfWeek=dayOfWeek+c;
}
}
if(c==','){
readTemp=true;
}
}
displayTemp();
}
/* Display the Temperature readings on the TFT LCD screen.*/void displayTemp(){
//Clear the writing on top and bottom of screen
myGLCD.setColor(25, 35, 4);
myGLCD.fillRect(0, 0, 159, 13);
myGLCD.fillRect(0, 114, 159, 127);
//Small writing on top and bottom of screen
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(25, 35, 4);
myGLCD.setFont(SmallFont);
myGLCD.print(Address, CENTER, 1);
myGLCD.print(dayOfWeek, CENTER, 114);
//Write the big temperature reading in middle of screen
myGLCD.setBackColor(0, 0, 0);
myGLCD.setFont(SevenSegNumFont);
myGLCD.print(tempReading, CENTER, 40);
//Write the Units next to the temperature reading
myGLCD.setFont(BigFont);
myGLCD.print(Units, RIGHT, 40);
}
Wiring it up
Once the code has been uploaded to both Arduinos (Master and Slave), I tend to label each Arduino
so that I don't mix them up. You will notice an 'S' marked on the SLAVE in some of the photos/videos.
Then it is time to piggy-back the shields onto the Arduinos and wire them up. Make sure you disconnect
the USB cable from the Arduinos before you start doing this.
Step 1: Ethernet Shield
Place the Ethernet shield onto the Arduino MASTER.
Connect an Ethernet cable (RJ45) to the Ethernet shield. The other end will connect to your internet router.
Step 2: Arduino SLAVE and TFT LCD module
You can either wire up the TFT LCD module on a breadboard, or you can use a ProtoShield with mini-breadboard.
It doesn't really matter how you hook it up, but make sure you double check the connections and the
TFT specifications before you power it up. I have powered the Arduino Slave by connecting it to the Arduino Master
(see fritzing sketch below).
There is no reason why you couldn't just power the slave seperately. In fact this is probably the safer option. But
I read that this power-sharing setup was ok, so I wanted to give it a go. I have no idea whether it would be suitable
for a long term power project... so use it at your own risk. I tried using 4 x AA batteries to power this circuit, but
found that the LCD screen would flicker. So then I tried a 9V battery, and noticed that the 5V voltage regulator was
heating up more than I felt comfortable with. In the end, I settled with the USB option, and had no further issues.
I am sure there are other possible options, and feel free to mention them in the comments below.
Use the following fritzing sketch and tables to help you wire this circuit up.
Fritzing sketch
Arduino MASTER to SLAVE connection table
Arduino SLAVE to ITDB02-1.8SP TFT LCD
ITDB02-1.8SP TFT LCD Module Pictures
Project Pictures
If you like this page, please do me a favour and show your appreciation :