Table des matières:
- Étape 1: ce dont vous avez besoin
- Étape 2: Préparation du module Bluetooth
- Étape 3: Montage des pièces
- Étape 4: jumelage
- Étape 5: Le logiciel
- Étape 6: Testez
Vidéo: Capteur de poussière de sodium sur Android : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Il y a un an, un de mes amis a organisé un atelier de fin de semaine sur la surveillance environnementale. L'objectif de l'atelier était de construire un capteur de poussière connecté à une carte Raspberry Pi pour mettre les données de mesure sur un serveur fournissant des cartes de concentration de poussière fréquemment mises à jour. Mon ami a demandé s'il existait un moyen d'obtenir les données du capteur directement sur son smartphone pour la surveillance et la journalisation. J'ai donc cherché sur Internet une fiche technique et j'ai vu que le capteur avait une interface UART simple avec le protocole 9600Baud 8N1. Mais comment connecter un UART à un smartphone ? Eh bien, c'est facile. Je devais juste utiliser l'un de ces petits modules Bluetooth omniprésents qui fournissent un port émulé sur Android. Maintenant, voyez comment je l'ai fait.
Étape 1: ce dont vous avez besoin
Vous avez besoin des pièces suivantes
- Un connecteur femelle JST XH 7 broches pour l'interface Sodial avec fils. J'ai acheté le mien sur Ebay.
- Un module Bluetooth HC05 ou 06 compatible avec connecteur UART
- Un convertisseur USB-série avec interface de niveau TTL. Nous l'utilisons pour donner au module BT un nom unique
- Capteur de poussière Sodial SDS011. j'ai eu le mien sur ebay
- un morceau de veroboard
- Connecteur USB-B
- câble
- Un morceau de bois pour tout monter
Ensuite, vous aurez besoin de quelques outils simples:
- Une scie sauteuse pour couper le bois
- pince à épiler
- fer à souder et soudure
- Coupe-fil
- Pistolet à colle chaude
- Un morceau de manchon en silicone de 8 mm (pas sur la photo)
Vous pouvez télécharger la fiche technique Sodial SDS011 ici Fiche technique Sodial SDS011
Étape 2: Préparation du module Bluetooth
Le BT-Module a une interface UART avec un niveau TTL. Il peut être reconfiguré avec des commandes "AT" comme nous le faisions avec les modems Internet dans les temps anciens. Pour le connecter à un programme terminal sur votre machine, vous devez adapter l'UART à votre ordinateur. J'ai utilisé un convertisseur USB-RS232 que j'ai acheté chez amazon. J'ai appliqué un connecteur pour le module BT et acheminé l'alimentation 3, 3V et GND du convertisseur au module BT. Ensuite, j'ai connecté les lignes respectives TxD et RxD en croisement. TxD du convertisseur USB vers RxD du module BT et vice versa.
J'ai une machine Linux et j'ai utilisé cutecom. Après avoir connecté le convertisseur USB, le port de communication était "ttyUSB0". Vous pouvez trouver les noms de port dans le répertoire "/dev" sur votre machine Linux. Pour les utilisateurs de Windows, je recommanderais "hterm". C'est facile à utiliser. Tapez "AT" et vous devriez obtenir "AT" comme réponse. Tapez ensuite "AT+NameSensor" pour donner au module BT le nom "Sensor"
Étape 3: Montage des pièces
Coupez un morceau de bois dans une taille appropriée pour prendre toutes les pièces. Connectez tous les signaux comme indiqué sur le schéma. C'est une bonne idée de mettre un manchon en silicone autour des fils pour les protéger. Soudez la prise USB-B sur le perfboard. Il est juste utilisé pour l'alimentation. Fixez toutes les pièces avec des vis sur la base en bois. Enfin collez à chaud les câbles pour les fixer sur le bois.
Étape 4: jumelage
Alimentez l'application du capteur en branchant une alimentation USB. Une LED rouge sur le module BT commencera à clignoter. N'essayez pas de le coupler avec votre smartphone Android. Vous devez entrer un code PIN. C'est "1234". Après avoir entré le code, votre smartphone doit être couplé avec le module BT.
Étape 5: Le logiciel
J'aime écrire des applications Android sur la plate-forme cible elle-même. cela vous évite toutes ces choses d'émulation dont vous devez vous soucier si vous travaillez avec Android Studio. J'ai découvert trois outils de développement appropriés sur Android lui-même
- Mintoris de base. Un interpréteur de base avec un riche ensemble de commandes pour bricoler avec presque tout sur Android. Vous pouvez créer des raccourcis pour vos applications. Mintoris basic ne contient pas de compilateur. Vous devez donc avoir installé Mintoris sur chaque appareil que vous utilisez. Mais vous ne devez le payer qu'une seule fois (environ 7€)
- De base! Très bon interpréteur et compilateur Basic (add-on pour quelques €). Accroche presque à tout dans Android et vous pouvez compiler de vraies applications pour les distribuer sans avoir Basic ! sur l'appareil cible. Tristement basique ! manque les excellentes fonctions de diagramme de diagramme de Mintoris
- AIDE est un IDE semi-professionnel pour faire du développement Android en Java sur Android. Avec AIDE, vous avez la plus grande flexibilité, mais vous devez apprendre Java. AIDE a des coûts annuels d'environ 50€
J'ai choisi Mintoris. Dans cette section, je ne vais pas vous donner un tutoriel de programmation dans Mintoris mais une brève description des blocs fonctions
Dans la partie suivante, trois tableaux sont déclarés pour les deux lignes de données de capteur et les horodatages respectifs. Les données d'horodatage sont utilisées pour étiqueter l'axe des x du diagramme. Le Sodial génère deux flux de données spécifiés chacun pour une taille de particule spéciale. Les deux tableaux de données de poussière prennent ces valeurs.
WakeLock partiel
Couleur du texte 100, 75, 10
TextCouleurA 50, 50, 50
TextAlign 0
Taille du texte 24
CLS
Popup "Compteur de capteur de poussière (c) ARJ 2017"
Global dustData(), dustDataF(), timeStamp() Indice global, choix, maxData, fileName$
Horodatage faible(59)
Poussière faibleDonnées(59)
Faible poussièreDonnéesF(59)
Dim Menu$(4) = "max. 100 datasets", "max. 1000 data sets", "max. 5000 data sets", "max. 10000 data sets", "Quitter"
'Init les tableaux
Pour i = 0 à 59
poussièreDonnées(i) = 0
DonnéespoussièreF(i) = 0
horodatage(i)=i
Ensuite je
Ensuite, un menu Liste est configuré. Cela donne à l'utilisateur le choix de sélectionner la taille maximale des données à collecter. Il s'agit simplement d'un interrupteur de sécurité pour empêcher le smartphone d'aspirer des données sans fin. Les fonctions BTgetPaired$() renvoient une liste avec tous les appareils couplés sur l'appareil Android, leurs noms et leur adresse BT.
Liste Menu$(), choix
'Sélectionnez le montant maximum si les données doivent être stockées
runLevel = 1
Sélectionnez le choix
Cas 0 maxData = 100
Cas 1 maxDate = 1000
Cas 2 maxData = 5000
Cas 3 maxData = 10000
Cas 4 maxData = 0
Fin de la sélection
''Connecter le capteur
faible paire$(0)
pair$() = BTGetPaired$()
Si pair$(0) = "aucun" Alors
Imprimer « Aucun appareil associé trouvé. Le BT est-il activé ? » Imprimer "Programme terminé"
Finir
Fin si
Liste paire$(), appareil$
name$=ItemExtract$(device$, 0)
address$=ItemExtract$(device$, 1)
BTConnect 1, adresse$
'Attendez la connexion
Progression ACTIVÉE
Imprimer "Essayer de se connecter à ";adresse$
Pour i = 1 à 20
Progrès i/2
Si BTGetstate(1)=4, alors quittez pour attendre 1000
Ensuite je
Progression DÉSACTIVÉE
'En cas de succès, connectez-vous à l'appareil BT
Si BTGetState(1) = 4 Then Print "Connected" Else Print "Impossible de se connecter à ";name$
Imprimer "Programme terminé"
Finir
Fin si
Le bloc suivant montre l'acquisition de données. Pour chaque session de données, un fichier est automatiquement ouvert et nommé d'après l'heure et la date. Ensuite, la boucle lit les données du capteur. Les données sont compressées sur plusieurs octets. Un ensemble d'octets est identifié par deux caractères ASCII 170 et 171. Les données suivantes sont réorganisées et renseignées dans les dust-arrays
Graphiques activés
'Ouvrir le fichier de données pour écrire
fileName$ = FormatTime$(t, "aaaa-MM-jj-kk-mm-ss") + ".dat"
Open 1, fileName$, "w+" Print "Opened datafile ";fileName$ Writeln 1, FormatTime$(Time(), "yy-MM-dd")
Writeln 1, "Time Dust2.5 Dust10"
'Remplir le tableau avec les données mesurées
données$="" paquet$=""
indice=0
Faire tant que maxData > 0
BTLire 1, paquet$, 10
données$=données$+paquet$
Si Len(données$) >= 10 Alors
Si (ASCII(Left$(data$, 1))=170) & (ASCII(Right$(data$, 1)) = 171) Alors
DustDataF(index)=ASCII(Mid$(data$, 2, 1))
DustDataF(index)=(dustDataF(index)+256*ASCII(Mid$(data$, 3, 1)))/10
DustData(index)=ASCII(Mid$(data$, 4, 1))
DustData(index)=(dustData(index)+256*ASCII(Mid$(data$, 5, 1)))/10
Writeln 1, FormatTime$(Time(), "kk:mm:ss") + " " + Str$(dustDataF(index))+ " " + Str$(dustData(index))
données$=""
maxDonnées = maxDonnées-1
index=index+1
Si index>59 Alors index=0
DustData(index)=0
DustDataF(index)=0
Fin si
Fin si
DrawGraph()
Attendre 100
Boucle
Fermer 1
Graphiques désactivés
CLS Imprimer "Programme terminé"
Finir
La dernière partie est un sous-programme qui est appelé après chaque réception de données. Il efface l'écran, redessine le diagramme avec les données réelles stockées dans les tableaux de poussière et d'horodatage.
' Dessiner les coordonnées, les étiquettes, les ticks et aussi les courbes de données
Sous DrawGraph()
' En mode graphique, l'écran s'efface à la couleur actuelle
Couleur 0, 0, 0
CLS
Couleur 0, 0, 100
' Définit la couleur des graphiques à utiliser pour dessiner les lignes de la grille
Couleur du texte 100, 100, 100, 50
'TextColor est la couleur du titre principal de la grille
TextCouleurA 100, 100, 100
' TextColorA est utilisé pour les titres Axis et les annotations de grille.
' Définit la taille du texte du titre de l'axe
' Le titre principal de la grille est 2x cette taille
Taille du texte 20
FixDecimal 0
' Définir pour afficher 2 décimales
PadChiffres 2
' Tracer une grille pour le graphique ' Définir la plage et le titre du X & Y
Axe AxisX 0, 59, "Temps/s"
Axe Y 0, 10000, "ug/m3"
Grille 3, "Concentration de poussières"
' Dessiner des graphiques de poussière
Couleur 100, 0, 0
GraphXY timeStamp(), dustDataF()
Couleur 0, 100, 0
GraphXY timeStamp(), dustData()
Couleur du texte 100, 0, 0
DrawText "PM2.5", 30, Int(ScreenY()-60), 90, 1
Couleur du texte 0, 100, 0
DrawText "PM10", 30, Int(ScreenY()-150), 90, 1
Couleur du texte 100, 100, 100, 50
Revenir
Téléchargez le code source ici
Étape 6: Testez
Allumez le capteur et démarrez l'application. Dans la liste des appareils jumelés, choisissez celui nommé "Capteur". Après avoir connecté le capteur, l'écran commencera à afficher les données. Simultanément, le fichier de données est alloué. Après avoir terminé la mode, vous pouvez utiliser GnuPlot pour afficher les données. Utilisez le fichier "Test.gp" dans GnuPlot pour configurer GnuPlot pour afficher un fichier de données nommé "Test.dat". Vous pouvez aussi le trouver ici
Voir la vidéo pour plus de détails et de tests. Amusez-vous beaucoup et plus d'idées!
Conseillé:
Prolongez la vie de votre ordinateur portable ! Nettoyez la poussière de son dissipateur de chaleur. : 3 étapes
Prolongez la vie de votre ordinateur portable ! Nettoyer la poussière de son dissipateur de chaleur. : Un aperçu très basique de la façon dont j'ai nettoyé la poussière du dissipateur de chaleur de mon ordinateur portable Toshiba. Il y avait tellement de choses là-dedans ! Je ne peux pas croire que cette pratique ne soit pas recommandée et encouragée par les fabricants. Si de la poussière bloque l'entrée et la sortie d'air et
Étude de la poussière Arduino : 8 étapes
Étude sur la poussière d'Arduino : à quoi ressemblerait la vie sur Mars ? L'air est-il respirable ? Est-ce sûr? Combien de poussière y a-t-il ? Quelle est la fréquence des orages ? Vous êtes-vous déjà demandé la réponse à l'une de ces questions ?
Station de surveillance des particules de poussière alimentée par Arduino : 4 étapes (avec photos)
Station de surveillance des particules de poussière alimentée par Arduino : vous pouvez assez facilement créer un appareil Internet des objets bricolage qui surveille la pollution par la poussière dans votre maison pour moins de 50 $ et être averti lorsque le niveau de poussière devient trop élevé afin que vous puissiez aérer la pièce, ou vous pouvez régler à l'extérieur et soyez averti si c'est
Retrait du couvercle de l'écran du Nokia 6280 pour le nettoyage de la poussière : 7 étapes
Retrait du cache de l'écran du Nokia 6280 pour le nettoyage de la poussière : Contrairement à de nombreux autres modèles, le Nokia 6280 ne semble pas conçu pour que les utilisateurs puissent retirer le cache de l'écran eux-mêmes. Cela agace ceux qui ont de la poussière entre l'écran LCD et le couvercle de l'écran, ce qui fait beaucoup de propriétaires… En fait, au fil du temps, c'est
Correction de la poussière d'écran Samsung I600/Blackjack : 4 étapes
Samsung I600/Blackjack Screen Dust Fix : Bonjour à tous, si vous (comme moi) avez un Samsung SGH-i600 (ou blackjack en Amérique) et avez remarqué que de la poussière pénètre dans l'appareil et s'accumule dans le coin supérieur gauche de l'écran - je pense J'ai un correctif pour vous. Avant l'image avec l'aimable autorisation de Tracy