Posted on

Bluetooth – Folosire și conectare rapidă la Arduino

Bluetooth – Folosire și conectare rapidă la Arduino

Modulul Bluetooth HC-05 sau Bluetooth HC-06

Mai întâi conectăm modulul la Arduino, folosim o conectare serială virtuală ca să nu mai deconectăm modulul în momentul programării placii Arduino

images2

După conectare și alimentare ledul modulului începe să clipească

In cod apare :

#include <SoftwareSerial.h>  // nativa ID Arduino
SoftwareSerial blue_serial(9, 10); // RX, TX

Adică Serial virtual cu numele „blue_serial” (sau oricare nume doriți), pin RX de la modul la pin 9 Arduino, respectiv pin TX de la modul la pin 10 Arduino (sau oricare pini doriți).

Urmează să configurăm telefonul cu Android cu Modulul Bluetooth

In Setup telefon la Bluetooth -> Search for devices -> Available devices

android3

Apare HC-05 sau HC-06 si/sau device mac address

Selectați și faceți Pairing cu codul PIN 1234

android2

Dacă se conectează ledul modulului nu mai clipește și este gata de comunicare cu Arduino.

Acum la orice aplicație trebuie setată și corelată cu codul butoanele sau consola, pentru că pe serial se trimit în special „caractere”.

Succes!

Tutoriale Youtube :

How to control a LED using a bluetooth module

How to Pair HC-05 Bluetooth Modules

Atenție la declararea pinilor.

Acum mai trebuiește instalată și configurată aplicația pentru telefon în Google Play :

Arduino bluetooth controller

ikon

set-butoane

index

Posted on

Robot 2WD Roboromania autonom cu radar ocolire obstacole

Robot 2WD Roboromania autonom cu radar ocolire obstacole

robot

Unul dintre cele mai simple coduri pentru Robot 2WD autonom cu radar ocolire obstacole.

Avem nevoie de :
o placă de dezvoltare tip Arduino UNO (oricare)
un modul driver motoare L298N
un senzor cu ultrasunete
șasiu cu 2 motoare 2WD
servomotor
cabluri Dupont

robot-2wd-roboromania

Cel mai simplu cod :

//––––––––––––––

// roboromania.ro Arduino Object Avoiding Robot with Ultrasonic Sensor
#include <Servo.h>
#include „Ultrasonic.h”

const int buzzer = 8;
const int motorA1= 2;
const int motorA2= 6;
const int enableA = 3;
const int motorB1= 10;
const int motorB2= 9;
const int enableB = 5;

Ultrasonic ultrasonic(A2 ,A3); //(trig pin,echo pin)
Servo myservo;

int distance;
int checkRight;
int checkLeft;
int pos=100;
int speedPWM = 150; //Change speed (PWM max 255)

void setup()
{
myservo.attach(7); //Servo pin connected to pin 7
myservo.write(pos);
pinMode(buzzer, OUTPUT);
pinMode(motorA1,OUTPUT);
pinMode(motorA2,OUTPUT);
pinMode(motorB1,OUTPUT);
pinMode(motorB2,OUTPUT);
pinMode(enableA, OUTPUT);
pinMode(enableB, OUTPUT);
delay(1000);
}

void loop(){
analogWrite(enableA, speedPWM);
analogWrite(enableB, speedPWM+50);
//Read distance…
distance = ultrasonic.Ranging(CM); // CM= centimeters INC= inches
delay(20);
//Check for objects…
if (distance > 15){
forward(); //All clear, move forward!
noTone(buzzer);
}
else if (distance <=15){
stop(); //Object detected! Stop the robot and check left and right for the better way out!
tone(buzzer,500); // play a tone
//Start scanning…
for(pos = 30; pos < 170; pos += 1){
myservo.write(pos);
delay(10);
}

checkLeft = ultrasonic.Ranging(CM);

for(pos = 170; pos>=30; pos-=1){
myservo.write(pos);
delay(10);
}

checkRight= ultrasonic.Ranging(CM);

myservo.write(100); // Sensor „look” forward again

// decision turn left or right?
if (checkLeft < checkRight){
left();
delay(500);
}
else if (checkLeft > checkRight){
right();
delay(500);
}
else if (checkLeft <=10 && checkRight <=10){
backward();
left();
}
}
delay(150);
}
void forward(){
digitalWrite(motorA1, HIGH);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, HIGH);
digitalWrite(motorB2, LOW);
}

void backward(){
digitalWrite(motorA1, LOW);
digitalWrite(motorA2, HIGH);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, HIGH);
}

void left(){
digitalWrite(motorA1, HIGH);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, HIGH);
}

void right(){
digitalWrite(motorA1, LOW);
digitalWrite(motorA2, HIGH);
digitalWrite(motorB1, HIGH);
digitalWrite(motorB2, LOW);
}

void stop(){
digitalWrite(motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, LOW);
}

//––––––––––––––

Atenție la declararea pinilor. Dacă copiați codul atenție la fonturi.

Succes !

Posted on

Cum scriem cu Arduino pe un LCD i2C

Cum scriem cu Arduino pe un LCD i2C

arduino-lcd-i2c

Componente:
Arduino Uno
LCD 2×16 sau 4×20
Modul i2C (cel care da adresa LCD)

Ce trebuie sa știți :
Atenție în cod la declararea tipului de LCD (adresa,caractere,linii)
Dacă nu știți adresa folosiți Arduino/File/Exemples/LiquidCrystal/test/i2cLCDguesser

Cod:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3f, 16, 2); // (adresa,caractere,linii) deci pentru 4×20 va fi (0x3f, 20, 4)

// LiquidCrystal_I2C lcd(0x27, 16, 2); // sau (adresa,caractere,linii)

void setup()
{
lcd.begin();
lcd.backlight();
lcd.print(„Hello, world!”);
}

void loop()
{
lcd.setCursor ( 0, 0 );  // prima linie
lcd.print(„Hello world!”);

lcd.setCursor ( 0, 1 );   // a doua linie
lcd.print(„Hello again!”);
}

Succes!

Nu reușiți veniți la noi la ROBOROMANIA

Posted on

Cum comandam un motor DC cu un tranzistor

Cum comandam un motor DC cu un tranzistor

1  2  2n2222-roboromania-pini

Pentru a comanda un motor de curent continuu, aveți nevoie de o cantitate mai mare de curent decât poate da arduino.
Trebuie să utilizați un tranzistor.
Tranzistorul pe care îl folosim pentru acest tutorial este 2N2222 și este de 40V și 200mA, este perfect pentru un motor de jucărie.
Notă: Cu acest cod veți putea controla viteza motorului din „serial monitor”.

Componente:
Arduino UNO
Breadboard
Rezistor de 220 Ohm
Tranzistor 2N2222
Dioda 1N4148
DC Motor

Cod:

// –––––

//Baza de la tranzistor la (Arduino PWM Digital) Pin 3
const int motorPin = 3;

int Speed; //Variabila „Speed” PWM
int flag;

void setup()
{
pinMode(motorPin, OUTPUT); //Set pin 3 as an OUTPUT
Serial.begin(9600); //Init serial communication
//Print a message:
Serial.println(„Scrie un numar de la  50 la 255”);   //De ce minimun 50, pentru ca altfel motorul se opreste
Serial.println(„”);
}

void loop()
{
//Verifica daca se poate comunica peserial:
if (Serial.available() > 0)
{
// Daca se scrie ceva pe serial:
Speed = Serial.parseInt();
flag=0;
}

//Trimitere valida intre 50 si 255
if (Speed>=50 && Speed<=255){
//Trimite valoarea PWM la Pin3 spre tranzistor si mesaj pe monitor
analogWrite(motorPin, Speed);
//Print mesaj pe monitor o data
if (flag==0){
//Print valoare PWM
Serial.print(„Motorul se invarte cu: „);
Serial.print(Speed);
Serial.println(” PWM”);
flag=1;
}
}
delay(1000);
}

// ––––-

Succes!

Posted on

How to Receive Arduino Sensor-Data on Your Android-Smartphone

How to Receive Arduino Sensor-Data on Your Android-Smartphone

Cum să primiți datele senzorilor Arduino pe telefonul smartphone Android

Modulul Bluetooth HC-05 / HC-06 comunică cu Arduino prin interfața UART. Fiecare mesaj pe care Arduino dorește să-l trimită este dat mai întâi modulului Bluetooth, care trimite mesajul fără fir. Pentru a evita problemele cu UART, Arduino și Bluetooth-Module trebuie să utilizeze aceeași baud-rate (la 9600 implicit). Este posibil să modificați baud-rate și parola modulului HC-05 / HC-06.

fix601uimyuf1cf-large

Puteți utiliza orice placă de dezvoltare de tip Arduino

Bluetooth Module

Cablare HC-05/HC-06 :

-GND din HC-05 la GND Arduino

-VCC de HC-05 la 3.3V Arduino sau 5V cum permite modulul

-TX HC-05 la Arduino Pin 10 (RX)

-RX HC-05 la Arduino Pin 11 (TX)

Important: HC-05 RX nu este conectat la Arduino RX și TX

AppArduino Bluetooth Data

Codul : (atentie la copiere ar putea apare erori de la fonturi)

// –––––––-

#include <SoftwareSerial.h>

SoftwareSerial BTserial(10, 11); // RX | TX

int sensorPin = A0;

int sensorValue = 0;

void setup() {

BTserial.begin(9600); }

void loop() {

sensorValue = analogRead(sensorPin);

//IMPORTANT: The complete String has to be of the Form: 1234,1234,1234,1234;

//(every Value has to be seperated through a comma (‘,’) and the message has to

//end with a semikolon (‘;’))

BTserial.print(„1234”);

BTserial.print(„,”);

BTserial.print(„1234.0”);

BTserial.print(„,”);

BTserial.print(„1234 hPa”);

BTserial.print(„,”);

BTserial.print(„500 ml/s”);

BTserial.print(„,”);

BTserial.print(sensorValue);

BTserial.print(„;”);

//message to the receiving device

delay(20);

Important:
Acest cod Arduino este scris pentru vizualizarea datelor de măsurare de la un microcontroler prin Bluetooth. Înainte de a începe această aplicație, Bluetooth-Modul (HC-05) trebuie
pir-uit la Smartphone. În cazul special al HC-05, PinCode-ul implicit pentru inițierea procesului de cuplare este „1234”.
Cabluri:

GND de la HC-05 la GND Arduino,

VCC de la HC-05 la VDC Arduino,

TX HC-05 la Arduino Pin 10 (RX)

RX HC-05 la Arduino Pin 11 (TX)

Android App „Arduino Bluetooth Data”

Următoarea aplicație intenționează să proceseze datele de măsurare primite și le vizualizează:

https://play.google.com/store/apps/details?id=com.frederikhauke.ArduTooth

fjgloomimyuezhv-large unnamed unnamed2 unnamed3

sursa: https://www.instructables.com/id/How-to-Receive-Arduino-Sensor-Data-on-Your-Android/

Posted on

Radar cu ultrasunete cu Arduino UNO

Radar cu ultrasunete cu Arduino UNO

 

Este un proiect Arduino care necesită cunoştinţe medii în domeniu.
Vom prezenta în continuare paşii de realizare.

Ce vrem să realizăm ?

Vrem să construim un aparat care să ne arate pe display-ul PC obiecte detectate cu un radar cu ultrasunete

Pe display va apare o fereastra monitor (Processing)

schemamonitor-radar

Ce materiale avem nevoie ?

O placă compatibilă Arduino Uno sau Nano sau Mini.

Uno-roboromania

un senzor cu ultrasunete

HC-SR04-roboromania

un Servomotor

SG90-9G-Micro-Servo-Motor-avr-roboromania-Bucuresti

cabluri Dupont

Ce urmează ?

Să le conectam.
E simplu, trebuie doar să fim atenți la conectarea pinilor, corespunzător sketch-ului Arduino folosit.
Dar puteți veni la sediul nostru și vă învățăm noi cat putem … vă ajutăm și la montaj …

schema

Să uploadăm codul (download) și cel pentru Processing (atenție să aveți același COM și la Arduino și la Processing)

dacă nu puteți downloada codul scrieți pe office@roboromania.ro

video

Colectivul magazinului roboromania.ro vă urează succes !  După realizare va rugam sa trimiteți poze și sugestii.

Posted on

Robot 4WD Roboromania autonom ocolire obstacole realizat de MERS Robotica pentru copii – Mihai Dascăliuc – Constanţa

Robot 4WD Roboromania autonom ocolire obstacole realizat de MERS Robotica pentru copii – Mihai Dascăliuc

MERS Robotica pentru copii – Constanţa  https://www.facebook.com/roboticaconstanta/

default_comp26

3214wd2wd

Aveti nevoie de :
o Placă de dezvoltare tip Arduino UNO (oricare)
un Modul driver motoare L293D
un Senzor cu ultrasunete HCSR04
un Kit șasiu 4WD
cabluri Dupont

Modul driver motoare L293D este shield si nu aveți cum să greșiți pinii

Codul (sau download) :

// Robot 4WD autonom ocolire obstacole – „MERS Robotica pentru copii” – Mihai Dascaliuc

#include <AFMotor.h> //import your motor shield library
#define trigPin A0 // define the pins of your sensor
#define echoPin A1
AF_DCMotor motor1(1,MOTOR12_64KHZ); // set up motors.
AF_DCMotor motor2(2, MOTOR12_8KHZ);
AF_DCMotor motor3(3, MOTOR12_8KHZ);
AF_DCMotor motor4(4, MOTOR12_8KHZ);

void setup() {
Serial.begin(9600); // begin serial communitication
Serial.println(„Motor test!”);
pinMode(trigPin, OUTPUT);// set the trig pin to output (Send sound waves)
pinMode(echoPin, INPUT);// set the echo pin to input (recieve sound waves)
motor1.setSpeed(200); //set the speed of the motors, between 0-255
motor2.setSpeed (200);
motor3.setSpeed (200);
motor4.setSpeed (200);
}

void loop() {

long duration, distance; // start the scan
digitalWrite(trigPin, LOW);
delayMicroseconds(2); // delays are required for a succesful sensor operation.
digitalWrite(trigPin, HIGH);

delayMicroseconds(10); //this delay is required as well!
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;// convert the distance to centimeters.
if (distance < 40)/*if there’s an obstacle 25 centimers, ahead, do the following: */ {
Serial.println(„Close Obstacle detected!” );
Serial.println(„Obstacle Details:”);
Serial.print(„Distance From Robot is ” );
Serial.print( distance);
Serial.print( ” CM!”);// print out the distance in centimeters.

Serial.println(” The obstacle is declared a threat due to close distance. „);
Serial.println(” Turning !”);
motor1.run(FORWARD); // Turn as long as there’s an obstacle ahead.
motor2.run(FORWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
} else {
Serial.println(„No obstacle detected. going forward”);
delay (15);
motor1.run(FORWARD); //if there’s no obstacle ahead, Go Forward!
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
}
}

filmuleț realizat de MERS Robotica pentru copii – Constanţa

Succes!

Posted on

Măsurarea temperaturii cu un termistor de 10k și afișare pe LCD

Măsurarea temperaturii cu un termistor de 10k și afișare pe LCD

Este un proiect Arduino care necesită cunoştinţe medii în domeniu.
Vom prezenta în continuare paşii de realizare.

Ce vrem să realizăm ?

Vrem să construim un aparat care să ne arate valoarea temperaturii în Kelvin Celsius și Fahrenheit pe un display LCD 2×16 I2C.

schema

Ce materiale avem nevoie ?

O placă compatibilă Arduino Uno sau Nano sau Mini.

Uno-roboromania

Un LCD i2C sau un LCD 2×16 + Modul i2C

2x16blue-roboromania

și evident un Termistor de 10k

Cât ne costă ?

În varianta făcută de noi şi cumpărate de la roboromania.ro costa cam 60 de lei

Ce urmează ?

Să le conectam.
E simplu, trebuie doar să fim atenți la conectarea pinilor, corespunzător sketch-ului Arduino folosit.
Dar puteți veni la sediul nostru și vă învățăm noi cat putem … vă ajutăm și la montaj …

schema

Să uploadăm codul (download)

Colectivul magazinului roboromania.ro vă urează succes !  După realizare va rugam sa trimiteți poze și sugestii.

Posted on

Arduino Senzor Puls Heart Tutorial

Arduino Senzor Puls Heart Tutorial

Este un proiect Arduino care necesită cunoştinţe medii în domeniu.
Vom prezenta în continuare paşii de realizare.

Ce vrem să realizăm ?

Vrem să construim un aparat care să ne arate valoarea pulsului uman pe un display LCD 2×16 și să ne arate dacă e ok.

Pe display apare valoarea pulsului iar dacă valoarea e ok apare și cuvântul PULS lângă care va pulsa în acord cu pulsul dvs.

arduino-lcd-i2c-heart

Ce materiale avem nevoie ?

O placă compatibilă Arduino Uno sau Nano sau Mini.

Uno-roboromania

Un LCD i2C sau un LCD 2×16 + Modul i2C

2x16yellow-roboromania

și evident

Un Senzor de puls

Senzor-ritm-cardiac-puls-roboromania

și cabluri Dupont tata-mama pentru legături.

Ce urmează ?

Să le conectam.
E simplu, trebuie doar să fim atenți la conectarea pinilor, corespunzător sketch-ului Arduino folosit.
Dar puteți veni la sediul nostru și vă învățăm noi cat putem … vă ajutăm și la montaj …

arduino-lcd-i2c-heart

Să uploadăm codul (download)

Colectivul magazinului roboromania.ro vă urează succes !  După realizare va rugam sa trimiteți poze și sugestii.

 

Posted on

Robot 2WD Roboromania autonom ocolire obstacole realizat de Ștefan Ziegler din Arad

default_comp26 Robot 2WD Roboromania autonom ocolire obstacole realizat de Ștefan Ziegler din Arad

2

Aveti nevoie de :
o placă de dezvoltare tip Arduino UNO (oricare)
un modul driver motoare L298N
un senzor cu ultrasunete
șasiu cu 2 motoare 2WD
cabluri Dupont

robot-2wd-roboromania

//––––-
// roboromania.ro
// Robot 2WD Roboromania autonom ocolire obstacole – versiunea testata 2018.02.03
// Ștefan Ziegler din Arad stefan@ecomania.ro

#include <NewPing.h>

#define TRIG_PIN 8
#define ECHO_PIN 7
#define MAX_DISTANCE 400
#define COLL_DIST 15 // distanta de coliziune la care robot stop si inapoi este de : 15cm
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

#define SPEED 10

// L298n module
// 1(+)inainte dreapta = DrFr
// 2(+)inapoi dreapta = DrSp
// 3(+)inainte stanga = StFr
// 4(+)inapoi stanga = StSp

int DrFr = 3;
int DrSp = 2;
int StFr = 4;
int StSp = 5;

void setup() {
Serial.begin(9600);
pinMode(DrFr,OUTPUT);
pinMode(StFr,OUTPUT);
pinMode(DrSp,OUTPUT);
pinMode(StSp,OUTPUT);
digitalWrite(DrFr,LOW);
digitalWrite(StFr,LOW);
digitalWrite(DrSp,LOW);
digitalWrite(StSp,LOW);
}

int scan() {
return (sonar.ping() / US_ROUNDTRIP_CM); //masurare distanta in cm
}

void loop() {
int Dist = scan(); // masuram distanta curenta
// Serial.println(Dist);
if ((Dist < COLL_DIST) && (Dist > 0)) { // daca distanta curenta < decit distanta de coliziune
moveStop();
moveBackward();
delay(500);
turnRight();
delay(300);
} else {
moveForward();
}
}

void moveStop() {
digitalWrite(DrFr,LOW);
digitalWrite(StFr,LOW);
digitalWrite(DrSp,LOW);
digitalWrite(StSp,LOW);
}

void moveForward() {
digitalWrite(DrFr,HIGH);
digitalWrite(StFr,HIGH);
digitalWrite(DrSp,LOW);
digitalWrite(StSp,LOW);
}

void moveBackward() {
digitalWrite(DrFr,LOW);
digitalWrite(StFr,LOW);
digitalWrite(DrSp,HIGH);
digitalWrite(StSp,HIGH);
}

void turnRight() {
digitalWrite(DrFr,LOW);
digitalWrite(StFr,HIGH);
digitalWrite(DrSp,HIGH);
digitalWrite(StSp,LOW);
}

void turnLeft() {
digitalWrite(DrFr,HIGH);
digitalWrite(StFr,LOW);
digitalWrite(DrSp,LOW);
digitalWrite(StSp,HIGH);
}

//––––––

Pentru întrebări suplimentare : Ștefan Ziegler din Arad – stefan@ecomania.ro

filmuleț realiyat de Ștefan Ziegler