Table des matières:

TinyLiDAR dans votre garage ! : 10 étapes
TinyLiDAR dans votre garage ! : 10 étapes

Vidéo: TinyLiDAR dans votre garage ! : 10 étapes

Vidéo: TinyLiDAR dans votre garage ! : 10 étapes
Vidéo: № 153 Еженедельный обзор № 39 – Новые продукты для производителей 2024, Novembre
Anonim
TinyLiDAR dans votre garage !
TinyLiDAR dans votre garage !

Projet d'ouvre-porte de garage WiFi bricolage

Le monde de l'IoT commence tout juste à exploser - toutes les entreprises technologiques du monde entier essaient de comprendre comment elles s'intégreront dans ce nouveau monde. C'est juste une grande opportunité ! Donc, pour cette instructable, conformément à ce thème IoT, nous verrons comment vous pouvez créer votre propre démonstrateur IoT qui est en fait assez utile;)

TL;Résumé DR

  • configurer un workflow fiable pour coder le module WiFi ESP32
  • flashez-le
  • assemblez-le sur votre planche à pain
  • téléchargez notre code d'application et décompressez-le
  • ajoutez vos identifiants WiFi et IP statique
  • connectez-le à votre réseau WiFi
  • modifier les seuils et le monter dans votre garage
  • câblez-le aux contacts de votre ouvre-porte de garage
  • et cliquez loin !
  • AUCUNE SOUDURE NÉCESSAIRE (sauf pour les broches aux cartes de dérivation si nécessaire)

Pièces requises

  • Module de capteur de distance de temps de vol tinyLiDAR
  • Wipy3.0 ou carte WiFi basée sur ESP32 similaire
  • Relais à semi-conducteurs optiquement isolé (Omron G3VM-201AY1) pour contrôler l'ouvre-porte de garage
  • Résistance de 470 ohms (5% 1/8 watt ou plus est correct)
  • Bouton-poussoir momentané pour la broche BOOT (GPIO0) pour mettre à niveau le firmware sur la carte ESP32
  • Clé USB vers série pour télécharger le code et interagir avec REPL sur l'ESP32 (utilisez la version 3.3v I/O)
  • Planche à pain + fils
  • Alimentation: 3,3 V à 5 V à 500 mA ou plus. Vous pouvez utiliser un chargeur de téléphone portable microUSB pour l'alimentation et la carte de dérivation microUSB à brancher sur votre planche à pain.

Étape 1: IoT Quoi ?

IdO Quoi ?
IdO Quoi ?

Vous avez sans doute déjà entendu parler du terme IoT dans tous les médias, mais qu'est-ce que cela signifie ?

En gros, cela signifie connecter toutes sortes de capteurs et d'objets contrôlables à Internet. De nos jours, Internet est synonyme de sans fil et donc tout ce qui est électronique devient soudainement connecté sans fil via une sorte de lien sans fil comme WiFi/BT/LoRa/SigFox etc. Une fois connecté à Internet, nous pouvons détecter et/ou contrôler ces choses à partir de notre contrôleur mobile préféré comme notre téléphone portable ou les automatiser via une application s'exécutant sur un serveur quelque part (c'est-à-dire le cloud).

Bien que les grandes entreprises aient récemment commercialisé davantage de commandes vocales, d'IA et de connectivité cloud; les bases pour que tout cela se produise sont toujours les mêmes. Vous devez connecter votre "truc" à une liaison sans fil avant que l'un de ces concepts ne soit possible. Commençons donc par les bases et apprenons à connecter le capteur de distance de temps de vol tinyLiDAR à un module WiFi à faible coût, puis à envoyer des données dans les deux sens sur le réseau. À la fin de cette instructable, vous aurez votre propre télécommande de porte de garage compatible WiFi avec un moniteur en temps réel pour vérifier si la porte est ouverte ou fermée.

Techniquement parlant, comme le montre le schéma fonctionnel ci-dessus, ce projet implémente un serveur Web micropython s'exécutant sur un module WiFi ESP32 utilisant le protocole de communication « websockets » pour transmettre des données à partir de n'importe quel navigateur Web mobile. De plus, nous avons le capteur de distance de temps de vol tinyLiDAR qui prend des mesures à la demande afin que vous puissiez vérifier si la porte du garage a été laissée ouverte.

Étape 2: Essayez-le - Non vraiment, essayez-le maintenant

Essayez-le - Non vraiment, essayez-le maintenant
Essayez-le - Non vraiment, essayez-le maintenant

Il s'agit d'un domaine relativement nouveau de l'électronique, il faudra donc beaucoup d'expérimentations pour que les choses fonctionnent correctement. Nous espérons que vous pourrez vous appuyer sur cette base de code et créer vos propres projets IoT plus intéressants.

Tout le code utilisé dans cet article fonctionnait bien au moment de la rédaction de cet article. Cependant, comme le taux d'innovation dans l'espace IoT augmente, les choses peuvent avoir changé au moment où vous lisez ceci. Dans tous les cas, résoudre les problèmes et les adapter à votre propre usage vous permettra au moins de vous plonger dans ce nouvel espace passionnant et de commencer à penser comme un ingénieur IoT !

Prêt? Commençons par la première étape de la configuration de votre propre environnement de développement stable.

Étape 3: Micropython & ESP32

Micropython & ESP32
Micropython & ESP32

Les modules WiFi ESP32 ont été créés par Espressif et ils se sont beaucoup améliorés depuis leurs modules ESP8266 de première génération il y a quelques années seulement. Ces nouvelles versions ont beaucoup plus de mémoire, un processeur plus puissant et plus de fonctionnalités que les modules d'origine et sont toujours à faible coût. Le diagramme ci-dessus vous donne une idée de tout ce qu'ils ont pu emballer dans cette petite puce ESP32. L'ESP32 IC lui-même est un microcontrôleur dual core avec une radio WiFi 802.11b/g/n et également une radio Bluetooth 4.2 intégrée. Les modules basés sur ESP32 ajouteront généralement une antenne, une mémoire FLASH supplémentaire et des régulateurs de puissance.

Notez que lorsque nous disons module ESP32 dans cette instructable, nous faisons référence aux cartes Pycom Wipy3.0 qui sont basées sur la puce/module ESP32. D'après notre expérience, les cartes Pycom semblent être d'une qualité de construction supérieure à celle des modules ESP32 à faible coût typiques disponibles. Lors du développement, il est toujours utile de réduire autant de variables que possible, nous avons donc opté pour les cartes Pycom au lieu de génériques à faible coût.

Pour les applications OEM, le codage ESP32 est généralement effectué en langage C, mais heureusement, nous avons également le choix entre de nombreuses options, vous n'aurez donc pas à descendre à ce bas niveau si vous ne le souhaitez pas. Nous avons choisi d'utiliser le micropython pour tout notre codage dans cette instructable.

Micropython, comme vous l'avez peut-être deviné, est un sous-ensemble du langage de programmation Python complet qui alimente certains moteurs de recherche et sites Web moins connus comme Google, YouTube et Instagram;)

Micropython-logo
Micropython-logo

Micropython a commencé comme un projet kickstarter à l'origine pour le processeur STM32, mais est devenu très populaire pour de nombreux microcontrôleurs différents maintenant. Nous utilisons ici le dernier port officiel Pycom ESP32 de micropython.

Étape 4: La manière la plus rapide

La voie la plus rapide
La voie la plus rapide

Le code micropython a une interface graphique frontale simple appelée REPL qui signifie "Read-Eval-Print Loop". Le REPL de l'ESP32 fonctionne normalement à 115,2 Kbauds depuis son accès via le port série. L'image ci-dessus montre cette invite REPL signifiée par ses trois flèches en attente de commandes directes. C'est un moyen facile d'essayer nos commandes simples et la plupart des codeurs l'utilisent pour développer leur logiciel, mais nous avons trouvé que c'était un chemin extrêmement lent. Par conséquent, nous avons décidé de le faire d'une manière différente pour ce instructable…

Comme les modules ESP32 ont une connectivité WiFi rapide, nous avons juste besoin d'accéder au module via WiFi via un serveur FTP qui est déjà intégré dans le code micropython standard. Cela nous permettra ensuite d'utiliser des clients FTP comme FileZilla pour simplement faire glisser et déposer notre code sur l'ESP32.

Pour ce faire, nous devons d'abord installer le module ESP32 sur votre réseau WiFi. Les modules Wipy3.0 exécutent un petit point d'accès par défaut à la mise sous tension afin que vous puissiez vous y connecter directement depuis un ordinateur portable à 192.168.4.1. Découvrez plus de détails ici si vous aimez cette méthode.

Nous travaillons sur des ordinateurs de bureau dans notre laboratoire, nous voulions donc que les modules ESP32 se connectent à notre réseau à la place. Pour ce faire, il suffit de donner au module une adresse IP statique et nos informations de mot de passe pour se connecter à notre réseau WiFi.

Étape 5: Télécharger maintenant

Télécharger maintenant
Télécharger maintenant
Télécharger maintenant
Télécharger maintenant
Télécharger maintenant
Télécharger maintenant
Télécharger maintenant
Télécharger maintenant

Téléchargez le code de l'application maintenant et décompressez les fichiers dans un dossier temporaire sur votre ordinateur. Ensuite, commencez à éditer les fichiers de script mywifi.txt et boot.py avec vos propres informations d'identification de réseau WiFi.

Btw - notre éditeur de texte préféré est toujours SublimeText. Cela peut être téléchargé ici.

Vous devez également télécharger le logiciel de terminal TeraTerm et le logiciel FTP FileZilla maintenant si vous ne les avez pas déjà sur votre ordinateur.

Vous devrez configurer FileZilla comme indiqué dans les images ci-dessus. Dans le gestionnaire de site, vous devez également "ajouter un nouveau site" pour la connexion ESP32 à l'aide de l'adresse IP statique que vous avez choisie, comme indiqué ci-dessus. L'utilisateur est "micro" et le mot de passe est "python". Il est important d'utiliser un FTP passif et de le limiter à des connexions uniques. Nous avons constaté que la limitation de la vitesse de téléchargement aidait également à éviter les blocages de téléchargement. Bien que cela ne soit pas montré dans les images, il serait utile d'associer le programme SublimeText pour les types de fichiers afin que vous puissiez éditer le code en double-cliquant sur le côté gauche de l'écran FTP. Pour ce faire, il suffit d'aller dans le menu Paramètres et dans les Associations d'édition de fichiers / Types de fichiers, entrez l'emplacement de votre fichier exe SublimeText pour chaque association. Par exemple le nôtre était:

js "C:\Sublime Text Build 3065 x64\sublime_text.exe"

. "C:\Sublime Text Build 3065 x64\sublime_text.exe" htm "C:\Sublime Text Build 3065 x64\sublime_text.exe" html "C:\Sublime Text Build 3065 x64\sublime_text.exe" py "C:\Sublime Text Build 3065 x64\sublime_text.exe" css "C:\Sublime Text Build 3065 x64\sublime_text.exe"

Copiez les fichiers d'application extraits pour cette instructable dans un nouveau dossier appelé "FTP" sur votre ordinateur comme nous l'avons fait. Il sera plus facile de faire glisser d'ici à l'intérieur de FileZilla plus tard.

C'est normalement une bonne idée d'avoir le tout dernier firmware en cours d'exécution sur l'ESP32. La mise à niveau des modules Pycom pour utiliser le dernier micropython est très simple et peut être effectuée en 3 minutes environ avec leur outil de mise à jour du firmware.

Assurez-vous simplement de définir le port COM de votre dongle USB vers série et désélectionnez le mode haute vitesse comme indiqué dans l'image "Communication" ci-dessus. Le nôtre était le port COM 2. Notez que pour mettre les modules ESP32 dans ce mode de mise à niveau, vous devrez appuyer sur le bouton GPIO0/Boot (sur la broche P2) tout en appuyant et en relâchant le bouton Reset.

Étape 6: Temps matériel

Temps matériel
Temps matériel
Temps matériel
Temps matériel

Ce serait maintenant le bon moment pour câbler le matériel sur une planche à pain, comme indiqué dans le schéma illustré ci-dessus.

Après tout cela est terminé. Démarrez le logiciel du terminal avec le port COM approprié pour votre dongle USB vers série, réglez-le sur 115,2 Kbaud.

À la mise sous tension, le module devrait afficher l'invite REPL familière qui donne trois flèches ">>>".

Allez maintenant dans votre fichier mywifi.txt édité et copiez tout le contenu (CTRL+C). Ensuite, accédez à l'écran du terminal REPL et appuyez sur CTRL + E pour passer en mode couper-coller. Vous faites ensuite un clic droit pour coller le contenu dans l'écran REPL, puis appuyez sur les touches CTRL + D pour exécuter ce que vous avez collé.

Il devrait commencer immédiatement un compte à rebours pour dire qu'il essaie de se connecter à votre réseau WiFi. La capture d'écran ci-dessus montre un message de connexion réussie.

Une fois connecté, vous pouvez utiliser FileZilla pour vous connecter au serveur FTP dans les modules à l'adresse IP statique que vous avez déjà choisie dans vos fichiers mywifi.txt et boot.py.

Étape 7: Toujours avec nous ?

Toujours avec nous ?
Toujours avec nous ?
Toujours avec nous ?
Toujours avec nous ?

Si tout va bien jusqu'à présent, tant mieux pour vous ! Le travail acharné est fait:) Maintenant, la navigation se fera en douceur - juste un tas de copier-coller et vous serez opérationnel afin que vous puissiez ensuite le monter dans votre garage.

Pour modifier n'importe quel code, vous pouvez double-cliquer sur le côté gauche de la fenêtre FTP dans FileZilla et il lancera SublimeText. Enregistrez vos modifications, puis faites-les glisser vers le côté droit qui est la fenêtre ESP32.

Pour l'instant, faites simplement glisser les fichiers du côté gauche vers le côté droit de FileZilla pour télécharger chaque fichier séparément vers le module ESP32. Cela ne prend que quelques secondes au lieu de quelques minutes comme le fait la méthode REPL normale. Veuillez noter que tous les fichiers doivent se trouver dans le répertoire racine appelé "flash" à l'intérieur de la carte Pycom. Vous pouvez créer un signet dans FileZilla pour vous permettre de revenir plus facilement ici la prochaine fois.

Si jamais vous rencontrez un problème où FileZilla se bloque et expire pour le téléchargement, vous remarquerez un fichier du côté ESP32 qui a 0 octet. Essayer de l'écrire peut vous rendre fou car il ne se termine jamais, peu importe ce que vous essayez ! C'est un état très étrange et cela arrive très rarement. La meilleure solution pour cela est de supprimer le fichier de 0 octet et de redémarrer le module. Obtenez ensuite une nouvelle copie du fichier source à télécharger à nouveau sur le module ESP32. Notez qu'une nouvelle copie est la clé ici. D'une manière ou d'une autre, le fichier source ne sera tout simplement pas téléchargé correctement s'il se bloque comme cela, même une seule fois.

Nous avons trouvé qu'il était utile de faire glisser chaque fichier individuellement vers le module ESP32 en commençant par boot.py. Ce premier fichier est responsable de la mise en réseau de votre module, vous n'aurez donc plus besoin de copier-coller dans REPL. Vous pouvez cependant saisir le dossier www et le faire glisser d'un seul coup. Cela a toujours fonctionné pour nous dans notre développement. Tous ces fichiers sont stockés dans le stockage flash non volatile intégré dans le module ESP32 afin qu'ils soient là après la mise hors tension. Juste pour info - le main.py sera exécuté après boot.py à chaque mise sous tension du module.

Étape 8: Astuces de piratage

Astuces de piratage
Astuces de piratage

Jetez un œil à tout le code et essayez sur Google pour les mots-clés que vous ne reconnaissez pas. Une fois que tout est opérationnel, vous pouvez essayer de changer ce que vous voulez pour voir ce qu'il fait.

Si quelque chose ne va pas, vous pouvez toujours effacer le code et/ou re-flasher le module en environ 3 minutes comme vous l'avez déjà fait plus tôt.

Pour reformater le flash et effacer tout votre code d'un seul coup, vous pouvez taper ce qui suit dans REPL:

importer le système d'exploitation

os.mkfs('/flash')

Ensuite, effectuez un cycle d'alimentation ou appuyez sur le bouton de réinitialisation de la carte Wipy.

Notez qu'il existe également un autre moyen de contourner boot.py et main.py si les choses tournent mal. Connectez simplement temporairement la broche P12 à la broche de sortie 3,3 V et appuyez sur le bouton de réinitialisation comme indiqué ci-dessus. Il contournera tout votre code et ira directement à REPL une fois afin que vous puissiez comprendre les choses sans supprimer tout votre code de flash.

Une fois le téléchargement de tous les fichiers terminé, appuyez simplement sur le bouton Réinitialiser du module ESP32 pour le redémarrer.

Vous verrez le compte à rebours familier sur l'écran du terminal REPL lorsqu'il se reconnectera à votre réseau WiFi. La différence est que ce code s'exécute maintenant à partir du fichier boot.py cette fois.

Étape 9: pages Web

Les pages Web
Les pages Web
Les pages Web
Les pages Web
Les pages Web
Les pages Web
Les pages Web
Les pages Web

Le microserveur Web devrait être opérationnel maintenant sur l'ESP32, alors essayez-le à l'aide de votre navigateur de bureau ou de votre appareil mobile.

Accédez simplement à votre adresse IP statique et vous devriez voir un écran similaire à celui ci-dessus.

Deux pages Web sont diffusées à partir de notre microserveur Web qui s'exécute sur l'ESP32.

La première est la page index.html par défaut qui vous donne un simple bouton OUVRIR/FERMER pour simuler le type de clicker d'ouvre-porte de garage que vous avez. Lorsque vous appuyez dessus sur votre navigateur Web, vous verrez une grande icône d'engrenage bleu apparaître. Ceci est une confirmation que la connexion websocket a été établie avec succès et que vous avez reçu un accusé de réception du serveur que votre commande "press" a été reçue correctement. Vous devriez également voir une LED verte brillante s'allumer sur la carte Pycom lorsque vous appuyez sur ce bouton. La connexion websockets transmet les états du bouton en envoyant des messages texte simples de « presse » lorsque vous appuyez dessus et « pressup » lorsque vous le relâchez. Pour l'accusé de réception, le microwebserver renvoie ce texte mais en y ajoutant "_OK" pour dire qu'il l'a reçu correctement.

Une fois que vous avez connecté les bornes du relais à semi-conducteurs optiquement isolé (SSR) à votre ouvre-porte de garage (reportez-vous au diagramme schématique illustré), puis appuyez sur le bouton pour ouvrir/fermer physiquement la porte.

Donnez-lui quelques secondes et réessayez si vous ne voyez pas l'icône d'engrenage bleue apparaître car elle redémarre peut-être ou quelque chose du genre. Notez que le Websocket se fermera automatiquement dans environ 20 secondes si vous ne l'utilisez pas pour éviter les blocages. Notez également que les websockets sont orientés connexion, vous devez donc arrêter le websocket pour changer de page, sinon vous ne pourrez peut-être pas vous reconnecter tant que vous n'aurez pas réinitialisé le module ESP32. Pour notre exemple de code, nous avons plusieurs façons d'arrêter le websocket: appuyez sur le texte d'état, les points tournants ou le lien hypertexte pour passer à la page suivante.

La deuxième page Web sert à lire les mesures de distance à partir du capteur de distance de temps de vol tinyLiDAR. Appuyez simplement une fois sur le bouton et il commencera à diffuser les lectures de distance sur votre appareil mobile pendant environ 20 secondes. Lorsque vous appuyez vers le bas, une LED rouge s'allume sur la carte Pycom afin que vous puissiez dire qu'elle reçoit la commande d'appui sur le bouton de cette page.

Les deux pages donnent une indication de l'ouverture ou de la fermeture de la porte en lisant la distance depuis le tinyLiDAR. La variable doorThreshold doit être définie dans les deux fichiers html de la section script, comme indiqué ici:

//--------------------------

//**** Ajuster au besoin **** var doorThreshold = 100; // distance en cm var ws_timeout = 20000; // temps maximum en ms pour permettre à la porte d'ouvrir/fermer par défaut est 20sec //-------------------------- //--- -----------------------

Vous devrez modifier ce seuil pour la configuration de votre garage afin qu'il puisse détecter quand la porte de garage est enroulée et donc OUVERTE ou baissée et donc FERMÉE. Une fois que vous avez apporté les modifications à votre seuil dans les deux fichiers html, téléchargez à nouveau ces fichiers html et redémarrez-le pour vérifier que tout fonctionne toujours correctement.

Si tout va bien, vous pouvez maintenant monter la planche à l'envers dans votre garage comme indiqué sur l'image ci-dessus. Câblez également les broches 3 et 4 du relais statique à votre ouvre-porte de garage. La polarité n'est pas importante puisque nous utilisons une version MOSFET du SSR - il suffit de court-circuiter les contacts pour simuler un clic de bouton sur votre unité de base de porte de garage.

Étape 10: Et c'est tout

Et c'est tout!
Et c'est tout!

Toutes nos félicitations! Ouvrir votre porte de garage est maintenant aussi simple que d'appuyer sur votre téléphone et vous pouvez vérifier si elle est restée ouverte ou non en prenant des mesures en temps réel avec tinyLiDAR:)

Vous pouvez également désormais utiliser ESP32 avec des Websockets via WiFi pour à peu près tout ce que vous voulez. En savoir plus sur les "websockets" si vous ne les connaissez pas - ils sont vraiment très rapides et faciles à utiliser.

La mise en œuvre de tinyLiDAR avec l'ESP32 a également été très simple, même si le capteur a été conçu à l'origine pour fonctionner sur un Arduino UNO. Nous avons une version bêta plus élaborée de l'interface graphique du terminal qui exécute la plupart des commandes tinyLiDAR en micropython sur l'ESP32 - voir l'image ci-dessus. Il est disponible dans notre section de téléchargements avec le manuel de référence, etc.

Jetez un œil à tout notre code pour comprendre comment tout s'assemble et essayez de changer les choses afin que vous puissiez vous en servir pour faire ce que vous voulez.

Veuillez garder à l'esprit qu'il n'y avait aucune mention de sécurité ici. La sécurité est un domaine énorme dans l'IoT et doit être prise au sérieux. Si vous souhaitez utiliser ce projet dans votre garage, vous devez garder vos mots de passe de réseau WiFi forts et sécurisés. Il y a beaucoup d'informations sur le Web sur la sécurité, alors assurez-vous de vous renseigner sur les dernières et restez au courant.

Merci de m'avoir lu et bon hack ! À votre santé.

Conseillé: