La position actuelle:Accueil du site>5.15 cas complet 2.0 - système de détection du gaz

5.15 cas complet 2.0 - système de détection du gaz

2022-05-15 07:47:31Zhiyun Clothing

Introduction

Le gaz naturel est le principal combustible pour la cuisson et le chauffage des ménages,Son principal composant est le méthane(CH4),Contient également une petite quantité de propane,éthane、Autres petites quantités de gaz, comme le butane.Le gaz naturel lui - même est incolore et inodore,Moins dense que l'air..Fuite de gaz difficile à détecter,Sa concentration dans l'air atteint5%~15%Heure,Une explosion se produit en cas de feu ouvert.La popularité du gaz naturel domestique,Chaque année en raison d'une mauvaise utilisation、Les accidents de fuite et d'explosion de gaz causés par des facteurs humains se sont poursuivis.
C'est dans ce contexte que ce cas enseigne aux développeurs à construire un système de détection des fuites de gaz étape par étape.

MQ2Capteur de gaz

MQ-2Dispositifs de surveillance des fuites de gaz couramment utilisés dans les maisons et les usines,Convient au gaz liquéfié、Benzène、Alcane、Alcool、Hydrogène、Détection de fumée, etc.Donc,MQ-2.Peut être exactement un détecteur de gaz multiple.

Principes
MQ-2 Type de capteur de fumée appartient au matériau de détection de gaz semi - conducteur de dioxyde d'étain , Du type ionique de surface NType de semi - conducteur.In200~300En degrés Celsius, Le dioxyde d'étain absorbe l'oxygène de l'air ,Adsorption des anions formant de l'oxygène, Réduire la densité des électrons dans les semi - conducteurs , Pour augmenter sa résistance .En contact avec la fumée, Si la barrière à la limite intergranulaire est modifiée par le réglage de la fumée , Provoque un changement de conductivité de surface . Cela permet d'obtenir des informations sur la présence de ce smog. ,Plus la concentration de fumée est élevée, Plus la conductivité électrique est élevée , Plus la résistance à la sortie est faible , Plus le signal analogique de sortie est grand .

Caractéristiques

  • MQ-2 Type de capteur pour le gaz naturel 、 Les fumées comme le GPL sont très sensibles , Particulièrement sensible aux vapeurs d'alcanes ,Bonne résistance aux interférences, Les informations d'interférence des fumées non combustibles irritantes peuvent être éliminées avec précision .
  • MQ-2 Le capteur modèle a une bonne Répétabilité et une stabilité à long terme .Stabilité initiale,Temps de réponse court, Bonne performance pour les longues heures de travail .Il est important de noter que: Doit être chauffé pendant un certain temps avant utilisation , Sinon, la résistance et la tension de sortie sont inexactes. .
  • La plage de détection des gaz combustibles et des fumées est la suivante: 100~10000ppm(ppm Est la concentration en volume . 1ppm=1Centimètre cube/1M3)
  • Large gamme de tension de conception du circuit ,24VTout ce qui suit,Tension de chauffage5±0.2V

Attention!: Si la tension de chauffage est trop élevée , Peut causer un courant d'entrée excessif , Fusible le fil de signalisation interne , Donc les appareils sont jetés .

Préparez - vous.

Matériel nécessaire dans ce cas

L'équipementNombre
HaaS506Conseil de développement1
MQ2Capteur de gaz1
SIMCarte1
Dupont LinePlusieurs

Diagramme de connexion matérielle

Insérer la description de l'image ici

Flux de code

1、 Connectez - vous à la plateforme alicloud .
2、Lecture répétéeMQ2 Tension du capteur de gaz , Télécharger les données dans alicloud .
3、UtiliserApplications mobilesFonction,Afficher la météo、MQ2 Changement de tension du capteur de gaz 、Alarme de l'équipement.

Réalisation des fonctions

1、Développement de plateformes IOT

Lecteurs utilisant pour la première fois la plateforme IOT , Utiliser la fonction de plate - forme IOT après l'ouverture de l'Instance . Vous pouvez également utiliser des instances publiques gratuites pour le développement ,InAlibaba Cloud IOT PlatformMoyenne,Sélection en haut à gauche‘Chine orientale2-Shanghai’,Cliquez sur‘Instance publique’,Prêt à ouvrir.

1、 La création de produits de plate - forme est référencée haas506 2.0Tutoriels de développement-aliyunIoT
2、Créer des propriétés de produit( Modèle additif )

  • Sélectionner un produitDéfinition de la fonctionModifier le projet
    Insérer la description de l'image ici
  • Ajouter des fonctionnalités personnalisées
  • AjouterIdentificateurAvecType de données( L'identificateur doit correspondre au Code )
  • Cliquez surPublier en ligne
    Insérer la description de l'image ici
  • Cliquez sur OK
    Insérer la description de l'image ici

2、Développement de l'équipement

  • Les lecteurs qui utilisent le tableau de développement pour la première fois peuvent suivre haas5062.0Tutoriels de développement- Chapitre d'orientation Créer un environnement de développement.
  • Copiez le code suivant après la construction Visual Studio Code, Copier le certificat de produit à l'emplacement approprié du Code .
    Insérer la description de l'image ici
  • main.py
# coding=utf-8
from driver import ADC
from driver import GPIO
import network
import ujson
import utime as time
import modem
from  aliyunIoT import Device
import kv

 
#QuandiotDéclenché lorsque l'appareil est connecté à une plate - forme IOT'connect' Événements
def on_connect(data):
    global module_name,default_ver,productKey,deviceName,deviceSecret,on_trigger,on_download,on_verify,on_upgrade
    print('***** connect lp succeed****')
    data_handle = {
    }
    data_handle['device_handle'] = device.getDeviceHandle()


#Lorsque la connexion est déconnectée,Déclencheur'disconnect'Événements
def on_disconnect():
    print('linkkit is disconnected')

# Télécharger l'état du feu d'avertissement 
warning_data = {
    }
#QuandiotLors de la distribution des paramètres de propriété dans le cloud,Déclencheur'props'Événements
def on_props(request):
    params=request['params']
    params=eval(params)
    warn = params["alarmLight"]
    warning_data["alarmLight"]= warn
    warning_data_str=ujson.dumps(warning_data)
    data1={
    
        'params':warning_data_str
        }      
    device.postProps(data1)



#QuandiotDispositif d'appel CloudserviceHeure,Déclencheur'service'Événements
def on_service(id,request):
    print('clound req id is {} , req is {}'.format(id,request))
#Quand l'appareil suitiotLorsqu'une erreur est rencontrée lors de la communication de la plateforme,Déclencheur'error'Événements
def on_error(err):
    print('err msg is {} '.format(err))

#Fonction de rappel pour la connexion réseau
def on_4g_cb(args):
     global g_connect_status
     pdp = args[0]
     netwk_sta = args[1]
     if netwk_sta == 1:
         g_connect_status = True
     else:
         g_connect_status = False

#Connexion au réseau
def connect_network():
     global net,on_4g_cb,g_connect_status
     #NetWorkClientCette classe est une classe Singleton,Réaliser les fonctions liées à la gestion du réseau,Inclure l'initialisation,Mise en réseau,Informations sur l'état, etc..
     net = network.NetWorkClient()
     g_register_network = False
     if net._stagecode is not None and net._stagecode == 3 and net._subcode == 1:
         g_register_network = True
     else:
         g_register_network = False
     if g_register_network:
    #Enregistrer les fonctions de rappel pour les connexions réseauon(self,id,func); 1Connexion représentative,func Fonction de rappel ;return 0 Succès
         net.on(1,on_4g_cb)    
         net.connect(None)
     else:
         print('Échec de l'inscription au réseau')
     while True:
         if g_connect_status:
             print('Connexion réseau réussie')
             break
         time.sleep_ms(20)

#Enregistrement dynamique des fonctions de rappel
def on_dynreg_cb(data):
     global deviceSecret,device_dyn_resigter_succed
     deviceSecret = data
     device_dyn_resigter_succed = True


 # Connexion à la plateforme IOT
def dyn_register_device(productKey,productSecret,deviceName):
    global on_dynreg_cb,device,deviceSecret,device_dyn_resigter_succed
    key = '_amp_customer_devicesecret'
    deviceSecretdict = kv.get(key)
    print("deviceSecretdict:",deviceSecretdict)
    if isinstance(deviceSecretdict,str):    
        deviceSecret = deviceSecretdict 

    if deviceSecretdict is None or deviceSecret is None:
        key_info = {
    
            'productKey': productKey  ,
            'productSecret': productSecret ,
            'deviceName': deviceName
            }
        # Enregistrer dynamiquement un appareil,Obtenir l'appareildeviceSecret
        #En bas.ifEmpêcher les inscriptions multiples,Si vous êtes actuellement inscrit une fois,Redémarrer l'appareil pour s'enregistrer à nouveau et se coincer,
        if not device_dyn_resigter_succed:
            device.register(key_info,on_dynreg_cb)   



def upload_value(n):
    global value_data
    value_data["gasVoltage"]= n
    value_data_str=ujson.dumps(value_data)
    data={
    
        'params':value_data_str
        }      
    device.postProps(data)





if __name__ == '__main__':
    ICCID=None
    g_connect_status = False
    net = None
    device = None
    deviceSecret = None
    deviceName = None
    productKey = "a1JuD7ay6Pj"
    productSecret = "yV68ScGy5DgEczVx"
    device_dyn_resigter_succed = False

    # Connexion au réseau
    connect_network()
     # Obtenir l'appareilIMEI En tant quedeviceName Enregistrement dynamique
    deviceName = modem.getDevImei()
    #Obtenir l'appareilICCID
    ICCID=modem.sim.getIccid()
    #Initialisation de la plateforme IOTDeviceCatégorie,AccèsdeviceExemple
    device = Device()
    if deviceName is not None and len(deviceName) > 0 :
     #Enregistrer dynamiquement un appareil
        dyn_register_device(productKey,productSecret,deviceName)
    else:
        print("Obtenir l'équipementIMEIÉchec,Impossible d'enregistrer dynamiquement")
    while deviceSecret is None:
        time.sleep(0.2)
    print('Enregistrement dynamique réussi:' + deviceSecret)

    key_info = {
    
        'region' : 'cn-shanghai' ,
        'productKey': productKey ,
        'deviceName': deviceName ,
        'deviceSecret': deviceSecret ,
        'keepaliveSec': 60,
        }
    #Imprimer les informations du périphérique
    print(key_info)

    #device.ON_CONNECT C'est un événement.,on_connectEst un gestionnaire d'événements/Fonction de rappel
    device.on(device.ON_CONNECT,on_connect)
    device.on(device.ON_DISCONNECT,on_disconnect)
    device.on(device.ON_PROPS,on_props)
    device.on(device.ON_SERVICE,on_service)
    device.on(device.ON_ERROR,on_error)
    device.connect(key_info)

    #Procédure principale
    #Capteur de gaz
    adc=ADC()
    adc.open("ADC1")
    value_data = {
    }
    while True:
        value=adc.readVoltage()
        print('v:',value)
        print('--------------------------------------------')
        upload_value(value)
        time.sleep(1)

    adc.close()

  • Utiliser485Lecture du port sérielog,Configuration “replPort”: 2,Port sérieTTL Lire à la place 0 .
  • board.json
{
    
    "version": "2.0.0",
    "io": {
    
        "ADC0": {
    
                "type": "ADC",
                "port": 0,
                "sampling": 12000000
            },
        "ADC1": {
    
                  "type": "ADC",
                  "port": 1,
                  "sampling": 12000000
            },
        "serial1":{
    
                "type":"UART",
                "port":0,
                "dataWidth":8,
                "baudRate":115200,
                "stopBits":1,
                "flowControl":"disable",
                "parity":"none"
            },
        "serial2":{
    
                "type":"UART",
                "port":1,
                "dataWidth":8,
                "baudRate":115200,
                "stopBits":1,
                "flowControl":"disable",
                "parity":"none"
            },
        "serial3":{
    
                "type":"UART",
                "port":2,
                "dataWidth":8,
                "baudRate":115200,
                "stopBits":1,
                "flowControl":"disable",
                "parity":"none"
            }
        },
    "debugLevel": "ERROR",
    "repl": "enable",
    "replPort": 2
    }
    

Mise en service

  • Utilisation du port série de débogage 485Port, Ouvrir le gestionnaire de périphériques pour voir les numéros de port de débogage .
    Insérer la description de l'image ici
  • Utilisation de l'outil de débogage de port sérieputty
    Insérer la description de l'image ici

Résultats de la mise en service

1、Outil de débogage de port sérielog,Connexion réseau réussieEnregistrement dynamique réussiImprimer toutes les secondesMQ2 Tension du capteur de gaz
Insérer la description de l'image ici
2、 Il y a des données dans le cloud , Activer le rafraîchissement en direct , Les données affichées sont automatiquement mises à jour .
Insérer la description de l'image ici

3、Développement d'applications IOT

Voici le processus de développement des applications IOT , Ensuite, le développement d'applications mobiles est introduit selon le processus suivant: .
Insérer la description de l'image ici

3.1Nouveau‘Projets ordinaires’

  • Utiliser alicloudIoTStudioCréer un projet.
  • Créer un nouveau projet vide dans la gestion de projet
    Insérer la description de l'image ici

3.2Produits et équipements associés

Insérer la description de l'image ici
Insérer la description de l'image ici

3.3Nouveau‘Applications mobiles’

Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici

Cliquez sur‘Components’,Vous pouvez voir la liste des composants disponibles. Pour les instructions d'utilisation de chaque composant, voir Description du composant

3.4Conception de la page

Le cas utilise trois composantes :

  • Courbe en temps réel Afficher les données en temps réel du capteur
  • Feu indicateur Afficher l'état de l'alarme
  • La météo Pour afficher la météo de destination

Faites glisser les trois composants dans la zone médiane de la toile
Insérer la description de l'image ici

3.5Associer les sources de données

La source de données associée est divisée en trois étapes:
Produits associés
Dispositifs associés
Attributs associés
Chaque composant est réglé séparément
1、‘Feu indicateur’Configuration des composants
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Après le réglage,Régler l'alarme
Insérer la description de l'image ici
2、Même configuration de méthode‘Courbe en temps réel’.
Insérer la description de l'image ici
3、Paramètres‘La météo’Components, Choisissez l'emplacement désiré .

Insérer la description de l'image ici

3.6Développement de la logique opérationnelle

Le but principal de la logique d'entreprise est de faciliter la mise en place de la logique comportementale de l'équipement IOT , Les systèmes IOT conventionnels sont basés sur la logique comportementale du firmware côté appareil , Si le comportement de l'équipement doit être modifié après la livraison ,Est nécessaire pourOTAMise à jour.
Nouvelle règle d'alarme en cas de dépassement du seuil de gaz .
Insérer la description de l'image ici
Le système entre automatiquement dans la page logique d'entreprise ,Cliquez à gauche‘Noeud’, À droite se trouve l'introduction à la logique d'entreprise .
Insérer la description de l'image ici
1、Sélectionnez le noeud cible
Cette logique doit déterminer la valeur de la tension de gaz téléchargée par l'équipement. , L'alarme s'allume lorsque la tension dépasse le seuil , Sinon, éteignez l'alarme . Quatre noeuds sont nécessaires :

  • Noeud de déclenchement du périphérique
  • Noeud de jugement conditionnel
  • Allumez le noeud du feu d'avertissement
  • Éteignez le noeud du feu d'avertissement

Faites glisser le noeud désiré de gauche .

Insérer la description de l'image ici
2、Établir une relation d'association entre les noeuds, Faites glisser la souris pour connecter les noeuds
Insérer la description de l'image ici
3、Édition de la logique d'entreprise

  • Noeud de déclenchement du périphérique
    Insérer la description de l'image ici
  • Noeud de jugement conditionnel
    Insérer la description de l'image ici
    Paramètres de comportement du noeud de périphérique
    Insérer la description de l'image ici
    Insérer la description de l'image ici
    Sauvegarde et déploiement de la logique opérationnelle
    Insérer la description de l'image ici

3.7Aperçu et publication en ligne

Une fois la logique opérationnelle définie,Ça pourrait être dans“ Système d'alarme de surveillance du gaz ”Page‘’Enregistrer‘’Et cliquez sur‘Aperçu’Faire un aperçu.
Insérer la description de l'image ici
Scanner de téléphone mobile QR code, Vous pouvez voir les données sur votre téléphone .
Insérer la description de l'image ici

Mentions de copyright
Auteur de cet article [Zhiyun Clothing],Réimpression s’il vous plaît apporter le lien vers l’original, merci
https://fra.chowdera.com/2022/135/202205142335456386.html

Recommandé au hasard