Showing posts with label Electronics. Show all posts
Showing posts with label Electronics. Show all posts

Friday, August 5, 2011

Bluetooth Technology

Bluetooth uses very little energy !!! They are used in Tsunami detectors (ZIGBEE tech) ...

Advantages
Disadvantages
High throughput
Device discovery is slow in term of power usage and time
Resilience against interference
Keeping connections open is expensive in term of power usage
????????
??????????

Thursday, August 4, 2011

Infrared Technology

Using Infrared for connecting micro-controllers is one of the available choices of wireless intercommunication between micro-controllers. Here is a short list of challenges and the benefits that using such technology would provide us :
Advantages
  • Very low power requirement, hence it is best suitable for machinery with limited battery capacity, like mobile robots, laptops, pads, phones, etc.
  • Inexpensive -> Not a very important issue in designing a revolutionary system. The redundancy is the most important feature.
  • Very secure. The data flow among the source and target is unidirectional, meaning the direction of the infrared beam ensures that there in no leaked or move to nearby devices as it’s transmitted. 
Disadvantages 
  • Data transmission happens in eye sight. -> Meaning you can not have it in a big robot.
  • Short range communication -> Actually this is an advantage in our case, which brings more security.
  • Easily gets interrupted by obstacle  -> Meaning you can not have it in a robot with several layers between micro-controllers. Almost any kind of obstacle interrupt the signal.
  • Not a good choice under extreme weather conditions(sunlight, rain, pollution etc) -> This is the most negative point for this technology not be used in an offshore robot.
Depending on the area of application Infrared might be or might not be the right choice. E.g. the short range of availability would increase our security a lot, while exactly in Walloid project the harsh weather condition is very common in future platforms. Today, there are many technologies exists that are much better than IR like Bluetooth, Wi-Fi etc.

Tuesday, August 2, 2011

Saturday, April 30, 2011

Arduino Nano and new possibilities in electronic design

The new Arduino Nano is the smallest and most versatile Arduino board yet. It contains an ATmega168 micro-controller (w/ boot loader), integrated USB (FTDI chip) w/ Mini-B jack, a full complement of i/o pins, an ICSP programming header, and on-board regulator. Measuring 0.73″ x 1.70″, it’s smaller and cheaper than the combination of Arduino Mini and Mini-USB adapter. 
The possibilities that this state of art design brings to Walloid project can be new electronics design as it is now very easy to have a network of Arduino boards, communicating data, processing things faster, etc ... My previous post about I2C is about the same idea; connecting multiple Arduino boards ...

Thursday, April 28, 2011

I2C

I2C inter micro controller communication

First experiment, failed !!! The problem : Grounds were not connected together !!!

Second experiment, Succeeded :-)

I2C connection between one master Arduino & one Slave Arduino over a serial clock pin (SCL, pin number 4 in the picture down here, YELLOW wire) that the Arduino pulses at a regular interval, and a serial data pin (SDA, Pin number 5 in the picture down here, RED wire) over which data is sent between the two devices. Also make sure that the grounds are connected together.


Master Writer Code - Program for Arduino 1

// Wire Master Writer
// by Nicholas Zambetti 

// Demonstrates use of the Wire library
// Writes data to an I2C/TWI slave device
// Refer to the "Wire Slave Receiver" example for use with this

// Created 29 March 2006

// This example code is in the public domain.


#include 

void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
}

byte x = 0;

void loop()
{
  Wire.beginTransmission(4); // transmit to device #4
  Wire.send("x is ");        // sends five bytes
  Wire.send(x);              // sends one byte  
  Wire.endTransmission();    // stop transmitting

  x++;
  delay(500);
}


Slave Receiver Code - Program for Arduino 2



// Wire Slave Receiver
// by Nicholas Zambetti 

// Demonstrates use of the Wire library
// Receives data as an I2C/TWI slave device
// Refer to the "Wire Master Writer" example for use with this

// Created 29 March 2006

// This example code is in the public domain.


#include 

void setup()
{
  Wire.begin(4);                // join i2c bus with address #4
  Wire.onReceive(receiveEvent); // register event
  Serial.begin(9600);           // start serial for output
}

void loop()
{
  delay(100);
}

// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany)
{
  while(1 < Wire.available()) // loop through all but the last
  {
    char c = Wire.receive(); // receive byte as a character
    Serial.print(c);         // print the character
  }
  int x = Wire.receive();    // receive byte as an integer
  Serial.println(x);         // print the integer
}



Source : http://arduino.cc/en/Tutorial/MasterWriter

Tuesday, March 15, 2011

I2C Inter Board communication, Arduino

http://www.arduino.cc/playground/Learning/I2C
http://en.wikipedia.org/wiki/I%C2%B2C
http://www.lammertbies.nl/comm/info/I2C-bus.html
http://absences.sofianaudry.com/en/node/10

Sunday, March 13, 2011

Challenges ...

New challenges with the robot arm, while I am working with positioning. The prototype(robot arm) is not totally functional as just one of the three motors work the way it should. Problems with mechanic design, and the motor axle is worn away(3D printer product in plastic) ...

Thursday, January 20, 2011

Zero positioning, new ideas

Lately I have been working on mounting an Open Source 3D printer called RepRap(Version 1.0, Darwin). While working on it, I learnt about their brilliant idea for Zero Positioning. They use a tiny beam light sensor(Opto endstop V2.1) which is interrupted by a small stick which is connected to the moving joint. The interrupted state defines that the moving joint is in the zero position.

Picture from : RepRap Blog

Saturday, January 15, 2011

What is EEPROM / E2PROM ?


We do need a way to save the numbers which represents the current situation of the robot actuators somewhere(either at PC or somewhere on Arduino microcontroller, EEPROM here). This post dedicates itself to storing data on Arduino non-volatile memory and use this information for zero positioning of the moving joint. First an introduction to EEPROM from Wikipedia and later code example and links to its API's at Arduino website.

What is EEPROM ?
EEPROM (also written E2PROM and pronounced "e-e-prom," "double-e prom" or simply "e-squared") stands for Electrically Erasable Programmable Read-Only Memory and is a type ofnon-volatile memory used in computers and other electronic devices to store small amounts of data that must be saved when power is removed, e.g., calibration tables or device configuration.
When larger amounts of static data are to be stored (such as in USB flash drives) a specific type of EEPROM such as flash memory is more economical than traditional EEPROM devices. EEPROMs are realized as arrays of floating-gate transistors.
EEPROM is user-modifiable read-only memory (ROM) that can be erased and reprogrammed (written to) repeatedly through the application of higher than normal electrical voltage generated externally or internally in the case of modern EEPROMs. EPROM usually must be removed from the device for erasing and programming, whereas EEPROMs can be programmed and erased in circuit. Originally, EEPROMs were limited to single byte operations which made them slower, but modern EEPROMs allow multi-byte page operations. It also has a limited life - that is, the number of times it could be reprogrammed was limited to tens or hundreds of thousands of times. That limitation has been extended to a million write operations in modern EEPROMs. In an EEPROM that is frequently reprogrammed while the computer is in use, the life of the EEPROM can be an important design consideration. It is for this reason that EEPROMs were used for configuration information, rather than random access memory.*
Practical Information about how to get things to work : 

Source Code : 


#include EEPROM.h

int a = 0;
int value;

void setup()
{
Serial.begin(9600);
for (int i = 0; i < 20; i++){
    Serial.println("***");
    EEPROM.write(i, i);
  }
}

void loop()
{
  value = EEPROM.read(a);

  Serial.print(a);
  Serial.print("\t");
  Serial.print(value);
  Serial.println("***");
  a++;

  if (a == 20){
    a = 0;
    Serial.println("DONE");
    delay(5000000);
  }
}

* : Source : Wikipedia

Wednesday, January 12, 2011

Meeting with my supervisor Mats Høvin, Summary

Today I met my supervisor Mats Høvin(associated professor at IFI,UiO). Here comes a summary of what he thinks I should be focusing on :

  • Handshake protocol. I do not have this protocol & this is something that according to Mats, I better have it implemented in my code
  • Zero Positioning. My suggestion to this challenge is to save the current position all the time either at PC side or at the Arduino non-volatile memory.
  • Sending data packages back & forth in serial communication would possibly result in loss of data packages. How can my code handle this kind of problems ?
  • Error on startup, fix for it ? Is it a programming error, or a hardware error because of Noise on reading inputs from ports ???
  • Sending many bytes and the delays resulting by that
  • The speed control, should be handled in java or Arduino ??? Maybe fast in the beginning and slow down little by little while reaching the end of the axle
  • Play off modus & Should it be target based, or follow every detail from the log blindly ??? Discuss ...
  • Camera candidates & streaming , but not image processing -> Intelligent cameras with output ports(how many???) for sending commands to Arduino according to the image processing done by camera itself.
  • Using WiFi tech & how ??? WiFly component ?
  • Programing a simulator in JAVA (xyz generation and visualization in JAVA)
  • PHP/JAVA Applet GUI & Streaming show on website
  • Multi Arduino card solutions ? Benefits and disadvantages ??? Discuss ...
  • FPGA??? A possible solution instead of Arduino? Discuss ...
  • Different methods to read data from encoders, External interruptions or software methods reading encoders value by analogRead() on loop frequence. Discuss based on Atmel/AVR architecture
  • Positioning in the room & semi-Kinect sensors

Wednesday, November 17, 2010

Climbing robot, brain storming

This project is an ongoing rapid prototype which is under development by Puya Afsharian & me …
Requirements :
4 x step motor
4 x El. Magnet
1 x Arduino
1 x Thin Aluminium plate
Components :
Magnet #1
Magnet #2
Magnet #3
Motor #1-1
Motor #1-2
Motor #2-1
Motor #2-2
Algorithm & states :
  • Initial state :
    Mag. 1,2,3 -> ON
    Motor 11,12,21,22 -> OFF
  • Lift state :
    Mag3 -> OFF
    Mag 1,2 -> ON
    Motor 12, 22 -> CCW ON
    Mag3 -> ON
  • Move Up Right state :
    Mag2 -> OFF
    Motor 11 CW ON MAX
    Motor 12  CW ON -> Vertical(Parallel with chassis)
    Mag 2 -> ON
  • Move Up Left state :
    Mag1 -> OFF
    Motor 21 CW ON MAX
    Motor 12  CW ON -> Vertical(Parallel with chassis)
    Mag 1 -> ON
and again to Lift state

Sunday, September 5, 2010

New foot design details

I have received these along with the foot from my supervisor Mats Høvin.
Actuator Design
Encoders mounted on Motor jacket
 Arudino + Motor drivers
Encoder
Source of all details is www.robotikk.com

Tuesday, July 13, 2010

LATEST NEWS, Working on summer project which is highly related to my thesis

Right now I am leading a team consist of 7 students, doing a summer-project called Super Crawler(a tank-type robot which roles around with the belt) at Robotica Osloensis(Robotics student community at university of Oslo). My team and I have gained many new experiences(reverse engineering techniques, Programming different motors to work with Arudino boards in C, Communicating with Arduino borads with Java on Serial communication port, signal processing, etc) and have developed  different codes for our purposes. You can read all about it, see the photos & videos and have direct access to our codes on our project worklog. I have also added a RSS-reader on the right side of this weblog about latest news on Super Crawler project ...

These experiences would help me a lot in future development of my climbing robot, Walloid :-)

Monday, April 26, 2010

Possible electronic solution, walloid

The whole idea is based on java program being able to steer the motors through Adruino cards. The java program would be run on an Linux OS on an Eee motherboard. As we have 12 motors for controlling the robot, we would be needing a USB hub with 12 outputs.