今日のインテリジェントテクノロジーの時代では、スマートドアロックやスマート電球からスマートスピーカー、スマート家電などに至るまで、スマートホームシステムが人々の日常生活の標準装備となりつつあります。スマートホーム 徐々に私たちの生活に浸透しつつあります。近年人気が高まっているプログラミング言語である Python は、その迅速な開発、容易な学習、強力な機能により、多くのスマート ホーム制御システムで優先される開発言語となっています。
そこで、この記事では、Python と Raspberry Pi を使用してシンプルなスマート ホーム制御システムを開発する方法と、対応するコード例を紹介します。
Raspberry Pi は、Linux オペレーティング システムをベースにしたマイクロコンピューターであり、スマートフォンを含む多くのプロジェクトのコア コンポーネントとして使用できます。システム。開発を始める前に、Raspberry Pi が既にあり、Python 環境といくつかの必要なライブラリが正常にインストールされていることを確認してください。
Raspberry Pi では、GPIO ポートを通じて接続された電子コンポーネントを制御できます。 GPIO ポートは、General Purpose Input and Output Port の略称で、LED ライト、モーター、センサー、その他のコンポーネントを制御できる一般的なデジタル入出力機能を提供します。
LED ライト、モーター、その他のコンポーネントを制御するには、Python の RPi.GPIO ライブラリを使用できます。このライブラリは、GPIO に関連するいくつかの定数、メソッド、またはメカニズムを使用できるようにします。学習プロセス中によく使用される方法の 1 つは、「出力 IO ポート」です。これは、出力する GPIO ポートを制御するプログラムの使用を指します。高レベルまたは低電位。
以下は簡単な LED ライト制御の例です:
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) # 设置GPIO口的编码方式为BCM编码方式 GPIO.setup(18, GPIO.OUT) # 将GPIO18设置为输出口 try: while True: GPIO.output(18, GPIO.HIGH) # 打开LED灯 time.sleep(1) # 暂停1s,控制LED灯持续时间 GPIO.output(18, GPIO.LOW) # 关闭LED灯 time.sleep(1) except KeyboardInterrupt: GPIO.cleanup() # 释放GPIO口,清空资源
上記のコードでは、GPIO.BCM は GPIO ポートのエンコード方式を BCM エンコード方式に設定します。 GPIO.setup(18, GPIO.OUT) は、GPIO18 ポートを出力ポートとして設定します。次の while ループでは、GPIO.output() メソッドを使用して LED ライトのオンとオフを制御します。値が GPIO.HIGH の場合は LED ライトの点灯を意味し、値が GPIO.LOW の場合は LED ライトの消灯を意味します。
複数のコンポーネントを制御するには、上記と同様の方法を使用でき、各コンポーネントに GPIO ポートを割り当てるだけで済みます。たとえば、次のコードは 2 つの LED ライトを制御する方法を示しています。
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) # 设置GPIO口的编码方式为BCM编码方式 GPIO.setup(18, GPIO.OUT) # 设置GPIO18为输出口 GPIO.setup(23, GPIO.OUT) # 设置GPIO23为输出口 try: while True: GPIO.output(18, GPIO.HIGH) # 打开LED1 GPIO.output(23, GPIO.LOW) # 关闭LED2 time.sleep(1) # 暂停1s GPIO.output(18, GPIO.LOW) # 关闭LED1 GPIO.output(23, GPIO.HIGH) # 打开LED2 time.sleep(1) # 暂停1s except KeyboardInterrupt: GPIO.cleanup() # 释放GPIO口,清空资源
GPIO ポートを各コンポーネントに割り当てることができます。たとえば、LED1 には GPIO18 ポートが割り当てられ、LED2 には GPIO23 ポートが割り当てられます。 LED コンポーネントのオンまたはオフは、GPIO.output() メソッドを使用して制御されます。
スマート ホーム システムでは、センサーが重要な役割を果たします。温度、湿度、光など、環境内のパラメーターを感知できます。赤外線などを受信し、プログラムを通じて対応するアクションを実行します。 Python 制御センサーの場合、制御には django-celery-beat や APScheduler などのタスク スケジューリング ライブラリを使用できます。
温度センサーを例に挙げると、D1 mini を使用して WLAN に接続し、MQTT サーバーに接続し、センサー データを取得できます。以下は簡単なサンプル コードです:
import paho.mqtt.client as mqtt import json SERVER = "test.mosquitto.org" PORT = 1883 TOPIC = "/v1.0/devices/6c49f6b29348c22333ad97f5b8a9c7e68a48f87a/sensors/temperature" def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client.subscribe(TOPIC) def on_message(client, userdata, msg): data = json.loads(msg.payload.decode()) if 'temperature' in data: print('温度传感器: ', data['temperature']) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect(SERVER, PORT, 60) client.loop_forever()
上記のコードでは、paho.mqtt.client ライブラリを使用して MQTT サーバーに接続し、センサー データを取得します。同時に、on_message() 関数で、エアコン、給湯器、その他の機器を制御してスマート ホーム制御の目的を達成するなど、さまざまなセンサー データに対応する制御ロジックを作成できます。
この記事では、Python と Raspberry Pi を使用してシンプルなスマート ホーム コントロール システムを開発する方法を紹介し、対応するコード例を示します。もちろん、私たちは表面をなぞっただけであり、完全なスマート ホーム システムを構築するには、今後も学習、探索、実践を続ける必要があります。
以上がPythonを学び、スマートホーム制御システムを開発するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。