0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何為Raspberry Pi開(kāi)發(fā)一個(gè)GUI?

科技觀察員 ? 來(lái)源:Kutluhan Aktar ? 作者:Kutluhan Aktar ? 2022-05-05 17:42 ? 次閱讀

我一直在從事一個(gè)項(xiàng)目,通過(guò)該項(xiàng)目我可以整理來(lái)自 MQ-135 空氣質(zhì)量傳感器的空氣質(zhì)量信息,以檢測(cè)我工作場(chǎng)所空氣質(zhì)量惡化的情況。然而,MQ-135 空氣質(zhì)量傳感器的位置在從傳感器收集原始信息時(shí)具有巨大的重要性。因此,我決定通過(guò)開(kāi)發(fā)一個(gè)用戶友好的界面,通過(guò)選定的角度制作一個(gè)可移動(dòng)的傳感器底座。為了實(shí)現(xiàn)這一目標(biāo)并添加一些確鑿的功能(例如可調(diào)節(jié)背景光),我使用 Python 中的 guizero 模塊為我的 Raspberry Pi 開(kāi)發(fā)了一個(gè) GUI,名為 Air Quality Module。

pYYBAGJzmyqAdrXEAATZtmjC_Vg310.png

通過(guò)空氣質(zhì)量模塊,您可以通過(guò)選擇給定角度之一 - 0、30、45、90、135、180 - 來(lái)控制連接到迷你云臺(tái)套件的兩個(gè)伺服電機(jī),并以 RGB 格式調(diào)整背景光 - 255, 255, 255. 而且,最重要的是,您可以監(jiān)控 MQ-135 傳感器生成的當(dāng)前空氣質(zhì)量范圍:如果空氣質(zhì)量惡化,GUI 會(huì)通過(guò)警告消息通知您。

本項(xiàng)目中提到的一些產(chǎn)品和組件:

樹(shù)莓派 3 板殼 3B

樹(shù)莓派 4B/3B+ SD 卡 32GB

樹(shù)莓派 3B Micro-HDMI VGA 轉(zhuǎn)換器電纜

pYYBAGJzmy6AO97yAAa2XhveHc8033.png

補(bǔ)給品:

樹(shù)莓派 3 型號(hào) B+× 1

DigitSpace Raspberry Pi 3 板殼× 1

SD 卡 32 GB× 1

DigitSpace Raspberry Pi 3B Micro-HDMI VGA 轉(zhuǎn)換線× 1

Adafruit MCP3008× 1

MQ-135 空氣質(zhì)量傳感器× 1

Pimoroni Pan-Tilt 帽子× 1

SG90微型伺服電機(jī) × 2

RGB擴(kuò)散共陽(yáng)極× 1

SparkFun 可焊接面包板 - 迷你× 2

電阻 220 歐姆 × 3

跳線(通用) × 1

在這個(gè)項(xiàng)目中,你將學(xué)到:

如何使用 Raspberry Pi 的角度控制伺服電機(jī)

如何使用 Raspberry Pi 調(diào)整 RGB LED 的顏色

如何使用 MCP3008 和 Raspberry Pi 讀取模擬傳感器

如何使用 guizero 模塊開(kāi)發(fā) GUI

如何編寫(xiě)范圍函數(shù)來(lái)排列值,如 Arduino 中的 map 函數(shù)

第 1 步:使用 MCP3008 讀取模擬傳感器

與 Arduino 相比,Raspberry Pi 沒(méi)有內(nèi)置的 ADC模數(shù)轉(zhuǎn)換器),我們可以通過(guò)它輕松地從模擬傳感器收集信息。因此,我們需要在我們的電路中實(shí)現(xiàn)一個(gè)外部 ADC,以整理來(lái)自模擬傳感器(如 MQ-135 空氣質(zhì)量傳感器)的數(shù)據(jù)。我使用了 MCP3008 8 通道 ADC,因?yàn)樗矢咔沂褂煤?jiǎn)單。

我使用 Raspberry Pi 上的 Adafruit CircuitPython MCP3xxx 庫(kù)來(lái)讀取帶有 MCP3008 的模擬傳感器。

但是,您需要安裝在 Python 中提供 CircuitPython 支持的 Adafruit_Blinka 庫(kù)才能使用上述庫(kù)。

sudo pip3 install adafruit-blinka

pYYBAGJzmzSAIIqtAALPZgpDBp8632.png

如果需要,您必須在執(zhí)行命令之前在 Raspberry Pi Configuration Settings 上啟用 SPI。

完成后,從命令行運(yùn)行以下命令來(lái)安裝 Adafruit CircuitPython MCP3xxx 庫(kù)。

sudo pip3 install adafruit-circuitpython-mcp3xxx

然后,按如下方式進(jìn)行引腳連接。盡管在項(xiàng)目原理圖和代碼中對(duì)引腳連接進(jìn)行了很好的解釋,但除此之外,我將保留 MCP3008 的以下引腳連接原理圖。

MCP3008 CLK 轉(zhuǎn) Pi SCLK

MCP3008 DOUT 轉(zhuǎn) Pi MISO

MCP3008 DIN 轉(zhuǎn) Pi MOSI

MCP3008 CS 轉(zhuǎn) Pi D5

MCP3008 VDD 至 Pi 3.3V

MCP3008 VREF 至 Pi 3.3V

MCP3008 AGND 到 Pi GND

MCP3008 DGND 到 Pi GND

MCP3008 CH0 到模擬傳感器的信號(hào)引腳

CH0 指的是 MCP3008 上的第一個(gè)輸入引腳 - 從 0 到 7。

pYYBAGJzmzmAKhtxAAKGFI91Rmk257.png

第 2 步:開(kāi)發(fā) GUI(空氣質(zhì)量模塊)和編程 Raspberry Pi

為了能夠在 Python 中創(chuàng)建 GUI,您需要在 Raspberry Pi 上安裝 guizero 模塊。然后,您可以使用模塊提供的所有小部件和事件。

從您的命令行運(yùn)行以下命令來(lái)安裝 guizero 模塊。

sudo pip3 install guizero

pYYBAGJzmz-AfadGAAGSyKPXo_c027.png

導(dǎo)入所需的庫(kù)和模塊。

不要忘記包含所有 GUI 小部件 - App、Box、Text、TextBox、PushButton、ButtonGroup、MenuBar、info、yesno、warn。

創(chuàng)建 SPI 總線、cs(片選)和 mcp 對(duì)象。

創(chuàng)建連接到 MCP3008 輸入引腳的模擬輸入通道——我只使用了通道 0。

定義 GPIO 引腳設(shè)置 - GPIO.setmode(GPIO.BCM) 。

定義 RGB 引腳并設(shè)置 PWM 頻率 - 100。

在 100 - OFF 處啟動(dòng) RGB PWM 引腳。

定義伺服電機(jī)引腳并設(shè)置 PWM 頻率 - 50。

在 0 - OFF 處啟動(dòng)伺服底座和臂銷。

定義菜單欄選項(xiàng)命令(功能):

在Tutorial()函數(shù)中,如果需要,打開(kāi)一個(gè) yesno 消息以轉(zhuǎn)到項(xiàng)目教程頁(yè)面。

在Components()函數(shù)中,打開(kāi)一條信息消息以顯示組件。

在About()函數(shù)中,打開(kāi)一條信息消息以顯示電梯間距。

定義小部件命令和功能:

在_range()函數(shù)中,復(fù)制 Arduino 映射函數(shù)以在 Python 中排列給定范圍內(nèi)的值。

在evaluateSensorValue()函數(shù)中,從測(cè)試范圍內(nèi)的 MQ-135 空氣質(zhì)量中獲取空氣質(zhì)量值 - 從 0-60000 到 0-1023。

測(cè)試您的模塊,然后在本例中定義 0 到 60000 之間的值范圍。

如果超過(guò)閾值 (300),則通過(guò)警告消息通知 - 空氣質(zhì)量惡化 - 并將狀態(tài)更改為危險(xiǎn)。

在adjust_color()函數(shù)中,通過(guò)使用ChangeDutyCycle()更改 PWM 頻率(在 0 到 100 之間)來(lái)調(diào)整 RGB LED 的顏色。將輸入的顏色值從 0-255 排列到 0-100。

在base_tilt_move()和arm_tilt_move()函數(shù)中,通過(guò)選擇的角度控制伺服電機(jī) - 0, 30, 45, 90, 135, 180 - 運(yùn)行ChangeDutyCycle(selected_angle) 。2 到 12 之間的循環(huán)值精確地適用于 0 到 180 之間的角度。

調(diào)整伺服電機(jī)位置后不要忘記執(zhí)行以下行以關(guān)閉伺服 PWM 引腳。

改變工作周期(0)

創(chuàng)建名為 Air Quality Module 的 GUI 應(yīng)用程序。

定義菜單欄選項(xiàng) - 教程、組件、關(guān)于。

使用 box 小部件設(shè)計(jì)界面

RGB 顏色接口

使用布局網(wǎng)格對(duì)齊部件。

將相關(guān)命令(功能)分配給調(diào)整按鈕 - adjust_color。

空氣質(zhì)量界面

定義傳感器和狀態(tài)文本變量。

使用repeat()函數(shù)每秒更新 MQ-135 空氣質(zhì)量傳感器生成的傳感器值。

注意:在執(zhí)行app.display()函數(shù)時(shí),While 循環(huán)不起作用。

迷你云臺(tái)底座接口

在按鈕組小部件中定義角度 - 0、30、45、90、135、180。

分配相關(guān)命令(函數(shù)) - base_tilt_move。

迷你云臺(tái)臂接口

在按鈕組小部件中定義角度 - 0、30、45、90、135、180。

分配相關(guān)的命令(函數(shù))——arm_tilt_move。

啟動(dòng)循環(huán) app.display() 。

poYBAGJzm0aAZW7JAAN2VT6HPBw782.png

pYYBAGJzm02ATzYIAAPcFW4mCpw827.png

poYBAGJzm1GAeU1OAAJDxqYk5pM190.png

特征

1) 改變儀器的背景顏色(RGB)。

poYBAGJzm1aAenYPAAasqvr5lN8600.png

2) 通過(guò)選擇中間角度 - 0、30、45、90、135、180 來(lái)調(diào)整迷你云臺(tái)套件上伺服電機(jī)的位置。

pYYBAGJzm12AQOVvAAcKvJgk1As540.png

3) 當(dāng)傳感器 (MQ-135) 檢測(cè)到空氣質(zhì)量惡化時(shí)收到通知 - 狀態(tài):危險(xiǎn)。

poYBAGJzm2GAQheeAAGvI9ZRiyo519.png

在菜單欄上:

4) 進(jìn)入教程頁(yè)面。

poYBAGJzm2eABRaHAAPZVC4xIws777.png

5) 檢查組件。

pYYBAGJzm2yAF53WAAIbIQF08I0941.png

6) 顯示電梯間距。

poYBAGJzm3GALdHuAAI5U9bjONw986.png

連接

引腳連接在代碼和下面的項(xiàng)目示意圖中得到了很好的解釋。

將樹(shù)莓派連接到屏幕。

poYBAGJzm3eATDhAAAV8zFl4ehI108.png

將 MCP3008 和 RGB LED 連接到迷你面包板上。在將 MCP3008 連接到 Raspberry Pi 之前,我使用了一個(gè)電位器來(lái)測(cè)試值范圍。

pYYBAGJzm36ACqe_AAocmhAazGg608.png

poYBAGJzm4OABHxbAAVH0ep7SoI874.png

組裝迷你云臺(tái)套件并將 MQ-135 空氣質(zhì)量傳感器粘在迷你云臺(tái)套件(臂)上。

poYBAGJzm4iAWcDUAAUtzg1lcaQ367.png

總結(jié)

完成所有步驟后,我將所有部件固定在一個(gè)舊塑料盒上,并將設(shè)備放在我的桌子上,以收集空氣質(zhì)量數(shù)據(jù)并使用樹(shù)莓派上的空氣質(zhì)量模塊 (GUI) 調(diào)整其背景顏色

poYBAGJzm5CAfH4lAAShIKaQ3v0501.png

示意圖

pYYBAGJzm5eARwT3AAG8M_ET1Uk695.png

代碼

# Raspberry Pi Adjustable Air Quality Detector Controlled via GUI
#
# Raspberry Pi 3B+
#
# By Kutluhan Aktar
#
# Learn how to develop a GUI, named Air Quality Module, to control a mini pan-tilt kit and get information from an MQ-135 Air Quality Sensor.
# Also, you can change the background light (RGB) via the GUI.
#
# Get more information on the project page:
# https://theamplituhedron.com/projects/Raspberry-Pi-Adjustable-Air-Quality-Detector-Controlled-via-GUI/


from guizero import App, Box, Text, TextBox, PushButton, ButtonGroup, MenuBar, info, yesno, warn
from time import sleep
from subprocess import call
import RPi.GPIO as GPIO
import busio
import digitalio
import board
import adafruit_mcp3xxx.mcp3008 as MCP
from adafruit_mcp3xxx.analog_in import AnalogIn


# Create the SPI bus
spi = busio.SPI(clock=board.SCK, MISO=board.MISO, MOSI=board.MOSI)

# Create the cs (chip select)
cs = digitalio.DigitalInOut(board.D5)

# Create the mcp object
mcp = MCP.MCP3008(spi, cs)

# Create analog inputs connected to the input pins on the MCP3008.
channel_0 = AnalogIn(mcp, MCP.P0)

# Define RGB pins settings and PWM frequencies
GPIO.setmode(GPIO.BCM)
red_pin = 2
green_pin = 3
blue_pin = 4
GPIO.setup(red_pin, GPIO.OUT)
GPIO.setup(green_pin, GPIO.OUT)
GPIO.setup(blue_pin, GPIO.OUT)
red_value = GPIO.PWM(red_pin, 100)
blue_value = GPIO.PWM(blue_pin, 100)
green_value = GPIO.PWM(green_pin, 100)
red_value.start(100)
blue_value.start(100)
green_value.start(100)

# Define servo motor pin settings and PWM frequencies
servo_base_pin = 20
servo_arm_pin = 21
GPIO.setup(servo_base_pin, GPIO.OUT)
GPIO.setup(servo_arm_pin, GPIO.OUT)
servo_base_value = GPIO.PWM(servo_base_pin, 50)
servo_arm_value = GPIO.PWM(servo_arm_pin, 50)
servo_base_value.start(0)
servo_arm_value.start(0)


# Define menu bar options' commands (functions).
def Tutorial():
# Open the project page if requested.
go_to_tutorial = yesno("Open Tutorial", "Get more information about the project!")
if go_to_tutorial == True:
command = "chromium-browser https://theamplituhedron.com/projects/"
call([command], shell=True)
print("Project Tutorial!")
else:
warn("Close", "Return to the application!")

def Components():
info("Components", "Raspberry Pi 3B+\nMQ-135 Sensor\nMini Pan-Tilt Kit\n2 x Servo Motor\nRGB LED\n2 x Mini Breadboard\nMCP3008")

def About():
info("About", "Develop a GUI, named Air Quality Module, to control a mini pan-tilt kit and get information from an MQ-135 Air Quality Sensor. Also, you can change the background light (RGB) on the GUI.")

# Define application commands and features:
def _range(x, in_min, in_max, out_min, out_max):
return int((x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)

def evaluateSensorValue():
# Test your module, then define the value range - in this case between 0 and 60000.
sensorValue = _range(channel_0.value, 0, 60000, 0, 1023)
sensor_value.value = sensorValue
# Threshold
if(sensorValue > 300):
status_text.value = "Status: DANGER"
status_text.text_color = "yellow"
warn("!!!DANGER!!!", "Air Quality Deteriorating!")
else:
status_text.value = "Status: OK"
status_text.text_color = "green"

def adjust_color():
red = _range(int(r_input.value), 0, 255, 1, 100)
green = _range(int(g_input.value), 0, 255, 1, 100)
blue = _range(int(b_input.value), 0, 255, 1, 100)
red_value.ChangeDutyCycle(101 - red)
blue_value.ChangeDutyCycle(101 - blue)
green_value.ChangeDutyCycle(101 - green)

def base_tilt_move():
# Cycle values between 2 and 12 are working precisely:
selected_angle = 2 + (int(base_angle.value) / 18)
servo_base_value.ChangeDutyCycle(selected_angle)
sleep(0.5)
servo_base_value.ChangeDutyCycle(0)

def arm_tilt_move():
selected_angle = 2 + (int(arm_angle.value) / 18)
servo_arm_value.ChangeDutyCycle(selected_angle)
sleep(0.5)
servo_arm_value.ChangeDutyCycle(0)

# Create the GUI application.
appWidth = 1200
appHeight = 500
app = App(title="Air Quality Module", bg="#eb2e00", width=appWidth, height=appHeight)
# Define menu bar options.
menubar = MenuBar(app, toplevel=["Tutorial", "Components", "About"],
options=[
[ ["View", Tutorial] ],
[ ["Inspect", Components ] ],
[ ["About", About] ]
])
# Design the interface using the box widget.
top = Box(app, width="fill", height=appHeight / 2, align="top")
bottom = Box(app, width="fill", height=appHeight / 2, align="bottom")
color_interface = Box(top, width=appWidth / 2, align="left", layout="grid", border=True)
quality_interface = Box(top, width=appWidth / 2, align="right")
base_interface = Box(bottom, width=appWidth / 2, align="left")
arm_interface = Box(bottom, width=appWidth / 2, align="right")

# RGB Color Interface
color_header = Text(color_interface, text="Adjust RGB Background Color", color="#002699", size=20, grid=[0,0])
r_label = Text(color_interface, text="R :", color="#1a53ff", size=15, grid=[0,1])
r_input = TextBox(color_interface, grid=[1,1])
r_input.bg = "#ff5c33"
r_input.text_color = "#1a53ff"
g_label = Text(color_interface, text="G :", color="#1a53ff", size=15, grid=[0,2])
g_input = TextBox(color_interface, grid=[1,2])
g_input.bg = "#ff5c33"
g_input.text_color = "#1a53ff"
b_label = Text(color_interface, text="B :", color="#1a53ff", size=15, grid=[0,3])
b_input = TextBox(color_interface, grid=[1,3])
b_input.bg = "#ff5c33"
b_input.text_color = "#1a53ff"
adjust_button = PushButton(color_interface, grid=[2,4], width="20", text="Adjust", command=adjust_color)
adjust_button.bg = "#002699"
adjust_button.text_color = "white"

# Air Quality Interface
quality_header = Text(quality_interface, text="Air Quality Sensor", color="#002699", size=20, align="top")
sensor_value = Text(quality_interface, text="TEST", color="#002699", size=120)
status_text = Text(quality_interface, text="Status: OK", color="green", size=15, align="bottom")
# Update the sensor value.
sensor_value.repeat(1000, evaluateSensorValue)

# Mini Pan-Tilt Base Interface
base_header = Text(base_interface, text="Pan-Tilt Base", color="#002699", size=20)
base_angle = ButtonGroup(base_interface, options=["0", "30", "45", "90", "135", "180"], selected="0", width=20, command=base_tilt_move)
base_angle.text_size = 15
base_angle.text_color = "white"

# Mini Pan-Tilt Arm Interface
arm_header = Text(arm_interface, text="Pan-Tilt Arm", color="#002699", size=20)
arm_angle = ButtonGroup(arm_interface, options=["0", "30", "45", "90", "135", "180"], selected="0", width=20, command=arm_tilt_move)
arm_angle.text_size = 15
arm_angle.text_color = "white"

# Start the loop.
app.display()

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 檢測(cè)器
    +關(guān)注

    關(guān)注

    1

    文章

    847

    瀏覽量

    47557
  • GUI
    GUI
    +關(guān)注

    關(guān)注

    3

    文章

    631

    瀏覽量

    39292
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何使用Raspberry Pi 3進(jìn)行快速開(kāi)發(fā)

    Raspberry Pi 3 使用其四核處理器,并可提供比單核 Pi Zero 多倍的內(nèi)存。對(duì)于需要較小設(shè)計(jì)封裝,但又對(duì) Pi Zero
    的頭像 發(fā)表于 02-25 08:10 ?6478次閱讀
    如何使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 3進(jìn)行快速<b class='flag-5'>開(kāi)發(fā)</b>

    篇比較 BeagleBone 和 Raspberry Pi 個(gè)方面配置的文章

    提供 DVI-D。 Raspberry Pi 還通過(guò) 3.5mm 插孔 提供音頻,此外 Pi 還有兩個(gè) USB 端口,而 BeagleBone 只有
    發(fā)表于 10-22 14:53

    Raspberry Pi 開(kāi)發(fā)板優(yōu)化設(shè)計(jì)

    Foundation 開(kāi)發(fā)用于計(jì)算機(jī)教學(xué)的低成本平臺(tái),現(xiàn)在已經(jīng)演變成個(gè)適合快速原型開(kāi)發(fā)、功能強(qiáng)大且成本較低的平臺(tái),而且越來(lái)越多地作為可嵌入的計(jì)算平臺(tái)。
    發(fā)表于 07-16 09:54

    黑科技!使用Raspberry Pi和Python GUI控制伺服電機(jī)(原理圖、源碼、項(xiàng)目教程)

    教程中,我們將介紹如何使用Raspberry Pi和Python TK GUI精確控制伺服。硬件組件:Raspberry Pi 3型號(hào)B.×
    發(fā)表于 10-16 16:49

    使用raspberry pi Pico的原因

    使用raspberry pi Pico的原因在硬件產(chǎn)品(單片機(jī))的開(kāi)發(fā)中我們往往需要借助些額外的儀器/設(shè)備進(jìn)行產(chǎn)品的輔助測(cè)試, 假設(shè)我們需要
    發(fā)表于 02-07 09:16

    Raspberry Pi 4/3B的Pico開(kāi)發(fā)

    描述適用于 Raspberry Pi 4 的 Raspberry Pi Pico 開(kāi)發(fā)Raspberr
    發(fā)表于 07-26 07:14

    個(gè)Raspberry Pi擴(kuò)展板

    描述clumsyMIDI - 樹(shù)莓派擴(kuò)展板個(gè) Raspberry Pi 擴(kuò)展板,包含個(gè) MI
    發(fā)表于 07-29 06:12

    使用Raspberry Pi 3 快速開(kāi)發(fā)(相較于稀缺的 Raspberry Pi Zero)

    無(wú)論開(kāi)發(fā)人員是專業(yè)人士還是業(yè)余愛(ài)好者,Raspberry Pi 開(kāi)發(fā)板在整個(gè)開(kāi)發(fā)周期都對(duì)非常有用。盡管
    發(fā)表于 05-04 10:46 ?13次下載
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 3 快速<b class='flag-5'>開(kāi)發(fā)</b>(相較于稀缺的 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Zero)

    raspberry pi官網(wǎng)

    Raspberry Pi 宣布推出新的鏡像實(shí)用程序 Raspberry Pi Imager,以提供種更簡(jiǎn)單的方法,將操作系統(tǒng)輕松鏡像到 m
    的頭像 發(fā)表于 03-07 10:16 ?5794次閱讀

    適用于Raspberry Pi 4的Raspberry Pi Pico開(kāi)發(fā)

    電子發(fā)燒友網(wǎng)站提供《適用于Raspberry Pi 4的Raspberry Pi Pico開(kāi)發(fā)板.zip》資料免費(fèi)下載
    發(fā)表于 07-22 09:27 ?6次下載
    適用于<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 4的<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico<b class='flag-5'>開(kāi)發(fā)</b>板

    使用Raspberry Pi構(gòu)建個(gè)OpenCV人群計(jì)數(shù)裝置

    在本教程中,我們將使用 Raspberry Pi 和 ThingSpeak 構(gòu)建個(gè) OpenCV 人群計(jì)數(shù)。
    的頭像 發(fā)表于 08-12 17:24 ?2769次閱讀
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>構(gòu)建<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>OpenCV人群計(jì)數(shù)裝置

    使用Raspberry Pi構(gòu)建個(gè)智能車庫(kù)開(kāi)門器

    在本教程中,我們將使用 Raspberry Pi 構(gòu)建個(gè)智能車庫(kù)開(kāi)門器。這里將創(chuàng)建個(gè)
    的頭像 發(fā)表于 09-07 15:54 ?2015次閱讀
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>構(gòu)建<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>智能車庫(kù)開(kāi)門器

    使用帶有Raspberry Pi的超聲波測(cè)距模塊構(gòu)建超聲波測(cè)距儀GUI

    電子發(fā)燒友網(wǎng)站提供《使用帶有Raspberry Pi的超聲波測(cè)距模塊構(gòu)建超聲波測(cè)距儀GUI.zip》資料免費(fèi)下載
    發(fā)表于 12-26 10:40 ?0次下載
    使用帶有<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>的超聲波測(cè)距模塊構(gòu)建超聲波測(cè)距儀<b class='flag-5'>GUI</b>

    尋找實(shí)用的Raspberry Pi項(xiàng)目? 制作個(gè)智能傘架!

    本教程將分步指導(dǎo)您如何制作個(gè)智能傘架。這是我最喜歡的Raspberry Pi 項(xiàng)目之。
    的頭像 發(fā)表于 02-24 17:22 ?873次閱讀
    尋找實(shí)用的<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>項(xiàng)目? 制作<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>智能傘架!

    使用Raspberry Pi Pico W和MicroPython開(kāi)發(fā)物聯(lián)網(wǎng)應(yīng)用

    當(dāng)我們提及物聯(lián)網(wǎng)(IoT, Internet of Things)開(kāi)發(fā),可能首先想到的是Arduino或是ESP8266這樣的微控制器開(kāi)發(fā)板。然而,Raspberry Pi的微控制器
    的頭像 發(fā)表于 07-21 09:36 ?1702次閱讀
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico W和MicroPython<b class='flag-5'>開(kāi)發(fā)</b>物聯(lián)網(wǎng)應(yīng)用