Για αρχή, θα αρκεστώ σε μια μικρή εισαγωγή για το φοβερό RaspberryPi SBC, ωστόσο για όσους θέλουν μάθουν περισσότερα, μπορούν να βρουν κάποια πολύ καλά άρθρα στο OSArena αλλά και πληροφορίες στο επίσημο site raspberrypi.org.
Η καρδιά του συστήματος είναι το SoC της Broadcom BCM2835 με ARM επεξεργαστή και 256/512MB μνήμη (model A/B), επεξεργαστή γραφικών με έξοδο hdmi (video+audio out), 2 x USB OTG, Ethernet και SD card reader. Ένα από τα βασικά του χαρακτηριστικά είναι το GPIO τα οποία είναι προγραματιζόμενα pin επέκτασης εισόδου/εξόδου και μέσω των οποίων μπορούμε να επικοινωνήσουμε με το φυσικό κόσμο όπως ακριβώς και με το Arduino. Πολλές διανομές Linux υποστηρίζουν ήδη το RaspberryPi. Και όλα αυτά με τιμή που τα σπάει στα 35$ !
Για το project, θα χρησιμοποιήσουμε τη γλώσσα Processing στο RaspberryPi, θα συνδέσουμε το Arduino με USB και θα εκτελέσουμε ένα πρόγραμμα ελέγχου του Arduino (ανάγνωση θερμοκρασίας από το LM35 και άναμμα ενός LED) από το RasberryPi, μέσω ενός γραφικού εργαλείου (ιδέα του scruss).
Τα βήματα:
Για ένα τεστ της επικοινωνίας εκτελούμε τον κώδικα στο Processing:
τώρα μπορούμε να συνδέσουμε το LM35 στο Analog Pin 0 και το LED στο Digital PWM Pin 3 του Arduino.
φόρτωση κώδικα firmata (File->examples->firmata->standardfirmata)
To πρόγραμμα Processing:
Αν όλα πάνε καλά θα έχετε κάτι σαν το παρακάτω:
Δείτε κι ένα βίντεο.
Καλή επιτυχία!
Σημείωση: Σας προειδοποιώ ότι θα παρατηρήσετε καθυστέρηση καθόλη τη διάρκεια των ενεργειών compile & upload & run που εκτελεί και το Arduino IDE αλλά και το Processing, εξαιτίας της Java που είναι έτσι κι αλλιώς η βάση και των δύο εργαλείων, αλλά σκεφτείτε για λίγο σε τι σύστημα αναπτύσετε και τις δυνατότητες που έχετε και οπλιστείτε με υπομονή ;)
Η καρδιά του συστήματος είναι το SoC της Broadcom BCM2835 με ARM επεξεργαστή και 256/512MB μνήμη (model A/B), επεξεργαστή γραφικών με έξοδο hdmi (video+audio out), 2 x USB OTG, Ethernet και SD card reader. Ένα από τα βασικά του χαρακτηριστικά είναι το GPIO τα οποία είναι προγραματιζόμενα pin επέκτασης εισόδου/εξόδου και μέσω των οποίων μπορούμε να επικοινωνήσουμε με το φυσικό κόσμο όπως ακριβώς και με το Arduino. Πολλές διανομές Linux υποστηρίζουν ήδη το RaspberryPi. Και όλα αυτά με τιμή που τα σπάει στα 35$ !
Για το project, θα χρησιμοποιήσουμε τη γλώσσα Processing στο RaspberryPi, θα συνδέσουμε το Arduino με USB και θα εκτελέσουμε ένα πρόγραμμα ελέγχου του Arduino (ανάγνωση θερμοκρασίας από το LM35 και άναμμα ενός LED) από το RasberryPi, μέσω ενός γραφικού εργαλείου (ιδέα του scruss).
Τα βήματα:
- φορτώνουμε τo Occidentalis 0.2 Linux που έφτιαξε η adafruit και έχει πολλά εργαλεία για makers στην SD, οδηγίες.
- ενημέρωση συστήματος:
$ sudo apt-get update $ sudo apt-get upgrade $ sudo rpi-update
- εγκατάσταση της Java (open-jdk):
$ sudo apt-get install librxtx-java openjdk-6-jdk
- κατέβασμα της Processing για linux και αποσυμπίεση σε ένα φάκελο πχ στο /home/pi
- διαγραφή του φακέλου java/ μέσα από το φάκελο του processing πχ για μένα στο
processing-1.5.1/java
- αντί του φακέλου java, δημιουργία συντόμευσης στη java της εγκ/σης(βήμα 3):
$ ln -s /usr/lib/jvm/java-6-openjdk-armhf java
- διαγραφή μέσα στο φάκελο του processing του:
modes/java/libraries/serial/library/linux32/librxtxSerial.so
- αντικατάσταση του:
modes/java/libraries/serial/library/RXTXcomm.jar
με ένα αντίγραφο του:/usr/share/java/RXTXcomm.jar
- κατέβασμα και εγκατάσταση της βιβλιοθήκης controlP5 του Processing.
- κατέβασμα και εγκατάσταση της βιβλιοθήκης Arduino του Processing.
- εγκατάσταση του Arduino IDE για χρήση της firmata
$ sudo apt-get install arduino
- σύνδεση του arduino με το RasberryPi με καλώδιο USΒ.
Για ένα τεστ της επικοινωνίας εκτελούμε τον κώδικα στο Processing:
import processing.serial.*; import cc.arduino.*; Arduino arduino; println(Arduino.list());που μας επιστρέφει το όνομα της θύρας επικοινωνίας πχ. [0] /dev/ttyUSB0.
τώρα μπορούμε να συνδέσουμε το LM35 στο Analog Pin 0 και το LED στο Digital PWM Pin 3 του Arduino.
φόρτωση κώδικα firmata (File->examples->firmata->standardfirmata)
To πρόγραμμα Processing:
import processing.serial.*; import cc.arduino.*; import controlP5.*; ControlP5 controlP5; Arduino arduino; int ledPin = 3; // digital 3; PWM capable int lm35pin = 0; // analogue 0 int brightness=128; // LED brightness, 0-255 int lastbrightness=0; // store brightness to stop flicker void setup() { size(250, 50); controlP5 = new ControlP5(this); // horizontal controlP5 slider bound to brightness variable controlP5.addSlider("brightness",0,255,128,90,12,128,16); // set up first Arduino we find arduino = new Arduino(this, Arduino.list()[0]); arduino.pinMode(ledPin, Arduino.OUTPUT); } void draw() { background(240); // blank screen fill(0,0,0); // black text text("Brightness:", 15, 25); // slider label // read LM35 and print text("Temperature: " + str(int(read_lm35(lm35pin))) + " °C", 15, 48); if (brightness != lastbrightness) { // LED flickers if we keep doing analogWrite() with same value // so only write if slider brightness value has changed arduino.analogWrite(ledPin, brightness); } lastbrightness=brightness; } float read_lm35(int pin) { // read lm35 on pin, and return float °C // assumes 5V supply, and 0-100°C range return (5.0 * arduino.analogRead(pin) * 100.0)/1024.0; }
Αν όλα πάνε καλά θα έχετε κάτι σαν το παρακάτω:
Δείτε κι ένα βίντεο.
Καλή επιτυχία!
Σημείωση: Σας προειδοποιώ ότι θα παρατηρήσετε καθυστέρηση καθόλη τη διάρκεια των ενεργειών compile & upload & run που εκτελεί και το Arduino IDE αλλά και το Processing, εξαιτίας της Java που είναι έτσι κι αλλιώς η βάση και των δύο εργαλείων, αλλά σκεφτείτε για λίγο σε τι σύστημα αναπτύσετε και τις δυνατότητες που έχετε και οπλιστείτε με υπομονή ;)
Καλημέρα,
ΑπάντησηΔιαγραφήεισάγεις πάλι καινά "δαιμόνια", αντέ καινούριο κοσκινάκι, το πήραμε και αυτό. Θα προσπαθήσω να στήσω webserver για ιδίαν χρήση κάτι σαν ιδιωτικό cloud ή μάλλον συνεφάκι !
Σταύρος
Χαίρομαι που το blog εμπνέει κόσμο! btw ακόμη χρωστάς το υλικό με την κατασκευή που έλεγες...
ΑπάντησηΔιαγραφήΚαλό και γρήγορο το εργαλείο! Εστησα δοκιμαστικά το openelec για youtube και καμιά ταινιούλα. Επίσης δοκίμασα το debian whezzy έναν torrent client μια χαρά και τα torrent. Τώρα μένει να δούμε για webserver για personal use.
ΑπάντησηΔιαγραφήΧαίρετε και ευχαριστούμε, για άλλη μια φορά γράψατε ιστορία με το μαραφέτι!
Σταύρος