Ardumotive Arduino Greek Playground
  • Home
    • About us
    • Contact
    • License
  • Arduino
    • Tutorials
    • Workshop
  • Raspberry Pi
  • DIY 3D Printer
  • News
    • Events >
      • Unboxing & Review
    • Blog
The 1st Arduino Playground in Greece - Open Source Hardware

Έλεγχος θερμοκρασίας με το Arduino. Πολύ ζέστη ή πολύ κρύο;

30/1/2015

Comments

 
Picture
Σε διάφορες εφαρμογές θέλουμε να ξέρουμε αν η θερμοκρασία του χώρου στον οποίο βρισκόμαστε είναι μέσα στα πλαίσια ζεστού ή κρύου. Το πόσο ζεστό ή κρύο θέλουμε ένα χώρο ή ένα δωμάτιο διαφέρει από εφαρμογή σε εφαρμογή. Μέσα σε ένα ψυγείο για παράδειγμα το όριο του πολύ κρύου ίσως να ήταν -10°C και το όριο του πολύ ζεστού 2°C. Κάπως έτσι θέλουμε να ξέρουμε αν η θερμοκρασία είναι μέσα στα επιθυμητά όρια.

Στην σημερινή κατασκευή θα διαβάσουμε την θερμοκρασία νερού με σκοπό να ελέγξουμε αν βρίσκεται μέσα στα όρια που θέλουμε. Τυχαία θα πούμε πως το νερό είναι πολύ κρύο όταν η θερμοκρασία είναι στους 20°C και πολύ ζεστό όταν η θερμοκρασία είναι στους 50°C. Αν η θερμοκρασία πέσει κάτω απ' τους 20°C τότε θα ανάψει ένα μπλε λαμπάκι δείχνοντας μας ότι "πάγωσε" ενώ αν ξεπεράσει τους 50°C τότε θα ανάψει ένα κόκκινο λαμπάκι δείχνοντας μας αντίστοιχα ότι "ζεστάθηκε"! Σε αντίθετη περίπτωση, δηλαδή μέσα στα όρια, και τα δύο led θα είναι σβηστά.


Τα υλικά που θα χρειαστούμε:
  • Arduino uno
  • 1 led κόκκινο και 1 μπλε
  • DS18B20 temp sensor
  • 2x 220 Ohm, 1x 4.7K

Το κύκλωμα σε breadboard:
Picture
Απαραίτητη προϋπόθεση για να λειτουργήσει ο κώδικας είναι να έχετε εγκαταστήσει τις αντίστοιχες βιβλιοθήκες για το DS18B20 στο Arduino ide.
Κώδικας: download

Comments

Ο αισθητήρας υπερήχων και το Arduino UNO

17/1/2015

Comments

 
Picture
Σήμερα θα μάθουμε να χρησιμοποιούμε τον αισθητήρα υπερήχων HC-SR04 με το Arduino uno. Πριν απ' αυτό όμως θα πρέπει να δούμε τι είναι ο υπέρηχος και πως η χρήση του μπορεί να μας δώσει την απόσταση από κάποιο αντικείμενο.
Picture
Όπως φαίνεται και στην παραπάνω εικόνα, οι υπέρηχοι βρίσκονται πάνω απ' τις ακουστικές συχνότητες, έτσι δεν μπορεί να τους ακούσει το ανθρώπινο αυτί. Παρόλο πάντως που εμείς δεν τους ακούμε κάποια ζώα μπορούν και να τους ακούν αλλά και να τους χρησιμοποιούν. Χαρακτηριστικά παραδείγματα που μας το δείχνουν αυτό είναι η κίνηση των νυχτερίδων και η σφυρίχτρα που χρησιμοποιείται για τους σκύλους. Αισθητήρες υπερήχων συναντάμε σε πολλές εφαρμογές στην ιατρική, στην πλοήγηση σκαφών/πλοίων ακόμα και στα αυτοκίνητα μας στα γνωστά park sensors.

Οι αισθητήρες υπερήχων λειτουργούν με την ίδια αρχή που λειτουργούν τα ραντάρ και τα σόναρ. Εκτιμούν την απόσταση ενός στόχου λαμβάνοντας υπόψη τους την αντανάκλαση ενός ραδιοκύματος ή ενός ηχητικού σήματος πάνω στο στόχο.

Picture
Δημιουργούν υψηλής συχνότητας κύματα και χρησιμοποιώντας το επιστρεφόμενο σήμα καθορίζουν την απόσταση ή ακόμα και την ταχύτητα του στόχου. Για να το επιτύχουν αυτό χρησιμοποιούν τον χρόνο που έκανε το σήμα για να καλύψει την απόσταση από τον αισθητήρα στο αντικείμενο και πίσω.

Στο Arduino η διαδικασία αυτή (αντιστοίχηση χρόνου σε απόσταση) είναι αρκετά απλή διότι υπάρχει συγκεκριμένη βιβλιοθήκη για τον αισθητήρα HC-SR04 που κάνει την "δύσκολη" δουλεία. Εμείς στον κώδικα μας αρκεί να κάνουμε χρήση μόνο μιας εντολής! Η εντολή αυτή θα μας επιστρέψει την απόσταση σε εκατοστά (cm).

Download HC-SR04 Library

Κάντε unzip το αρχείο στον φάκελο Libraries του Arduino IDE.
c\Αρχεία Εφαρμογών\Arduino\libraries
c\Αρχεία Εφαρμογών (x86)\Arduino\libraries


Τα υλικά που θα χρειαστούμε:

  • Arduino uno
  • HC-SR04 Ultrasonic Sensor

Το κύκλωμα μας σε breadboard:
Picture
Κώδικας: Download
Comments

Arduino Libraries - Τι είναι και... που είναι!

16/1/2015

Comments

 
Στα προηγούμενα μαθήματα μας κάναμε χρήση μιας βιβλιοθήκης για την ανάγνωση της θερμοκρασίας μέσω του Arduino.

Κάθε εξάρτημα που συνδέουμε με το Arduino χρειάζεται αρκετές γραμμές κώδικα μέχρι να λειτουργήσει σωστά και να μας δώσει τα επιθυμητά αποτελέσματα. Μην ξεχνάτε πως στην τελική πρόκειται για αναλογικές τιμές, δηλαδή απλά νούμερα! Πως όμως τα 'απλά' νούμερα γίνονται θερμοκρασία, απόσταση, τιμές πάνω σε μια lcd οθόνη;

H απάντηση είναι απλή, κάνοντας χρήση της αντίστοιχης βιβλιοθήκης ανάλογα με το εξάρτημα που έχουμε! Η βιβλιοθήκη είναι ένας φάκελος ο οποίος περιέχει όλον τον κώδικα που απαιτείτε ώστε να μπορούμε εμείς εύκολα να 'παίξουμε' με το Arduino μας. Φυσικά ο κώδικας δεν δημιουργείτε 'μαγικά', κάποιος προγραμματιστής τον έχει γράψει και μας τον προσφέρει δωρεάν για να τον χρησιμοποιήσουμε και εμείς.

Τον φάκελο βιβλιοθηκών του Arduino ide μπορείτε να τον βρείτε σε περιβάλλον Windows στις παρακάτω διαδρομές:

c\Αρχεία Εφαρμογών\Arduino\libraries
c\Αρχεία Εφαρμογών (x86)\Arduino\libraries


Όμως για να μην παιδεύεστε, δείτε στο παρακάτω βίντεο τον πιο εύκολο τρόπο που υπάρχει για τον εντοπισμό του φακέλου 'libraries'.

Αφού τοποθετήσετε την βιβλιοθήκη σας στον φάκελο αυτό κλείστε και ξανανοίξετε το Arduino ide. H παραπάνω διαδικασία γίνεται μόνο μια φορά, για κάθε τύπο εξαρτήματος.
Comments

Arduino και αισθητήρας θερμοκρασίας

3/1/2015

Comments

 
Στο σημερινό άρθρο θα μάθουμε να χρησιμοποιούμε τον αισθητήρα θερμοκρασίας DS18B20 της εταιρίας Dallas. Με την βοήθεια του Arduino uno θα μπορέσουμε να μετρήσουμε την θερμοκρασία του χώρου μας και να την εκτυπώσουμε στην σειριακή οθόνη του Arduino IDE.

Τα υλικά που θα χρειαστούμε:

  • Arduino uno
  • DS18B20 Dallas temp sensor
  • Αντίσταση 4.7k

Το κύκλωμα μας σε breadboard:
Picture
Συνδεσμολογία του DS18B20 με το Arduino UNO
  • Ενώνουμε το GND με το Vdd pin του DS18B20 με το GND του Arduino
  • Το Pin 2 (το pin που είναι στη μέση "D") του DS18B20 με το Pin 2 του Arduino 
  • Στο Pin2 του DS18B20 βάζουμε την αντίσταση 4.7KOhm και την ενώνουμε με το pin 5V του Arduino
Picture
Κώδικας: Download

Απαραίτητα βήματα για τον προγραμματισμό:
  1. Κατεβάστε το αρχείο
  2. Κάντε unzip το αρχείο "Extract to Arduino Library location.zip"
  3. Βάλτε τους δύο φακέλους στον φάκελο "libraries" του Arduino IDE
c\Αρχεία Εφαρμογών\Arduino\libraries
c\Αρχεία Εφαρμογών (x86)\Arduino\libraries

Αφού κάνετε τα παραπάνω, ανοίξτε το αρχείο με τον κώδικα και περάστε το στο Arduino uno. Τέλος ανοίξτε το Arduino IDE και απ' τα εργαλεία επιλέξτε σειριακή οθόνη. Η θερμοκρασία ανανεώνεται κάθε 10 δευτερόλεπτα (delay(10000)).

Picture
Comments

7η κατασκευή - Φτιάχνοντας ένα Bluetooth τηλ/μενο αυτοκίνητο! (Μέρος 2ο)

20/12/2014

Comments

 
Στο προηγούμενο άρθρο μας είδαμε τα υλικά που θα χρειαστούμε για την κατασκευή μας καθώς και το κύκλωμα μας σχεδιασμένο σε breadboard. Στο σημερινό άρθρο θα εξηγήσουμε το κομμάτι του κώδικα αναλυτικά ώστε να μπορούμε να καταλάβουμε τι κάνει κάθε εντολή και όχι απλά να το φορτώσουμε στο arduino και να πούμε "Έτοιμο!".

Δήλωση μεταβλητών & σταθερών
Δήλωση σταθερών για τους κινητήρες και το L293 
Το πίσω μοτέρ (κίνησης) θα το ονομάσουμε motorA και το μπροστά (κατεύθυνσης) motorB. Και τα δύο μοτέρ συνδέονται με το L293 και μέσω αυτού με το Arduino uno με τα pins 5, 6, 9 και 10. Το καθένα απ' αυτά έχει δυο καλώδια εκ των οποίων το ένα έχει θετική πολικότητα, όπως είχαμε ορίσει στο προηγούμενο άρθρο. Άρα το motorA1 και motorB1 δείχνουν το θετικό άκρο και το motorA2 kai 
motorB2 το αρνητικό άκρο των DC μοτέρ. 

const int motorA1 = 5;  
const int motorA2 = 6;  
const int motorB1 = 10;
const int motorB2 = 9;

Φωτισμός led (προαιρετικό)
Όπως στο σχηματικό, το θετικό άκρο των leds καταλήγει στο Arduino pin 12.

const int lights = 12;

Ήχος κόρνας (προαιρετικό)
Όπως στο σχηματικό, το θετικό άκρο του ηχείου καταλήγει στο Arduino pin 3.

const int buzzer = 3; 

Bluetooth state pin  
Το bluetooth module HC-06 JY-MCU έχει ένα led πάνω του το οποίο συνδέεται με τον ακροδέκτη state. Αν παρατηρήσετε, όταν το bluetooth είναι σε σύνδεση, το led είναι μόνιμα αναμμένο, ενώ σε αντίθετη περίπτωση αναβοσβήνει. Αυτό θα μας βοηθήσει στο να καταλάβουμε αν το όχημα βρίσκεται εκτός εμβέλειας. To pin αυτό είναι συνδεδεμένο με το Arduino pin2.

const int BTState = 2;

Calculate Battery Level
Το κομμάτι χρησιμεύει στο να αποστέλλετε το ποσοστό της μπαταρίας στην εφαρμογή μας.
Στην σταθερά maxBattery βάλτε την συνολική τάση της μπαταρίας σας (π.χ. 8volt). H perVolt αποθηκεύει το ποσοστό, η voltage την τάση, και η level την τιμή που αποστέλλετε στην εφαρμογή μας.

const float maxBattery = 8.0;
int perVolt;                            
float voltage = 0.0;                
int level;

Καθυστέρηση
Την καθυστέρηση χωρίς την χρήση της delay() την έχουμε συναντήσει σε προηγούμενο μάθημα και γι' αυτό δεν θα αναφερθούμε περισσότερο σε αυτή. Το κομμάτι αυτό θα βοηθήσει στο να αποστέλλεται η τιμή level (της μπαταρίας) κάθε 10 δευτερόλεπτα.

long previousMillis = -1000*10;
long interval = 1000*10; 
unsigned long currentMillis;

Χρήσιμες μεταβλητές
Την i και j θα την χρησιμοποιήσουμε για να διατηρήσουμε μια κατάσταση σταθερή (θα εξηγήσουμε παρακάτω), την state για την αποθήκευση των εντολών που στέλνει η εφαρμογή και την vSpeed για την ρύθμιση της ταχύτητας, την οποία θέτουμε να είναι αρχικά ίση με 200 (PWM 0-255)

int i=0;
int j=0;
int state;
int vSpeed=200;  

Το κομμάτι της void setup()

Με την pinMode όπως έχουμε πει στα εισαγωγικά μαθήματα μας, δηλώνουμε ποία pins του Arduino είναι έξοδοι και ποία είναι είσοδοι. Έτσι έχουμε το παρακάτω κομμάτι κώδικα:

pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
pinMode(lights, OUTPUT); 
pinMode(BTState, INPUT);   

Το κομμάτι της void loop() - Κύριο πρόγραμμα

Το κομμάτι του κώδικα που υπάρχει στην void loop αποτελεί το βασικό μας πρόγραμμα, χρησιμοποιώντας φυσικά και όλες τις παραπάνω πληροφορίες. Με την χρήση της δομής ελέγχου if, ανάλογα με την τιμή που θα παίρνει η μεταβλητή "state", θα εκτελούνται και οι αντίστοιχες λειτουργίες.

Αν το όχημα βρεθεί εκτός εμβέλειας τότε σταματάει, κάνοντας την τιμή της "state" ίση με 'S':

if(digitalRead(BTState)==LOW) { state='S'; }

Αν η τιμή της "state" είναι από 0 έως 4 τότε ρυθμίζει την ταχύτητα ανάλογα:

if (state == '0'){
    vSpeed=0;}
else if (state == '1'){
    vSpeed=100;}
else if (state == '2'){
    vSpeed=180;}
else if (state == '3'){
    vSpeed=200;}
else if (state == '4'){

    vSpeed=255;}

Κίνηση μπροστά
Αν η τιμή της "state" είναι ίση με 'F' τότε το όχημα θα πάει μπροστά.
(ομοίως και για τα υπόλοιπα)

if (state == 'F') {
    analogWrite(motorA1, vSpeed); analogWrite(motorA2, 0);
    analogWrite(motorB1, 0);      analogWrite(motorB2, 0); 

}


Κίνηση μπροστά αριστερά
else if (state == 'G') {
    analogWrite(motorA1, vSpeed); analogWrite(motorA2, 0);  
    analogWrite(motorB1, 200);    analogWrite(motorB2, 0); 
}


Κίνηση μπροστά δεξιά
else if (state == 'I') {
    analogWrite(motorA1, vSpeed); analogWrite(motorA2, 0); 
    analogWrite(motorB1, 0);      analogWrite(motorB2, 200); 

}


Κίνηση πίσω
else if (state == 'B') {
    analogWrite(motorA1, 0);   analogWrite(motorA2, vSpeed); 
    analogWrite(motorB1, 0);   analogWrite(motorB2, 0); 

}

Κίνηση πίσω αριστερά
else if (state == 'H') {
    analogWrite(motorA1, 0);   analogWrite(motorA2, vSpeed); 
    analogWrite(motorB1, 200); analogWrite(motorB2, 0); 
}


Κίνηση πίσω δεξιά
else if (state == 'J') {
       analogWrite(motorA1, 0);   analogWrite(motorA2, vSpeed); 
     analogWrite(motorB1, 0);   analogWrite(motorB2, 200); 
}

Όχημα σταματημένο
else if (state == 'S'){
     analogWrite(motorA1, 0);  analogWrite(motorA2, 0); 
     analogWrite(motorB1, 0);  analogWrite(motorB2, 0);
}

Ο κώδικας για τα φώτα και την κόρνα είναι παρόμοιος. Ο κώδικας για την μπαταρία διαβάζει την τάση, την μετατρέπει σε ποσοστό και ανάλογα με αυτό στέλνει στην εφαρμογή μας έναν αριθμό απ' το 0 μέχρι το 5, δείχνοντας έτσι το αντίστοιχο επίπεδο της. Την αποστολή αυτή την κάνει κάθε δέκα δευτερόλεπτα.

Κώδικας (download)
H Android εφαρμογή:
Picture
Download Android app

Βίντεο παρουσίασης

Comments
<<Previous
Forward>>
    Picture
    Picture

    Διαβάστε τα νέα του Ardumotive!

    Picture

    Κατηγορίες:

    All
    Arduino
    Ardumotive
    DIY
    Raspberry
    Μαθήματα Arduino

    Δείτε τα νέα του μήνα:

    August 2021
    September 2020
    July 2020
    June 2020
    May 2020
    January 2020
    November 2019
    July 2019
    February 2019
    October 2018
    June 2018
    February 2018
    May 2017
    October 2016
    July 2015
    May 2015
    April 2015
    March 2015
    February 2015
    January 2015
    December 2014
    November 2014
    October 2014
    September 2014
    August 2014
    July 2014



Donate us
About us
License
Cookies policy

Visit the biggest Arduino Shop in Greece!

Picture
find us on dwrean.net
find us on Codebender
find us on Instructables
Developed and designed by Vasilakis Michalis Copyright © 2013 Ardumotive All Rights Reserved
All trademarks referenced herein are properties of their
Powered by Create your own unique website with customizable templates.
Design by DivTag Templates