Posted on

Arduino Rotary Encoder Roboromania Tutorial pentru începători

Arduino Rotary Encoder Roboromania Tutorial pentru începători

default_comp26

O schema simpla :

Afișează pe serial poziția encoderului

rotary-encoder-arduino-tutorial-roboromania-wiring rotary-encoder-arduino-tutorial-roboromania

Și un cod simplu :

// Arduino Rotary Encoder Tutorial
int encoderCLK = 2;
int encoderDT = 4;

volatile int lastEncoded = 0;
volatile long encoderValue = 0;

long lastencoderValue = 0;

int lastMSB = 0;
int lastLSB = 0;

void setup() {
Serial.begin (9600);

pinMode(encoderCLK, INPUT);
pinMode(encoderDT, INPUT);

digitalWrite(encoderCLK, HIGH); //turn pullup resistor on
digitalWrite(encoderDT, HIGH); //turn pullup resistor on

//call updateEncoder() when any high/low changed seen
//on interrupt 0 (pin 2), or interrupt 1 (pin 3)
attachInterrupt(0, updateEncoder, CHANGE);
attachInterrupt(1, updateEncoder, CHANGE);
}

void loop(){
Serial.println(encoderValue);
delay(10);
}

void updateEncoder(){
int MSB = digitalRead(encoderCLK); //MSB = most significant bit
int LSB = digitalRead(encoderDT); //LSB = least significant bit

int encoded = (MSB << 1) |LSB; //converting the 2 pin value to single number
int sum = (lastEncoded << 2) | encoded; //adding it to the previous encoded value

if(sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) encoderValue ++;
if(sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) encoderValue –;

lastEncoded = encoded; //store this value for next time
}

// Arduino Rotary Encoder Tutorial

Pentru butonul SW folosim exemplu clasic de la Arduino :

// Button
// set pin numbers:
const int buttonPin = 5; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin

// variables will change:
int buttonState = 0; // variable for reading the pushbutton status

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
// Button

Succes !

Colectivul Roboromania

Posted on

Proiect Lacăt cu Amprentă digitală cu Arduino si Senzor Fingerprint

Proiect Lacăt cu Amprentă digitală cu Arduino si Senzor Fingerprint

Avem nevoie de :

Placă de dezvoltare UNO R3 (sau oricare)
Uno-roboromania-fata
Senzor Fingerprint (de amprentă - optic)
fingerprint-sensor-pag-roboromania-ffingerprint-reader2
LCD 2×16 caractere LED Display cu interfață i2C
2x16yellow-roboromania
Servo Motor 9G Micro (pin9)
SG90-9G-Micro-Servo-Motor-avr-roboromania-set

Leduri : rosu(pin7) și verde(pin8) și rezistori de 1k în serie pe fiecare
Breadboard mic pentru montaj
fingerprint-sensor-pinout-2-roboromania
sau
modul-recunoastere-amprenta-jm-101b-as608
Cum facem :
După realizarea cablării

Arduino-Fingerprint-servo-LCD-i2C
1 

Upload libraria Fingerprint aici
Pasul 1
ÎNROLAREA AMPRENTELOR
In librărie în exemple găsiți :
"enroll"
5
După upload senzorul clipește și urmați indicațiile din Serial Monitor
Pasul 2
Upload cod "Lacăt cu Amprentă digitală" aici
Pe LCD apare în setup 2 secunde "Roboromania"
Apoi "Scanare amprenta"
2
Dacă amprenta e corectă atunci se aprinde verde și servo execută rotirea de 90 grade pentru "deschis" stă 5 secunde și revine pe "închis"
4
Dacă amprenta e incorectă atunci se aprinde rosu 
3


La cerere : ajutor la montaj și upload codul
Colectivul magazinului roboromania.ro vă urează succes !  După realizare va rugam sa trimiteți poze și sugestii.
Creative Commons License
 Proiect Lacăt cu Amprentă digitală de Popescu Viorel licențiat sub Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
Posted on

LED ON/OFF comandat la bătaie din palme „CLAPS” – pentru începători

LED ON/OFF comandat la bătaie din palme „CLAPS”

Puteți să aprindeți/stingeți lumina din camera la o bătaie din palme

Avem nevoie de :

Placă de dezvoltare UNO R3 (sau oricare)
Uno-roboromania-fata

Modulul senzor de detectare a sunetului

Modulul-senzor-detectare-sunet-roboromania
Ca LED îl vom folosi pe cel de la placa de dezvoltare : Led13 (sau oricare LED montat în "pin" cu o rezistentă în serie de 1k))

Codul : CLAPS
//-------------------------------
const int sound_pin = 2;
const int led_pin = 13;
const unsigned long min_time_distance_between_signals = 100UL;
const unsigned long max_time_distance_between_signals = 500UL;

const unsigned long delay_after_triggered = 2000UL;

bool led_state;
unsigned long last_time_since_clap;
unsigned long last_action_time;

void setup ()
{
 Serial.begin(9600); 
 pinMode (sound_pin, INPUT) ; 
 pinMode(led_pin, OUTPUT);
 digitalWrite(led_pin, LOW);

 led_state = false;
 last_action_time = 0;
 last_time_since_clap = 0;
}

void update_state(bool new_state, unsigned long current_time) {
 led_state = new_state;
 last_action_time = current_time;
 digitalWrite(led_pin, led_state ? HIGH : LOW);
 Serial.print("state = ");
 Serial.println(led_state);
}

void loop () {
 int sound_detected_state = digitalRead(sound_pin);

 unsigned long current_time = millis();
 unsigned long delta_time_since_last_action = current_time - last_action_time;

 if ((delta_time_since_last_action > delay_after_triggered) && ( sound_detected_state == HIGH )) {
 if (!led_state) {
 unsigned long current_delta_time_between_signals = current_time - last_time_since_clap;
 if (current_delta_time_between_signals > max_time_distance_between_signals) {
 last_time_since_clap = current_time;
 } else if (current_delta_time_between_signals > min_time_distance_between_signals) {
 update_state(true, current_time);
 }
 } else {
 update_state(false, current_time);
 }
 }
}
//-------------------------------

Succes !

Colectivul Roboromania

Posted on

Radio FM cu RDA5807 și Arduino, cu LCD Nokia

Radio FM cu RDA5807 și Arduino, cu LCD Nokia

Avem nevoie de :

Placă de dezvoltare UNO R3 (sau oricare)
Uno-roboromania-fata

Modul radio FM stereo RRD-102
fm-stereo-radio-rda5807m-module-roboromania-f

Display 48×84 pixels matrix LCD Nokia 3310/5110 la 3,3V
LCD-Nokia-3310-roboromaniaLCD-Nokia-5110-roboromania-fata

Schema de legături :

rddio-fm-lcd-roboromania

sau

rddio-fm-lcd2-roboromania
Atenție la pini.
Codul Arduino : (https://github.com/tehniq3/RDA5807)

sau alte sfaturi
Posted on

Robot 2WD Roboromania comandat Bluetooth și autonom ocolire obstacole

Robot 2WD Roboromania comandat Bluetooth și autonom ocolire obstacole

robot

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

robot-2wd-bluetooth-roboromania

Cel mai simplu cod : (atenție când copiați codul ar putea sa apară unele erori de la fonturi)

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

// Robot 2WD Roboromania comandat Bluetooth și autonom ocolire obstacole
// roboromania.ro

#include <NewPing.h>            // se instaleaza
#include <SoftwareSerial.h>  // nativa ID Arduino

//L298n Motor Driver pins.

#define in1 2
#define in2 3
#define in3 4
#define in4 5

#define SPEED 255 // 160 – 255

SoftwareSerial sonar_serial(6, 7); // RX, TX

#define TRIGGER_PIN 9
#define ECHO_PIN 10
#define MAX_DISTANCE 200 // Maximum distanță măsurată.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
sonar_serial.begin(9600);
}

void loop() {
unsigned int uS = sonar.ping();
int val = uS / US_ROUNDTRIP_CM; // Convertor distanță în cm.
if ((val > 1) && (val < 20)) {
delay(100);
recover();
} else {
int command = sonar_serial.read();
if(command != -1) {
switch (command) {
case ‘F’: forward(); break;
case ‘B’: back(); break;
case ‘L’: left(); break;
case ‘R’: right(); break;
case ‘K’: stop(); break;
}
delay(10);
}
}
}

void recover() {
back();
delay(800);
left();
delay(500);
forward();
}

void forward() {
stop();
analogWrite(in1, SPEED);
analogWrite(in3, SPEED);
}

void back() {
stop();
analogWrite(in2, SPEED);
analogWrite(in4, SPEED);
}

void left() {
stop();
analogWrite(in3, SPEED);
analogWrite(in2, SPEED);
}

void right() {
stop();
analogWrite(in4, SPEED);
analogWrite(in1, SPEED);
}

void stop() {
analogWrite(in1, 0);
analogWrite(in2, 0);
analogWrite(in3, 0);
analogWrite(in4, 0);
}

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

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

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

Creative Commons License
„Robot 2WD Roboromania comandat Bluetooth și autonom ocolire obstacole” de Popescu Viorel licențiat sub Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Posted on

Robot 2WD Roboromania autonom ocolire obstacole

Robot 2WD Roboromania autonom ocolire obstacole

robot

Unul dintre cele mai simple coduri pentru Robot 2WD autonom cu 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
cabluri Dupont

robot-2wd-roboromania

Cel mai simplu cod :

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

// Robot 2WD Roboromania autonom ocolire obstacole
// roboromania.ro     pentru ID Arduino.1.6.8 atentie sa aveti „libraries” – > „NewPing”

// ––––––––––––––-

// Robot 2WD Roboromania autonom ocolire obstacole – versiunea corectata (si testata) 2018.02.03
// roboromania.ro

#include <NewPing.h>

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

// 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 > 0 ) || ( Dist < COLL_DIST )) { // 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);
}

 

//––––––––––-

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

car-2wd-2019

Succes !

Creative Commons License
„Robot 2WD Roboromania autonom ocolire obstacole” de Popescu Viorel licențiat sub Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Posted on

How to Flash the ESP8266 ….

How to Flash the ESP8266 ….

ATENŢIE : Dacă distrugeţi modulul este pe propria dumneavoastră răspundere. Mai bine îl aduceţi la sediu şi îl schimbăm noi.

Conexiuni cu fire Dupont :

poza-pini-esp8266

Puteți să montați 2 întrerupătoare pe firul portocaliu (Flash) și pe firul rosu – CH_PD (Reset).

Se deschide ESP 8266 Flasher (esp8266_flasher.exe) şi Arduino 1.6.4 sau oricare

1

2

Tools –>Port : COMxx (Exemlpu : COM18)       După aflarea COM-ului se scrie în “esp8266_flasher.exe”

3

închidem Arduino 1.6.4

Se selectează “Bin”

“ESP_8266_v0.9.5.2 AT Firmware.bin” sau “ESP_8266_BIN0.92.bin”

5

–> Download (trebuie închis Arduino 1.6.4)

7

8

Până când va scrie: “Leaving… Failed to leave Flash mode”

E gata.

Închidem  “ESP 8266 Flasher” si verificăm ce am făcut !

Scoatem firul portocaliu de la GND

Reset ESP8266 (Scoatem şi băgăm firul roşu la pin CH_PD)

Deschidem “Arduino 1.6.4” sau oricare.

–> Tool –> Port : COM18

–> File: –> Preference:

10

URLs: “http://arduino.esp8266.com/stable/package_esp8266com_index.json“  –> OK

Board: –> Boards Manager –> Type: –> Contributed –> esp8266 by ESP8266 Community

INSTALL –> Close

lib2

Sketch –> Include Library –> Manage Libraries

Library Manager : căutare:  ESP8266

lib1

Alege : ESP8266 Built-In By Simon Peter,Markus…

INSTALL –> Close

Deschidem : Arduino

ino

CODE :

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

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

IPAddress ip(192,168,1,100); // choose IP address
IPAddress subnet(255,255,255,0);

ESP8266WebServer server(80);

void handleRoot() {
String page = „<!DOCTYPE html>\n”;

page += „<html>\n<body>\n<h1>Multumim pentru Achizitie</h1><br>http://RoboRomania.ro\n</body></html>”;
server.send(200, „text/html”, page);
}

// what to do when accessed through http://ip_address/something_undefined
void handleNotFound(){
String message = „File not found\n\n”;
message += „URI: „;
message += server.uri();
message += „\nMethod: „;
message += (server.method() == HTTP_GET)?”GET”:”POST”;
message += „\nArguments: „;
message += server.args();
message += „\n”;
for (uint8_t i=0; i<server.args(); i++){
message += ” ” + server.argName(i) + „: ” + server.arg(i) + „\n”;
}
server.send(404, „text/plain”, message);
}

void setup(void){
Serial.begin(74880); // so you can see debug messages automatically sent by ESP8266
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(ip, ip, subnet); // declared as: bool softAPConfig (IPAddress local_ip, IPAddress gateway, IPAddress subnet)
WiFi.softAP(„RoboRomania-8266”, „roborobo”, 7); // network name, network password, wifi channel

IPAddress myIP = WiFi.softAPIP();
Serial.println();
Serial.print(„AP IP address: „);
Serial.println(myIP);

server.on(„/”, handleRoot); // what to do when accessed through browser using http://IP_address

// what to do when accessed through http://ip_address/test
server.on(„/test”, [](){
server.send(200, „text/plain”, „This is another page”);
});

server.onNotFound(handleNotFound);

server.begin();
Serial.println(„HTTP server started…”);
}

void loop(void){
server.handleClient();
}

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

–> Upload

Gata.  Verificăm dacă merge.

Reset ESP8266 (Scoatem şi băgăm firul roşu la pin CH_PD)

Căutăm rețea ….

12

Poţi să te conectezi.\

ATENŢIE : Dacă distrugeţi modulul este pe propria dumneavoastră răspundere. Mai bine îl aduceţi la sediu şi îl schimbăm noi.

Creative Commons License
„How to Flash the ESP8266” de Popescu Viorel licențiat sub Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Posted on

How to Flash the SIM900A Module -> Europa

How to Flash the SIM900A Module

SIMCOMs SIM 900A in Europe?

ATENŢIE : Dacă distrugeţi modulul este pe propria dumneavoastră răspundere. Mai bine îl aduceţi la sediu şi îl schimbăm noi.

Autorul acestui articol nu răspunde în nici un fel de distrugerile cauzate.

Mai întâi conectaţi modulul la FTDI232

conec

Firmware : 1137B03SIM90064_ST_ENHANCE.cla

Pentru upgrade-ul real, aveţi nevoie de un program numit „Simcom – sim900 Customer flash loader”.

Versiunea 1.01.             Instalam.

Acest program transferă firmware-ul de la computer la modulul SIMCOM.

Setari :

 simcom2

ATENŢIE : Dacă distrugeţi modulul este pe propria dumneavoastră răspundere. Mai bine îl aduceţi la sediu şi îl schimbăm noi.

Pasul 1. Reset – start

simcom1

Pasul 2.

simcom3

Pasul 3. Erasing

simcom4

Pasul 4. Download

simcom5

Gata.

Control :

Folosim “Tera Term”

SETING:

teraterm1

teraterm2

COMENZI VERIFICARE:

teraterm4

Au apărut reţelele pe care le vede.

Ok.

Creative Commons License
How to Flash the SIM900A Module” de Popescu Viorel licențiat sub Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Posted on

UNO LED Blink – pentru începători

UNO LED Blink – pentru începători

Cel mai simplu program pentru Arduino.

Voi folosi un LED de 3v pe care îl leg la pinul 10 cu un rezistor de 1kΩ.

Blink

Acest led se aprinde atunci când pinul 13 digital este pus in HIGH şi se stinge atunci când pinul 13 este pus în LOW.

Voi scrie un cod :

void setup() {

pinMode(13, OUTPUT);

}

void loop() {

digitalWrite(13, HIGH);   // led aprins

delay(1000);

digitalWrite(13, LOW);    // led stins

delay(1000);

}

Acum voi face upload la program pe placa UNO prin USB.

Dacă mă uit la led-ul conectat la pinul 13 voi vedea că el clipeşte o dată pe secundă.

 

Să analizăm codul de mai sus.

 

La ” void setup”.

Avem o singură instrucţiune, care declară că pinul 13 digital va fi folosit ca ieşire (OUTPUT).

 

La ” void loop”.

Avem o serie de instrucţiuni :

Prima care aprinde led-ul conectat la pinul 13 adică „digitalWrite(13, HIGH)”

A doua care “aşteaptă o secundă” adică “delay(1000)” înseamnă 1000 ms.

A treia îl stinge adică „digitalWrite(13, LOW)”

Şi a patra iaraşi “aşteaptă o secundă”.

Instrucţiunile din „loop” se execută ciclic.

Exemplul următor este extrem de similar cu acesta, doar că în locul led-ului montat din fabrică voi folosi un led exterior plăcii.

Voi folosi un LED de 3v pe care îl leg la pinul 10 cu un rezistor de 1kΩ (foarte important limitează curentul prin LED).

Voi scrie un cod :

void setup() {

pinMode(10, OUTPUT);

}

void loop() {

digitalWrite(10, HIGH);   // led aprins

delay(1000);

digitalWrite(10, LOW);    // led stins

delay(1000);

}

Acum voi face upload la program pe placa UNO prin USB.

Dacă mă uit la led-ul conectat la pinul 10 voi vedea că el clipeşte o dată pe secundă.

Succes !

Colectivul Roboromania

 

Posted on

UNO Semafor cu trei Led-uri verde-galben-rosu – pentru începători

UNO Semafor cu trei Led-uri verde-galben-rosu

Un program simplu pentru Arduino.

Înainte ar fi bine sa citeşti tutorialul “Descrierea pinilor UNO R3

si tutorialul ”Arduino LED Blink”

Voi folosi trei LED-uri de 3v pe care le leg la pinii 8, 9, 10 cu rezistoare de 1kΩ.

UNO-semafor

Voi scrie un cod :

void setup() {

pinMode(8, OUTPUT);

pinMode(9, OUTPUT);

pinMode(10, OUTPUT);

}

void loop() {

digitalWrite(10, HIGH);

delay(2000);

digitalWrite(9, HIGH);

delay(200);

digitalWrite(10, LOW);

delay(1000);

digitalWrite(9, LOW);

delay(100);

digitalWrite(8, HIGH);

delay(2000);

}

Acum voi face upload la program pe placa UNO prin USB.

Succes !

Colectivul Roboromania