Want to dabble in the world of home automation? In this article, I will show you 3 projects using relays & Arduino for Home Automation.
Arduino OLED 128X64 IIC Serial Display: Printing Text and Moving Images: Have you bought yourself an OLED display for Arduino but don't know how to get started? Not as simple to use as you thought? Try this out! You'll learn to wire up your OLED display and communicate to it over serial (I2C). We're going to cover…
SP3NYR technucal page
Today we’ll expand Arduino’s digital resources thanks to an I2C bus equipped shield and we’ll allow the management of the board via a bluetooth connection RN-42 through an Android systems. All Arduino boards feature a number of digital I/Os. For the simplest projects, such resources are usually more than sufficient, but in those where they […]
Arduino Bluetooth Basic Tutorial: UPDATE : THE UPDATED VERSION OF THIS ARTICLE CAN BE FOUND HEREEver thought of controlling any electronic devices with your smart phone ?Controlling your robot or any other devices with your smartphone will be really cool. Here is is a simple and bas…
In this tutorial we will learn what RFID is, how it works and how to make an Arduino based RFID door lock. RFID stands for Radio Frequency IDentification and it’s a non-contact technology that’s broadly used in many industries for tasks such as personnel tracking, access control, supply chain management...
NEW TUTORIAL: Arduin-o-phone Apple, Schmapple! Make your own phone with an Arduino & Adafruit FONA shield. This project will show you how you can use the FONA shield and a TFT shield stacked o…
ESP8266 relay switch without Arduino proggrammed in Arduino IDE.
bought an arduino starterkit and started playing... once I got the LCD working, I combined it with the temp sensor and created a simple thermostat. Then I couldn't resist to make a processing sketch to draw a curve with received temperature value's. There are 3 main screens, switched by the up/down buttons, the value's are set by the left/right buttons (for more info about connecting a lcd to arduino http://arduino.cc/en/Tutorial/LiquidCrystal) Arduino sketch: #include // LCD, initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //pins(rs, enable, d4, d5, d6, d7) byte lcdCharDegree[8] = {B00000, B00111, B00101, B00111, B00000, B00000, B00000}; //LCD "°" byte lcdCharLeft[8] = {B00000, B00010, B00110, B01110, B00110, B00010, B00000}; //LCD "" //button const int btnUp = 6; const int btnRight = 7; const int btnDown = 8; const int btnLeft = 9; int btnMenu = 0; //needed to change menu item int btnSet; //needed to change settings //temperature const int sensorPin = A0; //input pin for tempsensor float temperature; //temperature value in °C long previousMillis = 0; //needed for 'measure-delay' long interval = 1000; //measure-delay (1 sec) //Thermostat ON-OFF boolean thermostatStatus = LOW; //thermostat is turned off at startup String textStatus; //String printed on LCD //Set temperature float tempSet = 20.00; //set 20.00°C at startup //ledpin variables (2color-led instead of relais) const int ledAPin = 10; const int ledCPin = 13; void setup() { Serial.begin(9600); // set up the number of columns and rows on the LCD lcd.begin(16, 2); //create special charset for LCD lcd.createChar(0, lcdCharDegree); lcd.createChar(1, lcdCharLeft); lcd.createChar(2, lcdCharRight); // setup buttonpins as input pinMode(btnUp,INPUT); pinMode(btnDown,INPUT); pinMode(btnLeft,INPUT); pinMode(btnRight,INPUT); //setup ledpins as output pinMode(ledAPin,OUTPUT); pinMode(ledCPin,OUTPUT); // Print a message on startup lcd.setCursor(0, 0); // set cursor to column 0, line 0 (top line) lcd.print("THERMOSTAT"); // print to LCD lcd.setCursor(0, 1); // set cursor to column 0, line 1 (bottom line) lcd.print("Version 0130.0"); //print to LCD delay(2000); //delay keeps startup message on LCD for 2 sec lcd.clear(); //clear LCD before starting loop() } void loop() { //switch led when changing between menu-options wndSwitchLed(); //switch menu-screen switch (btnMenu){ /* int btnMenu holds value 0 or 1 or 2 * when btnUp/btnDown is pressed, 1 is added/removed to value btnMenu */ case 0: wndScreenTopical(); break; case 1: wndScreenOnOff(); break; case 2: wndScreenTempSet(); } } void wndScreenTopical(){ //static text, printed once on LCD //variable text, update print until menu-option is changed //static text lcd.setCursor(0, 0); lcd.print("Topical Temp."); lcd.setCursor(9, 1); lcd.print(temperature); lcd.setCursor(14, 1); lcd.write(byte(0)); lcd.setCursor(15, 1); lcd.print("C"); //variable text while ((digitalRead(btnUp) == LOW) && (digitalRead(btnDown) == LOW)){ //check buttons, if up/down is pressed leave loop and change screen/ledstatus //when left/right is pressed change value and loop wndGetTemperature(); //get temperature lcd.setCursor(9, 1); //set cursor back in position lcd.print(temperature); //print topical temperature to LCD wndSwitchLed(); //change led color when temperature > tempSet wndBtnPressed(); //check buttons, if button is pressed, change screen/value } } void wndScreenOnOff(){ //static text lcd.setCursor(0, 0); lcd.print("Thermostat"); lcd.setCursor(0, 1); lcd.write(byte(1)); lcd.setCursor(15, 1); lcd.write(byte(2)); //variable text while ((digitalRead(btnUp) == LOW) && (digitalRead(btnDown) == LOW)){ //check buttons, if up/down is pressed change screen/ledstatus // when left/right is pressed change value and loop if (thermostatStatus){ textStatus = "ON "; } else { textStatus = "OFF"; } lcd.setCursor(6, 1); lcd.print(textStatus); wndBtnPressed(); } } void wndScreenTempSet(){ //static text lcd.setCursor(0, 0); lcd.print("Set Temperature"); lcd.setCursor(0, 1); lcd.print("-"); lcd.setCursor(15, 1); lcd.print("+"); //variable text while ((digitalRead(btnUp) == LOW) && (digitalRead(btnDown) == LOW)){ //loop until menu-option is changed lcd.setCursor(4, 1); //set cursor back in position lcd.print(tempSet); //print variable value wndBtnPressed(); //check buttons, if up/down is pressed leave loop and change screen // if left/right is pressed change value and loop } } void wndGetTemperature(){ unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { // save the last time you blinked the LED previousMillis = currentMillis; int sensorVal = analogRead(sensorPin); float voltage = (sensorVal/1024.0) * 5.0; // convert the ADC reading to voltage temperature = (voltage - .5) * 100; /* convert to °C * the sensor changes 10 mV per degree * the datasheet says there's a 500 mV offset * ((volatge - 500mV) times 100)*/ Serial.println(temperature); } } void wndBtnPressed(){ if (digitalRead(btnUp)){ if (btnMenu != 0){ //0 is lowest value for btnMenu lcd.clear(); btnMenu = btnMenu--; } } else if (digitalRead(btnDown)){ if (btnMenu != 2){ //2 is highest value for btnMenu lcd.clear(); btnMenu = btnMenu++; } } else if (digitalRead(btnLeft) && btnMenu == 1){ //btnleft in thermostat ON/OFF if (thermostatStatus){ //thermostat ON? thermostatStatus = LOW; //turn OFF } } else if (digitalRead(btnLeft) && btnMenu == 2){ //btnleft in set temperature, switch-temperature - 0.5°C if (tempSet > 0){ //tempset cannot go below 0°c tempSet = tempSet - 0.5; //if button is pressed substract 0.5 from settemp delay(200); //delay 0.2 sec, otherwise value subracts to fast } } else if (digitalRead(btnRight) && btnMenu == 1){ //btnright in thermostat ON/OFF if (thermostatStatus == LOW){ //thermostat OFF? thermostatStatus = HIGH; //turn ON } } else if (digitalRead(btnRight) && btnMenu == 2){ //btnright in set temperature, switch-temperature + 0.5°C if (tempSet < 100){ //tempset cannot go above 100°c tempSet = tempSet + 0.5; //if button is pressed add 0.5 from settemp delay(200); //delay 0.2 sec, otherwise value adds to fast } } } void wndSwitchLed(){ if (tempSet > temperature && thermostatStatus){ digitalWrite(ledAPin, LOW); digitalWrite(ledCPin, HIGH); } else { digitalWrite(ledCPin, LOW); digitalWrite(ledAPin, HIGH); } } processing: import processing.serial.*; Serial myPort; // Serial port object int lf = 10; // Linefeed in ASCII-code, when linefeed is received, string is complete String myString = null; // empty string wich input data from arduino is saved in, when string is completed its converted to float float num; // float converted from received string float [] valScreen = new float [30]; //30 temperatures values int lengthScreen = 30; PShape valCurve; //Shape object value curve void setup(){ size(640,480,P2D); frameRate(1); //every second the screen is updated once myPort = new Serial(this, Serial.list()[0], 9600); //setup serial object for serial communication myPort.clear(); //empty serial buffer for (int i = 0; i < lengthScreen; i ++){ //fill temp value array with 0's valScreen[i]=0; } } void draw(){ for (int i = 0; i < lengthScreen; i++){ // replace temperature value's in array one place if (i < lengthScreen-1){ // oldest is lost, new value is added from data-input valScreen[i]=valScreen[i+1]; } else { while (myPort.available() > 0) { // read data while avaible myString = myPort.readStringUntil(lf); // string ends when linefeed is received if (myString != null) { // when string is not empty print(myString); // Prints String to console-window num=float(myString); // Converts string to float valScreen[i]= num*(-4); // New value, for visual reasons multiply by -4, negative so higher value is drawn above lower value, // 4* real value because difference between value's are small } } myPort.clear(); // clear serial buffer background(200); stroke(0, 0, 255); line(25, height/2, 480, height/2); // draw X-axis line(25, height/2-150, 25, height/2+20); // draw Y-axis } } valCurve = createShape(); // create curve-shape valCurve.beginShape(); valCurve.noFill(); valCurve.strokeWeight(2); valCurve.stroke(200,0,0); for (int i = 0; i < lengthScreen; i++){ // for loop for reading curve-data valCurve.curveVertex(15*i, valScreen[i]); if (i == 0 || i == lengthScreen-1){ // at start/end curve ad same value once again (more info see Vertex in Processing-Refference) valCurve.curveVertex(15*i, valScreen[i]); } noStroke(); fill(0, 0, 0); ellipse(25+(15*i), height/2+valScreen[i], 5, 5); // value points on curve, code is not part of shape(curve) but is placed here because of 'for-loop' } valCurve.translate(25,height/2); // move shape object to right position valCurve.endShape(); shape(valCurve); // draw curve textSize(15); fill(0, 0, 200); textAlign(RIGHT); text("Realtime temp: "+valScreen[lengthScreen-1]/(-4)+"°C", 480, height/2+50); //text output on screen }
Automatic Arduino Pet Feeder: Whenever you leave the house for a longer period of time and have to leave a pet behind, it’s hard to find someone to take care of it. This system feeds your pet at specific time frames, so that the animal is well fed. It's a very simple design usi…
Wiring diagram: Here is the code: /*ParkingL02.pde Arduining.com 08 JUL 2012 Code used in the production of the Youtube material. */ #include Servo myservo; // create servo object t…
Learn how to set up and program seven segment displays on an Arduino. We'll also see how to display temperature readings from a thermistor.
Frédéric vous propose en téléchargement libre le cours Arduino destiné à ses élèves débutants en programmation et en électronique.
Logger Shield: Datalogging for Arduino: Data logging shield Here's a handy Arduino shield: we've had a lot of people looking for a dedicated and well-designed data logging shield. We worked hard to engineer an inexpensive but well-rounded design. Not only is it easy to assemble …
Automatic Garden Watering System BY Arduino, LCD, Buttons, EEPROM, Solenoid Valve, Motor and Underground Sprinkler : Now we are making automatic watering plant I use .5 KW motor which can operate only one sprinkler at a time so i use this method which give me positive result
Lettuce for Life - Arduino 101 Based Automated Controller for Hydroponics, Aeroponics, Aquaponics, Etc. Intel Curie: SUMMARY A device that can be used to control up to 4 different Hydroponic/Aeroponic Systems at once. The device will control the components of the system and will display notification to a LCD screen and allow the user to customize settings via Blue…
Automated Irrigation System Arduino Controller: In the summer of 2018 I had the opportunity to work with a senior at my college to finalize and finish up his senior engineering project. This project was an automated drip irrigation system at our campus garden. The system consists of a 550 gallon …
Home Automation With Arduino, Buttons ,LCD ,EEPROM AND Smart Phone: Now we can control full home with smart Phone
[…]
Water Level Indicator: The Arduino Nano is a small, complete, and breadboard-friendly board based on the ATmega328 (Arduino Nano 3.x). It has more or less the same functionality of the Arduino Duemilanove, but in a different package. This is a project which is based on t…
Arduino Class: This class will introduce you to the Arduino world. You'll learn the basics, build your first project, and so much more. Each lesson builds on your skills, infusing new knowledge and techniques along the way. You'll start simple with exercises …
Automatic Plant Watering System With Arduino: Have trouble remembering to water those tomatoes? Want to go on vacation but fear the worst for your container garden if you do? Fear no more with an automatic plant watering system! With a little bit of preparation and arduino on your side, you ca…
Arduino Self Balancing Robot: In this project I will describe the construction of robots standing in equilibrium with Arduino.We explained in our previous version of the android controlled project. In this project we will move to our control. Let's go let's get to our building p…
Aprende a utilizar un LED RGB con tu placa Arduino, ilumina tu lugar de trabajo con el color que tu decidas generar, entra y descarga todos los recursos!
Use an Arduino, an Android smartphone, and our free app to connect your devices and automate your home.
[Andrei Istodorescu] has been hard at work building a 7" touch-screen rig which runs XBMC. It may be upside-down, but the Raspberry Pi board which is front and center is still easily recognizable....
Arduino Soil Moisture Sensor: ***Edit*** Please use resistors when connecting the LEDs to your Arduino! This Instructable is old. I have not had the time to update any of the information. You will find a lot of GREAT information in the comments please read them after reading the…
RF 315/433 MHz Transmitter-receiver Module and Arduino: Hi every body , I searched on Instructables about a simple RF Transmitter-receiver module , Which is used in Remote control for cars , or to control simple tasks , like control relay on/off unfortunately I didn't find What I need , So i …
Long Range, 1.8km, Arduino to Arduino Wireless Communication With the HC-12.: In this instructable you will learn how to communicate between Arduinos over a long distance up to 1.8km in open air. The HC-12 is a wireless serial port communication module that is very useful, extremely powerful and easy to use. First you will …
Transform your home with Arduino & Bluetooth! Our easy guide walks you through building a DIY home automation project. Control lights, appliances & more!
Tutorial:ESP32 & DC Motors: This is a modification and addition to my instructable.com tutorials on DC Motors, and it also includes some information from my tutorial on the “ESP32 Tutorial: Touch, Hall, I2C, PWM, ADC, & DAC”. The earlier DC motor tutorials were focused o…
In this tutorial I will show you how to use an OLED Display with Arduino. There are several types of displays available in the market, namely: LCD (Liquid Crystal Display), LED, OLED (Organic LED) and eInk display. LCD and OLED are the most common ones. In this post we will learn how to use OLED […]
The DHTXX sensors are very popular among the Arduino Tinkerers. They provide an inexpensive and easy way to measure temperature and humidity.
This tutorial details the working and decoding of an IR remote using Arduino so that it can control devices like LEDs and relays . .
Learn how servo motors work and how to control servo motors using Arduino. Also, learn how to control multiple servos with Arduino and...
Servo Motor Control using Arduino
We guide you through building your own Raspberry Pi weather station, from prototyping, calibrating the sensors, setting up a database, and waterproofing to the final soldering.
Here's the ultimate collection of 21 Arduino Modules that you can get for less than $2 on eBay. The Arduino community has created a wide variety of sensors, modules, and shields that allows you to easily create a wide variety of projects. Find out how the best and cheaper sensors for the Arduino and instructions.
Arduino Parking Assistant: Those of us who have small garages know the frustration of parking a little bit too far in or a little too far out and not being able to walk around the vehicle. We recently bought a larger vehicle, and it has to be parked perfectly in the garage to…
11 Best Weather Stations: Make one to take on the go, mount one to a powerline pole, or harness the sun's rays to power it. Whatever type of weather station you're looking to build, these projects are sure to inspire.
How to Use an LCD - Arduino: Let's learn how to use an LCD (Liquid Crystal Display) with an Arduino board.
Do you have multiple Arduino sketches that you’d like to merge into one? Then you’ll want to stay tuned for this tutorial! I had a question come in this week about combining Arduino sketches. And for those of you who have never done this, you might be very pleased to know this is actually pretty […]
Raspberry Pi Wall Mounted Google Calendar: Recently I purchased my first home. In the kitchen there was a small TV wall mounted however the TV itself was faulty so I was wondering, what should I do with this wall bracket since I didn’t really want a TV in the kitchen area. Then it dawned on …