Google+

Δευτέρα, 26 Σεπτεμβρίου 2016

LSM303DLHC 3-axis Accelerometer and Magnetometer

Το LSM303DLHC είναι ένα επιταχυνσιόμετρο (accelerometer) και μια ψηφιακή πυξίδα (magnetometer).


Μπορείτε να το βρείτε σε module, διαθέσιμο στο ebay και για τη σύνδεση με το Arduino χρησιμοποιείται ο δίαυλος I2C (SDA, SCL), τροφοδοσία +5V και GND. Με τη χρήση του, μπορείτε να δημιουργήσετε ενδιαφέροντα, διαδραστικά project. Για παράδειγμα, με χρήση του κώδικα για Arduino και Processing, δημιουργούμε μια "ψηφιακή πυξίδα" που μας βοηθάει να βρούμε την κατεύθυνση του μαγνητικού Βορρά της Γης.



Σχετικό βίντεο:


Σχετικά λινκ:
Pololu - LSM303DLHC 3D Compass and Accelerometer Carrier
Instructables - Arduino / Processing - SIX AXIS GYRO & ACCELEROMETER
Instructables - Night sky explorer
Adafruit Learn - LSM303

Tilt Angle Sensor



Ένας Tilt Sensor ανιχνεύει, μηχανικά, τον κάθετο ή οριζόντιο προσανατολισμό (σε ένα εύρος γωνίας ~15°).



Με το Arduino συνδέεται σε ένα Digital pin και GND*. Αν και δεν έχει λεπτομερή ακρίβεια όσο ένα επιταχυνσιόμετρο (accelerometer), πολύ εύκολα και με ένα μικρό κομμάτι κώδικα, μπορεί να δοκιμαστεί η λειτουργία του με ένα LED:
//Sparkfun tilt sensor simple sketch code with debouncing

// these constants won't change:
const int ledPin = 13;      // led connected to digital pin 13
const int tiltSensor = 2; // the piezo is connected to analog pin 0

// these variables will change:
int sensorReading;      // variable to store the value read from the sensor pin
int ledState = LOW;       // variable used to store the last LED status, to toggle the light
int tiltState;            // the current reading from the input pin
int lastTiltState = HIGH; // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggled
long debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {
 pinMode(ledPin, OUTPUT); // declare the ledPin as as OUTPUT
 pinMode(tiltSensor, INPUT); // declare the tiltSensor as as INPUT
}

void loop() {
  // read the sensor and store it in the variable sensorReading:
  sensorReading = digitalRead(tiltSensor);    
  
  // check to see if the sensor was tilted
  // (i.e. the input went from HIGH to LOW), and you've waited 
  // long enough since the last change to ignore any noise:  

  // If the tilt changed, due to noise or tilting: 
  if (sensorReading != lastTiltState) {
    // reset the debouncing timer
    lastDebounceTime = millis();
  } 
   if ((millis() - lastDebounceTime) > debounceDelay) {
    // whatever the reading is at, it's been there for longer
    // than the debounce delay, so take it as the actual current state:
    
    // if the button state has changed:
    if (sensorReading != tiltState){
      tiltState = sensorReading;
      
    // if the sensor reading is low
      if (sensorReading == LOW) {
        // make the status of the ledPin to go on:
        ledState = HIGH;   
        // update the LED pin itself:        
        digitalWrite(ledPin, ledState);
        // dalay the LED on for one second:
        delay(500);
      }
      // otherwise if it is high
      else if (sensorReading == HIGH){
        // make the status of the ledPin to stay off:
        ledState = LOW;
        // update the LED pin itself:
        digitalWrite(ledPin, ledState);
      }
    }
   }
  // save the reading.  Next time through the loop,
  // it'll be the lastButtonState:
  lastTiltState = sensorReading; 
  // delay to avoid overloading the serial port buffer:
  delay(100);  
}
Μερικά στιγμιότυπα:



Σχετικά λινκ:
Sparkfun - Tilt Sensor
Arduino.cc Tutorial - Debounce

* Η σύνδεση μόνο με Digital pin και GND, επαφίεται στην ύπαρξη των ενσωματωμένων pull-up resistor του Arduino, σε κάθε άλλη περίπτωση, θα έπρεπε να προσθέσουμε μια σύνδεση με τα +5V μέσω μιας αντίστασης pull-up.

Πέμπτη, 22 Σεπτεμβρίου 2016

OH3144 Hall Effect Magnetic Sensor

Με έναν αισθητήρα OH3144, έχουμε τη δυνατότητα να ανιχνεύσουμε την παρουσία μαγνητικού πεδίου, το οποίο αντίστοιχα δημιουργεί τάση Low/High στο signal pin, σύμφωνα με την αρχή λειτουργίας του Hall Effect. Στο παρακάτω βίντεο αναπαρίσταται, σχηματικά, το φαινόμενο:

video

Με την παραπάνω τεχνική, υλοποιείται ουσιαστικά ένας "ανέπαφος διακόπτης" (contact-less switch) ο οποίος έχει πολλές χρήσεις και εφαρμογές, όπως στη δημιουργία μετρητών ή ανιχνευτών αντικειμένων, ροής, ταχύτητας, κ.α.

Με το Arduino συνδέεται πολύ εύκολα, με χρήση +5V, GND και ενός digital pin:

Στιγμιότυπο ενός module με το OH3144:

Σχετικά λινκ:
Arduino and Hall Effect Sensor
Arduino Hall Effect Sensor Tutorial

Τετάρτη, 21 Σεπτεμβρίου 2016

TTP224 Capacitive Touch Sensor


Το TTP224 είναι ένα module που ενσωματώνει 4 αισθητήρες αφής (4-channel capacitive touch sensor), μπορείτε να το χρησιμοποιήσετε στα project σας και είναι πολύ απλό στην υλοποίηση.

Δεσμεύοντας μερικά Digital Pin, ένα για κάθε sensor pad (το TTP224 υποστηρίζει 4) και με τροφοδοσία +5V, μπορείτε να το οδηγησέτε με ένα Arduino. Παρακάτω, το διάγραμμα σύνδεσης:

Με τον ακόλουθο κώδικα, μπορείτε να παρακολουθείτε στο serial monitor μόλις πατήσετε τον αισθητήρα:
int i;

void setup()
{
//set pins 4 - 7 as inputs
for(i=4; i<=7; i++)
{
pinMode(i, INPUT);
}
Serial.begin(9600);
}

void loop()
{
for(i=4; i<=7; i++)
{
if(digitalRead(i) == HIGH)
{
//I'm using pins 4 - 7 so subtract 3 to match
//numbering on module
Serial.println(i-3);
}
}
delay(100);
}
Παρακάτω, μερικά στιγμιότυπα:



Σχετικά λινκ:
Instructables - TTP224 Module Options
Arduino and TTP224
Ebay - TTP224 4-channel Capacitive Touch Sensor Module

DS1302 Real Time Clock

Το DS1302 είναι ένα Real Time Clock (RTC) ή αλλιώς, TimeKeeping Chip το οποίο, όπως προϊδεάζει και το όνομά του, μας παρέχει την ώρα και την ημερομηνία και μας βοηθάει να δημιουργήσουμε time critical εφαρμογές.


Ένα module βασισμένο στο DS1302, μπορεί πολύ εύκολα να συνδεθεί με το Arduino, κάνοντας χρήση 3 pin για την σειριακή επικοινωνία (CE, CLK, CE) και 2 για την τροφοδοσία, η τελευταία προτιμάται να είναι στα +3.3V, αν και υπάρχει ανοχή μέχρι και τα +5V. Παρακάτω, το διάγραμμα σύνδεσης:


Το DS1302, στα pin 2 και 3, έχει την ανάγκη ενός εξωτερικού κρυσταλλικού ταλαντωτή και στα pin 8 και 4, μιας μπαταρίας που τροφοδοτεί την ενσωματωμένη RAM, μεγέθους 31byte. Σε άλλες εκδοχές, όπως αυτή του DS3231, ο κρύσταλλος είναι ενσωματωμένος και σε αυτή του DS1387, ενσωματώνεται ακόμη και μια επαναφορτιζόμενη μπαταρία.


Μπορείτε να βρείτε έτοιμα module ή να κατασκευάσετε με τα αντίστοιχα part, δικό σας από την αρχή:


Κατεβάζουμε τις απαραίτητες βιβλιοθήκες DS1302RTC.h και Time.h και είμαστε έτοιμοι να δοκιμάσουμε παραδείγματα κώδικα:




Σχετικά λινκ:
DS1302 Real Time Clock
Adafruit - What is an RTC
PJRC - Time Library
DS3102 coding guide

Τρίτη, 20 Σεπτεμβρίου 2016

7-Segment Displays & LED Matrix

Σε πολλά Arduino project, απαιτείται η εμφάνιση ενημερωτικών μηνυμάτων προς το χρήστη και για το λόγο αυτό, σε παλαιότερα post έχουμε αναφερθεί στο πως μπορούμε να συνδέσουμε οθόνες TFT και LCD (character & graphics) ώστε να διευρύνουμε τους τρόπους διάδρασης.

Εναλλακτικά, μπορεί κάποιος να χρησιμοποιήσει και οθόνες με LED και πιο συγκεκριμένα 7-segment displays ή LED Matrix:











Κυκλοφορούν πληθώρα από module για όλα τα γούστα, που ενσωματώνουν από 1x7-segment display, μέχρι και 64x16 ή ακόμη μεγαλύτερα! Τα περισσότερα έχουν ως κοινό χαρακτηριστικό, το ολοκληρωμένο οδήγησης MAX72xx. Το συγκεκριμένο IC υποστηρίζει, εγγενώς, μέχρι 16x16 συστοιχία, αλλά μπορεί να συνδεθεί αλυσιδωτά (daisy chain) και με άλλα ίδια, ώστε να οδηγηθούν περισσότερα led. Η σύνδεσή του με έναν μικροελεγκτή επιτυγχάνεται μέσω SPI.

Παρακάτω, μια τυπική σχηματική διάταξη για τη διασύνδεση με Arduino:



Η απαραίτητη βιβλιοθήκη LedControl.h είναι διαθέσιμη στο Github και στο ebay μπορείτε να βρείτε αντίστοιχα φθηνά led module w/ Maxim72xx driver. Η υλοποίηση είναι σχετικά εύκολη, αφού το μόνο που θα χρειαστείτε, είναι να συνδέσετε τα Arduino pin, υπεύθυνα για το SPI (MOSI,MISO,CLK,SS), με το module και αντίστοιχα να τα ορίσετε στον κώδικά σας.

Παρακάτω, μερικά screenshot και video από τη λειτουργία:







Περισσότερες πληροφορίες διαθέσιμες και στο Arduino Playground.

Κυριακή, 13 Δεκεμβρίου 2015

Windows IoT Core on Raspberry Pi 2

Έχουν περάσει ήδη οκτώ μήνες (15 Απριλίου 2015), αφότου η MS ανακοίνωσε το δικό της λειτουργικό για την κοινότητα των maker/hacker, το Windows 10 IoT Core και μάλιστα με τα διαπιστευτήρια και τη συνεργασία του Arduino.
 

Από την Insider Preview έκδοση που είχα δοκιμάσει αρχικά, μέχρι την τελευταία 10.0.10586 έκδοση που ανακοινώθηκε πριν λίγες μέρες, έχουν βελτιωθεί αρκετά στοιχεία και δείχνει ότι έχει μπει στο δρόμο το σωστό... το δρόμο τον ανοικτό!

Μερικές βιβλιοθήκες στο github ms-iot... αλλά και οι πιστοποιήσεις για Linux στο Azure είναι αρκετές για να αποδείξουν ότι ο Linus νίκησε! ;)

Αρκετά όμως με τα εισαγωγικά, ας προχωρήσουμε με τη διαδικασία εγκατάστασης του λειτουργικού στο Raspberry Pi 2 :)

Τι θα χρειαστούμε:

1 x Raspberry Pi 2
1 x SD Card class 10 with at least 8GB of storage or 32GB to be safe ;)
1 x Power supply micro-usb (5v) with at least 1A of current or >2A to be safe ;)
1 x HDMI cable (display)
1 x Ethernet connection (internet)

Εγκατάσταση λειτουργικού μέσω του Windows 10 IoT Core Dashboard* που είναι διαθέσιμο για download από εδώ στον υπολογιστή και το οποίο θα μας βοηθήσει να περάσουμε το image στην SD:


Αν όλα πήγαν καλά, τοποθετούμε την SD στο Raspberry Pi και αφού έχουμε συνδέσει τα απαραίτητα, ξεκινάμε! Σε λίγα δευτερόλεπτα στην οθόνη βλέπουμε το default app:


Ανοίγουμε το dashboard στον υπολογιστή μας και επιλέγουμε το My devices:


Υπάρχει η επιλογή settings για την αλλαγή των βασικών ρυθμίσεων, όπως computer name και admin password:



και η επιλογή Open in Device Portal, που ανοίγει την αντίστοιχη web εφαρμογή που τρέχει στο raspberry pi σε ένα browser:


Το Device Portal είναι ένα ενσωματωμενό app και αποτελεί το εργαλείο διαχείρισης, σε επίπεδο device hardware και software os / applications.


Εναλλακτικά, υπάρχει και δυνατότητα διαχείρισης μέσω ssh πρόσβασης ή power-shell connection ώστε να μπορούμε εργαστούμε με cli, εδώ το πλήρες command set.

Για το τέλος, αφήνω το καλύτερο κομμάτι, αυτό της ανάπτυξης εφαρμογών (κυρίως σε C#, python και node.js) στο Windows IoT Core. Θα χρειαστεί να κατεβάσετε το Visual Studio Community 2015 εδώ και τα αντίστοιχα Windows IoT Core Project Templates εδώ μαζί με αρκετά Samples and Docs εδώ, για να ξεκινήσετε.

Στη συγκεκριμένη έκδοση του Windows IoT Core image, υπάρχει ήδη ένα demo app εγκατεστημένο (Hello Blinky) που αναβοσβήνει ένα από τα LED που βρίσκονται πάνω στο Raspberry Pi:



Πολλές ιδεές για hardware project θα βρείτε στη σελίδα της hackster.io που αποτελεί φυσικά άλλη μια συνεργασία με τη ms.


Σχετικά λινκ:
Windows IoT Home
Get Started with Windows IoT
Windows IoT Community Forum
Windows IoT on Github
Downloads and Tools


Happy W10 IoT Core Hacking !


*Εναλλακτικά, μπορεί να γίνει κατέβασμα του Windows 10 IoT Core Ιmage Τool εδώ