Table des matières:

Tutoriel Arduino Cellular Shield : 9 étapes (avec photos)
Tutoriel Arduino Cellular Shield : 9 étapes (avec photos)

Vidéo: Tutoriel Arduino Cellular Shield : 9 étapes (avec photos)

Vidéo: Tutoriel Arduino Cellular Shield : 9 étapes (avec photos)
Vidéo: Amazing arduino project 2024, Juillet
Anonim
Tutoriel Arduino Cellular Shield
Tutoriel Arduino Cellular Shield

L'Arduino Cellular Shield vous permet de passer des appels téléphoniques et d'envoyer des SMS. Le cerveau de ce bouclier est le SM5100B, qui est un module cellulaire robuste capable d'effectuer de nombreuses tâches de la plupart des téléphones portables standard. Ce bouclier nécessite l'utilisation d'une carte SIM pour se connecter à un réseau cellulaire. Le didacticiel qui suit est un didacticiel simple pour l'initialisation du bouclier, l'envoi et la réception de messages texte et d'appels téléphoniques. Pour en savoir plus sur les fonctionnalités du module, n'oubliez pas de consulter les fiches techniques sur la page produit de Sparkfun.

Étape 1: Allez chercher des trucs

Allez chercher des trucs
Allez chercher des trucs

Tu auras besoin de:

(x1) Blindage cellulaire (x1) Embases Arduino empilables (x1) Antenne quadri-bande (x1) Arduino Uno

(Notez que certains des liens sur cette page sont des liens d'affiliation. Cela ne change pas le coût de l'article pour vous. Je réinvestis le produit que je reçois dans la création de nouveaux projets. Si vous souhaitez des suggestions de fournisseurs alternatifs, veuillez me le faire savoir.)

Étape 2: souder les en-têtes

En-têtes de soudure
En-têtes de soudure
En-têtes de soudure
En-têtes de soudure
En-têtes de soudure
En-têtes de soudure

Insérez les en-têtes dans le blindage et soudez-les en place.

Étape 3: Insérer

Insérer
Insérer
Insérer
Insérer

Insérez les broches d'en-tête dans les prises de l'Arduino.

Étape 4: Ressouder

Revendeur
Revendeur

La connexion du câble d'antenne au module SM5100B n'est généralement pas très bonne. Ressoudez chacune des connexions du câble au module pour assurer la connectivité.

Étape 5: Fixez l'antenne

Fixez l'antenne
Fixez l'antenne
Fixez l'antenne
Fixez l'antenne

Enfilez l'antenne sur le câble d'antenne.

Étape 6: Insérez la carte SIM

Insérer la carte sim
Insérer la carte sim
Insérer la carte sim
Insérer la carte sim
Insérer la carte sim
Insérer la carte sim
Insérer la carte sim
Insérer la carte sim

Insérez fermement la carte SIM dans le logement de la carte SIM.

Étape 7: Initialiser

Initialiser
Initialiser

Exécutez le code suivant sur l'Arduino:

/*

SparkFun Cellular Shield - Exemple de croquis de passage SparkFun Electronics Écrit par Ryan Owens 3/Description: Ce croquis est écrit pour interfacer un Arduino Duemillanove à un Cellular Shield de SparkFun Electronics. Le bouclier cellulaire peut être acheté ici: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Dans cette esquisse, les commandes série sont transmises d'un programme de terminal au module cellulaire SM5100B; et les réponses du module cellulaire sont affichées dans le terminal. Vous trouverez plus d'informations dans les commentaires du croquis. Une carte SIM activée doit être insérée dans le support de carte SIM sur la carte pour utiliser l'appareil ! Cette esquisse utilise la bibliothèque NewSoftSerial écrite par Mikal Hart d'Arduiniana. La bibliothèque peut être téléchargée à cette URL: https://arduiniana.org/libraries/NewSoftSerial/ Ce code est fourni sous la licence Creative Commons Attribution. Plus d'informations peuvent être trouvées ici: https://creativecommons.org/licenses/by/3.0/ (Utilisez notre code librement ! N'oubliez pas de nous donner le crédit là où il est dû. Merci !) */ #include //Inclure le NewSoftSerial bibliothèque pour envoyer des commandes série au module cellulaire. #include //Utilisé pour les manipulations de chaînes char entrant_char=0; //Contiendra le caractère entrant du port série. LogicielCellule série (2, 3); //Créez un "faux" port série. La broche 2 est la broche Rx, la broche 3 est la broche Tx. void setup() { // Initialiser les ports série pour la communication. Serial.begin(9600); cell.begin(9600); //Commençons! Serial.println("Démarrage de la communication SM5100B…"); } void loop() { //Si un caractère arrive du module cellulaire… if(cell.available() >0) {coming_char=cell.read(); //Obtenir le caractère du port série cellulaire. Serial.print(incoming_char); //Imprime le caractère entrant dans le terminal. } //Si un caractère vient du terminal vers l'Arduino… if(Serial.available() > 0) {coming_char = Serial.read(); // Récupère le caractère venant du terminal if(incoming_char == '~') // Si c'est un tilde…coming_char = 0x0D; // …convertir en un retour chariot else if(incoming_char == '^') // S'il s'agit d'un curseur haut…coming_char = 0x1A; // …convertir en ctrl-Z cell.print(incoming_char); // Envoie le caractère au module cellulaire. Serial.print(incoming_char); // Renvoyez-le au terminal } } /* SM5100B Référence rapide pour le jeu de commandes AT *Sauf indication contraire, les commandes AT se terminent en appuyant sur la touche 'enter'. 1.) Assurez-vous que la bande GSM appropriée a été sélectionnée pour votre pays. Pour les États-Unis, la bande doit être définie sur 7. Pour définir la bande, utilisez cette commande: AT+SBAND=7 2.) Après avoir allumé l'Arduino avec le shield installé, vérifiez que le module lit et reconnaît la carte SIM. Avec une fenêtre terminale ouverte et réglée sur le port Arduino et 9600 buad, allumez l'Arduino. La séquence de démarrage devrait ressembler à ceci: Démarrage de la communication SM5100B… +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 La communication avec le module démarre après l'affichage de la première ligne. La deuxième ligne de communication, +SIND: 10, nous indique si le module peut voir une carte SIM. Si la carte SIM est détectée, tous les autres champs sont à 1; si la carte SIM n'est pas détectée, tous les autres champs sont à 0. 3.) Attendez une connexion réseau avant de commencer à envoyer des commandes. Après la réponse +SIND: 10, le module commencera automatiquement à essayer de se connecter à un réseau. Attendez de recevoir les réponses suivantes: +SIND: 11 +SIND: 3 +SIND: 4 La réponse +SIND du module cellulaire indique l'état du module. Voici un bref aperçu des significations des réponses: 0 Carte SIM retirée 1 Carte SIM insérée 2 Mélodie de la sonnerie 3 Le module AT est partiellement prêt 4 Le module AT est totalement prêt 5 ID des appels libérés 6 Appel libéré dont l'ID= 7 Le service réseau est disponible pour un appel d'urgence 8 Le réseau est perdu 9 Audio ON 10 Afficher l'état de chaque répertoire après la phrase d'initialisation 11 Enregistré au réseau Après vous être enregistré sur le réseau, vous pouvez commencer l'interaction. Voici quelques commandes simples et utiles pour commencer: Pour passer un appel: Commande AT - ATDxxxyyyzzzz Numéro de téléphone au format: (xxx)yyy-zzz try ---- cell.print("ATDxxxyyyzzzz"); Si vous passez un appel téléphonique, assurez-vous de vous référer à la fiche technique des appareils pour connecter un microphone et un haut-parleur au bouclier. Pour envoyer un message txt: Commande AT - AT+CMGF=1 Cette commande définit le mode de message texte sur 'texte'. Commande AT = AT+CMGS="xxxyyyzzzz"(retour chariot)'Texte à envoyer'(CTRL+Z) Cette commande est légèrement déroutante à décrire. Le numéro de téléphone, au format (xxx)yyy-zzzz, est placé entre guillemets doubles. Appuyez sur 'enter' après avoir fermé les citations. Saisissez ensuite le texte à envoyer. Terminez la commande AT en envoyant CTRL+Z. Ce caractère ne peut pas être envoyé depuis le terminal d'Arduino. Utilisez un autre programme de terminal comme Hyperterminal, Tera Term, Bray Terminal ou X-CTU. Le module SM5100B peut faire bien plus que cela ! Consultez les fiches techniques sur la page produit pour en savoir plus sur le module.*/Ouvrez le port série dans le terminal. Sur un Mac, cela se fait en tapant: screen /dev/tty.usbmodemfa131 9600 (remplacez tty.usbmodemfa131 par l'adresse série de votre Arduino) Attendez de voir la séquence suivante renvoyée: Démarrage de la communication SM5100B… +SIND: 3 +SIND: 4 +SIND: 11 (Si cette séquence n'est pas renvoyée, vérifiez les codes d'erreur répertoriés au bas du code ci-dessus et déboguez de manière appropriée. Vous devrez peut-être configurer le module pour une utilisation en Amérique du Nord - voir ci-dessous - avant qu'il ne s'enregistre sur le réseau (c'est-à-dire +SIND 11))Envoyez les commandes suivantes au port série: Envoyez ceci pour une utilisation en Amérique du Nord: AT+SBAND=7 Réglez l'heure actuelle - aa/mm/jj: AT+CCLK="13/05/15, 11: 02:00" Envoyer un appel test: ATD4155551212

Étape 8: SMS

Des messages texte
Des messages texte

Téléchargez et installez SerialGSM dans votre bibliothèque Arduino.

Pour envoyer un message texte, visitez le didacticiel du module cellulaire Tronixstuff et utilisez l'exemple de code 26.3:

Si vous souhaitez exécuter l'exemple de code pour recevoir un texte, connectez une LED à la broche 8 et mettez-la en série avec une résistance de 220 ohms à la terre.

Pour envoyer un message texte, visitez le didacticiel du module cellulaire Tronixstuff et utilisez l'exemple de code 26.5:

Envoyez l'une des commandes suivantes par SMS à votre module cellulaire:

//allume la LED #a1

//éteint la LED #a0

Étape 9: Voix

Voix
Voix
Voix
Voix
Voix
Voix

Connectez un microphone et un haut-parleur au blindage à l'aide d'un câble audio mis à la terre. Le fil de signal central doit aller aux bornes audio plus et le blindage doit aller aux bornes négatives respectives sur le blindage. Ces câbles doivent être connectés de la même manière du côté du microphone et du haut-parleur.

Pour initialiser un appel vocal, téléchargez le code suivant:

//**********************************************************************************

// FAIRE UN APPEL // // CODE DE TAMPON BASÉ SUR: // // //********************************************************************************** #include #define BUFFSIZ 90 //Set up buffer array char at_buffer[BUFFSIZ]; char buffidx; //Network state variables int network_registered; int network_AT_ready; //Code state variables int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; //Will hold the incoming character from the Serial Port. char incoming_char=0; //Create a 'fake' serial port. Pin 2 is the Rx pin, pin 3 is the Tx pin. SoftwareSerial cell(2, 3); void setup() { //Initialize Arduino serial port for debugging. Serial.begin(9600); //Initialize virtual serial port to talk to Phone. cell.begin(9600); //Hello World. Serial.println("Starting SM5100B Communication…"); delay(1000); //Set initial network state network_registered = 0; network_AT_ready = 0; } //Read AT strings from the cellular shield void readATString(void) { char c; buffidx= 0; // start at begninning for (x = 0; x 0) { c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; return; } if (c == '\n') { continue; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; return; } at_buffer[buffidx++]= c; } } } //Process the AT strings void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println("network Network Not Available"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("network Registered"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("network AT Ready"); } } void loop() { /* If called for the first time, loop until network and AT is ready */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); } } //LET'S MAKE A PHONE CALL! if(firstTimeInOtherLoop == 1){ //Change the 10 digit phone number to whatever you wish cell.println("ATD4155551212"); firstTimeInOtherLoop = 0; } }

To receive a voice call upload the following code

//**********************************************************************************

// ANSWER A CALL // // BUFFERING CODE BASED UPON: // // //************************************************ ************************************ #include #define BUFFSIZ 90 //Configurer le tableau de tampons char at_buffer [BUFFSIZ]; char buffidx; //Variables d'état du réseau int network_registered; int network_AT_ready; //Coder les variables d'état int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; entier x; //Contiendra le caractère entrant du port série. char entrant_char=0; //Créez un "faux" port série. La broche 2 est la broche Rx, la broche 3 est la broche Tx. LogicielCellule série (2, 3); void setup() { // Initialiser le port série Arduino pour le débogage. Serial.begin(9600); // Initialiser le port série virtuel pour parler au téléphone. cell.begin(9600); //Bonjour le monde. Serial.println("Démarrage de la communication SM5100B…"); retard(1000); //Définir l'état initial du réseau network_registered = 0; network_AT_ready = 0; } //Lire les chaînes AT à partir du bouclier cellulaire void readATString(void) { char c; buffidx= 0; // commence au début pour (x = 0; x 0) { c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; revenir; } if (c == '\n') { continuer; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; revenir; } at_buffer[buffidx++]= c; } } } //Traiter les chaînes AT void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println("Réseau réseau non disponible"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("réseau enregistré"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("network AT Ready"); } } void loop() { /* Si appelé pour la première fois, boucle jusqu'à ce que le réseau et AT soit prêt */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); } } if(firstTimeInOtherLoop == 1){ //Rechercher l'appel entrant if(strstr(at_buffer, "+CPAS: 3") != 0) { //Répondre au téléphone cell.println("ATA"); firstTimeInOtherLoop = 0; } } }

Image
Image

Avez-vous trouvé cela utile, amusant ou divertissant ? Suivez @madeineuphoria pour voir mes derniers projets.

Conseillé: