Table des matières:

Capteur de poussière de sodium sur Android : 6 étapes
Capteur de poussière de sodium sur Android : 6 étapes

Vidéo: Capteur de poussière de sodium sur Android : 6 étapes

Vidéo: Capteur de poussière de sodium sur Android : 6 étapes
Vidéo: Apprendre à réparer l'électronique - Le matériel 2024, Juillet
Anonim
Capteur de poussière de sodium sur Android
Capteur de poussière de sodium sur Android

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

De quoi as-tu besoin
De quoi as-tu besoin
De quoi as-tu besoin
De quoi as-tu 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

Préparation du module Bluetooth
Préparation du module Bluetooth
Préparation du module Bluetooth
Préparation du module Bluetooth
Préparation du module Bluetooth
Préparation du module Bluetooth
Préparation du module Bluetooth
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

Montage des pièces
Montage des pièces
Montage des pièces
Montage des pièces
Montage des pièces
Montage des pièces
Montage des pièces
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

Jumelage
Jumelage
Jumelage
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

Image
Image
Test
Test
Test
Test
Test
Test

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é: