====== Microcontrollers and Robotics ====== ===== Microcontrollers ===== [{{ :images:general:intel_p8048h.jpg?250|First microcontroller in the world: Intel 8048}}] A microcontroller is basically a computer which is placed on a single integrated circuit chip. It consists of memory, a processor, as well as input-output interfaces. Microcontrollers are programmed to run a certain task, which means, if there is a need to change or enhance its functionality, one must install a new program on the chip. Features that differentiate microcontrollers from other computers (PC, laptop, server, etc.) are: * All functions are placed on a single chip in a smaller and more compact scale. * It is programmed to perform a certain task; in order to change its functionality new software must be installed. * It consumes less power because all physical characteristics are smaller and less energy demanding than in a PC, laptop or server. Developers of microcontrollers concentrate on low energy demand so that mobile applications that use batteries can work longer. * Single purpose inputs and outputs. Microcontrollers have so called peripherals, which establish connections between a microcontroller and other microcontrollers or computers (e.g. USB, CAN, UART), help to understand the processes in the real physical world (e.g. switching actions, temperature measuring, etc. ) and help control conditions (e.g. control motor, trigger alert, etc.) Microcontrollers can be found in a variety of everyday items: household appliances (e.g. microwave ovens, TV-sets), toys (Lego NXT, talking dolls), vehicles (cars, hoists), etc. Microcontrollers’ wide usage has been possible because they are easy to program and have a wide range of functionalities; hence, it is very easy to add new features and upgrade the level of intelligence of the appliance they are in. ===== Robotics ===== Robotics is a science that combines the technology and knowledge necessary to build robots. Due to the fast development of technology, the term robot, as an automatic machine that replaces humans, is not so clearly defined anymore. A robot is no longer just a humanoid robot, robotic hand at an auto assembly line, autopilot in aircraft, artificial intelligence built of living neurons or simple cleaning robot; it is also computer software that completes tasks meant for humans (for example, compiles reports). It is known that robots are built to replace humans at certain tasks. There are many reasons for this: dangerous working conditions, cheaper production, monotonous work may cause humans to err, new systems are so complex and time-critical, that automatic systems can make better decisions than humans. ===== Microcontrollers in Robotics ===== Because of the breadth of robotics, we define it as hobby robotics; these systems are not too complex, and it is possible to build them by oneself. Common microcontrollers in hobby robotics are: * Atmel AVR microcontrollers (ATmega, ATtiny, etc.) * Microchip Technology PIC microcontrollers (PIC16, PIC24, etc.) * Microcontrollers based on ARM technology. Quite often third parties have created development boards and environments based on microcontrollers mentioned herein before. For example: Arduino (AVR), BASIC Stamp (PIC) and Lego NXT (ARM). The necessities for developing HomeLab that are described in this book are based on the AVR ATmega128 microcontroller. A question arises from the large amount of microcontrollers and development boards available: how to find the most appropriate? Generally we can classify the following four properties: - price, physical characteristics, development environment and customer support. Notable physical characteristics are: * processor operating frequency - determines chip operating speed * program memory capacity – determines the size of the program that can be installed on the chip * data memory capacity – how much data can be processed in the program * number of input/output pins and their function – different pins have different possibilities * number of timers – important for application timing criteria * energy consumption – important for mobile applications Here the development environment is PC software, which allows creating and compiling programs, uploading programs to the microcontrollers and bridging in the programs during running in order to detect possible faults. How easy and comfortable it is to do all that becomes decisive because during the development phase of the program it will be the primary working area. All this leads to the fourth characteristic, which is customer support. It is important that receiving help and support for solving possible issues is made as easy as possible. By considering all four mentioned properties, it should be possible to find the development board needed.