色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Raspberry Pi 5的蜂窩物聯網項目

柴火創客空間 ? 來源:柴火創客空間 ? 2023-12-25 10:55 ? 次閱讀

今天小拜年給大家帶來的是來自美國的Maker Rob Lauer的基于樹莓派5的蜂窩網絡項目,了解如何為新的 Raspberry Pi 5 單板計算機添加低帶寬蜂窩連接。

材料清單

硬件列表

Raspberry Pi 5(這也適用于Pi 4或Pi Zero 1或2)

Raspberry Pi 攝像頭模塊 v2

藍調記事卡手機+WiFi

Blues Notecarrier Pi 帽子

Adafruit BME280 溫度/壓力/濕度傳感器

軟件列表

Datacake

Blues Notehub.io

現在幾乎成為一年一度的傳統,我們在 Raspberry Pi 的朋友發布了我們都知道和喜愛的單板計算機的最新型號 Raspberry Pi5。

Pi 5采用新的電路板布局、更好的性能和新的接口,是一款令人興奮的產品。Pi 上還有一個實時時鐘,可以將你的 Pi 從睡眠模式中喚醒——而且它是可編程的——這使得在電池供電的邊緣部署中使用 Pi 稍微逼真一些。

不過我最喜歡的功能是什么?電源按鈕!

雖然我們在 Pi 上執行的絕大多數工作都在訪問家庭/辦公室 Wi-Fi 范圍內,但我們中有很多人在遠程環境中使用 Pi(如果您愿意的話,在前面提到的“邊緣”)。

在這些情況下,訪問 Wi-Fi 很困難或不可能,唯一有效的連接選項往往是蜂窩(太貴!)或 LoRaWAN(太罕見!)。嗯,怎么辦!?

Blues Notecard的出現為圍繞低功耗和低帶寬連接場景而設計,提供了一種簡單(但功能強大)的方法,可通過預付費蜂窩網絡、Wi-Fi 或 LoRa 將無線連接添加到幾乎任何物理設備(是的,包括 Pi)。

c75ffe2a-a0ba-11ee-8b88-92fbcf53809c.jpg

在Raspberry Pi 5 上準備蜂窩網絡

在這個項目中,我將創建一個 Python 應用程序,它既充當人員計數器,又充當溫度/壓力/濕度跟蹤器。我們將使用 Blues Notecard 將數據與云同步。然后,我們可以使用Datacake?平臺生成路由數據的基于云的儀表板。

應用工作流如下所示:

使用 Pi 的攝像頭和 OpenCV 檢測人臉。

記錄檢測到的人臉數量。

每分鐘將人臉計數以及溫度/壓力/濕度數據發送到云端。

在基于云的儀表板上顯示累積數據的報告。

這是一個就簡單的項目,但它也展示了收集數據、通過蜂窩網絡將其發送到云以及創建儀表板來查看累積數據是多么容易:

c785e7c0-a0ba-11ee-8b88-92fbcf53809c.jpg

項目硬件

對于這個項目,我將使用以下硬件:

Raspberry Pi 5(這也適用于Pi 4或Pi Zero 1或2)

Raspberry Pi 攝像頭模塊 v2

藍調記事卡手機+WiFi

Blues Notecarrier Pi 帽子

Adafruit BME280 溫度/壓力/濕度傳感器

不涉及任何接線,因為 Notecard 插入 Notecarrier Pi Hat,而 BME280 通過提供的 Qwiic 端口之一連接到 Notecarrier:

c7ac6558-a0ba-11ee-8b88-92fbcf53809c.jpg

帶有記事卡的蜂窩網絡(或 Wi-Fi 或 LoRa)

Notecard 是這個項目的理想選擇,因為它是用來發送和接收小數據包的 JSON 數據包(在 Blues 術語中稱為 Notes)。這非常適合邊緣機器學習等方案,在這些方案中,處理是在設備上完成的,唯一需要中繼到云的數據是包含生成的推理的小型有效負載。同樣,記事卡可以處理從物理世界收集傳感器數據并需要每小時、每天、每周一次等提供一次數據的情況。

需要明確的是,Blues Notecard 并不是 Raspberry Pi 上 Wi-Fi 的直接替代品。它專為低帶寬數據傳輸而設計,因此您不會在無人區中瀏覽網頁。

您為記事卡支付一次性費用,它附帶 500MB 的數據和 10 年的全球蜂窩服務。沒有每月的SIM卡費用或訂閱。

還有 Wi-Fi 和 LoRa 選項(相同的開發人員 API,相同的硬件占用空間):

c7c61b42-a0ba-11ee-8b88-92fbcf53809c.jpg

記事卡“正常工作”,因為:

它與名為Notehub的云服務安全配對(自動)。無需認證管理或設備配置。

告訴記事卡它應該連接到哪個 Notehub 項目。

通過兩行代碼(基于 JSON 的 API 調用),您可以將 Pi 連接到云:

1. {"req":"hub.set","product":"com.blues.me:product","mode":"periodic"}
2. {"req":"note.add","body":{"temperature":21.3,"humidity":65.4}}

說了這么多,讓我們開始這個項目吧!

在安裝庫和測試相機

我們的項目從note-python開始,這是 Blues 支持的 SDK,用于通過 Python 處理記事卡。在 Pi 終端上使用以下命令進行安裝:note-python

pip3 install note-python

接下來安裝一些其他 Python 庫,包括(用于通過 I2C 與外圍設備通信)、(我們將用于面部識別)和(與 BME280 交互)。python-peripheryopencv-pythonpimoroni-bme280

接下來,使用此命令測試您的相機是否正常運行(您應該看到相機的輸入出現在 Pi 桌面上):

libcamera-hello –camera 0 -t 0

wKgaomWI78yAJTwRAADMWdXGEIc208.jpg

都好嗎?讓我們開始編寫一些代碼!

Python 代碼

僅供參考,完整的 Python 代碼可以在(https://gist.github.com/rdlauer/8cecc03e1f44fe5643f50d42b06a9467)中找到

首先包含相關依賴項:

#!/usr/bin/python3
import notecard
from notecard import hub
from periphery import I2C
import cv2
import keys
import time
from picamera2 import Picamera2
from smbus2 import SMBus
from bme280 import BME280

通過 I2C 總線連接到記事卡,并在Notehub上為您的云項目的唯一標識符(例如)添加一個占位符:productUID

# init the notecard
productUID = keys.NOTEHUB_PRODUCT_UID
port = I2C("/dev/i2c-1")
nCard = notecard.OpenI2C(port, 0, 0)

Notehub 在這里非常有價值,因為它不僅可以充當 Notecard 發送數據的安全云代理,還可以讓您快速將數據路由到您的云應用程序(例如 AWS、Azure、Datacake、Ubidots 等)。它可免費用于大多數項目。

將記事卡與您的免費 Notehub 項目鏈接,并將記事卡的蜂窩調制解調器置于模式。continuous

這告訴記事卡保持連續的蜂窩連接(這對演示有好處,但對電池壽命不利,這就是為什么記事卡默認為僅定期發送數據并節省電量的原因):periodic

# connect notecard to notehub
rsp = hub.set(nCard, product=productUID, mode="continuous")
print(rsp)

初始化 BME280 傳感器:

# init the BME280
bus = SMBus(1)
bme280 = BME280(i2c_dev=bus, i2c_addr=0x77)

接下來,需要從此 GitHub 存儲庫下載相應的“正面”預訓練分類器。我們將使用OpenCV?來檢測圖像并將其分類為人臉。此 XML 文件需要保存到您的 Pi 的可訪問目錄中。

加載分類器 XML 文件并初始化 Pi 相機:

# Grab images as numpy arrays and leave everything else to OpenCV.
face_detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
cv2.startWindowThread()
           
picam2 = Picamera2()
picam2.configure(picam2.create_preview_configuration(main={"format": 'XRGB8888', "size": (640, 480)}))
picam2.start()

添加一些變量,用于跟蹤檢測到的人臉計數以及用于將數據發送到云的時間戳:

# keep track of face counts between notes    
face_count = 0
# keep track of seconds for adding faces/syncing
start_secs_face = int(round(time.time()))
start_secs_note = int(round(time.time()))

接下來,定義一個函數,該函數將向 Notehub(也稱為事件)發送注釋。“Note”是圍繞任何任意 JSON 有效負載(布爾值、字符串、整數等)的 JSON 修飾:

def send_note(c):

   # query the notecard for power supply voltage
    req = {"req": "card.voltage", "mode": "?"}
    rsp = nCard.Transaction(req)
    voltage = rsp["value"]
  
    # get the temp/pressure/humidity from bme280
    temperature = bme280.get_temperature()
    pressure = bme280.get_pressure()
    humidity = bme280.get_humidity()
           
    req = {"req": "note.add"}
    req["file"] = "face.qo"
    req["body"] = {"face_count": c, "voltage": voltage, "temperature": temperature, "pressure": pressure, "humidity": humidity}
    req["sync"] = True
    rsp = nCard.Transaction(req)
           
    print(rsp)

最后,啟動一個無限循環,并在該循環中:

嘗試對人臉進行分類(同時繪制邊框并向識別的人臉添加一些標簽)。

如果檢測到人臉,則遞增變量。face_count

最后,如果一分鐘過去了,請執行上述函數將此數據發送到云端!send_note

while True:
    # track the current time
    current_seconds = int(round(time.time()))
  
    im = picam2.capture_array()
               
    grey = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
    faces = face_detector.detectMultiScale(grey, 1.1, 5)
           
    # Add text around each face
    font = cv2.FONT_HERSHEY_DUPLEX
    fontScale = 1
    color = (0, 0, 255)
    thickness = 2
  
    # Draw the rectangle around each face
    for (x, y, w, h) in faces:
        cv2.rectangle(im, (x, y), (x + w, y + h), (0, 255, 0))
        face_plural = 's'
        if face_count == 1:
            face_plural = ''
        cv2.putText(im, 'Face found!', (x, y-10), font,
                   fontScale, color, thickness, cv2.LINE_AA)
           
    cv2.imshow("Camera", im)
  
    if len(faces) > 0:
        # check to make sure it's been at least three seconds since the last time we checked for faces
        if current_seconds - start_secs_face >= 3:
            face_count += len(faces)
            print("We found some faces: " + str(len(faces)) + " to be exact! (Pending sync: " + str(face_count) + " faces)")
            start_secs_face = int(round(time.time()))
  
    # create an outbound note every 5 minutes with accumulated face counts
    if current_seconds - start_secs_note >= 60:
        send_note(face_count)
        print("####################")
        print("Sending a new note with " + str(face_count) + " faces.")
        print("####################")
        face_count = 0
        start_secs_note = int(round(time.time()))
  
    cv2.waitKey(1)

就是這樣!

運行 Python 應用程序,您應該會看到相機窗口出現,開始將數據保存到記事卡上的閃光燈,并立即將該數據同步到 Notehub:

We found some faces: 1 to be exact! (Pending sync: 1 faces)
We found some faces: 1 to be exact! (Pending sync: 2 faces)
We found some faces: 1 to be exact! (Pending sync: 3 faces)
We found some faces: 1 to be exact! (Pending sync: 4 faces)
We found some faces: 1 to be exact! (Pending sync: 5 faces)
We found some faces: 1 to be exact! (Pending sync: 6 faces)
We found some faces: 1 to be exact! (Pending sync: 7 faces)
{'template': True}
####################
Sending a new note with 7 faces.
####################

提醒:完整的 Python 代碼可以在face-detect.py · GitHub上的這個要點中找到。

Notehub 到云

當項目處于當前狀態時,記事卡將在數據進入時立即開始與 Notehub 同步數據(每分鐘一次)。您將看到這些注釋(或事件)顯示在項目的“事件”選項卡中:

c7e896e0-a0ba-11ee-8b88-92fbcf53809c.jpg

雖然看到這些數據出現很酷,但它并不是那么有用。讓我們添加一個快速集成,以使用Notehub Routes?和 Datacake 構建基于云的儀表板。

Notehub 支持通過 HTTPS 和 MQTT 協議將數據路由到幾乎任何托管云服務。Blues 提供路由教程,引導您完成流程中的每一步。將數據路由到 Datacake

Datacake?是一個低代碼平臺,可讓您在最短的時間內構建 IoT 應用程序(正如我們今天將在這里看到的那樣)。

現在,如果您查看發送到 Notehub 的事件之一并查看 JSON 選項卡,您將看到可以路由到 Datacake 的大量數據:

{
    "event": "1ab42897-17c6-4877-b902-c2ee1c1c7e96",
    "session": "e889f105-226d-45f6-a3cc-d8028a655326",
    "best_id": "dev:860322068073292",
    "device": "dev:860322068073292",
    "product": "productfaceml",
    "app": "app:0c85569f-5cd8-4d84-9548-eab244c57f59",
    "received": 1701718035.34947,
    "req": "note.add",
    "when": 1701718034,
    "file": "face.qo",
    "body": {
        "face_count": 8,
        "humidity": 27.78125,
        "pressure": 983.5,
        "temperature": 24.5,
        "voltage": 5.171875
    },
    "best_location_type": "triangulated",
    "best_location_when": 1701462279,
    "best_lat": 43.071243,
    "best_lon": -89.43282,
    "best_location": "Shorewood Hills WI",
    "best_country": "US",
    "best_timezone": "America/Chicago",
    "tri_when": 1701462279,
    "tri_lat": 43.071243,
    "tri_lon": -89.43282,
    "tri_location": "Shorewood Hills WI",
    "tri_country": "US",
    "tri_timezone": "America/Chicago",
    "tri_points": 3,
    "status": "success",
    "fleets": [
        "fleet:664b55a8-d3c0-4e76-8588-90e8fef53d20"
    ]
}

我們希望將此數據路由到 Datacake,但我們唯一關心的值是temperature 、 pressure 、 humidity 、 voltage 和 face_count 。

創建Datacake路由

與其重新發明輪子,不如前往 blues.dev 上的完整 Datacake 教程來完成路由的初始創建。來吧,我發誓不會花太長時間!

我們需要對 Datacake 中的字段和有效負載解碼器設置的配置進行一些編輯。

在 Datacake 中添加字段

由于我們要向 Datacake 發送上述temperature、pressure、humidity 、 voltage 和 face_count變量,因此我們需要確保 Datacake 知道預期它們。

導航到 Datacake 中設備配置的“字段”部分。確保這些值與此處顯示的值一致(如果您有其他字段,那很好,它們將被儀表板忽略):

c7fa380a-a0ba-11ee-8b88-92fbcf53809c.jpg

在 Datacake 中更新 HTTP 有效負載解碼器

Datacake 有一個“有效負載解碼器”,它將使用您從 Notehub 發送的 JSON 有效負載,然后將該數據調整為在儀表板中表示它所需的格式。

我將為您省去一個步驟,并為您提供我使用的完整有效負載解碼器代碼:

function Decoder(request) {
   
    var data = JSON.parse(request.body);
    var device = data.device;
        
    var file = data.file;
   
    var decoded = {};
   
    decoded.voltage = data.body.voltage;
    decoded.temperature = data.body.temperature;
    decoded.humidity = data.body.humidity;
    decoded.pressure = data.body.pressure;
    decoded.face_count = data.body.face_count;
   
    if (("best_lat" in data) && ("best_lon" in data)) {
        decoded.device_location = "(" + data.best_lat + "," + data.best_lon + ")";
    }
   
    decoded.rssi = data.rssi;
    decoded.bars = data.bars;
   
    // Array where we store the fields that are being sent to Datacake
    var datacakeFields = []
   
    // take each field from decodedElsysFields and convert them to Datacake format
    for (var key in decoded) {
        if (decoded.hasOwnProperty(key)) {          
            datacakeFields.push({field: key.toUpperCase(), value: decoded[key], device: device})
        }
    }     
   
    // forward data to Datacake
    return datacakeFields;
}

創建 Datacake 儀表板

接下來,導航到 Datacake 中的“儀表板”選項卡。使用它們提供的 GUI 工具將適當的小部件添加到圖表值,如溫度、壓力、檢測到的人臉數量等。

c80bc520-a0ba-11ee-8b88-92fbcf53809c.jpg

總而言之,您應該擁有一個華麗的基于云的儀表板!

c785e7c0-a0ba-11ee-8b88-92fbcf53809c.jpg

下一步是什么?

希望您已經看到向 Raspberry Pi 添加低帶寬蜂窩連接是多么容易。需要注意的是,Notecard 還支持幾乎所有現代主機 MCU(如 STM32ESP32、Nordic 等)。您可以使用Blues Starter Kit開始使用STM32主機。

不過,更有可能的是,您正在尋找Blues Notecarrier Pi 帽子和任何記事卡,以開始在 Pi 上使用蜂窩網絡。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2552

    文章

    51353

    瀏覽量

    755609
  • 蜂窩網絡
    +關注

    關注

    2

    文章

    209

    瀏覽量

    21697
  • 樹莓派
    +關注

    關注

    117

    文章

    1710

    瀏覽量

    105793
  • RaspberryPi
    +關注

    關注

    1

    文章

    40

    瀏覽量

    9107

原文標題:創客項目秀|基于 Raspberry Pi 5 的蜂窩物聯網

文章出處:【微信號:ChaiHuoMakerSpace,微信公眾號:柴火創客空間】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    名單公布!樹莓派5Raspberry Pi 5)開發板免費試用!!!

    Raspberry Pi 芯片!Raspberry Pi 5 是一款多功能、功能強大的單板計算機,可廣泛應用于 DIY
    發表于 06-27 15:40

    第二代Raspberry Pi發布,微軟推出Windows 10 for Raspberry Pi 2

    ,而如果你想第一時間使用Raspberry Pi上的Windows 10的話,可以注冊微軟的聯網開發者項目 WindowsOnDevice
    發表于 02-02 21:56

    基于node-Red和Raspberry Pi聯網實驗設計

    基于node-Red和Raspberry Pi聯網實驗設計,都是小實驗,有人會嗎?
    發表于 03-06 12:11

    Raspberry Pi 標準的40針連接器設計方案

    下面介紹一款用于工業領域的聯網網關——ED-IOTGATEWAY1.0,分享給有聯網網關使用需求的朋友。它基于Raspberry
    發表于 08-27 18:26

    分享一款不錯的基于樹莓派Raspberry Pi CM的聯網網關方案

    分享一款不錯的基于樹莓派Raspberry Pi CM的聯網網關方案
    發表于 06-15 07:01

    蜂窩聯網的應用有哪些?

    蜂窩聯網的應用有哪些?實現這些應用所需的嵌入式技術是什么?
    發表于 06-16 09:35

    蜂窩聯網是什么_蜂窩聯網建設意義

    本文介紹了什么是蜂窩聯網蜂窩聯網建設原則和蜂窩
    發表于 01-18 15:11 ?1.4w次閱讀

    使用Raspberry Pi和Particle Cloud進行聯網控制的家庭自動化

    Raspberry Pi 是最著名的低成本計算機之一,也是用于對不同類型的聯網和嵌入式項目進行原型設計的強大工具。隨著樹莓派在
    的頭像 發表于 09-06 14:58 ?2243次閱讀
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和Particle Cloud進行<b class='flag-5'>物</b><b class='flag-5'>聯網</b>控制的家庭自動化

    通過Raspberry Pi進行簡單的聯網LED控制

    電子發燒友網站提供《通過Raspberry Pi進行簡單的聯網LED控制.zip》資料免費下載
    發表于 12-09 10:02 ?0次下載
    通過<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>進行簡單的<b class='flag-5'>物</b><b class='flag-5'>聯網</b>LED控制

    通過Raspberry Pi的簡單聯網按鈕教程

    電子發燒友網站提供《通過Raspberry Pi的簡單聯網按鈕教程.zip》資料免費下載
    發表于 12-09 15:49 ?1次下載
    通過<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>的簡單<b class='flag-5'>物</b><b class='flag-5'>聯網</b>按鈕教程

    通過Raspberry Pi聯網有源蜂鳴器

    電子發燒友網站提供《通過Raspberry Pi聯網有源蜂鳴器.zip》資料免費下載
    發表于 12-12 10:09 ?1次下載
    通過<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>的<b class='flag-5'>物</b><b class='flag-5'>聯網</b>有源蜂鳴器

    用于測試項目的4個最佳樹莓派Raspberry Pi模擬器

    樹莓派是 Raspberry Pi 并不昂貴,但這并不意味著您手頭有一個。那么你可以在模擬器中嘗試您的想法。 Raspberry Pi 是一款多功能單板計算機,可用于
    的頭像 發表于 01-03 14:40 ?6838次閱讀

    尋找實用的Raspberry Pi項目? 制作一個智能傘架!

    本教程將分步指導您如何制作一個智能傘架。這是我最喜歡的Raspberry Pi 項目之一。
    的頭像 發表于 02-24 17:22 ?1025次閱讀
    尋找實用的<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b><b class='flag-5'>項目</b>? 制作一個智能傘架!

    【樹莓派Pi5】樹莓派 Raspberry Pi 5 正式發布!

    這款 Pi 5從英國樹莓派總部跨洋而來,作為樹莓派的官方代理商,上海晶珩EDATEC榮幸地在首發時刻,率先揭開了 Pi 5 的神秘面紗: Raspb
    的頭像 發表于 09-28 17:30 ?2287次閱讀
    【樹莓派<b class='flag-5'>Pi5</b>】樹莓派 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>5</b> 正式發布!

    Banana Pi M5Raspberry Pi 4 – 基準測試

    Banana Pi M5 基準測試已成為我的網站上最受歡迎的作品之一,而且似乎人們真正想看到的是它與其 Raspberry 口味的表親之間的直接比較,所以這里就是 Banana Pi
    的頭像 發表于 10-28 10:28 ?417次閱讀
    Banana <b class='flag-5'>Pi</b> M<b class='flag-5'>5</b> 與 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 4 – 基準測試
    主站蜘蛛池模板: 99视频在线精品免费观看18| 成年视频国产免费观看| 亚洲午夜精品A片久久WWW解说| 中文字幕视频在线免费观看| 丰满艳妇亲伦| 久久国产乱子伦免费精品| 日本精品久久久久中文字幕 1| 亚洲精品蜜夜内射| 变态露出野外调教| 老人洗澡自拍xxx互摸| 小黄鸭YELLOWDUCK7596| 99久久精品6在线播放| 国产在线视精品在亚洲| 碰超成人在线公开免费视频| 一本久道久久综合婷婷五月| 国产成人女人在线视频观看| 免费一区二区三区久久| 亚洲无线观看国产| 久久视频在线视频观品15 | 末班车动漫无删减免费| 97在线免费观看视频| 久久www免费人成_看片高清| 最近的中文字幕免费完整| 国产偷国产偷亚州清高| 色偷偷男人的天堂a v| GOGOGO高清在线播放免费| 美女议员被泄裸照| 在线不卡日本v二区到六区| 花季v3.0.2黄在线观看| 午夜免费无码福利视频麻豆| 村妇偷人内射高潮迭起| 欧美成人免费一区二区三区不卡| 中文字幕亚洲第一| 欧美性猛交AAA片免费观看| 国产成人免费高清视频| 亚洲偷偷自拍免费视频在线| 內射XXX韩国在线观看| 99久久夜色精品国产亚洲AV卜| 涩涩网站在线看| 久久久久久久伊人电影| 真实伦 乱|