Introduction: Control AC Devices Wirelessly Using USB

Hi everybody!

In this instructable I will show you how to control Your home appliance switches using 2 computers a nxt with usb.

The basic idea is simple:


And here is the preview (Sorry low quality cam):


You need to know a bit Visual Basic .NET and have to have a Mindstorms LEGO Kit or any other microcontroller kit.

Please feel free to modify this idea.

And do vote me for the USB Contest if you like it!

Here are the references:

http://www.clker.com/cliparts/e/1/8/7/11949850681230545940cog_01.svg.med.png -Gear

http://images.mylot.com/userImages/images/postphotos/2166240.png - Bulb

http://www-03.ibm.com/software/lotus/symphony/gallery.nsf/GalleryClipArtAll/29E562D0544288D98525759600343CC8/$File/Computer-Laptop-Black.png - computer

http://www.iconspedia.com/dload.php?up_id=49215 - text document
 

Step 1: Material Required

Gather all your materials:

1) A Computer with Visual Basic 2008 Express Edition Installed. (Click the link to download)
2) Another computer. No Prerequisites.
3) A Lego NXT Mindstorms KIT.

Please feel free to modify this idea to suit to your requirement. For example, if you are fimiliar with C# rather than VB then use C# only...

No (Good) Images, Sorry.

Step 2: Make the NXT Robot

Please see the video to understand more.


Nxt Materials Needed:

1) 4 black connectors
2) 1 White shaft
3) 1 Motor
4) Yellow L-Bracket
5) Plus Shaped Shaft

See the video to understand...

Basically you need the robot to press the switch.

Step 3: Setting Up the Control Computer

Now we have to set up the computer that will switch on the light.

Get the NXT-G Software.

Open up visualbasic express and insert a timer control. The doubleclick on the form and Press Ctrl+A.

Then copy this code:

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Enabled = True
        Timer1.Interval = 100
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Me.Text = Cursor.Position.ToString()
        Me.TopMost = True
    End Sub
End Class

Now run the program. Run the NXT-G program. And connect your robot to the Computer. Open up the remote control and click on the action button. It should move the arm of the bot. Hover the mouse over the action button and see the coordinates on the title bar of the VB application we just wrote. Write these values in notepad and save it.

Now create a weebly account. Make a new site and then on any page of the site, insert the a file to upload. Click on it and click upload a file. After that on your desktop right click and create a new text file named ins.txt. Open it in notepad and type the word 'off' in it. Upload it. In the website editor, right click on the download file button and copy the link address and save it in notepad.

Now you should have a url and coordinates.

In the same program which we wrote remove all the code and enter this code:

Public Class Form1
    Dim instance As MouseEventArgs
    Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Integer, ByVal dwExtraInfo As Integer)
    Private Const MOUSEEVENTF_MOVE As Integer = &H1 ' mouse move
    Private Const MOUSEEVENTF_LEFTDOWN As Integer = &H2 ' left button down
    Private Const MOUSEEVENTF_LEFTUP As Integer = &H4 ' left button up
    Private Const MOUSEEVENTF_RIGHTDOWN As Integer = &H8 ' right button down
    Private Const MOUSEEVENTF_RIGHTUP As Integer = &H10 ' right button up
    Private Const MOUSEEVENTF_MIDDLEDOWN As Integer = &H20 ' middle button down
    Private Const MOUSEEVENTF_MIDDLEUP As Integer = &H40 ' middle button up
    Private Const MOUSEEVENTF_WHEEL As Integer = &H800 ' wheel button rolled
    Private Const MOUSEEVENTF_ABSOLUTE As Integer = &H8000 ' absolute move
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer
    Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Integer, ByRef lpPoint As POINTAPI) As Integer
    Public Declare Function SetCursorPos Lib "user32.dll" (ByVal X As Integer, ByVal Y As Integer) As Integer
    Public Structure POINTAPI
        Dim X As Integer
        Dim Y As Integer
    End Structure
    Private Sub clickdown()
        Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    End Sub
    Private Sub ClickUp()
        Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Enabled = True
        Timer1.Interval = 2000
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Try       
My.Computer.Network.DownloadFile("Your Weebly File Adress Here", "sample.txt")
        Dim txt As String = My.Computer.FileSystem.ReadAllText("sample.txt")
        My.Computer.FileSystem.DeleteFile("sample.txt")
        If Me.Text <> txt Then
            If txt.ToUpper = "ON" Then
                Cursor.Position = New Point(Your Coordinate X here, Your coordinate Y here)
                ClickDown()
                Threading.Thread.Sleep(1000)
                ClickUp()
            End If
        End If
        Me.Text = txt
Catch
End Try
    End Sub

End Class

Where it is written' Your Coordinate X Here' and 'Your Coordinate Y Here' enter your X and Y values which you saved.
Where it is written, 'Your Weebly File Address Here' enter your weebly address.


Run the program and you should see 'OFF' in the titlebar.

You are done!


Step 4: Setting Up the Remote Computer

Now we need to prepare the remote of our system.

Just open up the web browser and login to your weebly account. Edit the site where you uploaded the 'ins.txt' file. Click on the ins.Txt file and click upload a new file. Make another file ins.txt on the desktop, this time with the word 'on'. Do not upload it yet...

You are done!

Step 5: Set Up Everything, and Give It a Test!

Now we are ready for the grand finale!

Make sure your program is running on the computer connected to the nxt bot. Place the pot near a switch as shown in the video. You can use books etc... to level it up.

Make sure, that the clicking the action button flips the switch and your porgram is running.

On the remote computer you just need to upload the file and watch the light turn on!

Feel free to ask question, modifications and comments!