Dalam era teknologi pintar hari ini, sistem rumah pintar menjadi ciri standard dalam kehidupan harian manusia Daripada kunci pintu pintar, mentol lampu pintar, kepada pembesar suara pintar, peralatan rumah pintar, dll., rumah pintar secara beransur-ansur menembusi ke dalam kita. hidup tengah. Sebagai bahasa pengaturcaraan yang telah menjadi lebih popular sejak beberapa tahun kebelakangan ini, Python telah menjadi bahasa pembangunan pilihan untuk banyak sistem kawalan rumah pintar kerana pembangunan pesat, pembelajaran mudah dan fungsi yang berkuasa.
Jadi, artikel ini akan memperkenalkan cara menggunakan Python dan Raspberry Pi untuk membangunkan sistem kawalan rumah pintar yang ringkas dan memberikan contoh kod yang sepadan.
Raspberry Pi ialah mikrokomputer berasaskan sistem pengendalian Linux, yang boleh digunakan sebagai komponen teras banyak projek, termasuk sistem rumah pintar kami. Sebelum memulakan pembangunan, sila pastikan anda sudah mempunyai Raspberry Pi dan telah berjaya memasang persekitaran python dan beberapa perpustakaan yang diperlukan.
Pada Raspberry Pi, kita boleh mengawal komponen elektronik yang disambungkan melalui port GPIO. Port GPIO ialah singkatan port input dan output tujuan umum Ia boleh menyediakan fungsi input/output digital tujuan umum, dan kami boleh menggunakannya untuk mengawal komponen seperti lampu LED, motor dan penderia.
Untuk mengawal lampu LED, motor dan komponen lain, kami boleh menggunakan perpustakaan RPi.GPIO dalam Python. Perpustakaan ini akan memberikan beberapa pemalar, kaedah atau mekanisme yang berkaitan dengan GPIO untuk kita gunakan Semasa proses pembelajaran, satu kaedah yang sering digunakan ialah "output the output IO port", yang merujuk kepada penggunaan program untuk mengawal port GPIO. untuk mengeluarkan voltan tinggi atau potensi rendah.
Berikut ialah contoh kawalan lampu LED mudah:
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口,清空资源
Dalam kod di atas, GPIO.BCM menetapkan kaedah pengekodan port GPIO kepada kaedah pengekodan BCM. GPIO.setup(18, GPIO.OUT) menetapkan port GPIO18 sebagai port output. Dalam gelung sementara berikut, kami menggunakan kaedah GPIO.output() untuk mengawal lampu LED hidup dan mati. Apabila nilai adalah GPIO.HIGH, ia bermakna menghidupkan lampu LED Apabila nilai adalah GPIO.LOW, ia bermakna mematikan lampu LED.
Untuk mengawal berbilang komponen, kita boleh menggunakan kaedah yang serupa dengan di atas, dan hanya perlu menetapkan port GPIO kepada setiap komponen. Sebagai contoh, kod berikut menunjukkan cara mengawal dua lampu 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口,清空资源
Kami boleh menetapkan port GPIO kepada setiap komponen, contohnya, LED1 diperuntukkan port GPIO18, dan LED2 diperuntukkan port GPIO23. Menghidupkan atau mematikan komponen LED dikawal menggunakan kaedah GPIO.output().
Dalam sistem rumah pintar, penderia memainkan peranan penting dalam persekitaran, seperti suhu, kelembapan, cahaya, inframerah, dll., dan dengan itu membuat keputusan melalui tindakan yang sepadan dengan program kami. . Untuk penderia kawalan Python, kita boleh menggunakan perpustakaan penjadualan tugas seperti django-celery-beat dan APScheduler untuk kawalan.
Mengambil penderia suhu sebagai contoh, kita boleh menggunakan D1 mini untuk menyambung ke wlan, menyambung ke pelayan MQTT dan mendapatkan data penderia. Berikut ialah contoh kod mudah:
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()
Dalam kod di atas, kami menggunakan perpustakaan paho.mqtt.client untuk menyambung ke pelayan MQTT dan mendapatkan data penderia. Pada masa yang sama, dalam fungsi on_message(), kita boleh menulis logik kawalan yang sepadan untuk data penderia yang berbeza, seperti mengawal penghawa dingin, pemanas air dan peralatan lain untuk mencapai tujuan kawalan rumah pintar.
Artikel ini memperkenalkan cara menggunakan Python dan Raspberry Pi untuk membangunkan sistem kawalan rumah pintar yang ringkas dan menyediakan contoh kod yang sepadan. Sudah tentu, kami hanya menconteng permukaan, dan kami masih perlu terus belajar, meneroka dan berlatih pada masa hadapan untuk membina sistem rumah pintar yang lengkap.
Atas ialah kandungan terperinci Belajar Python dan bangunkan sistem kawalan rumah pintar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!