Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
View on GitHub

Télémètre à ultrasons SRF08 (I²C)

Description de la classe SRF08 développée en C# sous .NETMF 4.3 pour les cartes Netduino et FEZ (PANDA, COBRA...)

Download this project as a .zip file Download this project as a tar.gz file

Sommaire

  1. LE MATERIEL
    1. Devantech SRF08 UltraSonic Ranger
    2. Les cartes Netduino
    3. Les cartes FEZ
  2. LE LOGICIEL
    1. Contenu du répertoire proposé au téléchargement
    2. Le NuGet MicroToolsKit
    3. Le wiki .NetMF v4.3
    4. Description et utilisation de la classe SRF08
  3. LIENS
    1. Exemples codés en C# pour les cartes Netduino et Fez (Panda 3, BrainPad)
    2. La page du projet MicroToolsKit

1. LE MATERIEL


1.1 Devantech SRF08 UltraSonic Ranger


  • Présentation
  • Ce module est conçu pour les applications de télémétrie pour robotique ludique. Il est capable de déterminer la distance qui le sépare d'un obstacle se présentant devant lui (entre 3 cm et 6 m). Doté de 2 cellules à ultrasons, son principe de fonctionnement repose sur celui des "sonars". Il s'interface à l'aide de son bus I²C™ et se pilote à la manière d'une mémoire EEPROM type 24xx . Il peut retourner la valeur de la distance en " cm", en "inch" ou sous la forme d'une durée (en µs) liée à l’écho de l'émetteur à ultrasons.

  • Diagramme de rayonnement

  • Alimentation : 5V (15mA Typ. 3mA Standby).
  • Possibilités : Il est possible d'adresser jusqu'à 16 modules différents par le bus I2C™.
  • Dimensions : 43mm w x 20mm d x 17mm h
  • Documentation : Devantech SRF08 UltraSonic Ranger
  • Distributeur : Lextronic

1.2 Les cartes Netduino

Secret Labs

  • Microcontrôleur : STM32F405RG 32 bits à architecture Cortex-M4 cadencé à 168 MHz.
  • RAM : 164KB+.
  • Flash : 1408KB.
  • Port Ethernet : 10/100Mbps (Wifi:802.11b/g/n)*.
  • E/S numériques : 22
  • Entrées analogiques : 6
  • Stockage: carte µSD
  • IDE : Microsoft Visual Studio
  • Framework : .NETMF 4.3
  • Langages de programmation : C#, VB
  • Compatibilité : shield Arduino, Gadgeteer
Netduino plus 2 Netduino 3 wifi
Netduino 3 Ethernet Netduino 3 wifi*

1.3 Les cartes FEZ

GHI Electonics (Extrait)

  • Microcontrôleur : 180 MHz 32-bit ARM Cortex-M4.(120 MHz 32-bit ARM Cortex-M3 )*
  • SoC(SoM)* : G80 G120*
  • RAM : 156 KB(2.87 MB)*.
  • Flash : 256 KB (13.67 MB)*.
  • E/S numériques : 53(60)*
  • Entrées analogiques : 16(8)*
  • Réseaux : Ethernet TCP/IP, WiFi, and SSL.
  • Stockage: carte µSD
  • IDE : Microsoft Visual Studio
  • Framework : .NETMF 4.3
  • Langages de programmation : C#, VB
PANDA III COBRA III
PANDA III COBRA III* (compatible Gadgeteer)

2. LE LOGICIEL


2.1 Contenu du répertoire proposé au téléchargement


Le répertoire proposé au téléchargement (au format zip ou tar.gz) contient la solution SRF08 composée:

  • Du projet SRF08 : le code source de la classe SRF08.
  • Du projet Netduino : un exemple d'utilisation de cette classe avec une carte Netduino.
  • Du projet FezPanda : un exemple d'utilisation de cette classe avec une carte Fez Panda III.

2.2 Le NuGet MicroToolsKit

La dernière version compilée de la classe SRF08 se situe dans la bibliothèque MicroToolsKit disponible sur nuget.org.

Organisation des classes contenues dans MicroToolsKit [lien]

Note : Installer cette bibliothèque dans le projet simplifie l'utilisation de cette classe.


2.3 Le wiki .NetMF v4.3

    Un wiki est dédié au microframework .Net v4.3. Il propose au téléchargement :
  • Des exemples de code pour les cartes Netduino, GHI FEZ (Panda 3, BrainPad, etc.) . [lien]

2.4 Description et utilisation de la classe SRF08

  • Rôle: Contrôler un télémètre à ultrasons SRF08 via un bus I²C.
  • Assembly: MicroToolsKit (disponible sur nuget.org)
  • Espace de noms: Microtoolskit.Hardware.Sensors

Création d'un projet avec l'IDE Visual Studio

    • Créer un nouveau projet en suivant la démarche décrite dans le chapitre "Premier programme en C# étape par étape" avec une carte Netduino ou avec une carte Fez (Panda 3, BrainPad, etc.). [lien]
    • Utiliser le gestionnaire de paquets NuGet pour ajouter l'assembly MicroToolsKit (disponible sur nuget.org) dans le répertoire Références du projet.(clic droit sur Références puis Gérer les packages NuGet...)
    • Ajouter l'espace de noms Microtoolskit.Hardware.Sensors dans l'en-tête du fichier source.
    • Créer un objet en utilisant un des constructeurs SRF08.
    • Utiliser la méthode ReadRange pour déclencher et lire la distance en une seule opération.

Exemple
using System.Threading;
using Microtoolskit.Hardware.Sensors;

namespace FezPanda
{
    public class Program
    {
        public static void Main()
        {
			SRF08 I2CTelemeter = new SRF08();

			while(true)
			{
				Debug.Print("Distance: " + I2CTelemeter.ReadRange(SRF08.MeasuringUnits.centimeters_InRangingMode) + "cm");
				Thread.Sleep(3000);
			}
		}
	}
}
			

Constructeurs

Syntaxe Description
SRF08()

Instancie un objet "SRF08" avec les paramètres :
Adresse SLA du module = 0x70
Fréquence du bus: 100kHz

Remarque : Bien pratique en cas d'oubli ! A la mise sous tension, le module délivre son adresse sous la forme d'un code lumineux. Voir la documentation.

SRF08( byte SLA) Instancie un objet "SRF08".
SLA est l'adresse I2C sur 7 bits attribuée au module. Elle doit être comprise entre 0x70 et 0x7F
Fréquence du bus: 100kHz.
SRF08( byte SLA, UInt16 Frequency) Instancie un objet "SRF08".
SLA est l'adresse I2C sur 7 bits attribuée au module. Elle doit être comprise entre 0x70 et 0x7F.
Frequency est à définir dans l'intervalle [100kHz,400kHz].

Enumérations

Syntaxe Description
MeasuringUnits

Mode "Ranging"

inches_InRangingMode: résultat de la mesure en inches
centimeters_InRangingMode: résultat de la mesure en centimètres
microseconds_InRangingMode: résultat de la mesure en microsecondes

Mode "ANN"

inches_InANNMode: résultat de la mesure en inches
centimeters_InANNMode: résultat de la mesure en centimètres
microseconds_InANNMode: résultat de la mesure en microsecondes

Propriétés

Syntaxe Description
FirstEchoHighByte Retourne l'octet de poids fort du mot représentatif de la réception du premier écho.
FirstEchoLowByte Retourne l'octet de poids faible du mot représentatif de la réception du premier écho.
LightSensor Retourne un octet représentatif de la luminosité mesurée par la LDR.
Mode Retourne sous la forme d'une chaîne de caractères le mode de fonctionnement du module:
- Ranging
- ANN
VerSoft Retourne le numéro de version du logiciel du module SRF08. Octet non signé.

Méthodes

Syntaxe Description
UInt16 ReadRange( MeasuringUnits units)

Déclenche la mesure de distance et renvoie le résultat sous la forme d'un entier non signé sur 16 bits dans le format demandé.

Remarque: La méthode effectue une mesure en 75ms

units: unité du résultat de la mesure (centimètres, inches, microsecondes).

void TrigShotUS( MeasuringUnits units)

Déclenche la mesure de distance.

Le temps d'attente et la lecture du registre contenant le résultat de la mesure sont à la charge du programmeur.

units: unité du résultat de la mesure (centimètres, inches, microsecondes).