Archive for the ‘ProjektX’ Category

ProjektX: Arduino kot alarmna naprava

Ime projekta Arduino kot alarmna naprava
Ideja ali problem Naredimo si alarmno napravo za svoj dom
Rešitev skupna uporaba Arduina in PIR senzorjev – Passive Infrared Motion Sensors
potrebščin (BOM – Bill of Material) Za izvedbo potrebujemo:

POZOR: Napajanje PIR senzorja mora biti 12V sicer ne dela pravilno

Izvedba Sestavite po spodnjem načrtuPIR alarmna naprava

 

 

Primer programa za testiranje:

#define PIRpin 0
#define LEDpin 3

void LEDblink() {
for(int i=0; i<3; i++) {
digitalWrite(LEDpin ,HIGH);
delay(100);
digitalWrite(LEDpin ,LOW);
delay(100);
}
}

void setup(){
Serial.begin (9600);
pinMode(LEDpin, OUTPUT);
delay (2000);
}

void loop(){
int PIRvalue = analogRead(PIRpin);
Serial.println (PIRvalue);
if (PIRvalue < 100){
LEDblink();
delay(2000);
}
}

Predlogi za izboljšave predlog izboljšav:vhodi del:

  • mikrotipa- za vrata, okna
  • dodati vlagomer,
  • termometer,
  • CO senzor – proti požarno,

izhodi del:

  • Piezo Buzzer
  • dodati preko releja – izklopi naprav, zunanja signalna lučka
  • ethernet shield in pošiljanje na lastno spletno stran ali na SMS ali twitter

kontrolni del:

  • LCD prikazovalnik – pregled stanja
  • tipkovnica – vnos zaščitne kode
  • daljinski izklop

 

ProjektX: Robot pajek z Arduinom in MakerBeam

Ime projekta Robot pajek – Arduino, MakerBeam
Ideja ali problem Najenostavnejše narediti robota pajka z vsestranskim uporabnimi konstruktorjem
Rešitev Uporaba konstrukcijske rešitve MakerBeam, arduina in 8 servomotorjev
potrebščin (BOM – Bill of Material) Za izvedbo potrebujemo:

Izvedba Sestavite Arduino Mega Proto Kit in spojite proto/testno ploščico na Arduino Mega Proto Kit. Povežite Arduino Mega s Arduino Mega Proto.Sestavite MakerBeam konstrukcijo:

  • na glavni nosilec 1 * beam 150mm dodajte nosilec 90st kotnik in nanj še PVC nosilev za Arduino Mega
  • stavite posamezne noge za pajka (4 kom.)
    • končne noge so sestavljene iz 1* beam 100mm in 1* beam 60mm ter spojene preko 90st kotnika.
    • Povežite končno nogo s koleščkom za servomotor
    • Servomotor povežite z drugim servomotorjem preko 1* beam 60mm
    • drugi servomotor spojite preko koleščka in beama 40mm in preko kotnika 90st na glavni nosilec
  • povežite servomotorje na Arduino Mega (

robot pajek 1/3

robot pajek 2/3

robot pajek 3/3

Primer programa za testiranje:

#include <Servo.h>

#define FrontLeftArmFORWARD 125 //front
#define FrontLeftArmNEUTRAL 100
#define FrontLeftArmBACKWARD 75

#define FrontLeftLegUP 70 //up
#define FrontLeftLegNEUTRAL 90
#define FrontLeftLegDOWN 100

#define RearLeftArmFORWARD 125 //front
#define RearLeftArmNEUTRAL 100
#define RearLeftArmBACKWARD 75

#define RearLeftLegUP 70 //up
#define RearLeftLegNEUTRAL 90
#define RearLeftLegDOWN 100

#define FrontRightArmFORWARD 55 //front
#define FrontRightArmNEUTRAL 80
#define FrontRightArmBACKWARD 105

#define FrontRightLegUP 110 //up
#define FrontRightLegNEUTRAL 90
#define FrontRightLegDOWN 80

#define RearRightArmFORWARD 55 //front
#define RearRightArmNEUTRAL 80
#define RearRightArmBACKWARD 105

#define RearRightLegUP 110 //up
#define RearRightLegNEUTRAL 90
#define RearRightLegDOWN 80

#define MyDELAY 500

Servo FrontLeftArm, FrontLeftLeg, RearLeftArm, RearLeftLeg;
Servo FrontRightArm, RearRightArm, FrontRightLeg, RearRightLeg;

void initSpider()
{
FrontRightArm.write(FrontRightArmNEUTRAL);
FrontLeftArm.write(FrontLeftArmNEUTRAL);
RearRightArm.write(RearRightArmNEUTRAL);
RearLeftArm.write(RearLeftLegNEUTRAL);

FrontRightLeg.write(FrontRightLegNEUTRAL);
FrontLeftLeg.write(FrontLeftLegNEUTRAL);
RearRightLeg.write(RearRightLegNEUTRAL);
RearLeftLeg.write(RearLeftLegNEUTRAL);
}

void setup()
{
FrontLeftArm.attach(2);  // attaches the servo on pin 5 to the servo object
FrontLeftLeg.attach(3);  // attaches the servo on pin 6 to the servo object
RearLeftArm.attach(4);  // attaches the servo on pin 9 to the servo object
RearLeftLeg.attach(5);  // attaches the servo on pin 10 to the servo object

FrontRightArm.attach(6);  // attaches the servo on pin 3 to the servo object
FrontRightLeg.attach(7);  // attaches the servo on pin 4 to the servo object
RearRightArm.attach(8);  // attaches the servo on pin 8 to the servo object
RearRightLeg.attach(9);  // attaches the servo on pin 7 to the servo object

initSpider();
Serial.begin(9600);
Serial.println(“ArduSpider 1.08″);
}

void DDnoge (int visina)
{
//      FrontRightLeg.write(90+visina);
//      RearLeftLeg.write(90-visina);
}

void DDrame (int naprej)
{
//    FrontRightArm.write(90+naprej);
//    RearLeftArm.write(90-naprej);
}

void LDnoge (int visina)
{
//      FrontLeftLeg.write(90+visina);
//      RearRightLeg.write(90-visina);
}

void LDrame (int naprej)
{
//    FrontLeftArm.write(90+naprej);
//    RearRightArm.write(90-naprej);
}

void tmploop()
{
LDnoge(45);
delay(250);
LDrame(25);
delay(100);
LDnoge(0);
delay(250);
DDnoge(10);
LDrame(-25);
delay(100);
DDnoge(45);
delay(250);
DDrame(25);
delay(100);
DDnoge(0);
delay(250);
LDnoge(10);
DDrame(-25);
delay(100);
}

void loop()
{
Serial.println(“arm f”);
FrontLeftArm.write(FrontLeftArmFORWARD);
RearLeftArm.write(RearLeftArmFORWARD);
FrontRightArm.write(FrontRightArmFORWARD);
RearRightArm.write(RearRightArmFORWARD);
delay(MyDELAY);

Serial.println(“leg d”);
FrontLeftLeg.write(FrontLeftLegDOWN);
RearLeftLeg.write(RearLeftLegDOWN);
FrontRightLeg.write(FrontRightLegDOWN);
RearRightLeg.write(RearRightLegDOWN);
delay(MyDELAY);

Serial.println(“arm b”);
FrontLeftArm.write(FrontLeftArmBACKWARD);
RearLeftArm.write(RearLeftArmBACKWARD);
FrontRightArm.write(FrontRightArmBACKWARD);
RearRightArm.write(RearRightArmBACKWARD);
delay(MyDELAY);

Serial.println(“leg u”);
FrontLeftLeg.write(FrontLeftLegUP);
RearLeftLeg.write(RearLeftLegUP);
FrontRightLeg.write(FrontRightLegUP);
RearRightLeg.write(RearRightLegUP);
delay(MyDELAY);
}

ProjektX: Arduino in tipka/stikalo

Ime projekta Arduino in tipka
Ideja ali problem

 

Različni načini uporabe Arduina za branje stanje tipke
Rešitev priključitev tipke preko pullup ali pulldown upora
potrebščin (BOM – Bill of Material) Za izvedbo potrebujemo:

  • Arduino,
  • tipko
  • upor : 10k Ohmov
  • ostalo : povezovalne žičke, protoboard oz testna ploščica, napajanje

in primerna orodja: izvijači, pinceto

Izvedba Priključite tipko in upor zaporedno

 

pullup in pulldown

PullUp način : Ta opcija bo na GPIO stalno dajala napetost Vcc in ob pritisku tipke bo dala stanje na GPIO napetost GND

PullDown način : Ta opcija bo na GPIO stalno dajala napetost GND in ob pritisku tipke bo dala stanje na GPIO napetost Vcc

Torej lahko rečemo, da je pullup način inverzni način, medtem ko pull down pozitvni način

Arduino in tipka z LED

// ProjektX – Arduino in tipka
int ledPin = 5; // pin za LED
int inPin = 3;   // pin za tipko
int val = 0;     // spremenljivkaza stanje tipke
void setup() {
pinMode(ledPin, OUTPUT);  // LED pin kot izhod
pinMode(inPin, INPUT);    // Tipkin pin kot vhod

void loop(){
val = digitalRead(inPin);  // beri stanje pina za tipko
if (val == HIGH) {         // Ali je Vcc ali GND
digitalWrite(ledPin, LOW);  // izklopi LED
} else {
digitalWrite(ledPin, HIGH);  // vklopi LED
}
}

ProjektX : Ultrazvočni merilec razdalje z LCD prikazovalnikom

Ime projekta Ultrazvočni merilec razdalje z LCD prikazovalnikom
Ideja ali problem senzor Merilec razdalje.
Rešitev Preko LCD prikaži razdaljo do ovire (stena, objekt, ipd. )

arduino srf04 lcd

Spisek potrebščin (BOM – Bill of Material) Za izvedbo potrebujemo:

  • Arduino,
  • Uv senzor – SRF04
  • LCD prikazovalnik
  • ostalo povezovalne žičke za UV senzor, protoboard oz testna ploščica, povezovalne žičke za protoboard oz. testno ploščico, napajanje

in primerna orodja: izvijači, pinceto

Izvedba Priključite sledeče pine LCD prikazovalnika 16×2 (ali drugega z Hitachi HD44780 procesorjem):

LCD pini Arduino pini
11 (D4) 05
10 (D3) 04
09 (D2) 03
08 (D1) 02
06 (Enable) 11
05 (R/W) Gnd
04 (Rs) 12
03 (V0) GND
02 (Vcc) +5V
01 (GND) GND

kar ustreza definiciji v Arduino kodi :
#include LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

 

in lahko uporabljate vse ukaze knjižnice LiquidCrystal.h več o ukazih na tej strani.

Priključite ultrazvočni senzor SRF04:

SRF04 pini Arduino pini
1 (GND) GND
3 (trigger) 7
4 (Echo) 6
5 (5v Suppy) +5v

srf

 

in še skupna koda za merjenje razdalje in prikazovanje na LCD prikazovalniku:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define echoPin 6 // Pin za sprejem echo impulza
#define trigPin 7 // Pin za oddajo trigger impulza

void setup() {

lcd.begin(16, 2); // Pozicija (kolumna in vrstica) prikazovanja naslednjega teksta.
lcd.print(“Razdalja je:”); // izpis teksta
Serial.begin(9600); // nastavitev komunikacije s SRF04
pinMode(echoPin, INPUT); // določitev pina za odčitek SRF04
pinMode(trigPin, OUTPUT); // določitev pina za proženje SRF04
}

void loop() {

digitalWrite(trigPin, LOW); // postavi Trigger pin na Low za 2 mikrosekundi
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // postavi Trigger pin na HIGH za 10 mikrosekundi delayMicroseconds(10);
digitalWrite(trigPin, LOW); // postavi Trigger pin na LOW za začetek merjenja
int distance = pulseIn(echoPin, HIGH); // odčitaj
distance= distance/58; // Izračunaj odčitek v cm

lcd.setCursor(0, 1); // pozicioniraj naslednji izpis
lcd.print(distance); // izpiši razdaljo
lcd.print(” cm “); // dodaj še napis cm

delay(50); // zakasnitev do naslednjega merjenja
}

 

ProjektX : Enostaven radar za robota

Ime projekta Enostaven radar za robota
Ideja ali problem senzor Vodenje robota po prostoru potrebujemo ‘radar’. Ali kako upravljati UV senzor na robotu in meriti razdaljo na večih straneh?
Rešitev Na servo motor postavimo UV senzor. Pri vsakem željenem kotu izmerimo razdalj.
UV senzor na servomotorju
Spisek potrebščin (BOM – Bill of Material) Za izvedbo potrebujemo:

  • Arduino,
  • Uv senzor – SRF04
  • nosilec za UV senzor, vijaki
  • končni analogni servomotor
  • LCD prikazovalnik
  • ostalo povezovalne žičke za UV senzor, vijake za namestitev UV senzorja na nosilec, vijake za namestitev nosilca na servomotor, protoboard oz testna ploščica, povezovalne žičke za protoboard oz. testno ploščico, napajanje

in primerna orodja: spajkalo, izvijači, pinceto

Izvedba Priključite servomotor:

  • črna/rjava žička na servomotorju se priključi na maso (GND) na Arduinu
  • rdeča žička na servomotorju se priključi na 5V na Arduinu
  • oranžna žička na servomotorju se priključi na pin 6 na Arduinu

 

Priključite sledeče pine LCD prikazovalnika 16×2 (ali drugega z Hitachi HD44780 procesorjem):

LCD pini Arduino pini
11 (D4) 05
10 (D3) 04
09 (D2) 03
08 (D1) 02
06 (Enable) 11
05 (R/W) Gnd
04 (Rs) 12
03 (V0) GND
02 (Vcc) +5V
01 (GND) GND

 

Priključite ultrazvočni senzor SRF04:

SRF04 pini Arduino pini
1 (GND) GND
3 (trigger) 8
4 (Echo) 7
5 (5v Suppy) +5v

in uporabite izdelano knjižnico ukazov http://www.arduino.cc/en/Reference/Servo

Primer kode:

#include <Servo.h>
#include <LiquidCrystal.h>
#define echoPin 7 // Pin za sprejem echo impulza
#define trigPin 8 // Pin za oddajo trigger impulza

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Servo MojServo;

void setup()
{
lcd.begin(16, 2); // Pozicija (kolumna in vrstica) prikazovanja naslednjega teksta.
lcd.print(“Razdalja je:”); // izpis teksta
Serial.begin(9600); // nastavitev komunikacije s SRF04
pinMode(echoPin, INPUT); // določitev pina za odčitek SRF04
pinMode(trigPin, OUTPUT); // določitev pina za proženje SRF04
MojServo.attach(6); //analog pin
}

void loop()
{
// obrni na desno
val = 1000;
val1 = map(val, 0, 1000, 179, 0); //pretvori v servo korak
MojServo.write(val1); // ukaz za servo
delay(150); // zakasnitev za premik servomotorja
digitalWrite(trigPin, LOW); // postavi Trigger pin na Low za 2 mikrosekundi
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // postavi Trigger pin na HIGH za 10 mikrosekundi delayMicroseconds(10);
digitalWrite(trigPin, LOW); // postavi Trigger pin na LOW za začetek merjenja
int distance = pulseIn(echoPin, HIGH); // odčitaj
distance= distance/58; // Izračunaj odčitek v cm
lcd.setCursor(0, 1); // pozicioniraj naslednji izpis
lcd.print(”Desno :“); // dodaj še napis cm
lcd.print(distance); // izpiši razdaljo
lcd.print(” cm “); // dodaj še napis cm
delay(50); // zakasnitev do naslednjega merjenja

// obrni do sredino
val = 500;
val1 = map(val, 0, 1000, 179, 0); //pretvori v servo korak
MojServo.write(val1); // ukaz za servo
delay(150); // zakasnitev za premik servomotorja
digitalWrite(trigPin, LOW); // postavi Trigger pin na Low za 2 mikrosekundi
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // postavi Trigger pin na HIGH za 10 mikrosekundi delayMicroseconds(10);
digitalWrite(trigPin, LOW); // postavi Trigger pin na LOW za začetek merjenja
int distance = pulseIn(echoPin, HIGH); // odčitaj
distance= distance/58; // Izračunaj odčitek v cm
lcd.setCursor(0, 1); // pozicioniraj naslednji izpis
lcd.print(”sredina :“); // dodaj še napis cm
lcd.print(distance); // izpiši razdaljo
lcd.print(” cm “); // dodaj še napis cm
delay(50); // zakasnitev do naslednjega merjenja

// obrni na levo
val = 0;
val1 = map(val, 0, 1000, 179, 0); //pretvori v servo korak
MojServo.write(val1); // ukaz za servo
delay(150); // zakasnitev za premik servomotorja
digitalWrite(trigPin, LOW); // postavi Trigger pin na Low za 2 mikrosekundi
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // postavi Trigger pin na HIGH za 10 mikrosekundi delayMicroseconds(10);
digitalWrite(trigPin, LOW); // postavi Trigger pin na LOW za začetek merjenja
int distance = pulseIn(echoPin, HIGH); // odčitaj
distance= distance/58; // Izračunaj odčitek v cm
lcd.setCursor(0, 1); // pozicioniraj naslednji izpis
lcd.print(”Levo :“); // dodaj še napis cm
lcd.print(distance); // izpiši razdaljo
lcd.print(” cm “); // dodaj še napis cm
delay(50); // zakasnitev do naslednjega merjenja

//nazaj
val = 500; // obrni nazaj do sredine
val1 = map(val, 0, 1000, 179, 0); //pretvori v servo korak
MojServo.write(val1); // ukaz za servo
delay(150); /malo zakasnitve, da lahko zaključi ukaz
}

ProjektX : Arduino vrti končni servomotor

Ime projekta Arduino vrti končni servomotor
Ideja ali problem senzor Vodenje servomotorja ?
Rešitev Servo motor se priključi direktno na Arduino na PWM izhod (Arduino Uno d3, d5, d6, d9, d10, d11) . PWM pomeni Pulse Width Modulation ali v slovenščini Pulzno širinska modulacija. To pomeni, da je frekvenca konstantna, spreminja se samo širina pulza.
Spisek potrebščin (BOM – Bill of Material) Za izvedbo potrebujemo:

  • Arduino,
  • končni analogni servomotor
  • ostalo – protoboard oz testna ploščica, povezovalne žičke za protoboard oz. testno ploščico, napajanje

in primerna orodja: pinceto

Izvedba Priključite servomotor:

  • črna/rjava žička na servomotorju se priključi na maso (GND) na Arduinu
  • rdeča žička na servomotorju se priključi na 5V na Arduinu
  • oranžna žička na servomotorju se priključi na pin 9 na Arduinu

 

in uporabite izdelano knjižnico ukazov http://www.arduino.cc/en/Reference/Servo

Primer kode:

#include <Servo.h>

Servo MojServo;

void setup()
{
MojServo.attach(9); //analog pin
}

void loop()
{
val = 1000; // obrni na desno
val1 = map(val, 0, 1000, 179, 0); //pretvori v servo korak
MojServo.write(val1); // ukaz za servo
delay(150); /malo zakasnitve, da lahko zaključi ukaz
val = 500; // obrni do sredine
val1 = map(val, 0, 1000, 179, 0); //pretvori v servo korak
MojServo.write(val1); // ukaz za servo
delay(150); /malo zakasnitve, da lahko zaključi ukaz
val = 0; // obrni na levo
val1 = map(val, 0, 1000, 179, 0); //pretvori v servo korak
MojServo.write(val1); // ukaz za servo
delay(150); /malo zakasnitve, da lahko zaključi ukaz
val = 500; // obrni nazaj do sredine
val1 = map(val, 0, 1000, 179, 0); //pretvori v servo korak
MojServo.write(val1); // ukaz za servo
delay(150); /malo zakasnitve, da lahko zaključi ukaz
}

Spletna trgovina
Na voljo vam je spletna trgovina SMAKshop

SMAKshop

Oglas
Oglas
Oglas
Oglas