Table des matières:
- Étape 1: Équipement dont nous avons besoin..
- Étape 2: Connexions matérielles
- Étape 3: Coder
- Étape 4: Travail du code
- Étape 5: Applications et fonctionnalités
- Étape 6: Ressources pour aller plus loin
Vidéo: Orientation de la carte via le serveur Web : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
L'Internet des objets (IoT) est l'un des sujets les plus populaires sur la planète en ce moment. Et, il se développe rapidement de jour en jour avec Internet. L'Internet des objets transforme les maisons simples en maisons intelligentes, où tout, de vos lumières à vos serrures, peut être contrôlé depuis votre smartphone ou votre ordinateur de bureau. C'est le luxe que tout le monde veut posséder.
Nous jouons toujours avec les outils dont nous disposons et continuons à travailler pour passer à l'étape suivante de nos limites. Nous essayons de donner à nos clients une vision des dernières technologies et idées. Ainsi, vous pouvez transformer votre maison en maisons intelligentes et profiter du goût du luxe sans trop d'efforts.
Aujourd'hui, nous pensons travailler sur l'un des sujets les plus importants de l'IoT - l'orientation des cartes numériques.
Nous construirons un serveur Web à travers lequel nous pourrons surveiller les mouvements de tout appareil ou objet (c'est à vous, qui vous voulez espionner;)). Vous pouvez toujours penser à faire passer ce projet au niveau supérieur avec quelques modifications et n'oubliez pas de nous le dire dans les commentaires ci-dessous.
Commençons que.. !!
Étape 1: Équipement dont nous avons besoin..
1. Capteur LSM9DS0
Le capteur 3-en-1 fabriqué par STMicroelectronics, le LSM9DS0 est un système en boîtier comprenant un capteur d'accélération linéaire numérique 3D, un capteur de vitesse angulaire numérique 3D et un capteur magnétique numérique 3D. Le LSM9DS0 a une pleine échelle d'accélération linéaire de ±2g/±4g/±6g/±8g/±16g, une pleine échelle de champ magnétique de ±2/±4/±8/±12 gauss et un taux angulaire de ±245 /±500/±2000 dps.
2. Adafruit Huzzah ESP8266
Le processeur ESP8266 d'Espressif est un microcontrôleur 80 MHz avec une interface WiFi complète (à la fois comme client et point d'accès) et une pile TCP/IP avec prise en charge DNS également. L'ESP8266 est une plate-forme incroyable pour le développement d'applications IoT. L'ESP8266 fournit une plate-forme mature pour la surveillance et le contrôle des applications à l'aide du langage filaire Arduino et de l'IDE Arduino.
3. Programmeur USB ESP8266
son adaptateur hôte ESP8266 a été spécialement conçu par le Dcube Store pour la version Adafruit Huzzah de l'ESP8266, permettant l'interface I²C.
4. Câble de connexion I2C
5. Mini-câble USB
Le câble d'alimentation mini USB est un choix idéal pour alimenter l'Adafruit Huzzah ESP8266.
Étape 2: Connexions matérielles
En général, établir des connexions est la partie la plus simple de ce projet. Suivez les instructions et les images, et vous ne devriez avoir aucun problème.
Tout d'abord, prenez l'Adafruit Huzzah ESP8266 et placez-y le programmeur USB (avec port I²C orienté vers l'intérieur). Appuyez doucement sur le programmeur USB et nous en avons terminé avec cette étape aussi simple que bonjour (voir l'image ci-dessus).
Connexion du capteur et de l'Adafruit Huzzah ESP8266Prenez le capteur et connectez le câble I²C avec celui-ci. Pour un fonctionnement correct de ce câble, n'oubliez pas que la sortie I²C se connecte TOUJOURS à l'entrée I²C. La même chose a dû être suivie pour l'Adafruit Huzzah ESP8266 avec le programmeur USB monté dessus (voir l'image ci-dessus).
Avec l'aide du programmeur USB ESP8266, il est très facile de programmer ESP. Tout ce que vous avez à faire est de brancher le capteur dans le programmeur USB et vous êtes prêt à partir. Nous préférons utiliser cet adaptateur car il facilite beaucoup la connexion du matériel. Ne vous inquiétez pas de souder les broches de l'ESP au capteur ou de lire les schémas des broches et la fiche technique. Nous pouvons utiliser et travailler sur plusieurs capteurs simultanément, il vous suffit de faire une chaîne. Sans ces programmeurs USB plug and play, il y a beaucoup de risques de faire une mauvaise connexion. Un mauvais câblage peut tuer votre wifi ainsi que votre capteur.
Remarque: le fil marron doit toujours suivre la connexion de masse (GND) entre la sortie d'un appareil et l'entrée d'un autre appareil.
Alimentation du circuit
Branchez le câble Mini USB dans la prise d'alimentation d'Adafruit Huzzah ESP8266. Allumez-le et le tour est joué, nous sommes prêts à partir !
Étape 3: Coder
Le code ESP pour les capteurs Adafruit Huzzah ESP8266 et LSM9DS0 est disponible sur notre référentiel github.
Avant de passer au code, assurez-vous de lire les instructions données dans le fichier Lisez-moi et configurez votre Adafruit Huzzah ESP8266 en fonction de celui-ci. La configuration de l'ESP ne prendra que 5 minutes.
Le code est long mais il est dans la forme la plus simple que vous puissiez imaginer et vous n'aurez aucune difficulté à le comprendre.
Pour votre commodité, vous pouvez également copier le code ESP de travail pour ce capteur à partir d'ici:
// Distribué avec une licence libre-arbitre.// Utilisez-le comme vous le souhaitez, à profit ou gratuitement, à condition qu'il rentre dans les licences de ses œuvres associées. // LSM9DSO // Ce code est conçu pour fonctionner avec le mini module TCS3414_I2CS I2C disponible sur dcubestore.com.
#comprendre
#comprendre
#comprendre
#comprendre
// L'adresse I2C du gyroscope LSM9DSO est 6A (106)
#define Addr_Gyro 0x6A // L'adresse LSM9DSO Accl I2C est 1E(30) #define Addr_Accl 0x1E
const char* ssid = "votre ssid";
const char* mot de passe = "votre mot de passe"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;
Serveur ESP8266WebServer (80);
void handleroot()
{ données int non signées[6];
// Démarrer la transmission I2C
Wire.beginTransmission(Addr_Gyro); // Sélection du registre de contrôle 1 Wire.write(0x20); // Débit de données = 95 Hz, X, Y, axe Z activé, mise sous tension Wire.write (0x0F); // Arrêter la transmission I2C Wire.endTransmission();
// Démarrer la transmission I2C
Wire.beginTransmission(Addr_Gyro); // Sélection du registre de contrôle 4 Wire.write(0x23); // 2000 dps à grande échelle, mise à jour continue Wire.write (0x30); // Arrêter la transmission I2C Wire.endTransmission();
// Démarrer la transmission I2C
Wire.beginTransmission(Adr_Accl); // Sélection du registre de contrôle 1 Wire.write(0x20); // Taux de données d'accélération = 100 Hz, X, Y, axe Z activé, mise sous tension Wire.write (0x67); // Arrêter la transmission I2C sur le périphérique Wire.endTransmission();
// Démarrer la transmission I2C
Wire.beginTransmission(Adr_Accl); // Sélection du registre de contrôle 2 Wire.write(0x21); // Sélection pleine échelle +/- 16g Wire.write (0x20); // Arrêter la transmission I2C Wire.endTransmission();
// Démarrer la transmission I2C
Wire.beginTransmission(Adr_Accl); // Sélection du registre de contrôle 5 Wire.write(0x24); // Haute résolution magnétique, débit de données de sortie = 50 Hz Wire.write (0x70); // Arrêter la transmission I2C Wire.endTransmission();
// Démarrer la transmission I2C
Wire.beginTransmission(Adr_Accl); // Sélection du registre de contrôle 6 Wire.write(0x25); // Pleine échelle magnétique +/- 12 gauss Wire.write (0x60); // Arrêter la transmission I2C Wire.endTransmission();
// Démarrer la transmission I2C
Wire.beginTransmission(Adr_Accl); // Sélection du registre de contrôle 7 Wire.write(0x26); // Mode normal, mode de conversion magnétique continue Wire.write(0x00); // Arrêter la transmission I2C Wire.endTransmission(); retard (300);
for (int i = 0; i < 6; i++) { // Démarrer le fil de transmission I2C.beginTransmission(Addr_Gyro); // Sélection du registre de données Wire.write((40 + i)); // Arrêter la transmission I2C Wire.endTransmission();
// Demande 1 octet de données
Wire.requestFrom(Addr_Gyro, 1);
// Lecture de 6 octets de données
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb if (Wire.available() == 1) { data = Wire.read(); } }
// Convertir les données
int xGyro = ((données[1] * 256) + données[0]); int yGyro = ((données[3] * 256) + données[2]); int zGyro = ((données[5] * 256) + données[4]);
for (int i = 0; i < 6; i++) { // Démarrer le fil de transmission I2C.beginTransmission(Addr_Accl); // Sélection du registre de données Wire.write((40 + i)); // Arrêter la transmission I2C Wire.endTransmission();
// Demande 1 octet de données
Wire.requestFrom(Addr_Accl, 1);
// Lecture de 6 octets de données
// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb // zAccl lsb, zAccl msb if (Wire.available() == 1) { data = Wire.read(); } }
// Convertir les données
int xAccl = ((données[1] * 256) + données[0]); int yAccl = ((données[3] * 256) + données[2]); int zAccl = ((données[5] * 256) + données[4]);
for (int i = 0; i < 6; i++) { // Démarrer le fil de transmission I2C.beginTransmission(Addr_Accl); // Sélection du registre de données Wire.write((8 + i)); // Arrêter la transmission I2C Wire.endTransmission();
// Demande 1 octet de données
Wire.requestFrom(Addr_Accl, 1);
// Lecture de 6 octets de données
// xMag lsb, xMag msb, yMag lsb, yMag msb // zMag lsb, zMag msb if (Wire.available() == 1) { data = Wire.read(); } }
// Convertir les données
int xMag = ((données[1] * 256) + données[0]); int yMag = ((données[3] * 256) + données[2]); int zMag = ((données[5] * 256) + données[4]);
// Sortie des données vers le moniteur série
Serial.print("Axe X de rotation: "); Serial.println(xGyro); Serial.print("Axe Y de rotation: "); Serial.println(yGyro); Serial.print("Axe Z de rotation: "); Serial.println(zGyro); Serial.print("Accélération dans l'axe X: "); Serial.println(xAccl); Serial.print("Accélération dans l'axe Y: "); Serial.println(yAccl); Serial.print("Accélération dans l'axe Z: "); Serial.println(zAccl); Serial.print("Champ magnétique dans l'axe X: "); Serial.println(xMag); Serial.print("Champ magnétique dans l'axe Y: "); Serial.println(yMag); Serial.print("Magnétique déposée dans l'axe Z: "); Serial.println(zMag);
// Sortie des données vers le serveur Web
server.sendContent ("
MAGASIN DCUBE
www.dcubestore.com
"" LSM9DS0 Capteur I2C Mini Module
);
server.sendContent ("
Axe X de rotation = " + String(xGyro)); server.sendContent ("
Axe Y de rotation = " + String(yGyro)); server.sendContent ("
Axe Z de rotation = " + String(zGyro)); server.sendContent ("
Accélération dans l'axe X = " + String(xAccl)); server.sendContent ("
Accélération dans l'axe Y = " + String(yAccl)); server.sendContent ("
Accélération dans l'axe Z = " + String(zAccl)); server.sendContent ("
Magnétique déposé dans l'axe X = " + String(xMag)); server.sendContent ("
Magnétique déposé dans l'axe Y = " + String(yMag)); server.sendContent ("
Magnétique déposé dans l'axe Z = " + String(zMag)); delay(1000); }
void setup()
{ // Initialise la communication I2C en tant que MASTER Wire.begin(2, 14); // Initialiser la communication série, définir le débit en bauds = 115200 Serial.begin(115200);
// Se connecter au réseau Wi-Fi
WiFi.begin(ssid, mot de passe);
// Attendre la connexion
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connecté à "); Serial.println(ssid);
// Obtenir l'adresse IP de ESP8266
Serial.print("Adresse IP: "); Serial.println(WiFi.localIP());
// Démarrer le serveur
server.on("/", handleroot); serveur.begin(); Serial.println("Serveur HTTP démarré"); }
boucle vide()
{ server.handleClient(); }
Étape 4: Travail du code
Maintenant, téléchargez (ou git pull) le code et ouvrez-le dans l'IDE Arduino.
Compilez et téléchargez le code et voyez la sortie sur Serial Monitor.
Remarque: Avant de télécharger, assurez-vous d'entrer votre réseau SSID et votre mot de passe dans le code.
Copiez l'adresse IP de l'ESP8266 à partir du moniteur série et collez-la dans votre navigateur Web. Vous verrez une page Web avec l'axe de rotation, l'accélération et la lecture du champ magnétique dans l'axe 3.
La sortie du capteur sur Serial Monitor et Web Server est illustrée dans l'image ci-dessus.
Étape 5: Applications et fonctionnalités
Le LSM9DS0 est un système intégré comprenant un capteur d'accélération linéaire numérique 3D, un capteur de vitesse angulaire numérique 3D et un capteur magnétique numérique 3D. En mesurant ces trois propriétés, vous pouvez acquérir beaucoup de connaissances sur le mouvement d'un objet. En mesurant la force et la direction du champ magnétique terrestre avec un magnétomètre, vous pouvez approximer votre cap. Un accéléromètre dans votre téléphone peut mesurer la direction de la force de gravité et estimer l'orientation (portrait, paysage, plat, etc.). Les quadricoptères avec gyroscopes intégrés peuvent surveiller les tonneaux ou les tangages soudains. Nous pouvons l'utiliser dans le système de positionnement global (GPS).
Certaines autres applications incluent la navigation intérieure, les interfaces utilisateur intelligentes, la reconnaissance avancée des gestes, les périphériques d'entrée de jeu et de réalité virtuelle, etc.
Avec l'aide de l'ESP8266, nous pouvons augmenter sa capacité à une plus grande longueur. Nous pouvons contrôler nos appareils et surveiller leurs performances depuis nos ordinateurs de bureau et nos appareils mobiles. Nous pouvons stocker et gérer les données en ligne et les étudier à tout moment pour des modifications. D'autres applications incluent la domotique, le réseau maillé, le contrôle sans fil industriel, les moniteurs pour bébé, les réseaux de capteurs, l'électronique portable, les dispositifs de localisation Wi-Fi, les balises de système de positionnement Wi-Fi.
Étape 6: Ressources pour aller plus loin
Pour plus d'informations sur LSM9DS0 et ESP8266, consultez les liens ci-dessous:
- Fiche technique du capteur LSM9DS0
- Schéma de câblage LSM9DS0
- Fiche technique ESP8266
Conseillé:
Bracelet d'orientation connecté : 6 étapes
Bracelet d'orientation connecté : Ce projet académique, le bracelet d'orientation connecté, a été réalisé par quatre étudiants de l'école d'ingénieur Polytech Paris-UPMC : Sébastien Potet, Pauline Pham, Kevin Antunes et Boris Bras. Quel est notre projet ?Durant un semestre
Étudier l'orientation avec Raspberry Pi et MXC6226XU à l'aide de Python : 6 étapes
Étudier l'orientation avec Raspberry Pi et MXC6226XU à l'aide de Python : Les bruits ne sont qu'une partie du fonctionnement d'un véhicule. Le bourdonnement d'un moteur de véhicule très bien réglé est un son magnifique. Les bandes de roulement des pneus murmurent contre la route, le vent hurle en contournant les rétroviseurs, les morceaux de plastique et les morceaux du tableau de bord produisent du l
DOMOTIQUE BASÉE SUR UN SERVEUR LOCAL MQTT UTILISANT RASPBERRY PI ET LA CARTE NODEMCU : 6 étapes
DOMOTIQUE BASÉE SUR UN SERVEUR LOCAL MQTT UTILISANT RASPBERRY PI ET NODEMCU BOARD : Jusqu'à présent, j'ai réalisé plusieurs vidéos de tutoriel concernant le contrôle des appareils via Internet. Et pour cela, j'ai toujours préféré le serveur Adafruit MQTT car il était facile à utiliser et convivial également. Mais tout cela était basé sur Internet. Cela signifie que nous
Mise à niveau I2C du capteur d'orientation Thrustmaster Warthog : 5 étapes
Mise à niveau I2C du capteur d'orientation Thrustmaster Warthog : il s'agit d'un guide approximatif sur la façon de s'interfacer avec le protocole I2C utilisé sur le capteur d'orientation d'accélérateur Thrustmaster Warthog. Cela peut être utilisé pour passer de la ministick standard assez inutile à quelque chose de mieux, mais toujours en utilisant le contro USB standard
Horloge d'animation SMART LED connectée au Web avec panneau de commande Web, synchronisation du serveur de temps : 11 étapes (avec images)
Horloge d'animation SMART LED connectée au Web avec panneau de commande Web, synchronisation du serveur de temps : l'histoire de cette horloge remonte à plus de 30 ans. Mon père a lancé cette idée quand j'avais à peine 10 ans, bien avant la révolution des LED - à l'époque où les LED atteignaient 1/1000 de la luminosité de leur éclat aveuglant actuel. Une véritable