Archives for 

tutorial

What is the Minimum System on the Microcontroller?

avr minimal circuit

avr minimal circuit

The minimum system circuit of a microcontroller is a series of minimal so the microcontroller can work.

ATmegga AVR chip is equipped with an internal oscillator and thus no need external crystal for CPU clock source in order to save costs.

AVR microcontroller minimum system is very simple, just connect the VCC and AVCC to the DC +5V power supply voltage. Then GND and AGND with the ground. No need an additional crystal and reset pin is not connected to anything. With this circuit, AVR microcontroller has been able to work normally, but you can not reset the microcontroller manually. If you want to activate the reset pin with a button to trigger it, then connect the reset pin on your microcontroller with pull circuit made up of a 10k resistor and capacitor 10uF.

This circuit works for all AVR microcontroller family as ATMega8535, ATMega8, ATmega32, ATmega16 and others.

If you want to use larger crystals from 8MHz to your microcontroller circuit, then you can use an external crystal. You can see a more complete circuit on this page or this one.

Arduino Bluetooth Shield Source Code and Tutorial

arduino bluetooth shield master to slave

arduino bluetooth shield master to slave

 

This is a tutorial on how to use Arduino Bluetooth shield.

To use this bluetooth shield, you have to plug it on the Arduino Uno board as shown in the image above.

This Bluetooth shield can be programmed to be a master or slave. If Bluetooth shield is programmed into the master, the bluetooth shield will make ‘a name’ for bluetooth connectivity.

In addition, it will set the baudrate and will be looking for signals bluetooth enabled. After finding an active bluetooth signal, This bluetooth shield will try to make the process of “pairing” and if the appropriate settings, then it will be connected.

Here is an example program “Master Bluetooth Shield”

#include <SoftwareSerial.h> // Software Serial Port

#define RxD 6
#define TxD 7
#define DEBUG_ENABLED 1

String retSymb = “+RTINQ=”; // start symble when there’s any return
String slaveName = “;SeeedBTSlave”; // caution that ‘;’must be included, and make sure the slave name is right.
int nameIndex = 0;
int addrIndex = 0;

String recvBuf;
String slaveAddr;

String connectCmd = “\r\n+CONN=”;

SoftwareSerial blueToothSerial(RxD,TxD);

void setup()
{
Serial.begin(9600);
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
setupBlueToothConnection();
//wait 1s and flush the serial buffer
delay(1000);
Serial.flush();
blueToothSerial.flush();
}

void loop()
{
char recvChar;
while(1)
{
if(blueToothSerial.available()) //check if there’s any data sent from the remote bluetooth shield
{
recvChar = blueToothSerial.read();
Serial.print(recvChar);
}
if(Serial.available()) //check if there’s any data sent from the local serial terminal, you can add the other applications here
{
recvChar = Serial.read();
blueToothSerial.print(recvChar);
}
}
}

void setupBlueToothConnection()
{
blueToothSerial.begin(38400); // Set BluetoothBee BaudRate to default baud rate 38400
blueToothSerial.print(“\r\n+STWMOD=1\r\n”); // set the bluetooth work in master mode
blueToothSerial.print(“\r\n+STNA=SeeedBTMaster\r\n”); // set the bluetooth name as “SeeedBTMaster”
blueToothSerial.print(“\r\n+STAUTO=0\r\n”); // Auto-connection is forbidden here
delay(2000); // This delay is required.
blueToothSerial.flush();
blueToothSerial.print(“\r\n+INQ=1\r\n”); //make the master inquire
Serial.println(“Master is inquiring!”);
delay(2000); // This delay is required.

//find the target slave
char recvChar;
while(1)
{
if(blueToothSerial.available())
{
recvChar = blueToothSerial.read();
recvBuf += recvChar;
nameIndex = recvBuf.indexOf(slaveName); //get the position of slave name

//nameIndex -= 1;
//decrease the ‘;’ in front of the slave name, to get the position of the end of the slave address
if ( nameIndex != -1 )
{
//Serial.print(recvBuf);
addrIndex = (recvBuf.indexOf(retSymb,(nameIndex – retSymb.length()- 18) ) + retSymb.length());//get the start position of slave address
slaveAddr = recvBuf.substring(addrIndex, nameIndex);//get the string of slave address
break;
}
}
}

//form the full connection command
connectCmd += slaveAddr;
connectCmd += “\r\n”;
int connectOK = 0;
Serial.print(“Connecting to slave:”);
Serial.print(slaveAddr);
Serial.println(slaveName);
//connecting the slave till they are connected
do
{
blueToothSerial.print(connectCmd);//send connection command
recvBuf = “”;
while(1)
{
if(blueToothSerial.available()){
recvChar = blueToothSerial.read();
recvBuf += recvChar;
if(recvBuf.indexOf(“CONNECT:OK”) != -1)
{
connectOK = 1;
Serial.println(“Connected!”);
blueToothSerial.print(“Connected!”);
break;
}
else if(recvBuf.indexOf(“CONNECT:FAIL”) != -1)
{
Serial.println(“Connect again!”);
break;
}
}
}
}while(0 == connectOK);
}

arduino bluetooth shield slave to computer master tutorial

arduino bluetooth shield slave to computer master tutorial

If you set it as a slave bluetooth shield, then this will be passive. This bluetooth shield will set the baudrate and put a name of bluetooth connectivity.

After that, it will wait until there is a device that finding and trying to ‘pairing itself’. If the settings are appropriate, then both bluetooth device will be connected.

Here is an example program “Slave Bluetooth Shield”

#include <SoftwareSerial.h> //Software Serial Port
#define RxD 6
#define TxD 7

#define DEBUG_ENABLED 1

SoftwareSerial blueToothSerial(RxD,TxD);

void setup()
{
Serial.begin(9600);
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
setupBlueToothConnection();

}

void loop()
{
char recvChar;
while(1)
{
if(blueToothSerial.available())
{//check if there’s any data sent from the remote bluetooth shield
recvChar = blueToothSerial.read();
Serial.print(recvChar);
}
if(Serial.available())
{//check if there’s any data sent from the local serial terminal, you can add the other applications here
recvChar = Serial.read();
blueToothSerial.print(recvChar);
}
}
}

void setupBlueToothConnection()
{
blueToothSerial.begin(38400); // Set BluetoothBee BaudRate to default baud rate 38400
blueToothSerial.print(“\r\n+STWMOD=0\r\n”); // set the bluetooth work in slave mode
blueToothSerial.print(“\r\n+STNA=SeeedBTSlave\r\n”); // set the bluetooth name as “SeeedBTSlave”
blueToothSerial.print(“\r\n+STOAUT=1\r\n”); // Permit Paired device to connect me
blueToothSerial.print(“\r\n+STAUTO=0\r\n”); // Auto-connection should be forbidden here
delay(2000); // This delay is required.
blueToothSerial.print(“\r\n+INQ=1\r\n”); // make the slave bluetooth inquirable
Serial.println(“The slave bluetooth is inquirable!”);
delay(2000); // This delay is required.
blueToothSerial.flush();
}

AVR ATMega8 Schematic Circuit with Eagle Software

avr-atmega8-minimum-system-schematic-circuit

avr-atmega8-minimum-system-schematic-circuit

ATMega8 Schematic Circuit (Minimum system) is a support circuit for the microcontroller.

Without this support circuit, the microcontroller will not be able to work.

Minimum system for microcontrollers consist of several components. The components are : crystal, capacitors, and the reset circuit (consisting of resistors and capacitors).

And the crystal must be combined by two capacitors. The capacity of this capacitor should be in accordance with the AVR ATMega8 datasheet.

RESET pin on AVR ATMega8 must be pull up with a 4K7 ohm resistor and stabilized with ‘100nF capacitors’.

You have to make the pin as a downloader port. pin of the downloader port must meet a standard sequence. The pin sequence is: MOSI, MISO, SCK, RESET, GROUND.

This AVR ATMega8 schematic is made with the EAGLE software.

The Easiest Arduino Uno Bluetooth Shield

arduino bluetooth seeedstudio shield

arduino bluetooth seeedstudio shield

The easiest Arduino Uno Bluetooth shield for your Arduino Uno project is SeeedStudio Bluetooth Shield. Simply by plugging the Bluetooth Shield on your Arduino Uno and it has been ready for use. SeeedStudio bluetooth shield work using serial communication. You can choose two pins from Adruino Uno (from pin D0 to D7) to be used as Software Serial Port – Transmite Data (TX) and Receive Data (RX). You can choose RX and TX pins by sliding ‘jumper pin’ on the port that you want (D0 to D7).

arduino bluetooth seeedstudio shield tutorial

arduino bluetooth seeedstudio shield tutorial

 

Arduino Uno Bluetooth Shield ( SeeedStudio Bluetooth Shield ) Features :

  1. Input Voltage: 3.3V
  2. Baudrate: 9600, 19200, 38400, 57600, 115200, 230400, 460800
  3. Seeeduino/Arduino compatible
  4. Up to10m communication distance in house without obstacle
  5. UART interface (TTL) with programmable baud rate (SPP firmware installed)
  6. Default Baud rate: 38400, Data bits: 8, Stop bit: 1, Parity: No parity
  7. Default PINCODE:”0000”
  8. A full set of configuration commands
  9. On board PCB Antenna
  10. FCC Part 15 Certificated

 

Arduino uno bluetooth shield

Arduino uno bluetooth shield

You can still use all the Arduino pin bluetooth although this shield cover Arduino Uno board.  This Bluetooth shield provides 2 grove connectors (digital and analog) for you to install the grove module.

Pad TypeDescription
PIO1Status instruction port of Bluetooth module can be read by Arduino A1 port: low-disconnected, high-connected.
BT_RXUART Data input of Bluetooth module.
BT_TXUART Data output Bluetooth module.
Two Grove connectorsOne is Digital (D8 and D9), the other is I2C/Analog (A4 and A5).

 

arduino bluetooth shield master to slave

arduino bluetooth shield master to slave

You can set this shield bluetooth become a master or slave. For a tutorial and sample programs (source code program) you can also read on this blog.

arduino bluetooth shield slave to computer master tutorial

arduino bluetooth shield slave to computer master tutorial

You can connect this bluetooth shield with the other one (2 different bluetooth shield).

You can also connect a Bluetooth shield with a laptop or computer.

You can also connect a Bluetooth shield with the smartphone.

arduino bluetooth shield slave to master tutorial

arduino bluetooth shield slave to master tutorial

HC-SR04 Distance Sensor Arduino Source Code

hc-sr04 distance sensor and arduino wire

hc-sr04 distance sensor and arduino wire

HC-SR04 is a proximity sensor that is very widely used.

This sensor is very easy to use because it only needs a simple syntax for programming it. You can view the datasheet and specification of the sensor’s hc-sr04 here.

Sensor HC-SR04 is widely used as a sensor on the robot to detect objects around the robot. In this tutorial, use the Arduino Uno as the processor. While its pin configuration can be seen in the image above.

VCC and GND pins on the sensor is connected to the VCC and GND pins on the Arduino UNO. While Trig pin is connected to digital pin 11 on the Arduino UNO. And echo pin is connected to digital pin 12 on the Arduino UNO.

 

HC-SR04 Source code :

#define echoPin 7 // Echo Pin
#define trigPin 8 // Trigger Pin
#define LEDPin 13 // Onboard LED

int maximumRange = 200; // Maximum range needed
int minimumRange = 0; // Minimum range needed
long duration, distance; // Duration used to calculate distance

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)
}

void loop() {
/* The following trigPin/echoPin cycle is used to determine the
distance of the nearest object by bouncing soundwaves off of it. */
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);

digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);

//Calculate the distance (in cm) based on the speed of sound.
distance = duration/58.2;

if (distance >= maximumRange || distance <= minimumRange){
/* Send a negative number to computer and Turn LED ON
to indicate “out of range” */
Serial.println(“-1”);
digitalWrite(LEDPin, HIGH);
}
else {
/* Send the distance to the computer using Serial protocol, and
turn LED OFF to indicate successful reading. */
Serial.println(distance);
digitalWrite(LEDPin, LOW);
}

//Delay 50ms before next reading.
delay(50);
}

ATMega8535 Schematic Diagram

avr-atmega8535-minimum-system-schematic-circuit

avr-atmega8535-minimum-system-schematic-circuit

AVR ATMega8535 is a very popular microcontroller.

In the recent years, ATMega8535 has been displaced by the other microcontroller with a more complete feature like ATMega32, ATMega16 or ATMega128. Even, when Arduino offers ease (in the used and programming), the conventional Microcontroller becoming obsolete.

However, some users are still loyal to use the conventional microcontroller. And if you want to learn about the basics of the microcontroller, then you have to learn from the conventional microcontroller. You have to create an electronic circuit by yourself. And you have to find out all about the components used. After you finish creating the electronic circuits, then you will understand how the microcontroller’s minimum system so that it able works. And you will understand how a microcontroller work,  before you start programming it.

Like other microcontroller, we need some electronic components so that it able to work.

Crystal,some resistor and capacitor for the clock and the reset button. And don’t forget to provide the supply (VCC and GND) on the microcontroller board. You can make the ATMega8535 schematic diagram with the EAGLE software like the exsample above.

AVR ATMega128 Schematic Circuit Adapter DIY

avr-atmega128-schematic-and-board-adapter

avr-atmega128-schematic-and-board-adapter

ATmega128 is one of the AVR microcontroller. Large memory (128KBytes) can be used to make a big project.

For example, if you create a storage system using the MMC and use BASCOM AVR as the programming language, then you have to load a very large libraries into the memory of the microcontroller. And this can not be done if you are using a microcontroller with a small memory such as ATMega16 or ATMega8535. Therefore, you can try using AVR ATmega128 to complete your major project.

However, you would have difficulty in assembling and soldering components on this ATmega128 microcontroller. This is because ATmega128 an SMD component. And you must be able to make a double layer PCB if you want to use a ATmega128 microcontrollers and use part of DIP components (such as IC MAX232 or another).

If you want to combine the two types of these components, then I have tips for you. Make two single PCB layer and combine with pin headers. The first is an adapter PCB for ATmega128 microcontroller and the second is used for the other DIP components. And then combine it with pin header (male and female pin header). You can see PCB adapter for ATmega128 microcontroller in the picture.

DIY – Do It Yourself project

Hopefully this tutorial ( AVR ATMega128 Schematic Circuit Adapter DIY ) can help you in completing the project.

HC-SR04 Ultrasonic Distance Sensor

hc-sr04-distance-sensor

hc-sr04-distance-sensor

HC-SR04 is one of a proximity sensor. This sensor is very cheap, so many developers that use these sensors to the system they developed.

HC-SR04 can measure distances with ultrasonic wave method. This sensor has two part which is important, namely the transmitter and receiver. The transmitter will throw ultrasonic waves and will be reflected by a particular object. This reflected wave will be captured by the receiver. The delivery time can be determined from the calculation of the transmitting and catching time.

hc-sr04 distance sensor for arduino

hc-sr04 distance sensor for arduino

HC-SR04 has a 4 pin connector: VCC, Trig (T), echo (R), GND. VCC is connected to the voltage of 5V, GND connected to Ground, Trig (T) is connected to the data pin microcontroller, and echo (R) is connected to the data microcontroller (different pin).

– Model: HC-SR04
– Color: Blue + Silver
– Working voltage : 5V(DC)
– Static current: Less than 2mA.
– Output signal: Electric frequency signal, high level 5V, low level 0V.
– Sensor angle: Not more than 15 degrees.
– Detection distance: 2cm~450cm.
– High precision: Up to 3mm
– Mode of connection: VCC / trig(T) / echo(R) / GND
– Module Working Principle:
– Adopt IO trigger through supplying at least 10us sequence of high level signal
– The module automatically send eight 40khz square wave and automatically detect whether receive the returning pulse signal
– If there is signals returning, through outputting high level and the time of high level continuing is the time of that from the ultrasonic transmitting to receiving

 

hc-sr04 distance sensor and arduino wire

hc-sr04 distance sensor and arduino wire

For example, you can connect Trig (T) pin and echo (R) pin on the Arduino Uno as shown above. In the picture can be seen that Trig is connected to the pin number 11 and the echo is connected to the pin number 12. For source code and the programming tutorial you can read here.

Water Flow Meter Sensor for Arduino

Water flow sensor for arduino tutorial

Water flow sensor for arduino tutorial

Water flow meter sensor is a sensor that can detect the speed of water flow.

One of a flow sensor that is often used is the production of seeedstudio. Water flow meter sensor works based on half-effect sensors that are inside.

Half-effect sensors work by rotation of the turbine that is rotated by the flow of water. Water flow meter sensor is wrapped with a plastic body which has two holes as input and output streams.

Water flow sensor for arduino tutorial

Water flow sensor for arduino tutorial

Specifications Water Flow Meter Sensor

Mini. Wokring VoltageDC 4.5V
Max. Working Current15mA(DC 5V)
Working Voltage5V~24V
Flow Rate Range1~30L/min
Load Capacity≤10mA(DC 5V)
Operating Temperature≤80℃
Liquid Temperature≤120℃
Operating Humidity35%~90%RH
Water Pressure≤2.0MPa
Storage Temperature-25℃~+80℃
Storage Humidity25%~95%RH

 

Water flow datasheet

Water flow datasheet

Water flow arduino datasheet

Water flow arduino datasheet

Components of the water flow meter sensor

No.NameQuantityMaterialNote
1Valve body1PA66+33%glass fiber
2Stainless steel bead1Stainless steel SUS304
3Axis1Stainless steel SUS304
4Impeller1POM
5Ring magnet1Ferrite
6Middle ring1PA66+33%glass fiber
7O-seal ring1Rubber
8Electronic seal ring1Rubber
9Cover1PA66+33%glass fiber
10Screw4Stainless steel SUS3043.0*11
11Cable11007 24AWG

 

You can read data from these sensors water flow meter with arduino. For example, the schematic diagram will assist you in arranging a water flow meter in the arduino.

water-flow-sensor-for-arduino

water-flow-sensor-for-arduino

RS232 with MAX232 Schematics and Tutorial

RS232 is a serial communication standard that is used to connect peripherals to the peripherals. Also called the Path I / O (input / output).

The best example we often encounter is a connection between a computer with a modem, or a computer with a mouse can even also between the computer and the computer are all normally connected via the RS232 serial port. This standard uses several tools in its implementation. The most commonly used is a plug / connector DB9 or DB25. For RS232 with DB9 connector, typically used for mouse, modem, cashier registers, etc., while the DB25 connector, typically used for joystick games.

RS232 standards set by the Electronic Industry Association and Telecommunications Industry Association in 1962. 

The function of the serial RS232 port is for connecting / connections from one device to another device, or equipment standards concerning the communication of data between computers by means of computer peripherals. That other devices such as modem, mouse, cash registers and so forth. Serial RS232 port on a DB9 connector has a pin 9 units and the DB25 connector has a pin 25 pieces.

RS232 was made in 1962, long before the popular TTL IC, therefore the voltage level specified for RS232 has nothing to do with TTL voltage levels, and even can be said to be much different. TTL Serial communications work at a voltage of 5V to + 5V RS232 serial communication while working at a voltage of + 25V to -25V.

All microcontroller using TTL serial communications topologies. While some devices using RS232 serial topology. Therefore, you must create a device for connecting two different topologies so that both can communicate.

rs232 schematics tutorial with max232

rs232 schematics tutorial with max232

The circuit above is a TTL into RS232 serial converter or RS232 into TTL serial converter. So that the circuit can connect a microcontroller with RS232 devices such as modems or other devices. You can create a series of mini-RS232 converter IC MAX232 and some capacitors 1uF as shown following circuit. As an interface port, you can use a DB9 connector or just a pin header.

rs232-board-and-schematics-tutorial-with-max232

rs232-board-and-schematics-tutorial-with-max232

USBasp AVR Microcontroller Downloader Schematics

avr-microcontroller-schematics-downloader

avr-microcontroller-schematics-downloader

This USBasp downloader can be used on the AVR microcontroller families such as ATMega8, ATmega16, ATMega8535, ATmega32, ATmega128 and much more. Based on Atmega8 (or can also be used ATMega88) and some additional components.

USB connector as the interface with a computer and five pins as an interface with a microcontroller. The USBasp’s hardware is very easy to make. Once you finish making the hardware, you should fill the ATMega8’s memory with two firmware program that will be filled in eeprom microcontroller ATmega8.

After that, USBasp downloader has been ready for use. To download the program, you must compile into .hex file using BASCOM AVR or CAVR.

And you can transfer files with the .hex downloader software like avrdude, USBasp, khazama, PonyProg or other programs.

avr microcontroller BOARD schematics downloader

avr microcontroller BOARD schematics downloader

Arduino Uno R3 the Computing Platform

Arduino is a trademark that manufactures microcontroller development board. Arduino UNO is one type of development board produced by Arduino, and the new series is arduino uno R3.

arduino-uno-r3-board

arduino-uno-r3-board

Arduino UNO R3 is a computing platform that is very easy to use. Arduino UNO R3 is ATmega328P microcontroller based. According datasheet from ATmega328P, Arduino UNO R3 has a 14 pin digital input / output, and 6 of them can be used as PWM output pin. Arduino UNO R3 also has 6 analog inputs, has a 16MHz crystal, a USB port which can be used to download the program, a power jack, a reset button, and ICSP header.

how to optimized the arduino uno r3

how to optimized the arduino uno r3

 

Arduino features shown in the diagram above.

Arduino UNO R3 provide + 5V, 3.3V and GND pin as a power source if needed by sensors or other devices. Users can also use the SDA and SCL pins on the pin number 27 and 28. Features ADC (Analog to Digital Converter) can be used on 23-28 pins. While the interrupt feature can be used on pin number 4 and 5 (pin number 4 is int0 and pin number 5 is int1). Serial communication (RX and TX) is provided on pin numbers 2 and 3.

arduino uno r3 layout diagram

arduino uno r3 layout diagram

 

Arduino Uno R3 design is very simple to facilitate the user in using it. On the left we will see an electric jack socket. Power jack is compatible to the power supply voltage 9-12V. In addition, we will see the USB port to communicate with a computer, either in downloading a program or data transfer via USB. As an indicator, arduino provides 4 LEDs. 1 for the power indicator, two LED indicators for serial communication (RX and TX), and 1 other LED connected at pin 13.

 

arduino uno r3 microcontroller pin mapping

arduino uno r3 microcontroller pin mapping

 

The ATmega328 microcontroller datasheet shows the various features that can be used on the Arduino UNO R3.

 

arduino uno r3 board layout

arduino uno r3 board layout