สารบัญ:
วีดีโอ: RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth พร้อม Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือพูดสั้น ๆ: วิธีการสร้างที่ทันสมัยและเทอร์โมมิเตอร์แบบเนิร์ดเล็กน้อย
RuuviTag เป็นบีคอนบลูทูธเซ็นเซอร์โอเพนซอร์สที่มาพร้อมกับเซ็นเซอร์อุณหภูมิ/ความชื้น/ความดันและการเร่งความเร็ว แต่อาจทำหน้าที่เป็นบีคอนความใกล้เคียง Eddystone ™ / iBeacon มาตรฐาน มันเป็นโครงการ Kickstarter ที่ประสบความสำเร็จอย่างมาก และฉันได้รับของฉันเมื่อไม่กี่สัปดาห์ก่อน มี Github พร้อมซอฟต์แวร์ python สำหรับอ่าน RuuviTag โดยใช้ราสเบอร์รี่ และฉันได้ใช้หนึ่งในตัวอย่างของพวกเขา โดยมีการเพิ่มเติมบางส่วน
Raspberry Pi Zero W เป็นสมาชิกล่าสุดของตระกูล RPi โดยทั่วไปจะเป็น Pi Zero ที่มี Bluetooth และ WLAN ที่เพิ่มเข้ามา
กะพริบตา! pHAT จาก Pimoroni นั้นเป็นแถบ LED RBG แปดดวงที่กำหนดค่าเป็น HAT สำหรับ Raspberry Pi มันใช้งานง่ายมากและมาพร้อมกับไลบรารี่หลาม แนวคิดคือการอ่านข้อมูลจาก RuuviTag และแสดงโดยใช้ flasht! หมวก. ค่าจะแสดงเป็นเลขฐานสองโดยใช้ LED จำนวน 7 ดวง ในขณะที่ค่า 8 ดวงใช้เพื่อระบุว่าค่าความชื้นหรืออุณหภูมิ (+/-/0) จะแสดงขึ้นหรือไม่
ขั้นตอนที่ 1: การตั้งค่าระบบ
การตั้งค่าระบบทำได้ง่าย:- เปิด RuuviTag (รุ่นเซ็นเซอร์อุณหภูมิ RuuviTag)
- ตั้งค่า RPi Zero W, RPi3 หรือ RPi อื่นๆ ที่มีการเพิ่มความจุของบลูทูธ โดยทำตามคำแนะนำใน www.raspberrypi.org
- วางไฟกระพริบ! HAT บน RPi (ขณะปิด)
- ติดตั้งไฟกระพริบ! และซอฟต์แวร์ RuuviTag ตามที่ระบุไว้ในหน้า GitHub ที่เกี่ยวข้อง
- ตอนนี้คุณต้องระบุที่อยู่ MAC ของ RuuviTag. ของคุณ
- คัดลอกโปรแกรม Python ที่แนบมา เปิดด้วย IDLE สำหรับ Python 3
- เปลี่ยนที่อยู่ MAC ของ RuuviTag เป็นของคุณ จากนั้นบันทึกและเรียกใช้โปรแกรม
- อย่าลังเลที่จะปรับเปลี่ยนและเพิ่มประสิทธิภาพโปรแกรม โปรแกรมมาตามที่เป็นอยู่เพื่อใช้ในความเสี่ยงของคุณเองไม่มีหนี้สินใด ๆ สำหรับความเสียหายใด ๆ
ขั้นตอนที่ 2: อุปกรณ์และโปรแกรม
ดังที่กล่าวไว้ข้างต้น แนวคิดคือการสร้างระบบที่เรียบง่ายและราคาไม่แพงเพื่ออ่านข้อมูลจากบีคอนและแสดงค่าตัวเลขในชั่วพริบตา! HAT หรือแถบ LED ที่คล้ายกัน
ช่วงของค่าอุณหภูมิที่จะวัดด้วยระบบที่ใช้ RPi ส่วนใหญ่จะอยู่ระหว่าง - 50°C ถึง +80°C สำหรับความชื้นระหว่าง 0 ถึง 100% ดังนั้นการแสดงผลที่สามารถให้ค่าตั้งแต่ -100 ถึง +100 จะเพียงพอสำหรับการใช้งานส่วนใหญ่ ตัวเลขทศนิยมที่เล็กกว่า 128 สามารถแสดงเป็นเลขฐานสองที่มี 7 บิต (หรือ LED) ดังนั้นโปรแกรมจึงนำค่าอุณหภูมิและความชื้นจาก RuuviTag เป็นตัวเลข "float" และแปลงเป็นเลขฐานสองซึ่งจะแสดงบน blinkt!
ในขั้นแรก ตัวเลขจะถูกปัดเศษ วิเคราะห์ว่าบวก ลบ หรือศูนย์ แล้วแปลงเป็นจำนวนบวกโดยใช้ "abs" จากนั้นเลขทศนิยมจะถูกแปลงเป็นเลขฐานสอง 7 หลัก โดยทั่วไปจะเป็นสตริงของ 0 และ 1 ซึ่งได้รับการวิเคราะห์และแสดงบน 7 พิกเซลสุดท้ายของการกะพริบ!
สำหรับค่าอุณหภูมิ พิกเซลแรกจะระบุว่าค่านั้นเป็นค่าบวก (สีแดง) ศูนย์ (สีม่วงแดง) หรือค่าลบ (สีน้ำเงิน) การแสดงค่าความชื้นถูกตั้งค่าเป็นสีเขียว เพื่อลดความซับซ้อนในการเลือกปฏิบัติระหว่างค่าอุณหภูมิและความชื้น พิกเซลไบนารีจะถูกตั้งค่าเป็นสีขาวสำหรับอุณหภูมิและสีเหลืองสำหรับความชื้น เพื่อเพิ่มความชัดเจนของเลขฐานสอง พิกเซล "0" จะไม่ถูกปิดโดยสมบูรณ์ แต่มีการตั้งค่าที่อ่อนแอกว่าในสถานะ "1" มาก พริบตาเดียว! พิกเซลสว่างมาก คุณสามารถตั้งค่าความสว่างทั่วไปโดยเปลี่ยนพารามิเตอร์ "สว่าง"
โปรแกรมจะแสดงค่าและส่วนต่าง ๆ ของกระบวนการบนหน้าจอด้วย นอกจากนี้ คุณจะพบคำแนะนำในการพิมพ์ที่ปิดเสียง (#) หลายรายการ ฉันปล่อยไว้เพราะคุณอาจพบว่ามีประโยชน์ในการทำความเข้าใจกระบวนการหากเปิดเสียงไว้
ค่าอาจถูกเก็บไว้ในล็อกไฟล์
ขั้นตอนที่ 3: รหัสโปรแกรม
รหัสถูกดีบั๊กและปรับให้เหมาะสมเล็กน้อย ขณะนี้คุณอาจพบเวอร์ชัน 3 (20_03_2017)
' โปรแกรมนี้มีวัตถุประสงค์เพื่ออ่านค่าอุณหภูมิ ความชื้น และความดันจาก RuuviTag'' และเพื่อแสดงค่าอุณหภูมิและความชื้นเป็นเลขฐานสองบน Pimorini กะพริบตา! หมวก. '' ' ขึ้นอยู่กับตัวอย่าง print_to_screen.py จากไลบรารี ruuvitag ที่ github ' ต้องใช้ Pi Zero W, Pi 3 หรือ RPi อื่นใดที่ติดตั้งบลูทูธและติดตั้งไลบรารีที่จำเป็นทั้งหมด'
เวลานำเข้า
นำเข้าระบบปฏิบัติการจากวันที่เวลานำเข้าวันที่เวลา
จาก ruuvitag_sensor.ruuvi นำเข้า RuuviTagSensor
จากการนำเข้า blinkt set_clear_on_exit, set_pixel, clear, show
def temp_blinkt(bt):
# กิจวัตรนี้ใช้ค่าอุณหภูมิและแสดงเป็นเลขฐานสองเมื่อกะพริบ!
แจ่มใส ()
# สีและความเข้มของพิกเซล "1": สีขาว
r1 = 64 g1 = 64 b1 = 64
#สีและความเข้มของพิกเซล "0": สีขาว
r0 = 5 g0 = 5 b0 = 5
# ปัดเศษแล้วแปลงเป็นจำนวนเต็ม
r = รอบ (bt)
# vz แสดงถึงเครื่องหมายพีชคณิตสำหรับตัวบ่งชี้ pixel
ถ้า (r>0): vz = 1 # บวก elif (r<0): vz= 2 # ลบอื่น: vz= 0 # ศูนย์ # พิมพ์ (vz) i = abs(r) #print (i)
# แปลงเป็นเลขฐานสองแบบสัมบูรณ์ 7 หลัก
i1 = i + 128 # for i ส่งผลให้เลขฐานสอง 8 หลักเริ่มต้นด้วย 1 # พิมพ์ (i1)
b = "{0:b}".format(i1) # แปลงเป็นไบนารี
# พิมพ์ (ข)
b0 = str (b) # แปลงเป็นสตริง
b1 = b0[1:8] #ตัดทอนบิตแรก
พิมพ์ ("เลขฐานสอง: ", b1)
# ตั้งค่าพิกเซลเป็นกะพริบ!
#ตั้งเลขฐานสอง
สำหรับ h ในช่วง (0, 7): f = (h+1) if (b1[h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit ", h, " คือ 1, พิกเซล ", f) อื่นๆ: set_pixel (f, r0, g0, b0) # print("nil")
# ตั้งค่าพิกเซลตัวบ่งชี้
ถ้า (vz==1): set_pixel (0, 64, 0, 0) # สีแดงสำหรับค่าบวก elif (vz==2): set_pixel (0, 0, 0, 64) # สีน้ำเงินสำหรับค่าลบอื่น: set_pixel (0, 64, 0, 64) # สีม่วงแดงถ้าศูนย์
แสดง()
# สิ้นสุด temp_blinkt()
def hum_blinkt(bh):
# สิ่งนี้ใช้ค่าความชื้นและแสดงเป็นเลขฐานสองเมื่อกะพริบ!
แจ่มใส()
# สีและความเข้มของพิกเซล "1": สีเหลือง
r1 = 64 g1 = 64 b1 = 0
#สีและความเข้มของพิกเซล "0":
r0 = 5 g0 = 5 b0 = 0
# ปัดเศษแล้วแปลงเป็นจำนวนเต็ม
r = รอบ (bh)
# แปลงเป็นเลขฐานสองแบบสัมบูรณ์ 7 หลัก i = abs(r) #print (i)
i1 = i + 128 # สำหรับ i ให้เลขฐานสอง 8 หลักที่ขึ้นต้นด้วย 1
# พิมพ์ (i1)
b = "{0:b}".format(i1)
# พิมพ์ (ข)
b0 = str (ข)
b1 = b0[1:8] #ตัดทอนบิตแรก
พิมพ์ ("เลขฐานสอง: ", b1)
# ตั้งค่าพิกเซลเป็นกะพริบ!
# ตั้งค่าเลขฐานสองเป็นพิกเซล
สำหรับ h ในช่วง (0, 7): f = (h+1) ถ้า (b1[h] == "1"): set_pixel (f, r1, g1, b1) อื่น: # ปิดเสียง LED ที่ว่างเปล่า set_pixel (f, r0, g0, b0) # ปิดเสียงเป็น LED เปล่า
# ตั้งค่าพิกเซลตัวบ่งชี้
set_pixel (0, 0, 64, 0) # สีเขียวสำหรับความชื้น
แสดง()
# สิ้นสุด hum_blinkt()
set_clear_on_exit()
# การอ่านข้อมูลจาก RuuviTag
mac = 'EC:6D:59:6D:01:1C' # เปลี่ยนเป็นที่อยู่ mac ของอุปกรณ์ของคุณเอง
พิมพ์ ('เริ่มต้น')
เซ็นเซอร์ = RuuviTagSensor(mac)
ในขณะที่จริง:
ข้อมูล = sensor.update()
line_sen = str.format('เซนเซอร์ - {0}', mac)
line_tem = str.format('อุณหภูมิ: {0} C', data['temperature']) line_hum = str.format('ความชื้น: {0} %', data['humidity']) line_pre = str.format('ความดัน: {0}', ข้อมูล['ความดัน'])
พิมพ์()
# แสดงอุณหภูมิในพริบตา! ba = str.format('{0}', data['temperature']) bt = float (ba) print (bt, " °C") temp_blinkt (bt) print()
time.sleep (10) # แสดงอุณหภูมิ 10 วินาที
#แสดงความชื้นในพริบตา!
bg = str.format('{0}', data['humidity']) bh = float (bg) พิมพ์ (bh, " %") hum_blinkt (bh) พิมพ์ ()
# ล้างหน้าจอและพิมพ์ข้อมูลเซ็นเซอร์ไปที่หน้าจอ
os.system('clear') print('กด Ctrl+C เพื่อออก\n\n') พิมพ์ (str(datetime.now())) พิมพ์ (line_sen) พิมพ์ (line_tem) พิมพ์ (line_hum) พิมพ์ (line_pre) พิมพ์('\n\n\r…….')
#รอสักครู่แล้วเริ่มใหม่อีกครั้ง
ลอง: time.sleep(8) ยกเว้น KeyboardInterrupt: # เมื่อกด Ctrl+C การดำเนินการของ while loop หยุดลง print('Exit') clear() show () break
แนะนำ:
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 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
เครื่องวัดอุณหภูมิอินฟราเรดแบบไม่สัมผัสจาก Arduino - เทอร์โมมิเตอร์แบบ IR โดยใช้ Arduino: 4 ขั้นตอน
เครื่องวัดอุณหภูมิอินฟราเรดแบบไม่สัมผัสจาก Arduino | เทอร์โมมิเตอร์แบบใช้ IR โดยใช้ Arduino: สวัสดีทุกคนในคำแนะนำนี้ เราจะทำเทอร์โมมิเตอร์แบบไม่สัมผัสโดยใช้ Arduino เนื่องจากบางครั้งอุณหภูมิของของเหลว/ของแข็งสูงเกินไปหรือต่ำเกินไป จากนั้นจึงยากที่จะสัมผัสและอ่านค่า อุณหภูมิในฉากนั้น
Beacon/eddystone และ Adafruit NRF52 โฆษณาเว็บไซต์/ผลิตภัณฑ์ของคุณอย่างง่ายดาย: 4 ขั้นตอน
Beacon/eddystone และ Adafruit NRF52 โฆษณาเว็บไซต์/ผลิตภัณฑ์ของคุณอย่างง่ายดาย: สวัสดีทุกคน วันนี้ฉันต้องการแชร์โปรเจ็กต์ที่ฉันทำเมื่อเร็วๆ นี้กับคุณ ฉันมองหาอุปกรณ์ที่จะเชื่อมต่อภายในและภายนอกและให้ผู้คนเชื่อมต่อโดยใช้ สมาร์ทโฟนของพวกเขา และทำให้พวกเขาสามารถเยี่ยมชมเว็บไซต์เฉพาะหรือโฆษณา
วิธีการสร้าง 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 ฉันพยายามอธิบายแต่ละขั้นตอนด้วยรูปภาพจำนวนหนึ่ง หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดตอบกลับ