Πίνακας περιεχομένων:

Στέλνει ένα sms με Temperatur εγκαίρως: 5 βήματα (με εικόνες)
Στέλνει ένα sms με Temperatur εγκαίρως: 5 βήματα (με εικόνες)

Βίντεο: Στέλνει ένα sms με Temperatur εγκαίρως: 5 βήματα (με εικόνες)

Βίντεο: Στέλνει ένα sms με Temperatur εγκαίρως: 5 βήματα (με εικόνες)
Βίντεο: Πώς θα στείλετε το SMS.. 2024, Νοέμβριος
Anonim
Στέλνει Sms με Temperatur στην ώρα του
Στέλνει Sms με Temperatur στην ώρα του

Η ιδέα είναι να πάρω ένα sms θερμοκρασίας από το πατρικό μου σπίτι.

Τίποτα φανταχτερό μόνο η γρήγορη συναρμολόγηση ανταλλακτικών.

Τα μέρη είναι:

  • Geekcreit® ATmega328P Nano V3 Controller Board Συμβατό Arduino
  • DIY NANO IO Shield V1. O Expansion Board For Arduino
  • Μονάδα ρολογιού πραγματικού χρόνου βασισμένη σε DTC1307 RTC IIC / I2C και DS18b20
  • SIM800L Τετραπλής ζώνης GSM / GPRS
  • LM2596 Mini DC-DC Converter Ρυθμιζόμενη μονάδα τροφοδοσίας Step Down
  • Θερμίστορ NTC MF52AT θερμοκρασία

Κατ 'αρχάς πολύ από το διάβασμα και την αναζήτηση.

Πριν χρησιμοποιήσω τελικά το Geekcreit® Nano, δοκιμάζω όλα τα μέρη με ένα Arduino Uno.

Βήμα 1: Θέστε το SIM800l να λειτουργήσει

Πάρτε το SIM800l to Work
Πάρτε το SIM800l to Work

Ένα βασικό σημείο είναι η ισχύς για το Sim800L.

Χρησιμοποιώ μετατροπέα LM2596 Mini DC-DC, ρυθμισμένο στα 3,7 βολτ και ξεχωριστό τροφοδοτικό.

Για να ελέγξετε τη σύνδεση με εντολές AT+, αυτή η πλευρά είναι πολύ χρήσιμη:

Quickstart SIM800 (SIM800L) με Arduino

Με Απενεργοποίηση κωδικού PIN χρησιμοποιώντας μόντεμ gsm στις εντολές πήρα βόλτα με τον κωδικό pin sim.

Η επόμενη εξέταση ποια βιβλιοθήκη. Το διαδίκτυο προσφέρει διαφορετική λύση.

Η λύση μου είναι η βιβλιοθήκη από τον Mattias Aabmets: AspenSIM800

Το exampel του: Send_SMS.ino χρησιμοποίησε το I ως βασικό πρόγραμμα και ένα προς ένα συνδέει όλα τα άλλα μέρη μεταξύ τους.

Ο πείρος Tx και ο πείρος Rx είναι κωδικοί για:

RX_PIN 10 του Arduino. Πρέπει να είναι συνδεδεμένο με τον ακροδέκτη TX της μονάδας SIM800. TX_PIN 11 του Arduino. Πρέπει να είναι συνδεδεμένο με τον ακροδέκτη RX της μονάδας SIM800

Είναι πάντα καλή ιδέα να διαβάζετε τα αρχεία *.ccp και *.h στις βιβλιοθήκες.

Περιέχουν πολλές ενδιαφέρουσες συμβουλές και γνώσεις.

Βήμα 2: Λειτουργήστε τον αισθητήρα RTC DS1307 με αισθητήρα DS18B20

Αποκτήστε το RTC DS1307 με αισθητήρα DS18B20 στη δουλειά
Αποκτήστε το RTC DS1307 με αισθητήρα DS18B20 στη δουλειά

Χρησιμοποίησα αυτήν την πλευρική πλευρά: simtronyx - το ιστολόγιο για τα DS1307 και DS18B20.

Το ρολόι έχει σύνδεση διαύλου I2C και είναι για το Arduino Uno: A4 (SDA) - A5 (SCL)

Το DS18B20 I συνδέθηκε με το D3.

Διάβασα ότι σε ένα SMS δεν μπορείτε να στείλετε το Floats only String, οπότε έπρεπε να μεταφράσω τα floats σε συμβολοσειρά.

Αυτό που κάνω με αυτό το απόσπασμα κώδικα βρήκα:

ν

MyString1 = String (currentTemp, 2); // Μετατροπή float σε συμβολοσειρά

MyString1 = (MyString1 + "C - RoomTemperatur:)");

// η μετατροπή συμβολοσειράς σε χαρακτήρα ξεκινά εδώ

// Μήκος (με έναν επιπλέον χαρακτήρα για το μηδενικό τερματικό)

int str_len1 = MyString1.length () + 1; // Προετοιμάστε τον πίνακα χαρακτήρων (το buffer)

char char_array1 [str_len1]; // Αντιγράψτε το

MyString1.toCharArray (char_array1, str_len1); // μετατρέπει τη συμβολοσειρά σε char την τελειώνει

Θα είμαι ειλικρινής, δεν ξέρω πώς λειτουργεί, αλλά λειτουργεί.

Βήμα 3: Λειτουργήστε το Thermistor NTC MF52AT

Λειτουργήστε το Thermistor NTC MF52AT
Λειτουργήστε το Thermistor NTC MF52AT

Δούλεψα πριν με ένα θερμίστορ, οπότε ήταν το εύκολο μέρος.

Αλλά επίσης εδώ μπορείτε να βρείτε διαφορετική λύση.

Στον τελικό κώδικα μπορείτε να βρείτε τον δικό μου.

Μπορείτε επίσης να βρείτε τη μετάφραση Floats to String.

Συγκολλήθηκε λίγο καλώδιο και η αντίσταση 10 k ohm στο θερμίστορ.

Βήμα 4: Δούλεψε όλοι μαζί

Έτσι έγραψα όλα τα μέρη του προγράμματος μαζί.

Τώρα έπρεπε να καταλάβω πώς να στέλνω ένα SMS κάθε μέρα, ταυτόχρονα.

Διάβασα για διαφορετικές ιδέες, μερικές με TimerAlarm και άλλες προσεγγίσεις.

Βρήκα όμως μια απλή λύση κάπου στο φόρουμ arduino:

εάν (τώρα.ωρη () == 8 && τώρα.λεπτά () == 00 && τώρα. δευτερόλεπτο () == 59)

{

SIM.smsSend (addr, char_array); // θερμίστορ

καθυστέρηση (500)? SIM.smsSend (addr, char_array1); // DS18B20}

Αλλά γιατί τώρα.second = 59 επειδή στέλνει ένα ολόκληρο λεπτό SMS. Μου κάνει αλλά δοκίμασε τον εαυτό σου.

Μετά από κάποια δοκιμή ανέβασα το πρόγραμμα στο Geekcreit® Nano.

Αυτό ίσως δεν είναι η καλύτερη γραφή προγράμματος:) αλλά κάνει το επιθυμητό.

Επειδή το Geekcreit® ATmega328P Nano έχει κάποια προβλήματα Arduino IDE, ανεβάζω με τερματικό (Linux Mint) ρίξτε το USBtinyisp με αυτό: avrdude -c usbtiny -p atmega328p -U flash: w: SomeHexFile.hex

Βήμα 5: Λειτούργησε

Ναι λειτούργησε και τοποθετείται στο σπίτι.

Κάθε μέρα στις 6:00 το πρωί λαμβάνω ένα SMS με τη θερμοκρασία.

Συνιστάται: