สารบัญ:
- ขั้นตอนที่ 1: ตั้งค่า Raspberry Pi
- ขั้นตอนที่ 2: การตั้งค่า MySQL บน Raspberry Pi
- ขั้นตอนที่ 3: การตั้งค่า SensorBugs
- ขั้นตอนที่ 4: การติดตั้ง Bluetooth LE Python Wrapper
- ขั้นตอนที่ 5: สแกนและค้นหาที่อยู่ของ SensorBug
- ขั้นตอนที่ 6: เพิ่ม Python Script
- ขั้นตอนที่ 7: ทดสอบ Python Script
- ขั้นตอนที่ 8: เพิ่ม Python Scrip ไปที่ Crontab
- ขั้นตอนที่ 9: พิเศษ: กำหนดค่า SensorBug สำหรับเอาต์พุตการตรวจจับตำแหน่ง
วีดีโอ: ตรวจสอบและบันทึกอุณหภูมิด้วย Bluetooth LE และ RaspberryPi: 9 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
คำแนะนำนี้เป็นวิธีการรวมระบบตรวจสอบอุณหภูมิแบบหลายโหนดพร้อมบั๊กเซ็นเซอร์ Bluetooth LE จาก Blue Radios (BLEHome) และ RaspberryPi 3B ด้วยการพัฒนามาตรฐาน Bluetooth LE ขณะนี้มีเซ็นเซอร์ไร้สายพลังงานต่ำที่พร้อมใช้งานในตลาด ด้วยต้นทุนที่ต่ำมากและสามารถทำงานบนเซลล์เหรียญเดียวได้ครั้งละหลายเดือน เซ็นเซอร์ตัวหนึ่งที่ฉันหยิบขึ้นมามาจาก Blue Radio ที่เรียกว่า Sensor Bugs ราคาประมาณ $25 ใน Amazon เป็นอุปกรณ์ Bluetooth LE ที่มีเซ็นเซอร์อุณหภูมิ เซ็นเซอร์วัดแสง และมาตรความเร่ง ทั้งหมดสร้างขึ้นในหน่วยขนาดเล็กที่สามารถสื่อสารแบบไร้สายได้ เหมาะอย่างยิ่งสำหรับ Raspberry Pi 3B ซึ่งรองรับวิทยุ Bluetooth LE.
ขั้นตอนที่ 1: ตั้งค่า Raspberry Pi
ขั้นตอนแรกคือการตั้งค่า Raspberry Pi ที่ใช้งานได้ ทำตามคำแนะนำจากเว็บไซต์ของ Raspberry Pi โหลด Raspbian บนการ์ด SD ใส่ลงใน Raspberry Pi แล้วเปิดเครื่องขึ้นมา ฉันตั้งค่าระบบของฉันด้วย Raspbian Stretch Lite (ไม่มี GUI) เวอร์ชัน พ.ย. 2017 ตั้งค่า WiFi หากจำเป็น ฉันชอบที่จะปรับ เขตเวลาเป็นเขตเวลาปัจจุบันแทน UTC คุณสามารถทำได้โดยใช้คำสั่ง: $ sudo dpkg-reconfigure tzdataRest ของคำสั่ง ถือว่าการตั้งค่าเสร็จสิ้นผ่านอินเทอร์เฟซบรรทัดคำสั่ง
ขั้นตอนที่ 2: การตั้งค่า MySQL บน Raspberry Pi
การมีฐานข้อมูลติดตั้งอยู่ในเครื่องเพื่อเก็บข้อมูลที่จับได้ทั้งหมดจะมีประโยชน์ การติดตั้ง MySQL บน Raspberry Pi นั้นง่ายมาก การแก้ไขสคริปต์เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ SQL ภายนอกนั้นไม่ใช่เรื่องยาก คุณสามารถข้ามขั้นตอนนี้ได้หากต้องการใช้เซิร์ฟเวอร์ SQL บนเครือข่าย มีคำแนะนำมากมายบนเน็ต ฉันแนะนำสิ่งนี้:https:// www.stewright.me/2014/06/tutorial-install-…
เมื่อติดตั้งเซิร์ฟเวอร์ SQL แล้ว คุณสามารถใช้ไคลเอนต์ MySQL CLI เพื่อสร้างผู้ใช้ ฐานข้อมูล และตาราง ในการเข้าสู่ MySQL CLI ให้ใช้คำสั่ง:
$ sudo mysql -uroot-pFirst สร้างผู้ใช้ในเครื่องเพื่อแทรกข้อมูลที่ดักจับ: > CREATE USER 'datasrc'@'localhost' IDENTIFYED BY 'datasrc000';ถัดไป สร้างฐานข้อมูลและตาราง: > CREATE DATABASE SensorBug;การตั้งค่าผู้ใช้ อนุญาต: > ให้สิทธิ์ทั้งหมดกับ SensorBug. * ถึง 'datasrc'@'localhost'; ตอนนี้เพิ่มตารางใหม่ลงในฐานข้อมูล สำหรับตัวอย่างนี้ ฉันจะเพิ่มตารางที่มีคอลัมน์ต่อไปนี้: DATE, TIME, ADDRESS, LOCATION, TEMPERATURE และ ACCEROMETER
- DATE/TIME - นี่คือวันที่และเวลาที่บันทึกข้อมูล
- ADDRESS - นี่คือ MAC ของ SensorBug ที่ข้อความถูกจับจาก
- LOCATION - สตริงที่มนุษย์อ่านได้เพื่อระบุตำแหน่งของเซ็นเซอร์
- อุณหภูมิ - นี่คืออุณหภูมิที่บันทึกไว้
- ACCELE - นี่คือค่าเอาต์พุตของมาตรความเร่ง ซึ่งมีประโยชน์สำหรับการบันทึกตำแหน่งเซ็นเซอร์ (หากเปิดใช้งาน)
คำสั่งที่ทำสิ่งนี้คือ: > ใช้ SensorBug; > สร้างข้อมูลตาราง (วันที่ DATE, เวลา TIME, ที่อยู่ TINYTEXT, ตำแหน่ง TINYTEXT, อุณหภูมิ FLOAT, เร่ง INT) ตอนนี้ฐานข้อมูลพร้อมแล้ว เราสามารถไปยังการตั้งค่า sensorBugs ได้
ขั้นตอนที่ 3: การตั้งค่า SensorBugs
ข้อบกพร่องของเซ็นเซอร์เป็นอุปกรณ์ขนาดเล็กที่ค่อนข้างเรียบร้อย ขออภัย ผู้ผลิตให้เฉพาะแอป IOS สำหรับการเขียนโปรแกรมเท่านั้น ยิ่งไปกว่านั้น คุณยังสามารถใช้งานได้ถ้าคุณมีอุปกรณ์ Android เท่านั้น ขั้นตอนแรก จับคู่อุปกรณ์กับโทรศัพท์ หากไม่มีการจับคู่อุปกรณ์ SensorBug จะไม่โฆษณาข้อมูล ฉันพยายามดูว่าฉันสามารถทำสิ่งนี้ได้โดยตรงกับ RaspberryPi หรือไม่ แต่ดูเหมือนว่าไดรเวอร์ Bluetooth LE บน RaspberryPi ยังคงเป็นรุ่นทดลองและมีข้อบกพร่องเพื่อป้องกันไม่ให้จับคู่กับอุปกรณ์ Bluetooth LE เวอร์ชันอนาคตของไดรเวอร์ blueZ อาจแก้ไขปัญหานี้ได้ แต่เนื่องจากการเขียนในปัจจุบัน ไม่มีทางที่จะจับคู่ SensorBug กับ RaspberryPi ได้ โชคดีที่เราไม่จำเป็นต้องจับคู่อุปกรณ์เพื่อเก็บข้อมูลที่โฆษณา สิ่งเดียวที่เราต้องการคือโทรศัพท์เพื่อกำหนดค่า SensorBug โดยค่าเริ่มต้น SensorBug จะเริ่มโฆษณาข้อมูลอุณหภูมิในช่วงเวลา 1 วินาทีเมื่อจับคู่กับอุปกรณ์แล้ว สำหรับการบันทึกข้อมูลอุณหภูมิ ก็เพียงพอแล้ว หากคุณวางแผนที่จะขยายเพื่อใช้ตำแหน่งหรือเซ็นเซอร์วัดแสง อุปกรณ์จะมีความจำเป็นมากกว่าการกำหนดค่า สำหรับผู้เริ่มต้น เราจะจับคู่อุปกรณ์และยกเลิกการเชื่อมต่อ ซึ่งจะดีพอสำหรับการวัดอุณหภูมิ เริ่มต้นด้วยการกดปุ่มทั้งสองบน SensorBug ไฟ LED สีน้ำเงิน/เขียวจะกะพริบ ซึ่งแสดงว่าเปิดเครื่องอยู่ กดปุ่มใดปุ่มหนึ่ง ไฟ LED สีเขียวจะสว่างขึ้น แสดงว่าเปิดเครื่องอยู่ หากไฟ LED สีเขียวไม่ติดสว่าง ให้กดปุ่มทั้งสองเพื่อลองเปิดอุปกรณ์อีกครั้ง กดปุ่มใดปุ่มหนึ่งค้างไว้จนกว่าไฟ LED สีฟ้าจะเริ่มกะพริบ การดำเนินการนี้จะทำให้อุปกรณ์เข้าสู่โหมดจับคู่ ไปที่เมนูการกำหนดค่า Bluetooth บนโทรศัพท์แล้วมองหาอุปกรณ์ SensorBug เมื่อมันปรากฏขึ้น ให้เลือกเพื่อจับคู่กับอุปกรณ์ แค่นั้นแหละ ตอนนี้ SensorBug ได้รับการขับเคลื่อนและโฆษณาข้อมูลอุณหภูมิ
ขั้นตอนที่ 4: การติดตั้ง Bluetooth LE Python Wrapper
ต่อไป เราต้องติดตั้งไลบรารี่สำหรับ python เพื่อคุยกับ Bluetooth LE stack ดูคำแนะนำได้ที่นี่:https://github.com/IanHarvey/bluepyสำหรับ Python 2.7 ทำได้ง่ายๆ เพียงป้อนคำสั่งต่อไปนี้:
$ sudo apt-get ติดตั้ง python-pip libglib2.0-dev $ sudo pip ติดตั้ง bluepy
ขั้นตอนที่ 5: สแกนและค้นหาที่อยู่ของ SensorBug
หากต้องการทราบที่อยู่ MAC ของ SensorBug ให้ใช้คำสั่งนี้: $ sudo hcitool lescan คุณควรเห็นผลลัพธ์ดังนี้:
EC:FE:7E:10:B1:92 (ไม่ทราบ) หากคุณมีอุปกรณ์ Bluetooth LE อยู่เป็นจำนวนมาก อาจเป็นเรื่องยากที่จะค้นหาว่าคุณกำลังคุยอยู่กับอุปกรณ์ใด คุณสามารถลอง bluetoothctl ซึ่งให้รายละเอียดเพิ่มเติม:
$ sudo bluetoothctl[bluetooth]# scan on [ใหม่] อุปกรณ์ EC:FE:7E:10:B1:92 SensorBug10B192 [CHG] อุปกรณ์ EC:FE:7E:10:B1:92 คีย์ข้อมูลของผู้ผลิต: 0x0085 [CHG] อุปกรณ์ EC: FE:7E:10:B1:92 ค่าข้อมูลของผู้ผลิต: 0x02 [CHG] อุปกรณ์ EC:FE:7E:10:B1:92 ค่าข้อมูลของผู้ผลิต: 0x00 [CHG] อุปกรณ์ EC:FE:7E:10:B1:92 ค่าข้อมูลของผู้ผลิต: 0x3c [CHG] อุปกรณ์ EC:FE:7E:10:B1:92 ค่าข้อมูลของผู้ผลิต: 0x25 [CHG] อุปกรณ์ EC:FE:7E:10:B1:92 ค่าข้อมูลของผู้ผลิต: 0x09 [CHG] อุปกรณ์ EC:FE:7E:10:B1:92 ค่าข้อมูลของผู้ผลิต: 0x41 [CHG] อุปกรณ์ EC:FE:7E:10:B1:92 ค่าข้อมูลของผู้ผลิต: 0x02 [CHG] อุปกรณ์ EC:FE:7E:10:B1:92 ค่าข้อมูลของผู้ผลิต: 0x02 อุปกรณ์ [CHG] EC:FE:7E:10:B1:92 ค่าข้อมูลของผู้ผลิต: 0x43 [CHG] อุปกรณ์ EC:FE:7E:10:B1:92 ค่าข้อมูลของผู้ผลิต: 0x0b [CHG] อุปกรณ์ EC:FE:7E:10:B1:92 ManufacturerData ค่า: 0x01 [CHG] อุปกรณ์ EC:FE:7E:10:B1:92 ค่าข้อมูลของผู้ผลิต: 0x6f
บันทึกที่อยู่ MAC ซึ่งจะต้องป้อนลงในสคริปต์ python เพื่อกรองอุปกรณ์ Bluetooth LE ที่ไม่ต้องการออก
ขั้นตอนที่ 6: เพิ่ม Python Script
สำเนาของสคริปต์ Python มีให้จาก:
drive.google.com/open?id=10vOeEAbS7mi_eXn_…
นี่คือไฟล์เดียวกัน ดูแลเยื้องเมื่อคัดลอก:
นอกจากนี้ ให้อัปเดตที่อยู่ MAC ในไฟล์ python ให้ตรงกับที่อยู่เซ็นเซอร์ที่ได้รับจากผลการสแกน
# โปรแกรมนี้เป็นซอฟต์แวร์ฟรี: คุณสามารถแจกจ่ายซ้ำและ/หรือแก้ไขได้
# ภายใต้เงื่อนไขของ GNU General Public License ตามที่เผยแพร่โดย
# Free Software Foundation ไม่ว่าจะเป็นเวอร์ชัน 3 ของใบอนุญาตหรือ
# (ตามที่คุณเลือก) เวอร์ชันที่ใหม่กว่า
#
#โปรแกรมนี้เผยแพร่โดยหวังว่าจะเป็นประโยชน์
# แต่ไม่มีการรับประกันใด ๆ โดยไม่มีการรับประกันโดยนัยของ
# ความสามารถในการขายหรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ดู
# GNU General Public License สำหรับรายละเอียดเพิ่มเติม
#
# คุณควรได้รับสำเนาใบอนุญาตสาธารณะทั่วไปของกนูแล้ว
#พร้อมกับโปรแกรมนี้ ถ้าไม่ดู
# bscan.py - สแกนเนอร์บลูทู ธ LE อย่างง่ายและเครื่องแยกข้อมูล
จาก bluepy.btle นำเข้าสแกนเนอร์ DefaultDelegate
เวลานำเข้า
นำเข้า pymysql
นำเข้าโครงสร้าง
ชื่อโฮสต์ = 'localhost'
ชื่อผู้ใช้ = 'datasrc'
รหัสผ่าน = 'datasrc000'
ฐานข้อมูล = 'SensorBug'
#ป้อนที่อยู่ MAC ของเซ็นเซอร์จาก lescan
SENSOR_ADDRESS = ["ec:fe:7e:10:b9:92", "ec:fe:7e:10:b9:93"]
SENSOR_LOCATION = ["โรงรถ", "ภายนอก"]
คลาส DecodeErrorException (ข้อยกเว้น):
def _init_(ตัวเอง, ค่า):
self.value = ค่า
def _str_(ตัวเอง):
ผลตอบแทนตัวแทน (self.value)
คลาส ScanDelegate (DefaultDelegate):
def _init_ (ตัวเอง):
DefaultDelegate._init_(ตัวเอง)
def handleDiscovery (ตัวเอง, dev, isNewDev, isNewData):
ถ้า isNewDev:
พิมพ์ "อุปกรณ์ที่ค้นพบ", dev.addr
elif isNewData:
พิมพ์ "ได้รับข้อมูลใหม่จาก", dev.addr
def doQueryInsert (conn, addr, loc, temp, accero):
#ตารางเซ็นเซอร์ คือ วันที่ เวลา แอดเดอร์ สถานที่ อุณหภูมิ accero
cur = conn.cursor ()
dostr = 'ใส่ค่าข้อมูล (CURRENT_DATE(), NOW(), %s, %s, %s, %s);'
cur.execute (dostr, (addr, loc, temp, accero))
conn.commit()
สแกนเนอร์ = สแกนเนอร์ ().withDelegate(ScanDelegate())
myConnection = pymysql.connect (host=hostname, user=username, passwd=password, db=database)
ManuDataHex =
ReadLoop = True
ลอง:
ในขณะที่ (ReadLoop):
อุปกรณ์ = scanner.scan(2.0)
มานูดาต้า = ""
สำหรับอุปกรณ์ dev:
รายการ = 0
AcceloData = 0
AcceloType = 0
ข้อมูลชั่วคราว = 0
สำหรับ saddr ใน SENSOR_ADDRESS:
รายการ += 1
ถ้า (dev.addr == saddr):
พิมพ์ "อุปกรณ์ %s (%s), RSSI=%d dB" % (dev.addr, dev.addrType, dev.rssi)
CurrentDevAddr = Saddr
CurrentDevLoc = SENSOR_LOCATION[รายการ-1]
สำหรับ (adtype, desc, value) ใน dev.getScanData():
พิมพ์ " %s = %s" % (รายละเอียด, ค่า)
ถ้า (desc == "ผู้ผลิต"):
ManuData = ค่า
ถ้า (ManuData == ""):
พิมพ์ "ไม่ได้รับข้อมูล สิ้นสุดการถอดรหัส"
ดำเนินต่อ
#print มานูดาต้า
สำหรับ i, j ใน zip (ManuData[::2], ManuData[1::2]):
ManuDataHex.append(int(i+j, 16))
#เริ่มถอดรหัสข้อมูลผู้ผลิตดิบ
ถ้า ((ManuDataHex[0] == 0x85) และ (ManuDataHex[1] == 0x00)):
พิมพ์ "พบส่วนหัวไบต์ 0x0085"
อื่น:
พิมพ์ "ไม่พบส่วนหัวไบต์ 0x0085 ถอดรหัสหยุด"
ดำเนินต่อ
#ข้ามวิชาเอก/วิชารอง
#ดัชนี 5 คือ 0x3c ระบุระดับแบตเตอรี่และการกำหนดค่า #
ถ้า (ManuDataHex[4] == 0x3c):
ระดับแบตเตอรี่ = ManuDataHex[5]
ConfigCounter = ManuDataHex[6]
idx = 7
#print "TotalLen: " + str(len(ManuDataHex))
ในขณะที่ (idx < len (ManuDataHex)):
#print "Idx:" + str(idx)
#print "ข้อมูล: " + hex(ManuDataHex[idx])
ถ้า (ManuDataHex[idx] == 0x41):
#ข้อมูลมาตรความเร่ง
idx += 1
AcceleroType = ManuDataHex[idx]
AcceleroData = ManuDataHex[idx+1]
idx += 2
elif (ManuDataHex[idx] == 0x43):
#ข้อมูลอุณหภูมิ
idx += 1
ข้อมูลชั่วคราว = ManuDataHex[idx]
TempData += ManuDataHex[idx+1] * 0x100
TempData = TempData * 0.0625
idx += 2
อื่น:
idx += 1
พิมพ์ "ที่อยู่อุปกรณ์: " + CurrentDevAddr
พิมพ์ "ตำแหน่งอุปกรณ์: " + CurrentDevLoc
พิมพ์ "ระดับแบตเตอรี่: " + str (ระดับแบตเตอรี่) + "%"
พิมพ์ "ตัวนับ Config: " + str(ConfigCounter)
พิมพ์ "ข้อมูล Accelero: " + hex (AcceleroType) + " " + hex (AcceleroData)
พิมพ์ "ข้อมูลชั่วคราว:" + str(TempData)
doQueryInsert (myConnection, CurrentDevAddr, CurrentDevLoc, TempData, AcceleroData)
ReadLoop = เท็จ
ยกเว้น DecodeErrorException:
ผ่าน
ขั้นตอนที่ 7: ทดสอบ Python Script
สคริปต์ต้องทำงานในรูท ดังนั้น:
$ sudo python bscan.pyDiscovered device ec:6e:7e:10:b1:92 อุปกรณ์ ec:6e:7e:10:b1:92 (สาธารณะ), RSSI=-80 dB Flags = 06 ไม่สมบูรณ์ 16b Services = 0a18 ผู้ผลิต = 850002003c25094102024309016f พบไบต์ส่วนหัว 0x0085 ที่อยู่อุปกรณ์: ec:6e:7e:10:b1:92 ตำแหน่งอุปกรณ์: Garage ระดับแบตเตอรี่: 37% Config ตัวนับ: 9 ข้อมูล Accero: 0x2 0x2 ข้อมูลอุณหภูมิ: 16.5625
ขั้นตอนที่ 8: เพิ่ม Python Scrip ไปที่ Crontab
สคริปต์หลามต้องทำงานในรูท ดังนั้นหากคุณต้องการบันทึกข้อมูลโดยอัตโนมัติ จะต้องเพิ่มสคริปต์ลงใน crontab ของรูท สำหรับตัวอย่างนี้ ฉันเรียกใช้สคริปต์ทุกๆ 20 นาที ใช้คำสั่ง:
$ sudo crontab -e
# แก้ไขไฟล์นี้เพื่อแนะนำงานที่จะรันโดย cron
# # แต่ละงานที่จะรันจะต้องกำหนดผ่านบรรทัดเดียว # ระบุด้วยฟิลด์ที่แตกต่างกันเมื่องานจะถูกเรียกใช้ # และคำสั่งใดที่จะรันสำหรับงาน # # เพื่อกำหนดเวลาคุณสามารถระบุค่าที่เป็นรูปธรรมสำหรับ # นาที (m), ชั่วโมง (h), วันของเดือน (dom), เดือน (จันทร์), # และวันในสัปดาห์ (dow) หรือใช้ '*' ในฟิลด์เหล่านี้ (สำหรับ 'any')# # สังเกตว่างานจะเริ่มขึ้น ขึ้นอยู่กับระบบของ cron # แนวคิดเรื่องเวลาและเขตเวลาของภูต # # เอาต์พุตของงาน crontab (รวมถึงข้อผิดพลาด) จะถูกส่งผ่าน # อีเมลไปยังผู้ใช้ที่ไฟล์ crontab เป็นของ (เว้นแต่จะเปลี่ยนเส้นทาง) # # ตัวอย่างเช่น คุณสามารถเรียกใช้การสำรองข้อมูลบัญชีผู้ใช้ทั้งหมดของคุณ # เวลาตี 5 ทุกสัปดาห์ด้วย: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # สำหรับข้อมูลเพิ่มเติม โปรดดูที่ หน้าคู่มือของ crontab(5) และ cron(8) # # mh dom mon dow command 0 * * * * python /home/pi/bscan.py 20 * * * * python /home/pi/bscan.py 40 * * * * python /home/pi/bscan.py
แค่นั้นแหละ. สคริปต์ python จะทำงานในช่วงเวลาปกติและเข้ารหัสเอาต์พุตใหม่ลงในฐานข้อมูล SQL
ขั้นตอนที่ 9: พิเศษ: กำหนดค่า SensorBug สำหรับเอาต์พุตการตรวจจับตำแหน่ง
เป็นไปได้ที่จะกำหนดค่า SensorBug บน Android สำหรับเอาต์พุตการตรวจจับตำแหน่งสำหรับการตรวจจับการเปลี่ยนแปลงตำแหน่งที่เรียกว่า Garage door.sensing SensorBug จะตรวจพบว่าอุปกรณ์ตั้งตรงหรือนอนราบ เมื่ออุปกรณ์แบน ค่าที่บันทึกคือ 0x20 ในขณะที่หากอุปกรณ์ตั้งตรง ค่าจะเป็น 0x02 จะไม่แยกความแตกต่างหากตำแหน่ง X หรือ Y สูงขึ้น ตราบใดที่แกน Z ไม่ขึ้นหรือลง วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการใช้แอพ LightBlue SensorBug ควรแสดงในเมนูสแกน เลือกอุปกรณ์ที่คุณต้องการกำหนดค่า ไปที่คุณลักษณะ GATT สำหรับการกำหนดค่า Accelerometer UUID:9DC84838-7619-4F09-A1CE-DDCF63225B11
ดูภาพ:เขียนสตริงการกำหนดค่าใหม่:
010d3f02020000002d00000002 อ่านสตริงการกำหนดค่าเพื่อยืนยันการเขียน ซึ่งจะทำให้เซ็นเซอร์ความเร่งสามารถตรวจจับตำแหน่งได้
แนะนำ:
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): 3 ขั้นตอน
ติดตาม: Advanced Media Center พร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): บทความนี้เป็นบทความต่อจากบทความก่อนหน้าของฉันที่ประสบความสำเร็จค่อนข้างมากเกี่ยวกับการสร้างศูนย์สื่ออเนกประสงค์ โดยอ้างอิงจาก Raspberry PI ที่ได้รับความนิยมมากในตอนแรก แต่ ในภายหลัง เนื่องจากไม่มีเอาต์พุตที่สอดคล้องกับ HEVC, H.265 และ HDMI 2.2 จึงมีสวิตช์
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)
RuuviTag และ PiZero W และ Blinkt! เครื่องวัดอุณหภูมิที่ใช้ Bluetooth Beacon: คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth กับ Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): 25 ขั้นตอน (พร้อมรูปภาพ)
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): นี่คือบทแนะนำเกี่ยวกับวิธีการสร้าง Quadcopter โดยใช้มอเตอร์ NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS & วิทยุ 3DR ฉันพยายามอธิบายแต่ละขั้นตอนด้วยรูปภาพจำนวนหนึ่ง หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดตอบกลับ