We Are Proud to Introduce

FreeProjects

From now on we offer free services for DIY Smart Home Automation projects. So if you are interested lets start it...

Welcome to FreeProjects by WEBSOLTEAM

Arduino Basics

What is Arduino?



Read more
The Cloud

Raspberry Pi

What is Raspberry Pi?



Read more

Home Automation

Basic ideas.



Read more

What is Arduino?

Arduino is an open-source electronics platform based on easy-to-use hardware and software. Arduino boards are able to read inputs - light on a sensor, a finger on a button, or a Twitter message - and turn it into an output - activating a motor, turning on an LED, publishing something online. You can tell your board what to do by sending a set of instructions to the microcontroller on the board. To do so you use the Arduino programming language (based on Wiring), and the Arduino Software (IDE), based on Processing.

Over the years Arduino has been the brain of thousands of projects, from everyday objects to complex scientific instruments. A worldwide community of makers - students, hobbyists, artists, programmers, and professionals - has gathered around this open-source platform, their contributions have added up to an incredible amount of accessible knowledge that can be of great help to novices and experts alike.

Arduino was born at the Ivrea Interaction Design Institute as an easy tool for fast prototyping, aimed at students without a background in electronics and programming. As soon as it reached a wider community, the Arduino board started changing to adapt to new needs and challenges, differentiating its offer from simple 8-bit boards to products for IoT applications, wearable, 3D printing, and embedded environments. All Arduino boards are completely open-source, empowering users to build them independently and eventually adapt them to their particular needs. The software, too, is open-source, and it is growing through the contributions of users worldwide.



Why Arduino?

Thanks to its simple and accessible user experience, Arduino has been used in thousands of different projects and applications. The Arduino software is easy-to-use for beginners, yet flexible enough for advanced users. It runs on Mac, Windows, and Linux. Teachers and students use it to build low cost scientific instruments, to prove chemistry and physics principles, or to get started with programming and robotics. Designers and architects build interactive prototypes, musicians and artists use it for installations and to experiment with new musical instruments. Makers, of course, use it to build many of the projects exhibited at the Maker Faire, for example. Arduino is a key tool to learn new things. Anyone - children, hobbyists, artists, programmers - can start tinkering just following the step by step instructions of a kit, or sharing ideas online with other members of the Arduino community.

There are many other microcontrollers and microcontroller platforms available for physical computing. Parallax Basic Stamp, Netmedia's BX-24, Phidgets, MIT's Handyboard, and many others offer similar functionality. All of these tools take the messy details of microcontroller programming and wrap it up in an easy-to-use package. Arduino also simplifies the process of working with microcontrollers, but it offers some advantage for teachers, students, and interested amateurs over other systems:



WHAT IS A RASPBERRY PI?

The Raspberry Pi is a low cost, credit-card sized computer that plugs into a computer monitor or TV, and uses a standard keyboard and mouse. It is a capable little device that enables people of all ages to explore computing, and to learn how to program in languages like Scratch and Python. It’s capable of doing everything you’d expect a desktop computer to do, from browsing the internet and playing high-definition video, to making spreadsheets, word-processing, and playing games.

What’s more, the Raspberry Pi has the ability to interact with the outside world, and has been used in a wide array of digital maker projects, from music machines and parent detectors to weather stations and tweeting birdhouses with infra-red cameras. We want to see the Raspberry Pi being used by kids all over the world to learn to program and understand how computers work.

THE CLOUD

The Cloud is an Arduino - LED based Interactive Thounderstorm in Your House

You can go ahead and purchase one from online at https://www.rclarkson.com/products/smart-cloud for only $3,360.

Or you can follow these instructions and do it yourself [DIY] from about $150. If you interested to build one of your own, feel free to read along as we guide you through what you need and how to make it step by step. Of course you will need to have some tools like soldering iron, wire-stripper, drill and some other hand tools, but if you still reading we assume as a regular DIY person, you should already have all these handy and ready to roll... ;)


Materials you need:

For your convenience, we have already placed the links below for an easier and faster purchase process.

# Link Description pcs Link
1 AC/DC Wall Mount Adapter 12V 24W 1
2 Power Connector Jack 2.1x5.5mm Solder 1
3 BINZET DC Converter Step Down Regulator 5V Regulated Power Supplies Transformer Converter (5V 10A 50W) 1
4 CAP ALUM POLY 470UF 20% 16V T/H 1
5 Led Strip 16.4ft 300LEDs Individually Addressable Led Light,SMD5050 RGB Magic Color Flexible Rope Lights (Non-Waterproof) 1
6 Arduino Nano V3.0 with ATMEGA328P Mini Module Board 1
7 Linear Voltage Regulator IC Positive Fixed 1 Output 6V 1A TO-220AB 1
8 100µF 10V Aluminum Polymer Capacitor Radial, Can 16 mOhm 5000 Hrs @ 105°C 1
9 MAX4466 Microphone Pre-Amp Audio Evaluation Board 1
10 0.1µF 100V Aluminum Electrolytic Capacitors Radial, Can 2000 Hrs @ 85°C 1
11 Pyroelectric Infrared PIR Motion Sensor Module, Longruner 10 x HC-SR501 Human Sensor Module Pyroelectric Infrared PIR Motion Sensor for Arduino UNO R3 Mega 2560 Nano LKY65 1
12 10 kOhms 0.5W, 1/2W PC Pins Through Hole Trimmer Potentiometer Cermet 1 Turn Top Adjustment 1
13 Arduino Nano V3.0 with ATMEGA328P Mini Module Board 1
14 Linear Voltage Regulator IC Positive Fixed 1 Output 6V 1A TO-220AB 1
15 100µF 10V Aluminum Polymer Capacitor Radial, Can 16 mOhm 5000 Hrs @ 105°C 1
16 PCB Mounting Infrared IR Receiver Detector 2.7-5.5V 1
17 2K Resistor 2 kOhms ±5% 0.25W, 1/4W Through Hole Resistor Axial Flame Retardant Coating, Safety Carbon Film 1
18 Lights Remote Control 1
19 Storage Crate, White 1
20 Iboco T1E series open slot thin finger wire duct, 1.5in width, 4in height, 6.5ft/2m length, gray. Cover included. 1
21 40 Pin Male to Female Dupont Wire, Breadboard Jumper wire Ribbon Cables kit for Arduino Raspberry Pi 1
22 Fairfield Quilter's 80/20 - Crib Size 45" x 60" 1
23 Poly-Fil Supreme Ultra Plush Fiberfill, 12 oz Bag 1



Tools You Need

  • Soldering iron
  • Multimeter
  • Wire strippers



The Circuit Schematic

These are the complete circuit schematics where you can see how you can connect everything together.


The LED Controller Circuit

The Cloud Board #1 - RGB LED Controller


We are going to use an AC/DC Wall Mount Adapter 12V 24W, which should be able to give us enough power to supply the Arduino boards as well as the LED strip. However, both of these units require 5 VDC power, therefore we are using a BINZET DC-DC Converter aka Step Down Regulator. To ensure smoother power source we can use a 470 µF capacitor on the 5 VDC side. Also, to power each Arduino board, we are using 7806BT 6 VDC Regulator, which we connect a 100 µF capacitor for smoother operation. The digital LED strips are the ones we will use in this project. In particular: we will use the WS2812 in our project. The cool part of a digital strip is that you address each LED individually, making very cool effects easy. Obviously the kind we’d like to use in our projects. So we connect the 5 VDC output from the BINZET DC-DC Converter to the LED strip [5V] and [GND] labeled soldering point, which will supply the power source for the entire LED strip. At this point none of the LED will be able to light up, as we will need to tell each and every LED with what color do we want to use them. For this purpose we need use the Arduino [D5] - digital output what needs to be connected to the 3rd soldering point of the LED strip called [DI].

By the way, if you ever planning to design any circuit on your own, we highly recommend using the Fritzing.org Freeware Software package.

And for sure you will need to download and install the Arduino IDE application. This is the key for any Arduino project: https://www.arduino.cc/en/Main/Software


The Infrared Remote Controller Circuit

The Cloud Board #2 - Remote Controller



Resistor Color Code Table



Arduino code for the Remote Controller module

Arduino IDE

/* 
Quick and dirty IR signal over i2c rebroadcast for
Lighting Cloud Mood Lamp By Zoltan Geday
Used to get around the limitations of having two libraries that both require exact timings to work right!
*/

#include <Wire.h>
#include <IRremote.h>

int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Wire.begin(); // Start I2C Bus as Master
  Serial.begin(115200);
  irrecv.enableIRIn(); // Start the receiver
}
 
void loop() {
  if (irrecv.decode(&results)) {
    if(results.value != 0xFFFFFFFF){
      Serial.println(results.value,HEX);
      //only transmit if its not a repeat value. theyre useless. you may need to 
      // adjust for your own remote repeat values
      Wire.beginTransmission(9);
      Wire.write(results.value);
      Wire.endTransmission();
    }
    irrecv.enableIRIn();
    irrecv.resume(); // Receive the next value
  }
}



Arduino code for the Addressable RGB LED Strip Controller

Arduino IDE

/* 
Lighting Cloud Mood Lamp By Zoltan Geday

Sound sampling code originally by Adafruit Industries.  Distributed under the BSD license.
This paragraph must be included in any redistribution.
*/

#include <Wire.h>
#include "FastLED.h"

// How many leds in your strip?
#define NUM_LEDS 150
#define DATA_PIN 5


// Mode enumeration - if you want to add additional party or colour modes, add them here; you'll need to map some IR codes to them later; 
// and add the modes into the main switch loop
enum Mode { CLOUD,ACID,OFF,ON,RED,GREEN,BLUE,FADE};
Mode mode = CLOUD;  
Mode lastMode = CLOUD;

// Mic settings, shouldn't need to adjust these. 
#define MIC_PIN    0  // Microphone is attached to this analog pin
#define DC_OFFSET  0  // DC offset in mic signal - if unusure, leave 0
#define NOISE     10  // Noise/hum/interference in mic signal
#define SAMPLES   10  // Length of buffer for dynamic level adjustment
byte
  volCount  = 0;      // Frame counter for storing past volume data
int
  vol[SAMPLES];       // Collection of prior volume samples
int      n, total = 30;
float average = 0;
  
// used to make basic mood lamp colour fading feature
int fade_h;
int fade_direction = 1;


// Define the array of leds
CRGB leds[NUM_LEDS];

void setup() { 
  // this line sets the LED strip type - refer fastLED documeantion for more details https://github.com/FastLED/FastLED
  FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
  // starts the audio samples array at volume 15. 
  memset(vol, 15, sizeof(vol));
  Serial.begin(115200);
  Wire.begin(9);                // Start I2C Bus as a Slave (Device Number 9)
  Wire.onReceive(receiveEvent); // register event
}



void receiveEvent(int bytes) {
  
  // Here, we set the mode based on the IR signal received. Check the debug log when you press a button on your remote, and 
  // add the hex code here (you need 0x prior to each command to indicate it's a hex value)
  while(Wire.available())
   { 
      unsigned int received = Wire.read();
      Serial.print("Receiving IR hex: ");
      Serial.println(received,HEX);
      lastMode = mode;
      switch(received){
        case 0x3F:
          mode = ON; break;
        case 0xBF:
          mode = OFF; break;
        case 0x2F:
          mode = CLOUD; break;
        case 0xF:
          mode = ACID; break;
        case 0x37:
          mode = FADE; break;
        case 0x9F:
          mode = BLUE; break;
        case 0x5F:
          mode = GREEN; break;
        case 0xDF:
          mode = RED; break;
        
      }
   }
}
 
void loop() { 
  
  // Maps mode names to code functions. 
  switch(mode){
    case CLOUD: detect_thunder();reset();break;
    case ACID: acid_cloud();reset();break;
    case OFF:reset();break;
    case ON: constant_lightning();reset();break;
    case RED: single_colour(0);break;
    case BLUE: single_colour(160);break;
    case GREEN: single_colour(96);break;
    case FADE: colour_fade();break;
    default: detect_thunder(); reset();break; 
  }
}

// Makes all the LEDs a single colour, see https://raw.githubusercontent.com/FastLED/FastLED/gh-pages/images/HSV-rainbow-with-desc.jpg for H values
void single_colour(int H){
  for (int i=0;i<NUM_LEDS;i++){
    leds[i] = CHSV( H, 255, 255);
  }
  //avoid flickr which occurs when FastLED.show() is called - only call if the colour changes
  if(lastMode != mode){
    FastLED.show(); 
    lastMode = mode;
  }
  delay(50);
}

void colour_fade(){
  //mood mood lamp that cycles through colours
  for (int i=0;i<NUM_LEDS;i++){
    leds[i] = CHSV( fade_h, 255, 255);
  }
  if(fade_h >254){
    fade_direction = -1; //reverse once we get to 254
  }
  else if(fade_h < 0){
    fade_direction = 1;
  }
    
  fade_h += fade_direction;
  FastLED.show();
  delay(100);
}



void detect_thunder() {
  
  n   = analogRead(MIC_PIN);                        // Raw reading from mic 
  n   = abs(n - 512 - DC_OFFSET); // Center on zero
  n   = (n <= NOISE) ? 0 : (n - NOISE);             // Remove noise/hum
  vol[volCount] = n;                      // Save sample for dynamic leveling
  if(++volCount >= SAMPLES) volCount = 0; // Advance/rollover sample counter
 
  total = 0;
  for(int i=0; i<SAMPLES; i++) {
    total += vol[i];
  }
  
  // If you're having trouble getting the cloud to trigger, uncomment this block to output a ton of debug on current averages. 
  // Note that this WILL slow down the program and make it less sensitive due to lower sample rate.
  
  /*
  for(int t=0; t<SAMPLES; t++) {
    //initial data is zero. to avoid initial burst, we ignore zero and just add the current l
    Serial.print("Sample item ");
    Serial.print(t);
    Serial.print(":");
    Serial.println(vol[t]);
  }
  Serial.print("total");
  Serial.println(total);
  Serial.print("divided by sample size of ");
  Serial.println(SAMPLES);
  
 
  Serial.print("average:");
  Serial.println(average);

  Serial.print("current:");
  Serial.println(n);
  */
  
  average = (total/SAMPLES)+2;
  if(n>average){
    //Serial.println("TRIGGERED");
    reset();
     
   
    //I've programmed 3 types of lightning. Each cycle, we pick a random one. 
    switch(random(1,3)){
       //switch(3){
  
      case 1:
        thunderburst();
        delay(random(10,500));
        // Serial.println("Thunderburst");
        break;
       
      case 2:
        rolling();
        // Serial.println("Rolling");
        break;
        
      case 3:
        crack();
        delay(random(50,250));
        // Serial.println("Crack");
        break;
      
    }
  }
}
 
 
// utility function to turn all the lights off.  
void reset(){
  for (int i=0;i<NUM_LEDS;i++){
    leds[i] = CHSV( 0, 0, 0);
  }
  FastLED.show();
   
}

void acid_cloud(){
    // a modification of the rolling lightning which adds random colour. trippy. 
    //iterate through every LED
    for(int i=0;i<NUM_LEDS;i++){
      if(random(0,100)>90){
        leds[i] = CHSV( random(0,255), 255, 255); 

      }
      else{
        leds[i] = CHSV(0,0,0);
      }
    }
    FastLED.show();
    delay(random(5,100));
    reset();
    
  //}
}

void rolling(){
  // a simple method where we go through every LED with 1/10 chance
  // of being turned on, up to 10 times, with a random delay wbetween each time
  for(int r=0;r<random(2,10);r++){
    //iterate through every LED
    for(int i=0;i<NUM_LEDS;i++){
      if(random(0,100)>90){
        leds[i] = CHSV( 0, 0, 255); 

      }
      else{
        //dont need reset as we're blacking out other LEDs her 
        leds[i] = CHSV(0,0,0);
      }
    }
    FastLED.show();
    delay(random(5,100));
    reset();
    
  }
}

void crack(){
   //turn everything white briefly
   for(int i=0;i<NUM_LEDS;i++) {
      leds[i] = CHSV( 0, 0, 255);  
   }
   FastLED.show();
   delay(random(10,100));
   reset();
}

void thunderburst(){

  // this thunder works by lighting two random lengths
  // of the strand from 10-20 pixels. 
  int rs1 = random(0,NUM_LEDS/2);
  int rl1 = random(10,20);
  int rs2 = random(rs1+rl1,NUM_LEDS);
  int rl2 = random(10,20);
  
  //repeat this chosen strands a few times, adds a bit of realism
  for(int r = 0;r<random(3,6);r++){
    
    for(int i=0;i< rl1; i++){
      leds[i+rs1] = CHSV( 0, 0, 255);
    }
    
    if(rs2+rl2 < NUM_LEDS){
      for(int i=0;i< rl2; i++){
        leds[i+rs2] = CHSV( 0, 0, 255);
      }
    }
    
    FastLED.show();
    //stay illuminated for a set time
    delay(random(10,50));
    
    reset();
    delay(random(10,50));
  }
}

// basically just a debug mode to show off the lightning in all its glory, no sound reactivity. 
void constant_lightning(){
  switch(random(1,10)){
   case 1:
        thunderburst();
        delay(random(10,500));
        // Serial.println("Thunderburst");
        break;
       
      case 2:
        rolling();
        // Serial.println("Rolling");
        break;
        
      case 3:
        crack();
        delay(random(50,250));
        // Serial.println("Crack");
        break;
  }
}



What we offer

System Development

We can provide complete system design for Automated production environment.

Programming

We can program PLC, HMI, Servers, Database, Remote monitoring and much more.

Creative Idea

Even if you already have an existing system, we can provide more efficiency.

OEM System Build

We can build your new OEM Automated System, to meet UL, CE and other standards.

Awesome Support

We can provide remote support, or even visit your site. Warranty comes with project.

Testing System Design

We can provide high end Testers for product Quality Testing or Functional testing.

34

Happy clients

3

Awards won

12K

Cups of Coffee

94

Projects completed

Project Related Items...



Pricing Table

Design Plan

GETa quote

  • Electrical

  • Controls

  • Mechanical

Programming

GETa quote

  • PLC, HMI, DB

  • Server appliction

  • WEB, Remote Access

Machine Build

GETa quote

  • Mechanical

  • Electrical

  • Panel Build

Get in touch

Phone

631-932-7658
631-WEBSOLT

Email

info@websolteam.com

Address

Greater JAX area
NE Florida

Quote / Info request...
* Required field must be filled out to ensure message delivery.