Introduction: Smart Home With Arduino Ethernet Shield and Teleduino (with Web App)

This project is a simple solution for those who want a smart-home system but do not have a big budget and for the lazy ones that do not want to get up from bed to turn the lights off or on.

It also is the project of a high school student for his final exams!

This is just a basic configuration but with a little more time and dedication you could customize by adding more sensors, LEDs, relays and scheduled jobs to start with the execution of a PHP script from the web server.

I am using a free web-hosting service called Altervista which includes the SQL database server (with phpMyAdmin) and the php server.

Step 1: Hardware & Software

To realize this project you will need:

Hardware:

  • Arduino (Mega or similar, the Uno will probably not have enough memory)
  • Ethernet Shield
  • 3 DHT 11 (temperature and humidity sensor)
  • 3 photoresistors
  • Breadboard
  • LEDs
  • 220v Relay
  • 5V fan
  • NPN 337 transistor
  • Potentiometer
  • 16 x 2 LCD
  • Resistors (220 Ω, 1 kΩ, 10 kΩ, etc)
  • Lunch box
  • Cables

Software:

  • web server (Apache)
  • database and DMBS (MySQL & phpMyAdmin)
  • php server
  • Arduino IDE

Step 2: Teleduino

So, to send the requests from the Internet to Arduino we will use a web service called Teleduino.
Just register and wait for the email containing the unique key, after that follow the instructions on how to install the libraries and how to turn a LED on or off.

Make sure to download and correctly link the library.

If you have any problems you can contact the developer of this web service.

Step 3: The Database

In order to save the data from the sensors we will need to set up a MySql database.

In this case there are 2 tables: sensor_log and users.

CREATE TABLE `sensor_log` (
  `id` smallint(6) PRIMARY KEY AUTO_INCREMENT,
  `timeStamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `temp_0` float DEFAULT NULL,
  `hum_0` float DEFAULT NULL,
  `temp_1` float DEFAULT NULL,
  `hum_1` float DEFAULT NULL,
  `temp_2` float DEFAULT NULL,
  `hum_2` float DEFAULT NULL,
  `light_0` float DEFAULT NULL,
  `light_1` float DEFAULT NULL,
  `light_2` float DEFAULT NULL,
  
);

CREATE TABLE `users` (
  `username` char(30) PRIMARY KEY,
  `password` char(50) NOT NULL UNIQUE,
  `is_connected` tinyint(1) NOT NULL DEFAULT '0',

);

Step 4: The Arduino Sketch

The Arduino I am using for this project is the Mega 2560 so you
will have to adjust the functions / pins / libraries in the .ino file if you are using a different board.

The sketch's logic is pretty simple:

In the setup() function the Arduino gets an IP address, connects to the Teleduino server and initializes the sensors.

In the loop() function it loops until a request arrives and every 60 seconds it gets the data from the sensors and sends it with the POST method to a php page that adds it to the database.

There is a custom function called .getReset() and to make it work the files Teleduino2560.cpp and Teleduino2560.h (in the libraries/Teleduino2560 folder) must be replaced.

Step 5: The Web App

The web app is composed by:

  • add.php ⇒ gets the data from the Arduino and puts it into the database
  • index.php ⇒ contains the login form
  • login.php ⇒ verifies the username / password
  • loading.php ⇒ initializes the Arduino pins with the Teleduino links
  • home.php ⇒ contains the buttons to interract with the Arduino and the graphs with the data
  • logout.php ⇒ terminates the connection to the web app
  • aboutproject.php ⇒ contains the description of the project (for exam purpose)

The buttons send the GET request to the Teleduino server that turns on / off the pin on the Arduino.

The charts are made with a library called CanvasJS.

You will find everything in the .zip file.

N.B. You will have to add the Teleduino key and the credentials to access the database !

Comments

author
enryitcons (author)2016-07-17

Interesting, togheter with IOT, smart home is an emerging tecnology with many technology players that are investing on this. A nice job, Enrico

author
Chips_96 (author)enryitcons2016-07-17

Thank you, the secret of this proget is the customizability and the easiness of how it is done

author
irinak1 (author)2016-07-04

Hi,

I’m irinakim and I’m work in the Wiznet.

Thank you for using our product.

We are collecting so much data using ourproduct.

And I will post the this project on our Web site.( http://wiznetmuseum.com)

Can I post your product on our Web site?

author
Chips_96 (author)irinak12016-07-17

Sure! Post it, a little advertizing of me and my project would be nice :)

If you need a better description just ask for it and we will get in touch ;)

author
DIY Hacks and How Tos (author)2016-06-08

This is really cool.

author

Thanks man! ;)

author
AlbertoF23 (author)2016-06-08

Nice work, man!

author
Chips_96 (author)AlbertoF232016-06-08

Thanks dude