Αυτόνομος Μετεωρολογικός Σταθμός με Δικτυακή Επικοινωνία Raspberry Pi 3 B+ and PLC S7-1200

Αυτόνομος Μετεωρολογικός Σταθμός με Δικτυακή Επικοινωνία Raspberry Pi 3 B+ and PLC S7-1200

Αυτόνομος μετεωρολογικός σταθμός Πομπός- Δέκτης με χρήση Raspberry Pi 3B+ και PLC Siemens S7 1200

  • Το έργο θα αποτελείται από εβδομαδιαίες συναντήσεις.
  • Ξεκινά με την απόκτηση δεξιοτήτων στην ομαδική εργασία, ακολουθούμενη από το διαχωρισμό σε επαγγελματικά μαθήματα (σχεδιασμός προϊόντων, σχεδιασμός κυκλωμάτων, Raspberry Pi, PLC S7-1200, Προγραμματισμός σε γλώσσα Python, ανάπτυξη εφαρμογών, διαχείριση, και έρευνα) και
    ομάδες εργασίας (περίπου 24 μαθητές ).
  • Η σύσταση των ομάδων εργασίας γίνεται γύρω από τα τμήματα της Ηλεκτρολογίας και της Πληροφορικής, όπου κάθε ομάδα, στο τμήμα της, πρέπει να επιλέξει ένα θέμα προς αντιμετώπιση, ακολουθώντας τα εξής βήματα: να κάνει έρευνα για τον εντοπισμό των αναγκών, τον προσδιορισμό ενός προβλήματος, την εξεύρεση λύσεων και τη διαμόρφωση ενός πρωτοτύπου ή ενός μοντέλου.
  • Στο τέλος του σχολικού έτους, οι μαθητές θα παρουσιάσουν το Project τους στην σχολική κοινότητα.

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

  • 2 Raspberry Pi 3B+ : ο ένας θα είναι ο πομπός με όλα τα αισθητήρια και ο άλλος θα είναι ο Δέκτης (Server)
  • PLC S7 1200 Siemens: Στο PLC θα τοποθετήσουμε το ανεμόμετρο και μέσω MODBUS θα στέλνει τα δεδομένα στο Server
  • Ανεμόμετρο
  • SIM808 v.3.3.2
  • RainDrop Sensor
  • SenseHat : για μέτρηση Θερμοκρασίας, Υγρασίας, Πίεσης

Στόχος Έργου:

  • Στόχος μας είναι η δημιουργία ενός αυτόνομου μετεωρολογικού σταθμού με την έννοια ότι θα μπορεί με ειδικά φωτοβολταϊκά πάνελ να δίνει την απαιτούμενη ενέργεια που χρειάζεται για να είναι σε λειτουργία όλα τα κυκλώματά του.
  • Ένας μετεωρολογικός σταθμός που θα στέλνει τα δεδομένα του σε έναν Εξυπηρετητή (Server) και θα έχουμε την δυνατότητα να βλέπουμε τις μετρήσεις από μακριά.

Ομάδες Έργου:

  • Στο έργο μας συμμετέχουν 24 μαθητές όπου τους χωρίσαμε σε 6 ομάδες των 4 ατόμων.
    • 1η ομάδα: Κατασκευή σε υπολογιστή το έργο
    • 2η ομάδα: Κατασκευή υλικού μέρους – βάση στήριξης του μετεωρολογικού σταθμού σε συνεργασία με την 1η ομάδα
    • 3η ομάδα: Έρευνα αγοράς υλικών και παραγγελία εξαρτημάτων
    • Βοήθεια στο στήσιμο της σελίδας του έργου
    • 4η ομάδα: Εγκατάσταση λογισμικού εφαρμογών στον Server και ρυθμίσεις στο modem-router για :
      • OVPN , DDNS, SSH Client/Server, DomainName, PortForward
      • Apache server installation
      • PHP server installation
      • MySQLi server , Create Database
  • Στο έργο μας συμμετέχουν 24 μαθητές όπου τους χωρίσαμε σε 6 ομάδες των 4 ατόμων.
    • 5η ομάδα: Προγραμματισμός αισθητηρίων σε γλώσσα Προγραμματισμού Python
    • Κώδικας για το αισθητήριο SenseHat:
    • Temperature, Humidity, Air Pressure
    • Κώδικας για το αισθητήριο Raindrop Sensor
    • Κώδικας για το αισθητήριο GSM/GPRS Sim808 v.3.3.2
    • Κώδικας για το αισθητήριο του ανεμόμετρου μέσω του PLC S7-1200
    • Κώδικας για τα step motor κίνησης των φωτοβολταϊκών πάνελ
    • Αποστολή δεδομένων στον Server στη Βάση Δεδομένων
    • 6η ομάδα: Δημιουργία Παρουσίασης και φωτογραφικού υλικού από τα στάδια του έργου
      • Επικοινωνία Raspberry Pi με PLC Siemens S7-1200 μέσω MODBUS
      • Γραφικές απεικονίσεις των αισθητηρίων στην οθόνη HMI για το ανεμόμετρο και για τα υπόλοιπα αισθητήρια από το Raspberry Pi

Δημιουργία Σχέδιου Μετεωρολογικού Σταθμού:

Ο Server (Raspberry Pi 3b+)

Το Εξυπηρετητή (Server) : στον οποίο εγκατέστησαν:

  • τον Apache Server και
  • τον PHP Server για να δημιουργήσουμε την σελίδα μας που θα φιλοξενεί τα δεδομένα του μετεωρολογικού σταθμού.
  • MySQLi Βάση Δεδομένων μας που έχουμε δημιουργήσει την Βάση Δεδομένων Weather Station και τον Πίνακα data όπου θα αποθηκεύουμε τις μετρήσεις από τα αισθητήρια του Μετεωρολογικού Σταθμού
  • Δημιουργήσαμε μια VPN σύνδεση ανάμεσα στο Μετεωρολογικό Σταθμό και τον Server για να έχουμε αξιόπιστη σύνδεση χωρίς παρεμβολές από άλλους μέσω της σύνδεσής μας. (Είχαμε όμως στο τέλος κάποια τεχνικά προβλήματα και δεν έπαιζε αξιόπιστα )

Ρυθμίσεις και Εγκατάσταση Apache στο Server:

  • 1ον Ενημέρωση του Λ.Σ. :
    • sudo apt update
    • sudo apt upgrade
    • sudo apt update
  • 2ον Εγκατάσταση Apache:
    • sudo apt install apache2
  • 3ον Δικαιώματα στα αρχεία του server:
    • sudo chown -R pi:www-data /var/www/html/
    • sudo chmod -R 770 /var/www/html/

 

  • 4ον Έλεγχος λειτουργίας του Apache:
    • wget -O check_apache.html http://127.0.0.1
  • 5ον Αποθήκευση αρχείου λειτουργίας Apache:
    • cat ./check_apache.html
  • 6ον Φάκελος εγκατάστασης αρχείων για site:
    • /var/www/html
  • Όταν θέλουμε να δημιουργήσουμε Ιστοσελίδες και το περιεχόμενο τους, τα τοποθετούμε σε αυτόν το γονικό φάκελο για αρχεία Ιστοσελίδων

Ρυθμίσεις και Εγκατάσταση PHP στο Server

PHP Installation – Εγκατάσταση PHP στο Raspberry Pi

  • 1ον Εγκατάσταση PHP :
    • sudo apt install php php-mbstring
  • 2ον Δημιουργία αρχείου PHP:
    • echo “<?php phpinfo ();?>” > /var/www/html/index.php

Ρυθμίσεις και Εγκατάσταση MySQL στο Server

  • 1ον Εγκατάσταση MySQL :
    • sudo apt install mysql-server php-mysql
  • 2ον Έλεγχος λειτουργίας ότι εγκαταστάθηκε η MySQL:
    • sudo mysql –user=root
  • 3ον Έλεγχος χρήστη για την Βάση Δεδομένων μας, όπου υπάρχει η λέξη ‘password’ αλλάζουμε με το δικό μας password για τον χρήστη root
    DROP USER ‘root’@’localhost’;
    CREATE USER ‘root’@’localhost’ IDENTIFIED BY ‘password’;
    GRANT ALL PRIVILEGES ON *.* TO ‘root’@’localhost’
  • 4ον Προσθήκη του PhpMyAdmin:
    • sudo apt install phpmyadmin
  • 5ον Έλεγχος εγκατάσταης PhpMyAdmin:
    http://127.0.0.1/phpmyadmin
    sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
    http://127.0.0.1/phpmyadmin

Δημιουργία PHP Files στο Server

Τα αρχεία αυτά που θα δημιουργήσουμε στο Server είναι τα αρχεία για τη σελίδα μας στο διαδίκτυο που θα μας δείχνει τα στοιχεία από τις μετρήσεις των αισθητηρίων
Μέσα στο /var/www/html/ θα δημιουργήσουμε τα .php αρχεία μας
Πρώτα θα δημιουργήσουμε έναν φάκελο weatherst1 και στη συνέχεια τα αρχεία για το connection με τη Βάση Δεδομένων μας

Δημιουγήσαμε όπως βλέπετε τα αρχεία dbConnector.php και getAllFromData.php
dbConnector.php
Περιέχει το κώδικα με τον οποίο θα συνδεθούμε με τη Βάση Δεδομένων για να έχουμε επικοινωνία είτε για να εισάγουμε είτε για να εμφανίσουμε δεδομένα στη σελίδα μας
getAllFromData.php
Περιέχει το κώδικα που θα συλλέγει τα δεδομένα από τη Βάση Δεδομένων και θα τα εμφανίζει στην σελίδα μας