Table des matières:

ESP32 ADXL345 DATALOGGER AVEC GPS_EXT RAM_EXT_RTC : 8 étapes
ESP32 ADXL345 DATALOGGER AVEC GPS_EXT RAM_EXT_RTC : 8 étapes

Vidéo: ESP32 ADXL345 DATALOGGER AVEC GPS_EXT RAM_EXT_RTC : 8 étapes

Vidéo: ESP32 ADXL345 DATALOGGER AVEC GPS_EXT RAM_EXT_RTC : 8 étapes
Vidéo: How To Track Orientation with Arduino | ADXL345 Accelerometer Tutorial 2024, Juillet
Anonim
ENREGISTREUR DE DONNÉES ESP32 ADXL345 AVEC GPS_EXT RAM_EXT_RTC
ENREGISTREUR DE DONNÉES ESP32 ADXL345 AVEC GPS_EXT RAM_EXT_RTC
ENREGISTREUR DE DONNÉES ESP32 ADXL345 AVEC GPS_EXT RAM_EXT_RTC
ENREGISTREUR DE DONNÉES ESP32 ADXL345 AVEC GPS_EXT RAM_EXT_RTC
ENREGISTREUR DE DONNÉES ESP32 ADXL345 AVEC GPS_EXT RAM_EXT_RTC
ENREGISTREUR DE DONNÉES ESP32 ADXL345 AVEC GPS_EXT RAM_EXT_RTC

Pour ceux d'entre vous qui jouent avec la carte Wemos 32 LOLIN, j'ai pensé que je commencerais à documenter certaines de mes découvertes jusqu'à présent.

Le projet actuel consiste à s'interfacer à un accéléromètre ADXL345 et, comme le montre la photo ci-dessus, je l'ai connecté avec succès au lolin et configuré l'ADXL en tant que capteur de choc.

Les registres de l'ADXL ont été configurés en tant que pdf ci-joint et l'interruption que j'ai configurée dans le code pour cracher le code sur le port série une fois qu'un choc est détecté.

J'ai également configuré le registre d'inactivité en tant qu'interruption et après avoir vérifié quelle interruption a été déclenchée, j'ai craché les mêmes données.

J'utilise le port I2c sur le LOLIN et vous verrez que j'ai une routine pour cracher les registres sur l'ADXL afin que je puisse vérifier la configuration pendant le débogage. Cette fonction s'exécute dans une fonction de minuterie utilisant la bibliothèque de ticker. Il s'agit d'une fonction utile à configurer pour le débogage et la vérification des registres au cas où vous y écririez quelque chose qui amènerait mystérieusement les données à faire des choses étranges.

J'ai normalisé les données de compliment des 2 dans le LOLIN et les ai formatées afin qu'elles puissent être importées dans Excel.

Jetez un œil au PDF joint avec certaines données que j'ai importées et j'ai représenté graphiquement dans Excel quelques clics sur l'ADXL qui sont déclenchés par une interruption dans le registre de déclenchement en utilisant le mode FIFO.

Le mode FIFO est une fonctionnalité utile qui n'attache pas le micro et stocke 32 échantillons sur un déclencheur. Regardez à nouveau mes vidages de données et vous pouvez voir où nous commençons au point zéro et le dernier échantillon est à 9,8 ms environ. La ligne X sur le graphique montre le temps en microsecondes augmentant de gauche à droite.

REMARQUE J'AI DEPUIS MODIFIÉ LE DERNIER GRAPHIQUE POUR AFFICHER LA CALENDRIER DE MOINS 9800 microsecs. La première apparition de FIFO correspond aux données les plus anciennes, le reste est plus ancien. La vue doit être de droite à gauche.

Notez les trois fils de la carte ADXL. SDA/SCL et INT de INT 1. Encore une fois, si vous regardez les paramètres du registre et recoupez la fiche technique, cela aura du sens.

L'échantillon de données est à pleine inclinaison à 3200 échantillons, ce qui donne 3125 usecondes entre les échantillons et une pré-capture de 4 échantillons. Regardez le pdf des données de l'appareil dans Excel et chacun des graphiques que j'ai tracés me montrant le déplacement de la fenêtre de capture.

Je mettrai du code de la configuration et des interruptions si quelqu'un est intéressé.

Pour I2C, j'utilise la bibliothèque de fils et j'ai écrit quelques fonctions autour de cela.

Remarquez le petit renifleur de données que j'ai connecté à SDA/SDL et en utilisant Sigrok, je peux décoder le bus I2C en temps réel.

L'étape suivante consiste à enregistrer sur le disque SAN, bien que j'ai déjà prouvé que cela fonctionnait. Une fois cela fait, je vais m'interfacer au sans fil et télécharger sur un site Web.

J'ajouterai à cela au fur et à mesure que le projet se développe.

NOTE DE BAS DE PAGE:

Pour les observateurs, vous remarquerez une grande entaille dans la boîte protégeant la puce esp et un cavalier sur le circuit imprimé. Cela est dû au Cocker Spaniel résident qui a inspecté le courrier et a décidé de mâcher la planche avant de me laisser y accéder. Je pense qu'elle est un fan non expressif !.

Bien sûr, comme toujours, je suis toujours prêt à poser des questions, alors n'hésitez pas.

Étape 1: SIGROK ET PULSEVIEW

SIGROK ET PULSEVIEW
SIGROK ET PULSEVIEW
SIGROK ET PULSEVIEW
SIGROK ET PULSEVIEW

Juste une mention rapide de pulseview et sigrok.

Il s'agit d'un logiciel gratuit du net et la petite carte d'interface avec 8 entrées logiques est bon marché sur ebay et al. a un décodeur intégré pour I2C.

Un oscilloscope est idéal pour vérifier les niveaux de signal, mais le décodage manuel d'I2c est au mieux fastidieux, même si j'ai déjà mis en place une boucle et débogué à la main. Vous devez avoir une appréciation de la frappe au niveau du port, ce que j'ai fait sur de nombreux projets de photos, mais cela prend du temps et est sujet à des erreurs… surtout la nuit !!

Merci aux gars qui ont écrit cette application. C'est un dieu envoyé pour des projets dans i2c, Notez la ligne D4 qui surveille la ligne d'interruption de l'ADXL.

Étape 2: Ajout au capteur de choc

Ajout au capteur de choc
Ajout au capteur de choc
Ajout au capteur de choc
Ajout au capteur de choc
Ajout au capteur de choc
Ajout au capteur de choc
Ajout au capteur de choc
Ajout au capteur de choc

Ok, j'ai ajouté des périphériques au capteur de choc pour la preuve de concept.

Excusez le nid des rats pour l'instant, une fois que cela fonctionne, je vais concevoir le circuit imprimé qui relie tous les composants et le mettre dans une jolie boîte. Tous les éléments attachés à l'exception de la carte SD fonctionnent sur i2c qui se trouve sur le bus spi.

Il reste à attacher le module GPS qui est WIP mais j'espère avoir une solution d'ici la fin de cette semaine.

Le projet actuel consiste donc en:

Carte ESP32 LOLIN avec sans fil.

Horloge en temps réel PCF. Garde une trace de la date et de l'heure actuelles. J'ai soudé grossièrement sur une ancienne carte de projet que j'ai gravée précédemment.

Flash externe. Contient entre autres les données de configuration de l'accéléromètre. Capacité 132k et peut y déposer des données Web pour faciliter les menus, etc.

Carte SD SPI pour stocker les données et les journaux de l'accéléromètre de fichiers. 8 Go mais peut s'étendre.

Écran OLED pour afficher les menus et quelques autres choses.

Voici ce qu'il fera [éventuellement]

Surveillez les chocs et l'activité qui dépassent le bruit de fond.

Enregistrez les chocs sur la carte SD avec l'heure et la date de l'horloge embarquée.

Tamponnez l'emplacement du GPS sur la carte SD si disponible

À l'aide d'un point d'accès, téléchargez les données sur un serveur Web pour analyser les données… cela peut être un téléphone mobile.

| La recherche de points d'accès est une capacité de LOLIN32, tout comme l'hébergement d'un serveur Web pour les commandes, puis la connexion en tant que client au serveur Web cloud. Vous pouvez toujours simplement débrancher la carte SD et la télécharger !

Il reste encore beaucoup à faire mais ça avance.

Étape 3: ADRESSAGE ADXL

ADXL ADXL
ADXL ADXL

Maintenant, voici une chose amusante. J'ai acheté la puce ADXL 345 comme une petite carte parce que c'était moins cher que de se procurer une puce seule…..comment cela fonctionne-t-il ? Quoi qu'il en soit, après cela, j'ai commencé à le connecter au bus i2c et j'ai découvert que j'avais un conflit avec l'eeprom avec des adresses qui commencent effectivement à 0x53, ce qui se traduit par une écriture sur A6 et une lecture sur A7.

Donc, en lisant le bumf, il s'avère que si vous prenez l'ADRESSE SDO/ALT HAUT, vous pouvez le forcer à 1D

Il s'avère que ma petite carte est câblée à la masse sur la broche 12 de l'ADXL malgré la broche SDO qui donne l'impression que vous pouvez la tirer haut. N'essayez pas cela à la maison sans une alimentation électrique limitée en courant….heureusement, j'ai eu ce qui m'a amené à sortir le multimètre et à vérifier la broche à la terre.. Cela fonctionne et vous permet de sortir du conflit du bal. Heureusement, ils n'ont pas fait le court-circuit sous la puce, sinon j'aurais été snooké et j'aurais dû retirer la puce du tableau. L'EEprom, qui est une pièce de rechange que j'avais, est arrangée comme deux pages de 64k comme adresse 0x52 et 53. Une fois que j'ai fait cela, mon problème a été résolu.

En lisant à nouveau la page Web, il est dit qu'il est réglé sur 0x53 mais c'est en petits caractères, alors faites attention !

Étape 4: Impressions schématiques de circuits imprimés

Voici un aperçu rapide du circuit et des composants. C'est en grande partie ma conception et toujours WIP [Work In Progress] Le schéma a été conçu puis traduit dans l'illustration des pistes. J'ai vérifié que tous les composants fonctionnent comme prévu en utilisant mon nid de rats s'approche et je m'assemble maintenant sur une planche qui tiendra dans une petite boîte [Détail à suivre]

Se référant à shocker.pdf.

La carte se compose de 8 composants principaux

  1. STOCKAGE SUR CARTE SD
  2. ACCÉLÉROMÈTRE ADXL
  3. AFFICHAGE OLED
  4. 3,3 V REG
  5. MODULE GPS1
  6. EEPROM
  7. MINUTERIE RTC
  8. PUCE LOLIN ESP32 AVEC INTERFACE SANS FIL RF

Tout repose sur l'accéléromètre.

L'ADXL est configuré pour interrompre le processeur sur INT1 qui est acheminé vers la broche 14 du processeur. Le code dans le micro est configuré pour intercepter cette interruption et définir un indicateur qui est activé dans la routine principale. J'ajouterai le code décrivant l'enregistrement ultérieur de la routine d'interruption et de la fonction de rappel.

L'ADXL prend en charge les interruptions sur différents états tels qu'un choc ou une inactivité plus quelques autres. Vous pouvez masquer celles qui vous font envie en fonction de ce que vous essayez de faire. L'ADXL fonctionne en mode FIFO afin de stocker 32 échantillons pour capturer l'événement de choc en tant que XYZ [96 valeurs]

L'affichage ADXL RTC et EEPROM sont tous pilotés par I2C. La carte SD est connectée à l'E/S SPI et le module GPS est connecté aux ports série du LOLIN marqués X12 X11.

La séquence est la suivante: saisissez constamment les données 232 de l'unité GPS et du filtre. Tant que vous disposez d'une heure GPS valide, mettez à jour le RTC à des intervalles définis. complément du format brut 2 et complément non 2. Toutes les données sont délimitées par des virgules.

Vous noterez également qu'il y a une broche de réinitialisation qui est connectée à la broche 13. Cette broche démarrera le serveur Web intégré vous permettant de vous connecter au configurateur pour configurer un point d'accès qui est stocké dans l'EEPROM. Au redémarrage, le processeur se connectera au point d'accès et accédera à Internet pour télécharger des fichiers à partir de la carte SD. S'il n'y a pas de données ni de point de connexion, l'unité effectue simplement son processus d'enregistrement des données sur la carte SD que vous pouvez interroger à l'aide le programme [ShockerView.exe][WIP]Sur le serveur les données sont stockées dans une base de données SQL et affichées[WIP]

Les impressions PCB sont attachées pour le haut et le bas.

Étape 5: Prototype de gravure d'œuvres d'art

Prototype de gravure d'œuvres d'art
Prototype de gravure d'œuvres d'art
Prototype de gravure d'œuvres d'art
Prototype de gravure d'œuvres d'art
Prototype de gravure d'œuvres d'art
Prototype de gravure d'œuvres d'art

Voici comment je produis mes prototypes de planches

Imprimez l'illustration sur du papier calque épais. J'utilise 63 GSM de forgerons, bon marché et gai. L'imprimante est la clé ici. Vous voulez aussi opaque que possible et aussi propre que possible. Mon imprimante laser fonctionne maintenant, mais elle est bonne pour imprimer jusqu'à 10 milles, moins que cela, vous avez besoin d'un équipement spécialisé car le grain du papier calque commence à gêner. Vous pouvez acheter du papier spécialisé mais bon, c'est trop beau pour moi. Quoi qu'il en soit, je raffine constamment mes créations, donc ce serait trop cher pour mon petit ole. Si vous avez besoin d'un conseil approprié, demandez aux experts de le faire.

Normalement, je prototype mes planches en sections, puis je produis une version finale avec des gerbers pour une entreprise Internet. Le prototype trie toutes ces erreurs et omissions avant d'engager de l'argent réel.

Après avoir imprimé les images sur deux feuilles de calque A4 distinctes, coupez-les de manière à les superposer et à les coller en position. laissez suffisamment de place pour que votre planche double face se glisse entre les couches et assurez-vous que la face imprimée est contre le circuit imprimé. Faites quelques fentes pour vous permettre de faire glisser les planches et de la scotcher temporairement. Si vous faites attention vous pouvez superposer le scotch pour vous permettre de le décoller sans détruire l'image calque.

Posez la planche avec un côté vers le bas dans votre boîte UV. NB J'ai fabriqué le mien en utilisant quatre nouvelles lampes UV de 13W et de vieux appareils de contrôle et j'ai fabriqué une boîte avec un panneau en verre transparent. L'espacement était expérimental. Le couvercle se clipse et presse la mousse au dos de la planche en forçant le masque contre le verre. Si vous ne le faites pas, la lumière sapera la résistance de gravure. Allumez et exposez la planche pendant 1 minute 40 secondes par côté. Utilisez votre montre. En fait, je dois modifier cela avec une minuterie dessus… oh non un autre projet… peut-être que je vais en acheter un… vous savez que vous ne le ferez pas ! Les cartes que j'achète chez Mega Electronics sont des cartes prototypes bon marché avec résistance à la gravure. La résistance à la gravure est parfois un peu inégale mais j'ai quelques planches que j'ai depuis quatre ans et elles produisent toujours de bonnes planches pour le prototypage !!

Faites attention lorsque vous retournez la planche, ne la laissez pas glisser ou vous aurez de la camelote.

Préparez maintenant votre développeur. J'utilise 2 bouchons à 18:1 donc c'est deux bouchons de révélateur et 36 bouchons d'eau du robinet pure et non altérée. Le développeur se présente sous forme de bouteille ou de poudre et une bouteille dure généralement environ 6 ans !!. Mélangez-le dans un récipient à glace ET PORTEZ DES GANTS. Ne mettez pas vos doigts dedans ou la graisse l'affectera. La température peut être un problème en hiver. Gardez l'eau à 20 degrés ou à peu près, ce n'est pas critique, mais s'il fait froid, les résultats peuvent être imprévisibles. Je l'ai fait en janvier dans mon garage avec une bouilloire pour que vous puissiez compenser.

Déplacez doucement le conteneur d'un côté à l'autre une fois que vous y avez mis votre planche. Si vous l'avez bien fait, vous verrez un flux de gravure magenta résister au retrait du cuivre, révélant un joli cuivre brillant entre les pistes. Retournez-le à l'aide de vos gants pour vérifier l'autre côté. Ce processus prend normalement environ une minute. Une fois terminé, retirez la planche et rincez abondamment à l'eau tiède. Si c'est ennuyeux, il y a de fortes chances qu'il ait échoué.

J'ai eu cela plusieurs fois, mais c'est généralement parce que je n'ai pas porté de gants ou que la température était trop basse ou que j'ai gâché le temps d'exposition à cause d'une distraction… pourquoi font-ils cela au milieu de quelque chose de critique….

Montrez-moi vos gravures

Ok, vous avez maintenant une planche avec de belles pistes vertes protégées par une résistance à la gravure et vous devez maintenant composer le chlorure ferrique. Maintenant, j'utilise le même contenant de crème glacée pour minimiser les déchets et mélanger les notes sur le paquet. J'achète le chlorure ferrique en paquets de billes que vous pesez et dissolvez dans une solution. Préparez-en assez pour remplir le pot de crème glacée à environ 1/3 de la hauteur. Si vous en préparez juste assez pour le travail, vous pouvez verser dans un récipient en plastique et il se conservera longtemps.

VOUS DEVEZ PORTER DES GANTS… pas à cause de la graisse, etc. mais parce que si vous ne le faites pas, vos mains seront orange vif pendant quinze jours. Une fois, je l'ai fait avant une réunion importante à Londres et j'avais l'impression d'avoir été dans le tango. Cependant, sachez que ce truc est méchant avec tout ce qui est en cuivre… et vraiment tout. Portez de vieux vêtements parce que s'ils les touchent, ils sont détruits. Il se fixe aux éviers en acier inoxydable et tache généralement tout. Faites-le à l'extérieur ou dans une toilette éloignée de tout. Ne jetez pas les restes dans les égouts, c'est excellent pour tuer les bactéries, ce qui n'est pas ce que l'autorité des eaux aimerait promouvoir dans leurs fosses septiques. Pour certaines autorités, cela est également illégal, alors ne le faites pas.

Lorsque vous trempez votre planche dans la solution pour la première fois, elle prendra une belle couleur bronze rouge lorsque le cuivre sera attaqué. Si ce n'est pas le cas, il se peut que vous ayez toujours une couche de résistance à la gravure qui empêche le décapant de fonctionner ou que votre solution soit erronée. Si tel est le cas, revenons à la planche à dessin, j'en ai peur, mais il est peu probable que votre graveur se trompe si vous avez suivi les destructions.

Quoi qu'il en soit, si tout va bien, vous avez des pistes parfaites protégées par la résistance à la gravure.

Normalement, à ce stade, le professionnel utiliserait un ensemble de masques pour développer autour des trous et des tampons et produirait le cuivre via et utiliserait une sérigraphie pour peindre les numéros de composants, etc. Malheureusement, je n'ai pas le temps ou l'envie de faire mes vias en utilisant du fil de cuivre d'une couche à l'autre… évidemment, la multicouche est un non non par cette méthode. Si je suis d'humeur, j'ajouterai minutieusement les numéros de composants à la couche d'impression afin que vous puissiez également graver les numéros de composants. Cela peut faire gagner du temps lors de l'assemblage, mais cela dépend de l'occupation de la carte.

J'expose maintenant les pistes pendant encore 2 minutes environ de chaque côté et plonge dans le développeur pour éliminer toute la résistance à la gravure.

Je perce maintenant les vias et tous les trous traversants et étame toutes les pistes et vérifie la continuité avec un multimètre. n'être soudé que d'un côté… c'est arrivé tellement de fois !

Étape 6: Assemblage de la carte

Assemblage du conseil
Assemblage du conseil
Assemblage du conseil
Assemblage du conseil
Assemblage du conseil
Assemblage du conseil

OK, maintenant j'ai une carte prête à l'emploi et j'ai percé tous les vias et les trous traversants.

Enfilez tous les vias avec du fil et soudez les deux côtés. J'aime étamer toutes les pistes comme protection, je n'ai pas à le faire mais j'arrête l'oxydation du cuivre.

J'ai attaché la carte SD qui est montée en surface et j'ai ajouté deux terres pour y obtenir une pointe de soudure et elle a quelques broches en dessous pour l'ancrer.

Ensuite ajouté l'EEPROM ADXL, etc.

En ce qui concerne la puissance, le plan est de prendre le 5V de l'USB ou de la batterie externe et de l'alimenter via le reg de 3,3V sur la carte. que l'USB peut fournir. Je n'ai pas encore effectué de mesures de puissance, car cela pourrait être modifié dans le logiciel…..pourrait utiliser l'interruption d'INACTIVITÉ d'ADXL pour traiter.[WIP]

… besoin d'ajouter des images au fur et à mesure que la construction progresse.

Étape 7: CODAGE

OK, je ne vais pas passer en revue toute la configuration de l'arduino car quelqu'un d'autre a fait un bien meilleur travail ailleurs.

Je vais juste choisir au fur et à mesure les éléments pertinents qui peuvent être utilisés dans votre propre projet.

Ceci est toujours en cours en ce qui concerne le téléchargement sur le site Web, mais passons en revue une partie du code.

L'idée est que la fonctionnalité normale est d'initier les appareils qui se composent d'un GPS/affichage/carte SD/horloge en temps réel/ext_flashmemory et accéléromètre.

Après cela, nous entrons dans une boucle en attendant de voir si la touche d'interruption sw est enfoncée. Si c'est le cas, passez au menu du configurateur pour configurer le réseau wifi afin qu'il se connecte automatiquement à un appareil spécifié comme entrée du configurateur de page Web. Il recherche d'abord un ssid sur tous les appareils, puis vous permet d'en sélectionner un et de l'enregistrer dans la mémoire flash. avec un indicateur pour indiquer qu'au prochain démarrage, chargez les paramètres à partir de la mémoire flash. Vous pouvez toujours annuler cela en entrant l'adresse IP et en tapant /killbill pour lancer un nettoyage de la mémoire flash et charger la valeur par défaut.

voici la fonction d'interruption définie dans le code pour l'accéléromètre adxl et le saut au configurateur sur deux broches distinctes. Nous utilisons l'interruption ADXL pour interrompre un événement SHOCK. Pour les deux interruptions, nous définissons un indicateur qui est réinitialisé dans la "boucle" principale. Voici à quoi cela ressemble:

regarde le code joint

Étape 8: Recherche des broches SDA SCL

utilise ce code:

Serial.println(SDA);

Serial.println(SCL);

imprime les broches actuellement configurées dans l'ESP pour SDL et SCL

Il existe un fichier qui est utilisé pour mapper les broches à des fonctions telles que les ports série dans l'ESP32

Conseillé: