Table des matières:

Envoie un SMS avec température à temps : 5 étapes (avec photos)
Envoie un SMS avec température à temps : 5 étapes (avec photos)

Vidéo: Envoie un SMS avec température à temps : 5 étapes (avec photos)

Vidéo: Envoie un SMS avec température à temps : 5 étapes (avec photos)
Vidéo: Impossible que tu connaisses cette astuce Samsung 2024, Novembre
Anonim
Envoie un SMS avec température à temps
Envoie un SMS avec température à temps

L'idée est d'obtenir un sms de température de la maison de mon père.

Rien d'extraordinaire à assembler rapidement les pièces.

Les pièces sont:

  • Carte contrôleur Geekcreit® ATmega328P Nano V3 Compatible Arduino
  • Carte d'extension DIY NANO IO Shield V1. O pour Arduino
  • Module d'horloge temps réel RTC IIC / I2C basé sur DS1307 et DS18b20
  • GSM/GPRS quadribande SIM800L
  • LM2596 Mini convertisseur DC-DC Module d'alimentation abaisseur réglable
  • Thermistance NTC MF52AT température

Tout d'abord beaucoup de lecture et de recherche.

Avant d'utiliser enfin le Geekcreit® Nano, je teste toutes les pièces avec un Arduino Uno.

Étape 1: faire fonctionner le SIM800l

Faites fonctionner le SIM800l
Faites fonctionner le SIM800l

Un point principal est la puissance du Sim800L.

J'utilise un convertisseur Mini DC-DC LM2596, réglé sur 3,7 volts et une alimentation séparée.

Pour tester la connexion avec les commandes AT+ ce côté est très utilisable:

Démarrage rapide SIM800 (SIM800L) avec Arduino

Avec Désactiver le code PIN à l'aide du modem gsm aux commandes, j'ai récupéré le code PIN de la sim.

La prochaine considération quelle bibliothèque. Internet offre une solution différente.

Ma solution est la bibliothèque de Mattias Aabmets: AspenSIM800

Son exemple: Send_SMS.ino a utilisé I comme programme de base et connecte une à une toutes les autres parties entre elles.

La broche Tx et la broche Rx sont le code pour:

RX_PIN 10 d'Arduino. Doit être connecté à la broche TX du module SIM800. TX_PIN 11 d'Arduino. Doit être connecté à la broche RX du module SIM800

C'est toujours une bonne idée de lire les fichiers *.ccp et *.h dans les bibliothèques.

Ils contiennent de nombreuses astuces et connaissances intéressantes.

Étape 2: faire fonctionner le RTC DS1307 avec le capteur DS18B20

Faites fonctionner le RTC DS1307 avec le capteur DS18B20
Faites fonctionner le RTC DS1307 avec le capteur DS18B20

J'ai utilisé ce côté: simtronyx - le blog pour le DS1307 et le DS18B20.

L'horloge a une connexion bus I2C et c'est pour l'Arduino Uno: A4 (SDA) - A5 (SCL)

Le DS18B20 que j'ai connecté au D3.

J'ai lu que dans un SMS, vous ne pouvez pas envoyer de flottants uniquement en chaîne, j'ai donc dû traduire les flottants en chaîne.

Ce que je fais avec cet extrait de code que j'ai trouvé:

m

MyString1 = String(currentTemp, 2); //Convertir le flottant en chaîne

MaChaîne1 = (MaChaîne1 + " C - RoomTemperatur:) ");

// convertir la chaîne en char commence ici

// Longueur (avec un caractère supplémentaire pour le terminateur nul)

int str_len1 = MaChaîne1.length() + 1; // Préparer le tableau de caractères (le buffer)

char char_array1[str_len1]; // Copiez-le

MyString1.toCharArray(char_array1, str_len1); // convertir la chaîne en caractère la termine

Je vais être honnête, je ne sais pas comment ça marche, mais ça marche.

Étape 3: faire fonctionner la thermistance NTC MF52AT

Faites fonctionner la thermistance NTC MF52AT
Faites fonctionner la thermistance NTC MF52AT

J'ai travaillé avant avec une thermistance, donc c'était la partie la plus facile.

Mais aussi ici, vous pouvez trouver une solution différente.

Dans le code final, vous pouvez trouver le mien.

Ici, vous pouvez également trouver la traduction Floats to String.

J'ai soudé du fil et la résistance de 10 k ohms à la thermistance.

Étape 4: Faites travailler tout le monde ensemble

J'ai donc écrit toutes les parties du programme ensemble.

Maintenant, je devais comprendre comment envoyer un SMS tous les jours, à la même heure.

J'ai lu sur différentes idées, certaines avec un TimerAlarm et d'autres approches.

Mais j'ai trouvé une solution simple quelque part dans le forum arduino:

if (now.hour() == 8 && now.minute() == 00 && now.second () == 59)

{

SIM.smsSend(addr, char_array); // thermistance

retard (500); SIM.smsSend(addr, char_array1); // DS18B20 }

Mais pourquoi now.second = 59 car il envoie un SMS entier d'une minute. C'est le cas pour moi, mais essayez vous-même.

Après quelques tests, j'ai téléchargé le programme sur le Geekcreit® Nano.

Ce n'est peut-être pas la meilleure écriture de programme:) mais elle fait ce que l'on souhaite.

Parce que le Geekcreit® ATmega328P Nano a des problèmes d'IDE Arduino, je télécharge par terminal (Linux Mint) lance l'USBtinyisp avec ceci: avrdude -c usbtiny -p atmega328p -U flash:w:SomeHexFile.hex

Étape 5: cela a fonctionné

Oui cela a fonctionné et il est placé dans la maison.

Tous les jours à 6h00, je reçois un SMS avec la température.

Conseillé: