Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
濟(jì)生活的富足讓內(nèi)容創(chuàng)作領(lǐng)域,出現(xiàn)了久違的百家爭鳴之勢,細(xì)數(shù)近年來內(nèi)容平臺的種類和數(shù)量,以及趨勢,就可以看到內(nèi)容創(chuàng)作的生命力和影響力不斷在提升。而內(nèi)容創(chuàng)作的背后,更依賴的是人和工具,是他們聯(lián)合創(chuàng)造了時下豐富多彩、百花綻放的內(nèi)容形態(tài)和展現(xiàn)形式。
專職內(nèi)容創(chuàng)作人——小杰
其中,用于儲存和記錄原生內(nèi)容,為后期處理提供原始數(shù)據(jù)的存儲卡產(chǎn)品,是我們最應(yīng)該關(guān)注卻最被忽略的內(nèi)容工具。為了探尋存儲卡對于內(nèi)容創(chuàng)作的重要性,我們邀請了一位長期處于一線內(nèi)容創(chuàng)作的專職創(chuàng)作人——小杰,一同體驗了不久前剛剛發(fā)布的三星PRO Plus,通過一周的使用和感受后,我們記錄了小杰對于這款存儲卡的真實初體驗。
三星 PRO Plus
01三星PRO Plus的“不變” 4K下的高性能傳輸
經(jīng)過一周的使用感受后,小杰對于三星PRO Plus的第一感官便是性能。
小杰工作照
熟悉內(nèi)容創(chuàng)作流程的朋友應(yīng)該都知道,存儲卡的功能特效決定了其需要相當(dāng)?shù)淖x寫性能,才能完成相機(jī)感光器件記錄光信號轉(zhuǎn)換成電信號的重要原始數(shù)據(jù),快速記錄和安全存儲下來,并以我們熟悉的圖像格式,呈現(xiàn)出來。
假設(shè)存儲卡的讀寫性能跟不上相機(jī)電信號的轉(zhuǎn)換效率,就會發(fā)生相機(jī)成像不完整,相機(jī)顯示屏回放出現(xiàn)馬賽克,甚至嚴(yán)重的直接無法完成數(shù)據(jù)和圖像的記錄。
圖源于三星存儲官網(wǎng)
而三星PRO Plus,理論讀取速度達(dá)到100MB/S,寫入速度達(dá)到90MB/S,經(jīng)過小杰的實際測試,即使在采集4K級別的原始素材的時候,它依舊能夠完美進(jìn)行圖像數(shù)據(jù)的快速記錄,成像效果完整,相機(jī)回放清晰高效,讓小杰在創(chuàng)作的過程中,無需擔(dān)心數(shù)據(jù)記錄的問題。
當(dāng)然除了在相機(jī)內(nèi)部進(jìn)行原始數(shù)據(jù)的采集之外,存儲卡另一個重大使命便是在設(shè)備和設(shè)備之間進(jìn)行數(shù)據(jù)的傳遞,也就是將原始數(shù)據(jù)導(dǎo)入到個人PC之中,進(jìn)行后期加工。這個過程,也是我們普通用戶較為熟悉的環(huán)節(jié),同時也是影響內(nèi)容創(chuàng)作者效率的重要指標(biāo)。
三星PRO Plus實際傳輸速度
根據(jù)小杰的實操,我們可以看到,在峰值狀態(tài)下,三星PRO Plus的傳輸速度甚至一度超過了理論性能,達(dá)到夸張的103MB/S,這讓小杰也感到十分吃驚,高效的數(shù)據(jù)傳輸,穩(wěn)定的數(shù)據(jù)記錄,極大的提升了小杰在后期處理上的效率。
02三星PRO Plus的“變” 七重防護(hù)、10年有限保修、萬次插拔的硬核體質(zhì)
高性能是內(nèi)容創(chuàng)作的基礎(chǔ),而存儲卡的穩(wěn)定和耐用程度才是支撐內(nèi)容創(chuàng)作的靈魂。聊到穩(wěn)定性和耐久程度的時候,小杰也表示,存儲卡的性能其實大家都差不多,然而在穩(wěn)定性和耐用程度方面,不同存儲卡的差距卻是十分巨大。
沒錯,目前主流的存儲卡在穩(wěn)定性和耐用程度上,都進(jìn)行了探索和補(bǔ)足,常規(guī)的存儲卡單品基本都配置3重防護(hù),或是5重防護(hù),用以提升存儲卡的耐用程度。
三星PRO Plus 七重防護(hù)概念
而三星PRO Plus這款不久前問世的單品,則破天荒的提出了7重防護(hù)的概念,即三星PRO Plus能夠?qū)崿F(xiàn)防磨損、防水、耐高低溫、防X射線、防磁、防摔、抗沖擊等七種復(fù)雜環(huán)境,并在這些嚴(yán)苛的條件下,安全穩(wěn)定進(jìn)行原始數(shù)據(jù)的采集和記錄。
實際上在小杰的日常體驗中,經(jīng)常遇到嚴(yán)寒酷暑下進(jìn)行實景拍攝,將存儲卡和手機(jī)、電腦、信用卡等強(qiáng)磁產(chǎn)品共存的尷尬局面;回到工作室,時不時也會出現(xiàn)打翻水杯,浸濕存儲卡,或是存儲卡跌落到地面,乃至無意間被踩踏等現(xiàn)象,然而經(jīng)過一周的體驗后,小杰發(fā)覺這款三星PRO Plus依舊能夠正常運(yùn)轉(zhuǎn),高效完成數(shù)據(jù)傳輸和記錄。
此外,當(dāng)筆者告訴小杰,此款三星PRO Plus還支持10年有限保修,以及支持10000次插拔不損壞的強(qiáng)硬體質(zhì)的時候,小杰表示這個卡太硬核太優(yōu)秀了吧,當(dāng)下決定為工作室小哥們立即采購一批三星PRO Plus。
03“變與不變” 三星品牌存儲始終在路上
如同標(biāo)題所言,三星PRO Plus的“變與不變”,對于存儲卡單品而言,受制于設(shè)備的通用性和制作標(biāo)準(zhǔn)的一致性,能夠進(jìn)行產(chǎn)品創(chuàng)新和功能迭代的空間其實并不多,所以我們可以看到大部分的存儲卡在外觀和功能描述方面都大同小異,更多的是在體驗和內(nèi)置的功能方面進(jìn)行探索,如同小杰感到驚艷的,7重防護(hù),10年有限保修以及10000次插拔不損壞的體驗提升,這也是三星PRO Plus的“變”;
至于“不變”的部分,自然是三星品牌存儲對于產(chǎn)品性能的持續(xù)追求,連續(xù)讀取100MB/S,連續(xù)寫入90MB/S,實際體驗下來甚至超過峰值的表現(xiàn),對于極致性能的追求,三星品牌存儲一直在行動。
最后,插播個廣告,三星PRO Plus正在參與三星品牌存儲京東旗艦店的“星存春意處處生機(jī)”活動,購買指定存儲單品,即有機(jī)會抽獎贏取藍(lán)牙音箱,同時曬單還能返E卡。
三星品牌存儲旗艦店直通車:https://mall.jd.com/index-1000075981.html
“品質(zhì)星品”活動直通車:https://pro.m.jd.com/mall/active/YgPoau1qE891Zs5gWyXYhM4Qx4Z/index.html
(7649748)
過前面的介紹,我們已經(jīng)學(xué)會了如何使用 .NET nanoFramework 為 ESP32 設(shè)備連接 Wi-Fi 網(wǎng)絡(luò)。然而,在實際的物聯(lián)網(wǎng)環(huán)境中,我們往往需要使用更便捷的式來滿足配網(wǎng)需求。這篇文章將帶你了解一些常見的配網(wǎng)方案,并以 ESP32 為例,介紹如何使用 .NET nanoFramework 實現(xiàn)為 ESP32 藍(lán)牙配網(wǎng)。
經(jīng)過前面的介紹,我們已經(jīng)學(xué)會了如何 為 ESP32 設(shè)備連接 Wi-Fi 網(wǎng)絡(luò),然后這種代碼中硬編碼的方式,雖然簡單,但在實際的物聯(lián)網(wǎng)環(huán)境中,我們往往需要使用更便捷的方式來滿足配網(wǎng)需求。而且,也不適合于產(chǎn)品化的物聯(lián)網(wǎng)設(shè)備。今天,我們就來看看如何使用 .NET nanoFramework 實現(xiàn)為 ESP32 藍(lán)牙配網(wǎng)。
為了能讓我們的物聯(lián)網(wǎng)設(shè)備連接到網(wǎng)絡(luò),配網(wǎng)的方式也有很多種,每種方式都有其特定的應(yīng)用場景和優(yōu)缺點。在這里我們不再詳細(xì)的描述其原理,只是帶大家做一個簡單的了解,如果你感興趣,可以自行搜索。下面是一些常見的配網(wǎng)方式的總結(jié):
雖然方案有很多,但是針對這一款 ESP32-S3-Zero 開發(fā)板,其擁有藍(lán)牙模塊,刷寫 ESP32_S3_BLE
固件后,我們可以使用藍(lán)牙配網(wǎng)的方式來為其配網(wǎng)。
使用藍(lán)牙配網(wǎng)我們處理可以自己定義進(jìn)行私有的實現(xiàn)外,也可以使用開源的協(xié)議快速完成開發(fā)。除了不用自己造輪子外,配網(wǎng)的工具也不需要自己設(shè)計了。Improv 是一個免費且開放的標(biāo)準(zhǔn),它允許設(shè)備通過藍(lán)牙進(jìn)行安全的 Wi-Fi 配網(wǎng),這個過程可以通過以下步驟完成:
1.打開設(shè)備2.客戶端使用Improv協(xié)議將Wi-Fi憑據(jù)發(fā)送到待配網(wǎng)設(shè)備3.設(shè)備連接到Wi-Fi網(wǎng)絡(luò)并返回一個URL。4.客戶端使用該URL連接到設(shè)備并繼續(xù)設(shè)置設(shè)備。
Improv協(xié)議可以通過藍(lán)牙低功耗(Bluetooth Low Energy)或通過串行端口使用。這兩種協(xié)議都可以從瀏覽器中使用。不過,串口就需要連線了,我們這里使用的是藍(lán)牙低功耗的方式。
關(guān)于 Improv 協(xié)議的詳細(xì)信息,可以參考其官方文檔[1]。
首先我們需要安裝以下三個包:
?nanoFramework.System.Device.Wifi
:用于連接 Wi-Fi 網(wǎng)絡(luò)?nanoFramework.Device.Bluetooth
:用于實現(xiàn)藍(lán)牙配網(wǎng)?nanoFramework.System.Net.Http
:用于演示聯(lián)網(wǎng)后的網(wǎng)絡(luò)服務(wù)
對于 Improv 協(xié)議的實現(xiàn),沒有依賴包,但是在官方的 Samples 倉庫中有一個ImprovWifi示例[2],我們可以參考其實現(xiàn),直接使用其 Improv.cs
,然后 using ImprovWifi;
即可。
ImprovWifi
已經(jīng)實現(xiàn)了 Improv 協(xié)議,我們只需要在 Program.cs
中實現(xiàn)一些簡單的代碼。
這里我們在完成配網(wǎng)后,啟動一個簡易的網(wǎng)絡(luò)服務(wù),用于演示配網(wǎng)成功后的網(wǎng)絡(luò)服務(wù)。這里我們使用 HttpListener
來實現(xiàn)一個簡易的網(wǎng)絡(luò)服務(wù),當(dāng)然你也可以使用其他的方式,比如 WebServer
等等。
static Improv _imp;
public static void Main()
{
Console.WriteLine("藍(lán)牙配網(wǎng) Improv 協(xié)議示例");
_imp=new Improv();
// 配網(wǎng)完成后的回調(diào)
_imp.OnProvisioningComplete +=Imp_OnProvisioningComplete;
// 開始配網(wǎng)服務(wù),設(shè)備名稱這里可以自定義,中文也是支持的,在搜索設(shè)備時會顯示該名稱
_imp.Start("ESP32 桑榆肖物");
// 純演示,這里直接授權(quán)
_imp.Authorise(true);
Console.WriteLine("等待設(shè)備配網(wǎng)...");
while (_imp.CurrentState !=Improv.ImprovState.provisioned)
{
Thread.Sleep(500);
}
Console.WriteLine("設(shè)備配網(wǎng)完成,IP地址:" + _imp.GetCurrentIPAddress());
// 停止配網(wǎng)服務(wù)
_imp.Stop();
_imp=;
Console.WriteLine("啟動一個簡易的網(wǎng)絡(luò)服務(wù),用于演示配網(wǎng)成功后的網(wǎng)絡(luò)服務(wù)");
SimpleWebListener();
Thread.Sleep(Timeout.Infinite);
}
private static void Imp_OnProvisioningComplete(object sender, EventArgs e)
{
SetProvisioningURL();
}
private static void SetProvisioningURL()
{
_imp.RedirectUrl="http://" + _imp.GetCurrentIPAddress() + "/start.htm";
}
private static void SimpleWebListener()
{
string responseString=
"<html><head><meta charset='utf-8'>" +
"<title>Hello from ESP32</title></head>" +
"<body><h2>Hello from ESP32</h2>" +
"<p>It works!</p>" +
"<p>這里可以根據(jù)需求繼續(xù)進(jìn)行更多的設(shè)備配置信息</p>" +
"</body></html>";
byte[] buffer=System.Text.Encoding.UTF8.GetBytes(responseString);
HttpListener listener=new("http", 80);
listener.Start();
while (true)
{
try
{
HttpListenerContext context=listener.GetContext();
Console.WriteLine("Request received");
HttpListenerResponse response=context.Response;
response.ContentLength64=buffer.Length;
response.OutputStream.Write(buffer, 0, buffer.Length);
context.Response.Close();
Console.WriteLine("Response sent");
context.Close();
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message + "\nSack=" + ex.StackTrace);
}
}
}
注意:以上代碼只是功能的演示,在實際項目中,需要根據(jù)自己的需求進(jìn)行修改,比如我們需要在驗證連接后下次也自動完成連接,再者為了安全性,我們還需要進(jìn)行驗證等等。后面我會有一個實際的開源項目演示,介紹如何使用近期介紹的相關(guān)功能,敬請關(guān)注。
編譯并刷寫完成后,通過調(diào)試的數(shù)據(jù)輸出,我們可以看設(shè)備成功進(jìn)入等待配網(wǎng)狀態(tài)。這時我們通過網(wǎng)頁打開 Improv 的 web 配網(wǎng)客戶端,也就是之前的 Improv 官方介紹站點[3]。當(dāng)然,站點和協(xié)議都是開源的,你可以自己搭建一個。
這里我們直接使用官方的進(jìn)行測試使用即可,不過,需要注意的是,因為使用了藍(lán)牙配網(wǎng),所以這里需要你的電腦也支持藍(lán)牙,否則無法搜索到設(shè)備。如果你的電腦沒有藍(lán)牙,也可以使用手機(jī)的 Chrome 或 Egde 瀏覽器打開該網(wǎng)頁進(jìn)行配網(wǎng)。
這里可以看到,設(shè)備列表中已經(jīng)搜索到了我們的設(shè)備,點擊配對即可。配對成功后,我們可以會彈出下面的對話框,這里我們可以設(shè)置 Wi-Fi 的 SSID 和密碼,然后點擊 Connect
按鈕即可。
連接成功后,我們可以看到設(shè)備的狀態(tài)已經(jīng)變成了 Provisioned
,這時我們就可以訪問到設(shè)備啟動的網(wǎng)絡(luò)服務(wù)了。
通過這篇文章,我們學(xué)習(xí)了如何使用 .NET nanoFramework 為 ESP32 設(shè)備進(jìn)行藍(lán)牙配網(wǎng)。雖然這里我們使用的是 Improv 協(xié)議,但是其實現(xiàn)原理都是類似的,只是協(xié)議不同而已。在實際的項目中,我們可以根據(jù)自己的需求,選擇合適的配網(wǎng)方式,或者自己實現(xiàn)一個配網(wǎng)協(xié)議,這里就不再贅述了。
對于 Improv 協(xié)議的配網(wǎng)客戶端,我們也可以通過微信小程序來實現(xiàn),或者通過集成SDK到自己的應(yīng)用中方便的實現(xiàn)配網(wǎng),有興趣的同學(xué)可以自行了解實現(xiàn)。
[1]
官方文檔: https://www.improv-wifi.com/
者:劉小夕
轉(zhuǎn)發(fā)鏈接:https://mp.weixin.qq.com/s/aEbqUt3zSnq8EjdBtkBcpw
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。