[PYTHON] J'ai créé un capteur d'ouverture / fermeture (lien Twitter) avec TWE-Lite-2525A

J'ai essayé de créer un capteur ouvert / fermé avec TWE-Lite-2525A

J'ai relevé le défi du travail électronique pendant les vacances d'été. C'est le premier message de Qiita.

Ce but

Détecte les vibrations (accélération) à l'aide d'un petit capteur IOT avec accélération (TWE-LITE-2525A) et POST sur l'API de Twitter.

DSC_0448.png

Ce que j'ai acheté cette fois

Acheté en ligne chez Akizuki Electronics. Je suis arrivé dans environ 2 jours.

  1. Pile au lithium CR2032

Autre environnement de développement:

- Windows10(64bit) --Série Python3

1. Préparation du TWE-LITE-2525A

Si elles sont laissées telles quelles au moment de l'achat, les données envoyées par Twilight 2525 seront difficiles à gérer. Réécrivez les paramètres de MONOSTICK et TWE-LITE-2525A.

Pour le réécrire, j'utilise une fonction appelée "OTA". Il s'agit d'un mécanisme pour «écrire le firmware sur le côté USB (récepteur: côté monostick) et l'écraser sans fil du côté USB vers le côté capteur». Cependant, étant donné que le côté USB sera utilisé comme récepteur après cela, il est nécessaire d'écraser à nouveau le micrologiciel du récepteur. Cela semble être une abréviation pour # Over The Air.

Puisqu'il existe une vidéo officielle, il est facile d'obtenir un aperçu en regardant ce qui suit.  https://www.youtube.com/watch?v=uq_pkrvypBA

Je comprends le flux, mais comment le réécrivez-vous réellement? Les informations sur le site officiel étaient encombrées, et j'étais un peu accro à les déplacer.

1-1. Préparation des données pour l'écrasement

DL l '"application Samp_Monitor" parmi les suivantes.  https://mono-wireless.com/jp/products/TWE-Lite-2525A/firmware_update.html

1.Samp_Monitor_EndDevice_Input_JN5164_CNFMST_1_6_1.bin  2.Samp_Monitor_EndDevice_Input_JN5164_LITE2525A_1_6_1.bin  3.Samp_Monitor_Parent_JN5164_1_6_1.bin

Le fichier ZIP qui a été DL contient les trois ci-dessus, 1 est utilisé pour le bac installé côté capteur, et 3 est utilisé pour le bac installé côté USB.

1-2. Ferme d'écriture sur USB

DL / Installez «TWE-LITE Programmer for Windows» à partir de ce qui suit.  http://mono-wireless.com/jp/tech/misc/LiteProg/

Utilisez cette application pour écrire divers micrologiciels sur le monostick du côté USB. 3 monopg.png

Veuillez noter que si MONOSTICK est reconnu dans une autre fenêtre, il ne sera pas reconnu par cette application. De plus, s'il n'est pas reconnu, il peut être préférable de connecter / déconnecter l'USB.

1-3. Ecriture du micrologiciel sur le côté du capteur

Micrologiciel pour écrire sur le côté du capteur à l'aide du programmateur TWE-LITE ci-dessus Ecrivez (1.Samp_Monitor_EndDevice_Input_JN5164_CNFMST_1_6_1.bin) sur USB.

Changez pour n'importe quel paramètre comme dans la vidéo. (N'oubliez pas de sauvegarder les paramètres avec "S") Pour des détails tels que la connexion série et le réglage du débit en bauds dans TeraTerm, reportez-vous au responsable séparément.

Reportez-vous à l'image ci-dessous pour ce paramètre sensor.png

Une fois les réglages terminés, allumez l'alimentation au lithium tout en gardant le capteur proche de l'USB, Réécrivez le micrologiciel côté capteur.

1-4. Ecriture de la ferme sur le côté USB

Micrologiciel pour écrire sur le côté USB à l'aide du programmateur TWE-LITE Ecrivez (3.Samp_Monitor_Parent_JN5164_1_6_1.bin) sur USB.

Changez pour n'importe quel paramètre comme dans la vidéo. (N'oubliez pas de sauvegarder les paramètres avec "S")

Reportez-vous à l'image ci-dessous pour ce paramètre usb.png

Le réglage est terminé sur le côté USB tel quel.

1-5. Contrôle de fonctionnement

Si vous vérifiez à partir de TeraTerm, vous pouvez obtenir différentes valeurs avec clé = valeur comme indiqué ci-dessous.

S'il n'y a pas de réponse du capteur, seule la balise "ts" sera sortie. Vous pouvez obtenir l'axe des x, des y et des z. (Je ne vois pas grand chose cette fois) kyacchi.png

2. Création d'un programme côté Python

J'ai écrit Python pour la première fois. Veuillez vous référer à l'installation de Python et à la création de l'API Twitter séparément.

L'intégration de Twitter (OAuth) dans Python utilise requests-oauthlib, une bibliothèque d'authentification OAuth pour Python. Installez la bibliothèque comme ceci.

pip install requests requests_oauthlib

Créez le code en vous référant à l'exemple sur le site Web de Monowire. L'ensemble du code source ressemble à ceci.

DetectionTweet.py


import serial
import requests
from requests_oauthlib import OAuth1Session
from datetime import datetime

CK = 'Write your Consumer Key'
CS = 'Write your Consumer Secret'
AT = 'Write your Access Token'
AS = 'Write your Accesss Token Secert'

#Ouvrez COM3
s = serial.Serial('COM3', 115200)

#URL pour publier des tweets
url = "https://api.twitter.com/1.1/statuses/update.json"

#boucle infinie
while 1:
    data = s.readline()
    
    #La première ":Se débarrasser de
    data = data[2:]
    spilitdatum = data.decode('utf-8').split(":")
    
    dict = {}
    
    # key,Enregistrer comme type de valeur dans le dictionnaire
    for spilitdata in spilitdatum:
        
        s_key = spilitdata.split("=")[0]
        s_val = spilitdata.split("=")[1]
        
        dict[s_key] = s_val
    
    #Lorsqu'il n'y a pas de détection du capteur, seule la touche "ts" peut être obtenue, donc
    #Ici comme clé appropriée[id]Jugement par
    if ("id" in dict):
        
        #Corps du Tweet
        #Si le texte de Twitter est le même, le statut est un double et ce sera le statut 403, alors réglez l'heure.
        params = {"status": "Vibrate Detection! " + "\n" + datetime.now().strftime('%X')}
        
        #Méthode de publication par POST avec authentification OAuth
        twitter = OAuth1Session(CK, CS, AT, AS)
        req = twitter.post(url, params = params)

        #Vérifiez la réponse
        if req.status_code == 200:
            print ("OK: %s" % req)
        else:
            print ("Error: %s" % req.content)

s.close()

3. Confirmation de la coopération entre TWE-Lite-25252A et Twitter.

C'est simple, mais c'est parfait pour la porte. DSC_0450.png

Il a tweeté à merveille en ouvrant et en fermant la porte. cmd.png

Detect.png

Si cela reste tel quel, il y aura trop de détections (quelques notifications seront envoyées en ouvrant et fermant la porte une fois). Il semble qu'il soit nécessaire de réduire le délai de notification du côté sans fil (0,5 seconde par défaut) et de faire des ajustements côté Python et côté serveur. J'utilise trop de ressources Twitter ;;

Après cela, si vous le combinez avec AWS IoT ou MQTT, le service IOT sera terminé. Que diriez-vous du travail électronique pour les devoirs de vacances d'été de votre enfant?

J'ai donc écrit Qiita pour la première fois, mais j'étais fatigué.

Recommended Posts

J'ai créé un capteur d'ouverture / fermeture (lien Twitter) avec TWE-Lite-2525A
J'ai essayé de créer une application OCR avec PySimpleGUI
J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV
J'ai essayé de détecter un objet avec M2Det!
J'ai essayé de faire la reconnaissance de caractères manuscrits de Kana Partie 3/3 Coopération avec l'interface graphique en utilisant Tkinter
J'ai essayé d'implémenter le perceptron artificiel avec python
J'ai essayé de trouver la classe alternative avec tensorflow
J'ai essayé de créer diverses "données factices" avec Python faker
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
J'ai essayé de créer un article dans Wiki.js avec SQL Alchemy
[Python] J'ai essayé de faire une application qui calcule le salaire en fonction des heures de travail avec tkinter
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de faire une activité qui définit collectivement les informations de position
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de rendre le deep learning évolutif avec Spark × Keras × Docker
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
J'ai essayé de faire 5 modèles de base d'analyse en 3 ans
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[Python] Japonais simple ⇒ J'ai essayé de créer un outil de traduction en anglais
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de faire une étrange citation pour Jojo avec LSTM
J'ai essayé de me connecter automatiquement à Twitter avec du sélénium (RPA, scraping)
J'ai essayé de créer un mécanisme de contrôle exclusif avec Go
J'ai essayé de créer un langage original "PPAP Script" qui imagé PPAP (Pen Pineapple Appo Pen) avec Python
J'ai essayé d'envoyer un SMS avec Twilio
J'ai essayé d'implémenter Autoencoder avec TensorFlow
J'ai essayé de visualiser AutoEncoder avec TensorFlow
J'ai essayé d'implémenter CVAE avec PyTorch
Je veux faire un programme d'automatisation!
J'ai créé une API Web
J'ai essayé de résoudre TSP avec QAOA
J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda
[AWS] [GCP] J'ai essayé de rendre les services cloud faciles à utiliser avec Python
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
[Zaif] J'ai essayé de faciliter le commerce de devises virtuelles avec Python
J'ai essayé de créer un service de raccourcissement d'url sans serveur avec AWS CDK
J'ai essayé de prédire l'année prochaine avec l'IA
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
J'ai essayé d'implémenter la lecture de Dataset avec PyTorch
J'ai essayé d'utiliser lightGBM, xg boost avec Boruta
J'ai essayé d'apprendre le fonctionnement logique avec TF Learn
J'ai essayé de rendre mon propre code source compatible avec Chainer v2 alpha
J'ai essayé de déplacer GAN (mnist) avec keras
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
Fabriquer un appareil de surveillance avec un capteur infrarouge
J'ai essayé d'obtenir une image en grattant
J'ai essayé de détecter rapidement un mouvement avec OpenCV
Quand j'ai essayé de créer un VPC avec AWS CDK mais que je n'ai pas pu le faire
Je veux faire un jeu avec Python
[Analyse des brevets] J'ai essayé de créer une carte des brevets avec Python sans dépenser d'argent
J'ai essayé de créer un environnement Ubuntu 20.04 LTS + ROS2 avec Raspberry Pi 4
J'ai créé une API de recherche de château avec Elasticsearch + Sudachi + Go + echo
Je veux être OREMO avec setParam!