Machen Sie ein BLE-Thermometer und ermitteln Sie die Temperatur mit Pythonista3

Machen Sie ein BLE-Thermometer und ermitteln Sie die Temperatur mit Pythonista3

Einführung

Pythonista3 kann übrigens BLE (Bluetooth Low Energy) verarbeiten. Ich habe übrigens noch nie die Bluetooth-Funktion von ESP-WROOM-32 verwendet. Lassen Sie uns die Temperatur vom BLE-Thermometer abrufen!

Was du machen willst

Ermitteln Sie die Temperatur auf Ihrem iPhone über das BLE-Thermometer (ESP-WROOM-32 + Temperatursensor).

Was du vorbereitet hast

ESP-WROOM-32(ESP32-DevKitC) Temperatursensor DS18B20 iPhone (Pythonista 3 installiert)

Weise

Schließen Sie ESP-WROOM-32 und DS18B20 an und messen Sie die Temperatur. Senden Sie die Temperatur mit BLE von ESP-WROOM-32. Wenn Sie sich wirklich für die Temperatur interessieren, erhalten Sie die Temperatur auf Ihrem iPhone.

Vollständiges Bild

system_ds18b20.png

erstellen

Verbinden Sie ESP-WROOM-32 und DS18B20

DS18B20 ist 1-adrig angeschlossen. Das Datenblatt sieht folgendermaßen aus: ds18B20.png Stellen Sie daher wie folgt eine Verbindung zu ESP-WROOM-32 her. esp32_ds18B20.png Verbindung hergestellt esp32_temp.png

Holen Sie sich die Temperatur vom Temperatursensor

1-Draht-Kommunikation mit DS18B20, um die Temperatur zu ermitteln. Das Programm basierte auf sensefreelinux / ds18b20.

Verwenden Sie BLE von ESP-WROOM-32

Quellcode

Es ist ein bisschen lang, also habe ich es auf Github gelegt. esp/thermometer ds18b20.c: Ermittelt den Wert vom Temperatursensor. gatts_thermometer.c: Machen Sie ESP32 zu einem BLE-Server. Senden Sie den Sensorwert im READ-Ereignis vom Client.

Das Programm wurde mit dem GATT Server-Beispiel erstellt, das mit [ESP-IDF] geliefert wird (https://qiita.com/mitazet/items/8a4c36bd9e1e45f463fd). In Bezug auf das GATT war die Übersicht über das GATT (Generic Attribute Profile) (http://yegang.hatenablog.com/entry/2014/08/09/195246) sehr hilfreich. Da es nicht kommerzialisiert ist, verwendet UUID einen geeigneten Wert.

Verwenden Sie BLE von Pythonista 3

Quellcode

Verwenden Sie cb für Pythonista3, um Temperaturdaten abzurufen. Die UUID entspricht dem obigen Programm.

thermo_client.py


import ui
import cb
import sound
import struct

TM_SERVICE_UUID = '00FF'
TM_CHAR_UUID = 'FF01'

class MyCentralManagerDelegate (object):
	def __init__(self):
		self.peripheral = None
		self.temp = 0

	def did_discover_peripheral(self, p):
		global text_state
		print('+++ Discovered peripheral: %s (%s)' % (p.name, p.uuid))
		if p.name and 'ESP_THERMOMETER' in p.name and not self.peripheral:
			# Keep a reference to the peripheral, so it doesn't get garbage-collected:
			self.peripheral = p
			cb.connect_peripheral(self.peripheral)
			text_state.text = 'Detected'

	def did_connect_peripheral(self, p):
		print('*** Connected: %s' % p.name)
		print('Discovering services...')
		p.discover_services()

	def did_fail_to_connect_peripheral(self, p, error):
		print('Failed to connect')

	def did_disconnect_peripheral(self, p, error):
		print('Disconnected, error: %s' % (error,))
		self.peripheral = None

	def did_discover_services(self, p, error):
		for s in p.services:
			if TM_SERVICE_UUID in s.uuid:
				print('+++ Thermometer found')
				p.discover_characteristics(s)

	def did_discover_characteristics(self, s, error):
		if TM_SERVICE_UUID in s.uuid:
			for c in s.characteristics:
				if TM_CHAR_UUID in c.uuid:
					print('read temperature sensor...')
					self.peripheral.read_characteristic_value(c)

	def did_write_value(self, c, error):
		print('Did enable temperature sensor')

	def did_update_value(self, c, error):
		global text_temp
		if TM_CHAR_UUID == c.uuid:
			# 
			self.temp = (c.value[0] + (c.value[1]*256))/16
			print(self.temp)
			text_temp.text=(str(self.temp) + '℃')

view = ui.View()                                      
view.name = 'THERMOMETER'                                    
view.background_color = 'white'

text_state = ui.TextView()
text_state.frame = (view.width * 0.5, view.height * 0.2, view.width, view.height*0.3)
text_state.flex = 'LRTB'
text_state.font = ('<system>', 18)
text_state.text_color = 'grey'
 
text_temp = ui.TextView()
text_temp.frame = (view.width * 0.25, view.height * 0.4, view.width, view.height)
text_temp.flex = 'WHLRTB'
text_temp.font = ('<system-bold>', 50)                                                    

view.add_subview(text_state)
view.add_subview(text_temp)
view.present('sheet')

delegate = MyCentralManagerDelegate()
print('Scanning for peripherals...')
text_state.text = 'Scanning'
cb.set_central_delegate(delegate)
cb.scan_for_peripherals()

# Keep the connection alive until the 'Stop' button is pressed:
try:
	while True: pass
except KeyboardInterrupt:
	# Disconnect everything:
	cb.reset()

Dies ist auch auf Github. thermo_client.py

Prüfung

Führen Sie termo_client.py auf Pythonista3 aus. 5C5AAD7B-08A1-43DC-93CC-39F265A8BEF1.jpeg Erfolgreiche Akquisition !! Ein bisschen kühle Temperatur.

Schließlich

__ Ist es sinnvoll, es remote zu machen? __ Wird nicht akzeptiert. Es ist nicht sehr nützlich im Haus, aber es kann in der Farm nützlich sein (es spart Strom).

Referenzseite

So verbinden Sie Bluetooth von Ubuntu mit ESP32, um Signale zu senden und zu empfangen cb — Connecting to Bluetooth LE Peripherals feelfreelinux/ds18b20 [BLE verwenden] GATT (Generic Attribute Profile) Übersicht

Recommended Posts

Machen Sie ein BLE-Thermometer und ermitteln Sie die Temperatur mit Pythonista3
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 3 sichtbar
Holen Sie sich mit Python den Aktienkurs eines japanischen Unternehmens und erstellen Sie eine Grafik
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
[Persönliches Memo] Holen Sie sich Daten im Web und machen Sie daraus einen DataFrame
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Geben Sie die Lautstärke unter Linux an und spielen Sie den Sound ab
Versuchen Sie, ein einfaches Spiel mit Python 3 und iPhone zu erstellen
Machen Sie mit Python einen Haltepunkt auf der c-Ebene
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
Holen Sie sich die passende Zeichenfolge in den regulären Ausdruck und verwenden Sie sie beim Ersetzen unter Python3 erneut
Holen Sie sich die ID einer GPU mit geringer Speichernutzung
Holen Sie sich UNIXTIME zu Beginn des heutigen Tages mit einem Befehl
Erstellen Sie mit Raspberry Pi + DHT11 ganz einfach einen TweetBot, der Sie über Temperatur und Luftfeuchtigkeit informiert.
Stellen Sie eine SonicWall SSL VPN-Verbindung mit der Linux-CLI her
Machen Sie eine Lotterie mit Python
Erstelle ein 2D-Rollenspiel mit Ren'Py (3) -Items and Tool Shop
Holen Sie sich den Kauf- und Verkaufspreis der virtuellen Währung mit der API von Zaif Exchange und erstellen Sie ein Diagramm
Machen Sie ein Feuer mit kdeplot
Holen Sie sich die stärkste Umgebung mit VS Code, Remote-Containern und Remote-Docker-Daemon
So erstellen Sie einen Befehl zum Lesen der Einstellungsdatei mit Pyramide
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Benachrichtigen Sie LINE über die Körpertemperatur vom BLE-Thermometer mit Raspeltorte Nr. 1
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Benachrichtigen Sie LINE über die Körpertemperatur vom BLE-Thermometer mit Raspeltorte Nr. 2
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Erstellen Sie einen Kanji-Kompass mit Raspberry Pi und Sense Hat
Rufen Sie die URL des von der Jira-Python-Bibliothek erstellten JIRA-Tickets ab
Lösen Sie das Python-Rucksackproblem mit der Branch-and-Bound-Methode
Holen Sie sich OCTA-Simulationsbedingungen aus einer Datei und speichern Sie sie mit Pandas
Lassen Sie uns eine GUI mit Python erstellen.
Machen Sie einen Sound mit Jupyter Notebook
Machen wir einen Blockbruch mit wxPython
Holen Sie sich das Wetter mit Python-Anfragen
Holen Sie sich das Wetter mit Python-Anfragen 2
[Python] Machen Sie die Funktion zu einer Lambda-Funktion
Erstellen Sie ein Empfehlungssystem mit Python
Machen Sie einen Filter mit einer Django-Vorlage
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Machen wir mit xCAT einen Spacon
Erstellen Sie mit PySide einen Modelliterator
Machen Sie eine schöne Grafik mit Plotly
Rufen Sie eine Liste der Kameraparameter ab, die mit cv2.VideoCapture festgelegt werden können, und machen Sie daraus einen Wörterbuchtyp
Ersetzen Sie den Verzeichnisnamen und den Dateinamen im Verzeichnis zusammen mit einem Linux-Befehl.
Berechnen Sie die kürzeste Route eines Diagramms mit der Dyxtra-Methode und Python
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Erstellen Sie mit Raspberry Pi einen WLAN-Ethernet-Konverter und einen einfachen Router
[Python + PHP] Erstellen Sie mit Raspberry Pi einen Temperatur-, Feuchtigkeits- und Druckmonitor
Abrufen und Konvertieren der aktuellen Zeit in der lokalen Systemzeitzone mit Python
Ich erhalte einen Python No-Modul mit dem Namen 'Encodings' mit dem Befehl aws
Lesen Sie das Diagrammbild mit OpenCV und ermitteln Sie die Koordinaten des Endpunkts des Diagramms
Die Geschichte einer Soundkamera mit Touch Designer und ReSpeaker
Holen Sie sich Artikelbesuche und Likes mit Qiita API + Python
Holen Sie sich das durchschnittliche Gehalt eines Jobs mit bestimmten Bedingungen von Indeed.com
Tweet die Wettervorhersage mit Bot
Erstellen Sie einen Videoplayer mit PySimpleGUI + OpenCV
[Raspberry Pi] Fügen Sie ein Thermometer und ein Feuchtigkeitsmessgerät hinzu
Spielen Sie mit dem UI-Modul von pythonista3
Machen Sie einen seltenen Gacha-Simulator mit Flask