[Tuto] Mode sommeil sur Trinket

Les modes sommeil permettent de réduire énormément la consommation des cartes électroniques. Sur le Trinket d’Adafruit, il est souvent recommandé de passer par les librairies Adafruit_sleepydog dans cet exemple nous allons passer par l’utilisation d’une librairie plus bas niveau.

 

Le cœur de l’Adafruit Trinket est un microcontrôleur Attiny 85. Celui-ci est basé sur une architecture de type AVR. Nous allons donc passer dans notre cas par les librairies pour Arduino avr/sleep.h et avr/interrupt.h

Pour faire nos essais, nous allons nous baser sur le sketch exemple « Button » inclue dans l’IDE Arduino. Après quelques modifications de pinout, il est compatible avec le Trinket:

const int buttonPin = 0;     // the number of the pushbutton pin
const int ledPin =  1;      // the number of the LED pin</em></p>
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
   // initialize the LED pin as an output:
   pinMode(ledPin, OUTPUT);
   // initialize the pushbutton pin as an input:
   pinMode(buttonPin, INPUT);
}

void loop() {
   // read the state of the pushbutton value:
   buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
   if (buttonState == HIGH) {
     // turn LED on:
     digitalWrite(ledPin, HIGH);
   } else {
     // turn LED off:
     digitalWrite(ledPin, LOW);
   }
 }

Le mode sleep va fonctionner comme ceci:

  • Lorsque le bouton n’est pas pressé
  • La LED s’allume 3 secondes
  • Le mode sleep s’enclenche avec la LED qui reste allumée
  • Lors de l’appuie sur le bouton le Trinket sort du mode sleep

Voici le code que cela donne:

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT_PULLUP);
}

void sleep() {

    GIMSK |= _BV(PCIE);                     // Enable Pin Change Interrupts
    PCMSK |= _BV(PCINT0);                   // Use PB0 as interrupt pin 0
    ADCSRA &= ~_BV(ADEN);                   // ADC off
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);    // replaces above statement

    sleep_enable();                         // Sets the Sleep Enable bit in the MCUCR Register (SE BIT)
    sei();                                  // Enable interrupts
    sleep_cpu();                            // sleep

    cli();                                  // Disable interrupts
    PCMSK &= ~_BV(PCINT0);                  // Turn off PB0 as interrupt pin
    sleep_disable();                        // Clear SE bit
    ADCSRA |= _BV(ADEN);                    // ADC on

    sei();                                  // Enable interrupts
    } // sleep

ISR(PCINT0_vect) {
    // This is called when the interrupt occurs, but I don't need to do anything in it
    }

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
    delay(3000);
    sleep();
  } else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

A titre de comparaison, sans le mode sleep LED allumée le Trinket consomme 22mA sous 12V avec le mode sleep cela tombe à 13mA soit une économie de 9mA

[Tuto] Dépannage station de soudure à air chaud

Les stations de soudure à air chaud sont devenues un indispensable pour assembler des composants CMS. Parmi les nombreuses références disponibles sur le marché des modèles entrée de gamme à 700/800W sont très présents sur le marché. Aujourd’hui nous vous expliquons comment les dépanner.

Les symptômes de pannes sont généralement au niveau du pistolet:

  • Non démarrage lors du retrait du socle
  • Problème de chauffe
  • Problème de flux d’air

Les modèles étant assez variés dans les connexions entre pistolet et station, voici la démarche que nous suivons pour le dépannage de nos modèles (YOUYUE 8586 et SAIKE 898D):

  • Ouvrir le pistolet
  • Réaliser le mapping
Sur le YOUYUE 8586:
1Temp sensor
2Commun sensor
3Capteur reed
4Masse
5GND fan
6VCC fan
7Blanc cartouche chauffe
8Rouge cartouche de chauffe
  • Remplacer le composant défectueux
  • Remonter le tout

[TUTO] Update Firmware SIM8XX

Il existe plusieurs modules GSM de la série SIM800 de chez SIMCOM possédant chacun des spécificités propres : taille, interfaces, fonctions supplémentaires (GNSS, Bluetooth)… etc. Les firmwares de ces modules sont souvent mis à jour, intégrant alors de nouvelles fonctionnalités (ajout de nouvelles commandes, fix de bugs…). Cet article vous présente comment mettre à jour vos modules SIMCOM de la série SIM8XX et ainsi exploiter tout le potentiel de votre matériel.

Ce tutoriel utilise un flashage du firmware par la liaison série du module (RX / TX). Un Arduino en MultiSerial ou convertisseur UART – USB peuvent être utilisés afin d’interfacer le module avec votre ordinateur.

Le module utilisé pour la démonstration est un SIM800L de chez SIMCOM.

Téléchargement de l’outil :

Télécharger la dernière version du firmware du module sur le site officiel de SIMCOM : http://simcom.ee/documents/?dir

Lancer l’exécutable :

Entrer les configurations de la carte :

  • Target : type de carte utilisé (ici un SIM800L)
  • PortType : type de transfert, via liaison USB ou UART (RX / TX)
  • Com : port COM utilisé
  • Baud rate : vitesse de transmission (souvent 9600 ou 115200 par défaut)
  • Image Folder : sélection du firmware à flasher dans le module

Cliquer sur Image Folder afin de sélectionner le .cfg du firmware à flasher :

Vérifier que le module est bien ETEINT puis cliquer sur Start Download. Le module doit être éteint afin que le logiciel puisse flasher le module avant son démarrage complet. Une indication (waiting) apparait, attendant le démarrage du module.

Allumer le module. La barre de téléchargement doit alors se lancer.

Une fois le download correctement effectué, une fenêtre apparaît indiquant le bon déroulement du processus.

Sources d’erreurs possibles :

  • Mauvais port COM sélectionné
  • Erreur de branchement des signaux RX/TX
  • Ordre d’allumage du module
  • Mauvais firmware

nb : pour le cas du SIM800L, deux versions de firmwares existent. Selon la version du module il faut choisir l’une ou l’autre. La commande AT+GMR retourne la version du firmware dans le module :
1308B0XSIM800L16 = mettre la version de firmware disponible sur le site SIMCOM
1418B0XSIM800L24 = mettre la version de firmware suivante : 1418B05SIM800L24

[Tuto][API] Récupérer le nombre de followers Twitter facilement

Sur le même concept que la récupération du nombre de fans Facebook, il est possible de connaitre le nombre de followers d’une page Twitter. Nous fonctionnons avec une page Php qui affiche uniquement un nombre correspondant au nombre de Followers (Ci dessous avec la page LetmeknowFr)

<html>
<body>
<?php 
$tw_username = 'LetmeknowFr'; 
$data = file_get_contents('http://cdn.syndication.twimg.com/widgets/followbutton/info.json?screen_names='.$tw_username); 
$parsed = json_decode($data,true);
$tw_followers = $parsed[0]['followers_count'];
echo $tw_followers;
?>
</body>
</html>

A vous de créer l’objet pour visualiser cette donnée!

19708_smiirl-va-decliner-son-compteur-de-likes-sur-instagram-et-twitter

Résolution du problème de téléversement rencontré avec les clones Arduino Uno

Les clones Arduino sont des produits identiques aux Arduino officiels, pour un prix inférieur. Néanmoins, ils peuvent dans certains cas vous poser problème. Vous pouvez notamment rencontrer un problème de téléversement impossible, accompagné de l’erreur:

avrdude: skt500_recv(): programmer is not responding

ou

avrdude: skt500_getsync() attempt X of 10: not in sync: resp=0xXX

Lorsque votre Arduinho est branché à votre ordinateur, vous voyez la led ON et la led L allumée en permanence, et le bouton RESET ne fonctionne plus.

Nous vous proposons deux solutions pour palier à ce problème.

Avant tout vérifiez que :

  • Vous avez bien selectionné  » Arduino Uno  » dans le menu Outils > Type de carte.
  • Vous avez bien selectionné le bon port COM.

1ère solution: Mise à jour du pilote

Il se peut que le pilote de votre Arduino ne soit pas à jour, ou que ce ne soit pas le bon qui soit installé. Les clones Arduinos utilisent le chip CH340 pour la liaison USB. Vous pouvez télécharger son pilote ici:

http://www.wch.cn/download/CH341SER_EXE.html

Il ne vous reste plus qu’à l’installer. Votre Arduino devrait alors apparaître dans le gestionnaire de périphériques dans « Ports (COM et LPT) » sous cette forme:

hy

2ème solution: télécharger le bootloader sur l’ATmega

Il se peut que le bootloader de l’ATmega ne soit pas installé, ou non fonctionnel. Le tutoriel ci dessous est pour un Uno mais fonctionne également avec les autres modèles). Vous pouvez le télécharger vous même. Pour cela il vous suffit d’avoir:

  1. Branchez votre Arduino fonctionnel à votre ordinateur. Téléverser le programme que vous trouverez dans Fichier > Exemples > ArduinoISP (ne fonctionne pas si vous avez déjà placé le condensateur, pensez à l’enlever).
    arduinoisp
  2. Déconnectez votre Arduino de l’ordinateur.
  3. Réalisez le montage suivant:
Fix_Chinese_Arduino_clone_problems1629051120step4
IMG_7682
Arduino fonctionnelArduino clone non fonctionnel
Pin 10RESET
Pin 11Pin 11
Pin 12Pin 12
Pin 13Pin 13
5V5V
GNDGND

4. Rebranchez l’Arduino fonctionnel à votre ordinateur à l’aide du câble USB. Ouvrez un simple programme Blink par exemple. Allez dans Outils > Type de carte et selectionnez la carte que vous voulez « réparez ». Ici donc Arduino Uno.

5. Dans Outils > Programmeur , cliquez sur Arduino as ISP

6. Allez dans Outils et cliquez sur Graver la séquence d’initialisation, attendez jusqu’à bien avoir le message « Gravure de la séquence d’initialisation terminée ».

Voilà, votre Arduino devrait maintenant fonctionner ! Vous pouvez le vérifier en téléversant le programme de votre choix.

Arduino Yun et SIM800L: problème de buffer

L’association d’un Arduino Yun et d’un SIM800L peut vous permettre de recevoir et de lire les données http de site web. Néanmoins, vous pouvez rencontrer un problème avec le buffer si vous désirez accéder à une url trop longue. Pour cela, nous vous proposons deux solutions:

Solution 1:

Vous devez modifier votre librairie Arduino SoftwareSerial. Trouvez le fichier SoftwareSerial.h dans votre ordinateur. Il devrait se situer dans Arduino > hardware > arduino > avr > librairies > SoftwareSerial.h

Modifiez la ligne de commande :

  #define _SS_MAX_RX_BUFF 64 // RX buffer size

En :

  #define _SS_MAX_RX_BUFF 256 // RX buffer size

Si cette solution ne fonctionne pas, essayez la suivante:

Solution 2:

Commencez par fermer l’IDE Arduino, puis rouvrez le. Compilez votre programme et copiez le contenu du débogueur dans un éditeur de texte type Word ou NotePad.. Recherchez à présent le fichier HardwareSerial.h et repérer le chemin dans le pc de ce fichier. Il ne vous reste plus qu’à l’ouvrir et à modifier le Serial Buffer Size, en l’augmentant par exemple à 256.

noir
buffe_size

Vous pouvez trouver différents tutoriels sur le SIM800L sur notre blog:

Retrouver également le module SIM800L et son kit sut la boutique letmeknow.fr et au 85 rue de Clery à Paris.

[Tuto] Module GSM SIM800L – Envoyer un SMS

Pour voir le montage et la prise en main de ce module SIM800L, vous pouvez suivre le tuto sur cette page: Tuto SIM800L – Montage et prise en main

Le programme suivant utilise les AT commandes pour envoyer un SMS.

 // Importation des librairies
#include <SoftwareSerial.h>
#include <String.h> 

SoftwareSerial sim800l(7,8); // RX,TX
boolean sms;

void setup(){           // Début du setup
  sim800l.begin(9600);  // Démarrage du modem
  Serial.begin(9600);	// Initialisation de la communication série
  delay(500);		// Délai pour la connexion 
  sms = true;
  
  if(sim800l.available())
  Serial.write(sim800l.read());
  }
  
   void loop(){	// Début du loop
   if(sms==true){
     sendsms();				
     sms = false;
   }
 }
   
  void sendsms(){
    Serial.println("Sending text message...");
    sim800l.print("AT+CMGF=1\r");  // Lance le mode SMS
    delay(100);
    // Entrez votre numéro de téléphone    
    sim800l.print("AT+CMGS=\"+3367617****\"\r");  
    delay(100);
    // Entrez votre message ici    
    sim800l.print("Message ici \r");  
    // CTR+Z en langage ASCII, indique la fin du message
    sim800l.print(char(26));			  
    delay(100);
    sim800l.println();
    Serial.println("Text send");  // Le message est envoyé.
    }

Ou pour modifier les informations (numéro de téléphone, message) dans le moniteur série :

 // Importation des librairies
#include <SoftwareSerial.h>
#include <String.h>
SoftwareSerial sim800l(7,8);
boolean sms;

void setup(){
  sim800l.begin(9600);  // Démarrage du modem
  Serial.begin(9600);   // Initialisation de la communication série
  delay(500);           // Délai connexion
  sms = true;
  if(sim800l.available())
    Serial.write(sim800l.read());
  }

void loop(){
  if(sms==true){   // on ne passe qu’une seule fois dans le loop()
    sendsms();
  sms = false;
}
}

void sendsms(){
  // set SMS mode
  Serial.println("SMS sender");
  sim800l.print("AT+CMGF=1\r");    // initialise le mode SMS
  delay(100);
  // phone number
  Serial.println("Enter the phone number :");
  char number[20] ;
  readSerial(number);
  sim800l.print("AT+CMGS=");
  sim800l.print(number);
  sim800l.print("\"\r");
  // message
  delay(100);
  Serial.print("Enter your message to send to : ");
  Serial.println(number);
  char message[200];
  readSerial(message);
  sim800l.println(message);
  sim800l.print(char(26));
  delay(100);
  sim800l.println();
  Serial.print("Message : ");
  Serial.println(message);
  Serial.println("Text send");
 }

int readSerial(char result[]){
  int i = 0;
  while (1)
  {
  while (Serial.available() > 0){
    char inChar = Serial.read();
    if (inChar == '\n')
    {
  result[i] = '\0';
  Serial.flush();
  return 0;
  }
  if (inChar != '\r'){
    result[i] = inChar;
    i++;
  }}}}

Récapitulatif des commandes AT pour l’envoi d’un SMS

CommandeRéponseInfo
AT+CMGF=1OKConfigure le mode SMS
AT+CMGS=”<numéro de telephone>”  ENTER

> Votre message  CTR+Z

OKEnvoi un SMS au numéro indiqué

[Tuto] Module GSM SIM800L – Prise en main

Le module GSM SIM800L est l’un des plus petits modules GSM du monde avec une taille de 2.2 cm x 1.8 cm. C’est un module puissant qui démarre automatiquement et recherche automatiquement le réseau. Il inclut notamment le Bluetooth 3.0+EDR et la radio FM (récepteur uniquement). Il vous permettra d’échanger des SMS, de passer des appels mais aussi, et c’est nouveau, de récupérer de la data en GPRS 2G+. Ainsi vous pourrez faire transiter des données sur une très longue distance, si par exemple la radio FM ou le Bluetooth ne vous suffit plus.

Librairies : SoftwareSerial.h

Matériel : Arduino, SIM800L, carte SIM, diode 1N4007, jumpers, breadboard

Datasheets : SIM800L | At command

Montage :

Ce module nécessite une alimentation entre 3,4V et 4,4V. L’alimentation 5V de l’Arduino ne lui convient donc pas. Pour contrer ce problème d’alimentation, on ajoute une diode 1N4007 entre le 5V de l’Arduino et le pin VCC du SIM800L. Le SIM800L nécessite un pic de courant d’environ 2A. Le reste du branchement est détaillé ci-dessous. La pin reset doit être relié au 3,3v de l’arduino.

untitled-2
20161003_1223291

Il faut également insérer votre SIM dans le compartiment prévu à cet effet sur le module, comme montré dans la photo ci-dessous. Le sens d’insertion de la carte SIM dans le module à son importance. La carte SIM doit être une micro SIM.

SIM800L

Les AT commands (Commandes Hayes)

Les commandes AT sont définies dans la norme GSM 07.07.AT est l’abréviation de ATtention. Ces 2 caractères sont toujours présents pour commencer une ligne de commande sous forme de texte (codes ASCII). Les commandes permettent la gestion complète du module.

On peut utiliser ces commandes directement dans le moniteur série. Il suffit de compiler, téléverser le programme ci-dessous et d’ouvrir le moniteur série. Vous n’avez plus qu’à entrer les différentes commandes AT pour effectuer ce que vous désirez.

Vous pouvez envoyer ou recevoir des SMS, passer ou recevoir un appel, récupérer des données HTTP en entrant directement dans le moniteur série les commandes nécessaires.

// Connect VCC to +5V
// Connect GND to Ground
// Connect RXD (data into SIM800L) to Digital 8
// Connect TXD (data out from SIM800L) to Digital 7
#include <SoftwareSerial.h>
SoftwareSerial sim800l(7, 8); // RX, TX

void setup() {
 Serial.begin(9600);
 sim800l.begin(9600);
}

void loop(){
 if (sim800l.available())
 Serial.write(sim800l.read());

 if (Serial.available()) {
 while(Serial.available()){
 sim800l.write(Serial.read());
 }
 sim800l.println();
 }
}

Le code PIN

Il se peut que votre carte SIM soit verrouillée à l’aide d’un code PIN. Vous devrez entrer à chaque fois votre code pour déverrouiller votre carte. Ajouter les lignes de commandes suivantes avant le setup() et remplacer les XXXX par votre code PIN.

// Code PIN de la carte SIM

String SIM_PIN_CODE = String( "XXXX" );

Puis, ajoutez dans la boucle setup():

sim800l.print("AT+CPIN=");
sim800l.println( SIM_PIN_CODE );

1er test : Lancer le module et récupérer son IMEI

On peut utiliser les AT commandes pour obtenir l’IMEI. La commande AT+GSN récupère l’IMEI de votre module. Vous pouvez ainsi vérifier que ce que vous obtenez est bien l’IMEI inscrit sur votre module.

On peut trouver dans le logiciel de l’Arduino un programme qui va nous permettre d’afficher l’IMEI de la SIM800L dans le moniteur série. Ce programme se trouve dans Fichier > Exemples > GSM > Tools > TestModem.

Les principales commandes de test :

ATISIM800 R13.08Statut du modem
AT+CREG+CREG : 0,5Statut du réseau.

1er indice : 0 -> GSM

2ème indice : 0 -> pas de réseau

5 -> réseau ok

 

 

AT+CPIN ?+CPIN READYPas de code PIN nécessaire
AT+CSQ+CSQ : <rssi>,<ber>Intensité du signal.

<rssi> : received signal strength indication.

<ber>: bit error rate (%)

0 -> less than 0,2%

AT+COPS ?+COPS : <mode>,<format>,<opérateur>Affiche l’opérateur sélectionné

[Tuto] Magician Chassis

Intro :

Le Magician châssis est une plateforme robotique facile à assembler soi-même. Il fonctionne grâce à  deux moto-réducteurs à courant continu. Il propose un support 4 piles AA pour l’alimentation. Une fois le châssis monté, on peut l’équiper de capteurs ou d’actionneurs pour en faire un véritable robot intelligent et autonome.

Contenu :

  • 2 plaques en acrylique de 3mm découpées au laser
  • 2 moteurs DC 6V double axe
  • 2 roues complètes
  • 1 roue à bille
  • 1 support de 4 piles AA
  • 1 ensemble de quincaillerie, vis et écrous
  • 1 ensemble de fil de câblage.
pieces
part_list

1ère étape :

Positionnez les quatre supports des moteurs à leur emplacement respectif. Ils seront ensuite fixés sur le châssis une fois les moteurs positionnés et vissés.

Step1
step1bis

2ème étape :

Assemblez le « speed board holder » sur l’axe de rotation de la roue de chaque moteur. Il ne faut pas les enfoncer entièrement pour pouvoir ensuite les positionner correctement et éviter qu’elles frottent contre le châssis. Cette pièce vous permettra à l’aide d’un capteur additionnel de mesurer la vitesse de rotation du moteur.

step2bis
4th step

3ème étape :

Une fois le moteur positionné sur le châssis entre les deux supports, on peut visser l’ensemble avec les vis M3*30, deux vis par support. Attention, les vis sont un peu difficiles à insérer.

step3
2nd and 3rd steps

4ème étape :

Ajoutez les deux roues de chaque côté des moteurs, sur les axes de rotation. De même, évitez de les emboîter entièrement pour ne pas qu’elles frottent contre le châssis.

step4
4th step

5ème étape :

On vient à présent fixer la roue à bille sur le châssis. Comme indiqué sur la notice du montage, on vient placer la roue sur deux entretoises (L25 spacers) et on visse l’ensemble avec quatre petites vis (M3*6 screws).

step5
5th step

6ème étape :

Le support de piles vient ensuite se positionner au-dessus du châssis. Il est maintenu par deux vis à tête plate (M3*10 flathead screws). Il faut forcer un peu pour faire rentrer les vis dans les trous déjà réalisés dans le support de piles.

step6
6th step

7ème étape :

Pour pouvoir ensuite fixer la partie supérieure du châssis, on ajoute 5 entretoises (L25 spacers) sur notre montage. On vient visser ses entretoises avec les vis M3*6 aux emplacements indiqués par des points rouges sur la photo ci-dessus. Pour les deux du haut, il faut bien les visser sur la « base » du T pour pouvoir positionner correctement la plaque supérieure du châssis dans l’étape suivante.

step7
step7bis

8ème étape :

On peut finalement venir fixer la plaque supérieure du châssis sur les entretoises à l’aide de cinq vis M3*6.

step8

Le Magician châssis est terminé.

Montage terminé :

Finished 1
Finished 2
Finished 3