Everyone wondered how useful is the automatic brightness feature on phones, quickly adapting screen’s brightness according to the surrounding light intensity.In this project I try to create something similar for any PC or Laptop running on Linux(preferably Ubuntu 14.04).My goal was to keep it cheap and simple as much as possible.So to make a prototype of it I used LDR to measure light intensity and an arduino communicate with my machine. On my machine I used a python script to communicate over USB with arduino and to edit the file which is responsible for the brightness of screen.
Swapping Workspace in Ubuntu using Accelerometer and Python Script
In this project I’ll demonstrate swapping of workspace in ubuntu using accelerometer and python script. I am using wmctrl command that will take arguments according to the accelerometer values.On hardware level this project is similar to Controlling Mouse Pointer using Python Script and Accelerometer you can check it out here.Python libraries that are being used are Pyserial, subprocess and sys. Pyserial is used to communicate between arduino and my machine. Subprocess is used to execute bash commands in python script and sys is used to exit program using try and except block.
Surveillance Car Controlled via DTMF
I made this project in order to build a surveillance car which can be controlled over Internet or any private network. My objective was to easily and cost effectively do something that can be used for security purposes. My car uses DTMF module which takes it’s input from mobile phone attached to the car, that mobile is not only used to generate DTMF tones but also for the surveillance by providing Live Footage from it’s camera, over the network using AirDroid. Conventionally, any project using DTMF requires call from another cell phone to the one attached to the project, which is not cost effective, but in case of my project I used an android app DTMF Tone Generator which generates DTMF tone, now for this to work I shared my phone’s screen over the network using VNC server, hence cost effective.To make this Idea more effective I mounted the phone on a servo motor. This gave my Camera one degree of freedom, i.e. I can move it left and right without moving the bot.
Implementation of BPSK Modulation using GNU Radio and NI USRP-2920
BPSK stands for binary phase shift keying. In this kind of modulation scheme, data bits are mapped to the phase of carrier frequency and these two are separated from each other by 180 degrees. In this implementation I am going to map 0’s and 1’s to pi and 0 and then add them to the phase of carrier frequencyOne can view adding 0 and pi to the phase of the carrier wave, same as changing its direction without changing its magnitude. Here I am using an SDR which is gnuradio 3.7.7.1 with NI USRP 2920. As gnuradio is very fast developing platform hence this version is very important to avoid compatibility issues.
External and Pin Change Interrupts in Atmega328p: Reaction Time Game
This game tests the reaction time of two players, and declares the fastest one as winner. To do this I have used external interrupts and pin change interrupts in atmega328p. It gives four chances to each player, time of each chance is summed up and then the player with minimum time is declared as the winner.
Controlling mouse pointer using Python script and accelerometer
There are many ways of controlling mouse pointer using atmega328p, and I find using a python script and an arduino best and effective one because of the following reasons:1) Python is a common language and comes pre-installed in almost all LINUX distros.2) Using python script makes this project compatible to cross platforms, as no fancy software is needed.3) Using an arduino saves me from the trouble that goes into making the whole circuit and then connecting it through a USB to TTL converter.I’ll be using two non-standard libraries viz. Pyserial and Autopy both of them are freely available and easy to install, just like any non-standard library. Accelerometer that I’m using is ADXL335, it’s a triple axis accelerometer.
AVR(atmega328p) Library for LCD JHD162A
Liquid Crystal Displays are important in projects where interaction with Human is involved. LCD JHD162A is a small LCD which can be used with atmega328p. It has 16 columns and 2 row, therefore 32 segments. Each segment is composed of 8 rows of 5 dots. Although this module is very versatile and handy but it’s very tricky to use. Arduino IDE has a library which contain important functions to get this module up and running.I wanted to build a library for Atmega328p which does almost similar functions as LiquidCrystal Library in Arduino IDE. Interfacing with LCD is a task in itself one has to learn and understand the working of LCD in order to use it even for a simple project.This library don’t require any in depth knowledge of LCD JHD162A and it’s working.Just include lcd.h in your source code and you are ready to go.
Threading and Timers in Atmega328p
My motivation for this project was to minimize the usage of functions such as _delay_ms(), _delay_us() and their derivatives with some exceptions, like delays to control the LCD.Delay pauses the whole program, so if one is using delay for 10 seconds everything will pause for those 10 seconds, therefore nothing can be done in those 10 seconds.Although if we use interrupt, there is a separate hardware known as timer which counts the clock ticks and generate interrupt, after specified number of clock ticks have been counted.
ADC in Atmega328p
I made this to get power and control of every register using AVR-C and the ease of Arduino’s premade circuit along with FTDI chip. I used few simple commands to compile and upload the AVR-C code on my Arduino. By using Arduino I didn’t had worry about FTDI chip, reference for ADC voltage and other peripheral circuitry and by using AVR-C I had control over each and every register which isn’t possible while working with Arduino IDE.This circuit demonstrates the working of ADC in atmega328p using interrupts, using two different kinds of sensors: one is LDR it’s resistance decrease with increase in light intensity, the other is NTC it’s resistance decreases with increase in temperature.
Automatic Dependent Surveillance Broadcast
ADS-B stands for Automatic Dependent Surveillance Broadcast which is used by commercial airplanes to broadcast their latitude and longitude along with some other info to the air traffic controller. As this information is transmitted at 1090MHz, we can easily receive these ADS-B signals using our rtl-sdr and then decode it using a software. Here I’ll be using dump1090 to decode ADS-B signals on my Linux machine. The reason I have chosen dump1090 is that it not only decodes ADS-B signals but also creates a Google map web server where it displaces the location of airplanes whose ADS-B signals are being received.
Programming Arduino via Android Mobile Device using “ArduinoDroid”
Many of you might know about USB on the go, you can connect your pen drive, game controllers, and other stuff via OTG. USB OTG was also great for powering up small devices like arduino, but much couldn’t have been achieved with it(except for powering). All the processing power that today’s mobile devices possess was going to vane and mobile they were only used as merely small power banks for generally arduino based prototyping.Thanks to Anton Smirnov, who thought of utilizing the potential of mighty beasts that we carry in our pockets every day, to do something more that just merely powering up our arduino prototypes. He created a full-fledged Arduino IDE almost identical in terms of features to the IDE available for PC, and even better in some cases.
Programming Arduino via Android Mobile Device using “ArduinoDroid”
Many of you might know about USB on the go, you can connect your pen drive, game controllers, and other stuff via OTG. USB OTG was also great for powering up small devices like arduino, but much couldn’t have been achieved with it(except for powering). All the processing power that today’s mobile devices possess was going to vane and mobile they were only used as merely small power banks for generally arduino based prototyping.Thanks to Anton Smirnov, who thought of utilizing the potential of mighty beasts that we carry in our pockets every day, to do something more that just merely powering up our arduino prototypes. He created a full-fledged Arduino IDE almost identical in terms of features to the IDE available for PC, and even better in some cases.