J'ai relevé le défi du travail électronique pendant les vacances d'été. C'est le premier message de Qiita.
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.
Acheté en ligne chez Akizuki Electronics. Je suis arrivé dans environ 2 jours.
- Windows10(64bit) --Série Python3
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.
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.
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.
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.
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
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.
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
Le réglage est terminé sur le côté USB tel quel.
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)
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()
C'est simple, mais c'est parfait pour la porte.
Il a tweeté à merveille en ouvrant et en fermant la porte.
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