Monday, October 31, 2016

Connecting a 5V DC and a 12V DC motor to Arduino using L293D


Controlling a single 5V DC motor, and a 12V DC thru an Arduino.

Both are same connections -except that for a 5V, the Vss Motor Supply ( pin 8) will be fed 5V from the wall adapter
for a 12V, the Vss will be fed 12Vwall adapter, and the GND will be common across all.

Connect Pins 8 and 9 of the Arduino to Pins 3 and 7 of the L293D

Arduino   L293D
Pin 8      Pin 7
Pin 9      Pin 2

GND ->       GND // or else it wont work

        Pin 4 -> GND
             Pin 5 -> GND
        Pin 1 -> +5V
        Pin 16-> +5V ( or tie them up)

            Pin 3 -> Output to Motor
        Pin 6 -> Output to Motor
       
        Pin 2, and 7 ( as described above, goes to Arduino Pins 8 and 9)
             Pin 8 -> motor supply +5V ( Pin 1, 16 and Pin 8 - can all be tied to +5V)

For a 5V motor
  Pins 1..8 on left and Pin 16 are connected to connect a single DC motor in case of a 5V.)
   Pin 8 -> +5V ( all of them as 5V )

For a 12V motor
 Check 1 and 16 are internal - so 5V.
  Pins 8 is +12V




For a 5V DC motor.




For a 12V DC motor.




void setup()
{
    pinMode(8,OUTPUT) ;  //Logic pins are also set as output
    pinMode(9,OUTPUT) ;
    Serial.begin (9600);
}

void loop()
{
    forward_motor ();  
    delay(3000) ;    
    stop_motor ();
    delay(3000);
   
    backward_motor ();
    delay(3000);
    stop_motor ();
    delay(5000);
       
 }
 void forward_motor () {
 
    Serial.println ("forward");
    digitalWrite(8,HIGH) ;
    digitalWrite(9,LOW) ;

 }
 void stop_motor ()
 {
     // Stop
    Serial.println ("Stop " );
    digitalWrite(8,LOW) ;
    digitalWrite(9,LOW) ;
 }
 void backward_motor ()
 {
    Serial.println("backward");
    digitalWrite(8,LOW) ;
    digitalWrite(9,HIGH) ;
   }

Connecting a 5V DC motor to Arduino using L293D

Controlling a single 5V DC motor thru an Arduino.

Connect Pins 8 and 9 of the Arduino to Pins 3 and 7 of the L293D


Arduino   L293D
Pin 8      Pin 7
Pin 9      Pin 2

GND ->       GND // or else it wont work

        Pin 4 -> GND
             Pin 5 -> GND
        Pin 1 -> +5V
        Pin 16-> +5V ( or tie them up)

            Pin 3 -> Output to Motor
        Pin 6 -> Output to Motor
       
        Pin 2, and 7 ( as described above, goes to Arduino Pins 8 and 9)
             Pin 8 -> motor supply +5V ( Pin 1, 16 and Pin 8 - can all be tied to +5V)

 ( check that Pins 1..8 on left and Pin 16 are connected to connect a single DC motor )        






void setup()
{
    pinMode(8,OUTPUT) ;  //Logic pins are also set as output
    pinMode(9,OUTPUT) ;
    Serial.begin (9600);
}

void loop()
{
    forward_motor ();  
    delay(3000) ;    
    stop_motor ();
    delay(3000);
   
    backward_motor ();
    delay(3000);
    stop_motor ();
    delay(5000);
       
 }
 void forward_motor () {
 
    Serial.println ("forward");
    digitalWrite(8,HIGH) ;
    digitalWrite(9,LOW) ;

 }
 void stop_motor ()
 {
     // Stop
    Serial.println ("Stop " );
    digitalWrite(8,LOW) ;
    digitalWrite(9,LOW) ;
 }
 void backward_motor ()
 {
    Serial.println("backward");
    digitalWrite(8,LOW) ;
    digitalWrite(9,HIGH) ;
   }

Friday, October 14, 2016

End to End Publish/Subscribe from Laptop to Arduino over MQTT

A small demo of how I was able to communicate from my laptop using a python code sending commands to the Arduino Uno using a Cloud broker called cloudmqtt.com and turn on and off a LED.

https://github.com/kiranshashiny/python-cloudmqtt-example

This uses the Paho MQTT library on the laptop to publish commands like ON and OFF.

The code to run on the laptop as well as the Arduino sketch is in the repo.

Wednesday, October 12, 2016

5V Stepper Motor controls using Arduino Uno

This blog is about my Stepper motor that I used to control using an Arduino Uno.
A Stepper motor works in steps and there are times when you need to move the motor in steps -like in a wall clock. This is where the motor comes handy.

( the other types of motors are Servo, and DC motor - more of it in other blogs.)

Here I will control the Stepper motor and tell how to make it work with the Arduino Uno.

Cost :
Stepper Motor :125 rupees
ULN 2003    : 7 rupees.
Arduino Uno : 400 rupees.

Time to put it all together - one afternoon -including debugging and figuring out the wiring.
Skill level : Beginner to Medium.

Stepper Motor :

The stepper motor that I used is 28BYJ-48 and can be programmed to spin in steps to suit our industrial needs. It needs a 5V external power supply and I used a wall adapter. DO NOT use the 5V from Arduino !!!

The challenge was that after wiring the circuit and I executed the File -> Examples -> Stepper - > One Step Revolution, the motor would only move in 1 direction ( counter clockwise ) and would not do clockwise.

So, I had to change the wiring of Pin 9 to 10, and Pin 10 to 9 on the Arduino - to make it work.
Found the link here. https://forum.arduino.cc/index.php?topic=143276.0

In other words - don't pin 8,9,10 and 11 to Input 1,  2, 3 and 4, but instead pin to Input 1, 3 , 2 and 4 on the ULN 2003.
( the source in the File -> Examples had to be modified to make this work )

The next challenge is - this Motor driver ULN 2003 cannot move the motor direction on a DC motor. ( You cannot control a DC motor in reverse )
So this motor driver can only be used for a Stepper Motor and NOT a DC motor.

DO NOT CONNECT the Output pins of the Arduino to the Stepper Motor as you will fry your Arduino- Use the IC in between to make this work.

Have a 5V power supply ( wall adapter ) handy to work with the motor.


The circuit diagram of a ULN 2003 motor driver is as shown :

The inputs on the left are from the Arduino Pins and Outputs will go to the Stepper Motor. You are still left with 3 more Pins after all this.






The circuit is as shown: ( the only correction is Pin 9 and 10 has to be interchanged )













Tuesday, October 4, 2016

Parts for Microcontroller project

Hardware Required:
   - Micro controller ( Arduino Uno )
   - Arduino Ethernet shield
   - HC 05 Bluetooth adapter ( not required for beginners)
   - LEDs – Red, Green, Yellow  - 10 each ( or something on those lines )
   - ESP 8266 for wifi communication

    - 1 Breadboard a foot long.
    - Connector wires
                Male to Male  - 1 set,
                Female to Female connector wires - 1 set
      General purpose wire - about 5 meters ( for everyone )

Sensors:
    - Temperature and Humidity sensor DHT 11
    - PIR sensor for motion sensor. ( for detecting if someone came in etc )
    - Color Recognition Sensor       ( if we are getting into detection of colors, like tablets , or paper )
    - Soil Moisture sensor                        ( if we are into agriculture or conditions where we want to maintain humidity high / low )
    - Pressure sensor                          ( if we want to detect presence of someone on the door step )
    - Heart Rate sensor                         ( medical related stuff )
    - Rain Drop Sensor                        ( for Agriculture, labs, mechanical objects, if we want to Close doors On/Off  based on certain humid conditions)
    - Light detecting Resistors,  LDRs - 10 ( general purpose, if we want to do some solar stuff )
    - Ultrasonic Distance Measuring Sensor        
    - Water flow sensor                


Other things nice to have :
    - Piezo buzzer                            ( to make sound music )    
    - 1 Servo motor SG90 Tower Pro ( general purpose )
    - 12V DC motors - 100 RPM - geared
    - 5V DC motors 
    - LCD display
   
General purpose utilities :    
  - 1 Multimeter
  - 1 Piezo buzzer
  - L293D, 555 timers
  - Magnifying glass
  - Small screw driver set.
  - Wire stripper
  - Nose plier
  - Soldering wire, gun and other accessories.
  - 10k Potentiometer
  - a box of resistors ( usually costs 40 rupees for it - has 220, 270, 330 ohms and so on )

  - RGB LEDs - a few










































Friday, August 26, 2016

Remote logging with scp without entering password.


On the source server,
ssh-keygen -t rsa
copy the id_rsa.pubto remote server's .ssh/authorized_keys

Possible reasons why the scp will not work are  :
On the remote server check

Authorized_keys needs perms of 600 (chmod 600 authorized_keys)
The .ssh directory should be 700
Your home directory should be at most 744





Saturday, May 7, 2016

How to turn LED dim and bright back again, using PWM On Raspberry Pi.

Code in Python:

Here I am using the Raspberry Pi Model B, connected to my Mac Laptop.
This was an experiment to try out using the PWM option available on the Raspberry.

The LEDs are connected to physical Pins 11

The white LED at one end is connected to Pin 11, ( i.e the GPIO17 ) , hence I'm using GPIO.BOARD in the python definition.

pi@raspberrypi~ $cat servo.py
import RPi.GPIO as GPIO # always needed with RPi.GPIO  
from time import sleep  # pull in the sleep function from time module  
 
GPIO.setmode(GPIO.BOARD)  # choose BCM or BOARD numbering schemes. I use BCM  
 
GPIO.setup(11, GPIO.OUT)# set GPIO 11 as output for white led  
 
white = GPIO.PWM(11, 100)    # create object white for PWM on port 11 at 100 Hertz  
 
white.start(0)              # start white led on 0 percent duty cycle (off)  
 
# now the fun starts, we'll vary the duty cycle to  
# dim/brighten the leds, so one is bright while the other is dim  
 
pause_time = 0.02           # you can change this to slow down/speed up  
 
try:  
    while True:  
        for i in range(0,101):      # 101 because it stops when it finishes 100  
            white.ChangeDutyCycle(i)  
            sleep(pause_time)  
        for i in range(100,-1,-1):      # from 100 to zero in steps of -1  
            white.ChangeDutyCycle(i)  
            sleep(pause_time)  
 
except KeyboardInterrupt:  
    white.stop()            # stop the white PWM output  
    GPIO.cleanup()          # clean up GPIO on CTRL+C exit

Thursday, May 5, 2016

Saturday, February 6, 2016

Installing Node-RED on Mac.

This blog describes how to install the Node-RED application.

It is a 2 step process. Install Node.Js, followed by Installing the Node-RED application.

Node-RED is a visual flow editor where you can connect devices and set up flows based on inputs from devices like Microcontrollers and tell it how to go about  based in input from devices.

http://nodered.org/docs/getting-started/installation.html


Steo 2:


Finally Launch Node-RED:







Launches the application.


Blinking LED from a Bean Micro controller

In this blog I will write about how to configure and setup the Bean Punchthrough micro controller and blink a LED for the first time.

The Punch through is a simple micro controller with an ATmega chip embedded on to a chipset and a built in proto board.
It runs on a 3V battery and connects through Bluetooth and is perfect for prototyping or for small projects. Programming wireless makes it convenient to program thru any device that has blue tooth enabled like a Mac, PC, laptop, iPhone or a smart phone.

Here I will tell how to enable the micro controller and start with a sample LightBlueBean example which will enable you to blink the LEDs.

Things you need:
- Bean
- Arduino 1.6.7 sketch installed by downloading from Arduino site.
https://www.arduino.cc/en/Main/Software

- Bean Loader from their PunchThrough website.
https://punchthrough.com/bean

First start off with the Bean and insert the 3V coin battery and see that it is powered up.
Next, connect to it by right clicking the icon and Connect, You should see it in connected state.






Next, follow the instructions as mentioned in this portal for launch of Bean loader and Associate it to Arduino.

Launch Arduino, and select these settings as shown.



Next, select the BeanBlink example and go to Arduino and click on Verify, followed by Upload.






Open the Bean Loader and right click on the connected, and Program sketch.

Once it successful in Uploading - the LEDs on the Bean should turn to Red, Blue and Green and continue until it is stopped by Right Click Connect-> Erase Sketch




Troubleshooting tips:
If the Bean does not connect from the Bean Loader, then remove the battery and retry inserting and connect the device from the Bean loader.

If the Upload of sketch from Arduino does not happen then retry (I had to try it like 3 times before I got a successful Upload )

Good luck on your tries and share your experiences with this device below.