作者:Michael Parks 在之前的園藝項目中,我們研究了溫度、環(huán)境濕度、自身濕度、pH值和CO2含量對植物生長(cháng)的影響。在本文中,我們將研究植物光合作用的另一個(gè)關(guān)鍵因素—光照。本項目將允許園藝工作人員監測和遠程控制人工光照?刂骗h(huán)境園藝(CE)是借助數字技術(shù)來(lái)控制植物生長(cháng)的一種奇妙方式,它正在成為一種越來(lái)越重要的機制,協(xié)助穩定地球糧食供應鏈。與室內垂直農場(chǎng)一樣,有時(shí)我們的園藝項目無(wú)法保證光照度,這時(shí)使用人工智能照明就非常重要。 本項目將利用Medium One端到端物聯(lián)網(wǎng)云平臺,允許終端用戶(hù)監控、自動(dòng)化和遠程控制園藝設施中的人工照明,無(wú)論是溫室、垂直農場(chǎng)還是其他需要此類(lèi)功能的環(huán)境,都適用。 準備材料 本項目將使用支持快速原型設計的Microchip Xplained開(kāi)發(fā)板系列,以及SAM W25 Xplained Pro評估套件。Xplained開(kāi)發(fā)板搭載基于A(yíng)rm®Cortex®-M0+的ATSAMD21G18A微控制器。其他關(guān)鍵組件包括: 1、Sparkfun TEMT6000環(huán)境光傳感器 2、開(kāi)關(guān)電源(額定值為75.6W、2.1A @ 36V) 3、Microchip MIC3202 HB LED驅動(dòng)器 4、LED燈條 物料清單 物料清單(BOM)如下所示。您也可以訪(fǎng)問(wèn)mouser.com訂購所需的零件。截至本文撰寫(xiě)時(shí),以下物料清單的價(jià)格約為125美元(USD),其中不含LED燈條。若把LED燈條計算在內,成本也就是400美元多一點(diǎn)。表1列出了物料清單中的物料。 ![]() 工具和其他資源 以下是完成本項目所需的推薦工具列表: 運行Arduino IDE或Atmel Studio 7.0的Windows計算機 Wi-Fi網(wǎng)絡(luò )(802.11/b/g/n/ac) 剝線(xiàn)鉗 數字萬(wàn)用表 尖嘴鉗 18AWG或16AWG、300V(最小值)、雙線(xiàn)電纜(用于室外照明) Wieland RST 16i2/3母接頭 ![]() 圖1:Wieland RST 16i2/3連接器適用于可能存在濕氣的環(huán)境(例如園藝應用) 概覽 本項目中使用的傳感器和控制器板通過(guò)兩種方式與Xplained微控制器板進(jìn)行通信—一種是以數字方式利用脈寬調制信號,另一種是利用微控制器的模數轉換器(ADC)所讀取的0V-5V模擬信號。 1、MIC3202 HB LED驅動(dòng)器:MIC3202有兩個(gè)在邏輯電平電壓下工作的控制引腳。第一個(gè)是EN(或ENABLE)引腳。此引腳控制輸出(-LED和+LED)的開(kāi)關(guān)。如果將EN引腳置高,則功率被輸送到LED電源線(xiàn)。相反,如果將EN引腳接地,到LED的輸出電壓將被切斷,從而關(guān)閉所有連接到輸出的LED。 第二個(gè)引腳是DIM引腳,負責控制LED的亮度。DIM引腳尋找脈寬調制(PWM)信號來(lái)作為L(cháng)ED亮度的控制信號。改變PWM信號的占空比將導致亮度變化—100%占空比可實(shí)現最大亮度,0%將關(guān)閉LED。 2、TEMT6000環(huán)境光傳感器:該傳感器的作用類(lèi)似于一個(gè)NPN晶體管,其基極引出端由光照控制。它被配置在共集電極放大電路拓撲中,使輸入端的任何細微變化,都能讓連接到微控制器模數轉換器(ADC)引腳的CE系統輸出放大的信號。光線(xiàn)亮度越高,微控制器ADC輸入引腳上的電流就越大,電壓也越高。 組裝電子設備 本項目必須牢記的一點(diǎn)是我們要使用交流電源,安全高于一切。觸電和火災都是潛在的危險,所以要注意硬件和電線(xiàn)插頭。要確保電線(xiàn)絕緣,并準備好滅火器。最后,在將電線(xiàn)插入墻上的交流插座之前,檢查所有連接線(xiàn)兩次。另外還要注意,我是在美國,這里的電壓是120VAC,頻率為60Hz,您的設備需要根據您所在地區的電氣規格進(jìn)行調整。 本項目的組裝步驟如下: LRS 75-36開(kāi)關(guān)電源 1、使用一端帶有NEMA 15-5P插頭的電纜,露出電纜另一端的火線(xiàn)、零線(xiàn)和地線(xiàn)。 2、用萬(wàn)用表確認插座孔與地線(xiàn)、火線(xiàn)和零線(xiàn)的對應關(guān)系。不同電纜的這幾根線(xiàn)顏色不一樣,所以不要太過(guò)依賴(lài)下面的圖片。 3、將電纜的火線(xiàn)插入電源上標有“L”的插孔。 4、將電纜的零線(xiàn)插入電源上標有“N”的插孔。 5、將電纜的地線(xiàn)插入電源上標有“G”的插孔。 6、取一英尺長(cháng)的16AWG雙線(xiàn)室外照明電纜,并剝去兩端。 7、選擇電纜的一端,將白線(xiàn)插入電源的V+插孔。 8、將黑線(xiàn)插入電源的V-插孔。 ![]() 圖2:電源接線(xiàn)完成。頂部為 NEMA 15-5P插頭,底部為16AWG室外照明電纜,連接到LED驅動(dòng)板 MIC3202 HB LED驅動(dòng)板 1、使用前面的16AWG雙線(xiàn)室外照明電纜的另一端,將白線(xiàn)焊接到VIN雙轉塔焊接端子上。 2、將黑線(xiàn)焊接到GND雙轉塔焊接端子上。 3、取一根6英尺長(cháng)的16AWG雙線(xiàn)室外照明電纜,并剝去兩端。 4、選擇電纜的一端,將白線(xiàn)焊接到LED+雙轉塔焊接端子上。 5、將黑線(xiàn)焊接到LED-雙轉塔焊接端子上。 ![]() 圖3:雙轉塔焊接端子 SAM W25 Xplained Pro開(kāi)發(fā)板 1、將MIC3202板上的EN引腳連接到Xplained Pro開(kāi)發(fā)板上的引腳5。 2、將MIC3202板上的DIM引腳連接到Xplained Pro開(kāi)發(fā)板上的引腳7。 3、將MIC3202板上的GND引腳連接到Xplained Pro開(kāi)發(fā)板上的GND引腳。 ![]() 圖4:SAM W25板(頂部)、TEMT6000光傳感器(左下方)和LED驅動(dòng)板(右下方) TEMT6000環(huán)境光傳感器 1、將3引腳公接頭焊接到TEMT6000分線(xiàn)板。 2、將TEMT6000板上的“VCC”引腳連接到Xplained Pro開(kāi)發(fā)板上的VCC引腳。 3、將TEMT6000板上的“GND”引腳連接到Xplained Pro開(kāi)發(fā)板上的GND引腳。 4、將TEMT6000板上的“SIG”引腳連接到Xplained Pro開(kāi)發(fā)板上的引腳3。 ![]() 圖5:TEMT6000環(huán)境光傳感器 LED燈條 1、找到連接至MIC3202板的6英尺長(cháng)16AWG雙線(xiàn)室外照明電纜的另一端。 2、將兩根裸露的電線(xiàn)插入Wieland RST16i2/3母接頭。 3、將Wieland RST16i2/3母接頭連接到LED燈條上的Wieland RST16i2/3公接頭。 ![]() 圖6:項目的功能框圖 軟件 在這一節,我們將詳細介紹本項目中涉及的軟件,闡述Microchip Xplained開(kāi)發(fā)板所需的固件和支持文件,以及Medium One沙盒在您的網(wǎng)絡(luò )瀏覽器中的設置。您可以根據自己的個(gè)人喜好,使用Atmel Studio 7或Arduino IDE來(lái)編輯為本項目提供的源代碼。 為方便您使用Arduino IDE,Microchip在其GitHub網(wǎng)站上提供了所需的文件。在A(yíng)rduino IDE中,轉到File>Preferences>Additional Boards Manager URLs,然后添加此URL:https://github.com/AtmelUniversi ... le_0.3.0_index.json 本項目的軟件分為三部分: 1、微控制器固件,使用C語(yǔ)言編寫(xiě)。 2、向終端用戶(hù)智能手機和微控制器發(fā)送命令并從其接收命令的云應用程序,使用Python編寫(xiě)。 3、Medium One提供的智能手機應用程序,針對本項目專(zhuān)門(mén)配置。 Microchip Xplained開(kāi)發(fā)板固件 在微控制器板上運行的固件很簡(jiǎn)單。代碼按順序執行以下操作: 設置 1、建立到主機的9600波特串行調試連接。 2、嘗試連接所需的無(wú)線(xiàn)網(wǎng)絡(luò )。 3、連接到MQTT代理。 4、訂閱MQTT代理,此代理為從Medium One發(fā)送到微控制器的所有消息提交主題。 5、將各個(gè)I/O引腳設置為輸入或輸出。 主重復循環(huán) 6、使用心跳消息輪詢(xún)MQTT服務(wù)器以保持連接。 7、讀取TEMT6000環(huán)境光傳感器的讀數。 8、確定系統處于手動(dòng)還是自動(dòng)模式。 9、如果是處于自動(dòng)模式,則通過(guò)將0至1023的數字化亮度信號映射到255至0的值來(lái)控制在DIM引腳上發(fā)送的PWM信號的占空比,從而調整LED亮度。 10、如果處于手動(dòng)控制模式,則通過(guò)將用戶(hù)智能手機上設置的0%至100%的設定值映射到255至0的值來(lái)控制在DIM引腳上發(fā)送的PWM信號的占空比,從而調整LED亮度。 11、檢查自上次向MQTT代理發(fā)送消息以來(lái)是否至少經(jīng)過(guò)了1000毫秒。如果是,則向代理發(fā)送包含環(huán)境光傳感器最新讀數的新消息。 12、處理從MQTT代理接收的任何消息。 13、將收到的消息輸出到串行端口。 14、將有效載荷轉換為字符串。 15、確定字符串是否正在請求打開(kāi)或關(guān)閉手動(dòng)控制;或者確定它是不是應指定為手動(dòng)亮度設定值的整數。 關(guān)于項目中使用的map函數的簡(jiǎn)要說(shuō)明——map函數的定義如下: map(value, fromLow, fromHigh, toLow,toHigh) map函數可用于將數字從一個(gè)范圍映射到另一個(gè)范圍。例如,模數轉換器(ADC)的分辨率為1024,而analogWrite函數只接受0到255的值。map函數接受5個(gè)參數,包括: 1、要映射的數字。 2、當前范圍值的下限。 3、當前范圍值的上限。 4、目標范圍值的下限。 5、目標范圍值的上限。 map函數將返回映射到新范圍的整數。例如: X=map(50, 1, 100, 1, 200); 在這個(gè)示例中,x將設置為100,因為50是原來(lái)1和100范圍內的中間值,而100是新范圍內的中間值。 項目文件 以下文件位于:https://github.com/Mouser-Electr ... orticultureLighting。 MicrochipHorticultureLighting.ino:用于本文任務(wù)的項目特定代碼存儲在此文件中。它基于Medium One提供的示例,演示嵌入式設備如何與物聯(lián)網(wǎng)平臺的后臺交互。 secrets.h:在使用公開(kāi)發(fā)布的項目時(shí),始終存在泄露敏感數據(如密碼或API密鑰)的風(fēng)險。我們可以創(chuàng )建一個(gè)未發(fā)布的頭文件來(lái)存儲這些信息,而不是直接將這些信息硬編碼到固件中,這樣就不必在每次Git提交之前更改代碼。 庫 預處理器指令#include允許我們將庫添加到項目中,從而促進(jìn)代碼復用。除非您有非常特殊的需求,否則就不需要再重新編寫(xiě)代碼。本項目使用以下庫: ArduinoMQTTClient.h:這個(gè)庫為基于MQTT的服務(wù)提供一個(gè)方便的接口。 WiFi101.h:這個(gè)庫提供ATWINC1500芯片接口,以簡(jiǎn)化與Wi-fi網(wǎng)絡(luò )的交互。 ![]() 圖7:來(lái)自微控制器和智能手機應用程序的原始數據流 變量與常量 前幾個(gè)變量是存儲各種必要信息的字符數組。首先,SSID和WPA2是連接到所需無(wú)線(xiàn)網(wǎng)絡(luò )的密鑰。接下來(lái),broker和port存儲MQTT服務(wù)器的URL及其使用的TCP端口。然后,topic和subtopic存儲URL路徑,并通過(guò)MQTT消息從Medium One接收數據或將數據提交到Medium One。最后,pubMessageStart和pubMessageEnd是消息的固定部分,它們將亮度讀數發(fā)送到Medium One。 char ssid[ ]=SECRET_SSID const char broker[ ]=SECRET_BROKER const int port=SECRET_PORT char pass[ ]=SECRET_PASS const char topic[ ]=SECRET_TOPIC const char subtopic[ ]=SECRET_SUBTOPIC const char pubMessageStart[ ]="{"event_data":{"lux":"" const char pubMessageEnd[ ]=""}}" 接下來(lái),有幾個(gè)常量用于控制硬件的功能和交互。 const int lightSensorPin=3:設置ADC輸入引腳,用于接收來(lái)自TEMT600光傳感器的輸出信號。 const int DIMControlPin=7:將PWM引腳設置為連接到LED驅動(dòng)板上DIM引腳的輸出,用于控制LED的亮度。 const int ENControlPin=5:將GPIO引腳設置為連接到LED驅動(dòng)板上EN引腳的輸出,用于打開(kāi)或關(guān)閉驅動(dòng)板的輸出。 const long interval=1000:將發(fā)往Medium One服務(wù)器的傳輸間隔設置為1000毫秒(即1秒)。 接下來(lái),還有幾個(gè)常量用于控制硬件的功能和交互。 unsigned long previousMillis=0:跟蹤上次向MQTT代理發(fā)送消息時(shí)的時(shí)間戳。 unsigned int manualBrightSetPoint=100:存儲處于手動(dòng)控制模式時(shí)LED亮度級別的設定值。 unsigned int setBrightPWM=255:將轉換后的設定值存儲在連接到LED驅動(dòng)板上DIM引腳的PWM引腳所需的占空比值中。 unsigned int sensorBrightnessReading=0:存儲從TEMT6000環(huán)境光傳感器獲取的最新亮度讀數。 bool manualMode_ON=false:一個(gè)布爾變量,用于跟蹤用戶(hù)希望系統在手動(dòng)還是自動(dòng)控制模式下運行。 最后,我們還提供各種類(lèi)的示例: WiFiClient:創(chuàng )建WiFi客戶(hù)端類(lèi)的實(shí)例,該實(shí)例允許ATSAMD21G18A芯片與ATWINC1500 wifi芯片交互,并建立到Wi-Fi網(wǎng)絡(luò )的連接。 MQTTClient:創(chuàng )建MQTT客戶(hù)端類(lèi)的實(shí)例,該實(shí)例允許固件通過(guò)簡(jiǎn)單的函數調用與Medium One的MQTT代理交互。 函數 void setup():要運行的第一個(gè)函數將初始化所需的許多硬件和軟件組件,如串行通信、Wi-Fi連接、傳感器接口以及與GPIO引腳的交互。 void loop():這是將持續運行的功能的核心。注意確保主循環(huán)的代碼盡量簡(jiǎn)單,并將功能分配給專(zhuān)門(mén)的函數承擔,每個(gè)函數負責執行項目運轉所需的某項任務(wù)。 void onMQTTMessage(int messageSize):此函數處理從Medium One服務(wù)器接收的任何消息。 配置Medium One Medium One為物聯(lián)網(wǎng)開(kāi)發(fā)人員提供了一個(gè)平臺,在這個(gè)平臺上開(kāi)發(fā)人員的物聯(lián)網(wǎng)設備可以傳輸和編譯來(lái)自多個(gè)物聯(lián)網(wǎng)設備的數據集。Medium One提供了一個(gè)很棒的教程,介紹如何開(kāi)始使用其服務(wù)。本指南將重點(diǎn)介紹我們在設置Microchip Xplained通過(guò)其MQTT API與Medium One通信時(shí)遇到的問(wèn)題。本項目將利用Medium One的MQTT(消息隊列遙測傳輸)協(xié)議。MQTT是一個(gè)基于發(fā)布-訂閱的消息傳遞協(xié)議,位于TCP/IP協(xié)議之上。與RESTful API相反,MQTT需要一個(gè)集中式消息代理。因此,端點(diǎn)設備不能彼此直接通信。這有利也有弊。RESTful API依賴(lài)客戶(hù)機始終啟動(dòng)通信,而MQTT由于使用了發(fā)布/訂閱(Pub/Sub)架構,允許服務(wù)器推送數據。RESTful設備可以直接相互通信。MQTT依賴(lài)于集中式消息代理(例如,云中的服務(wù)器),在傳輸此類(lèi)遙測數據時(shí)效率要高得多。 ![]() 圖8:Medium One的配置畫(huà)面 第一步是在https://www.medium.one上創(chuàng )建一個(gè)免費帳戶(hù)。有了帳戶(hù)后,需要從其Web用戶(hù)界面的右上角創(chuàng )建一個(gè)新項目。 新項目激活后,必須記下Medium One自動(dòng)生成的一些關(guān)鍵信息,以便后面在固件中使用(具體來(lái)說(shuō),就是把這些信息存儲在secretstuff.h頭文件中)。這些關(guān)鍵信息包括: Project ID:這個(gè)字母數字字符串是分配給項目的唯一標識符。它讓Medium One知道,如果有多個(gè)項目托管在他們的web服務(wù)上,需要將Microchip Xplained開(kāi)發(fā)板環(huán)境數據傳送到哪個(gè)項目。 API Key:這個(gè)自動(dòng)生成的字母數字字符串,允許我們登錄并使用Medium One的API服務(wù)。 MQTT ID:每個(gè)項目可以有多個(gè)貢獻者。注意,登錄ID與MQTT ID不同。MQTT ID是Medium One生成的字母數字字符串。登錄ID是終端用戶(hù)創(chuàng )建的人類(lèi)可讀字符串。例如“sallymsith”。固件需要的信息是MQTT ID而不是登錄ID。 User Password:這是每個(gè)用戶(hù)在為項目建立帳戶(hù)時(shí)創(chuàng )建的密碼。出于安全原因,它不會(huì )顯示在任何地方,因此請務(wù)必記住此密碼! 接下來(lái),我們確定可以從Medium One 網(wǎng)站的哪個(gè)地方獲取這些信息: Setup->Project Info:此處將顯示Project ID。 Setup->Manage Users:此處包含Login ID和用戶(hù)的MQTT ID。請記住,固件需要的是MQTT ID,而不是Login ID。 Setup->Manage API Keys:這里可以找到API Key。 固件還需要另外兩項關(guān)鍵信息:Medium One MQTT服務(wù)器URL(MQTT.mediumone.com)和TCP端口,端口值為61619(非安全)或61620(安全)。最后,我們需要設置一個(gè)儀表板,看是否收到了來(lái)自Microchip Xplained開(kāi)發(fā)板的數據。為此我們需要: 轉至Dashboard并選擇Single User Real-Time Events Stream選項。 從下拉框中選擇要查看的用戶(hù)。 這將創(chuàng )建儀表板并開(kāi)始監聽(tīng)數據。如果綠色播放按鈕可見(jiàn),則單擊它開(kāi)始收聽(tīng)。否則,將有一個(gè)紅色的暫停按鈕,可用于在需要時(shí)暫停饋入。 如果一切正常,來(lái)自Microchip Xplained開(kāi)發(fā)板的原始MQTT數據包應開(kāi)始在瀏覽器中顯示。請確保Microchip Xplained開(kāi)發(fā)板通過(guò)計算機的USB連接供電,或通過(guò)墻壁上的交流電源插座供電。 云和智能手機應用程序 Medium One提供易于使用的資源,創(chuàng )建與物聯(lián)網(wǎng)設備交互的基本智能手機應用程序。這些應用程序目前僅適用于iOS設備,但預計將來(lái)也會(huì )支持Android。 對于本項目,請下載Medium One在A(yíng)pple iOS App Store上提供的專(zhuān)用"IoT Controller"。 ![]() 圖9:Medium One Workflow Studio ![]() 圖10:將新的小部件添加到智能手機應用程序中 要詳細了解設置手機應用程序的步驟說(shuō)明,請點(diǎn)擊查看Medium One的教程。本節將重點(diǎn)介紹此特定項目需要完成的工作。我們將從添加新的小部件開(kāi)始,讓用戶(hù)控制燈光是自動(dòng)控制模式還是手動(dòng)控制模式。 1、在智能手機應用程序上,單擊+Add New Widget。 2、選擇Switch。 3、在Stream中輸入raw。 4、輸入“ManualControl”作為標簽。 5、單擊Done。 6、單擊Save。 7、撥動(dòng)開(kāi)關(guān)并查找要在Real Time Events Stream中顯示的消息。 8、回到臺式機上,從Medium One儀表板單擊Config>Data Streams>Raw。 9、確保raw.manualControl標簽勾選了Active復選框。 10、從Medium One儀表板單擊Workflow Studio > Create。 11、將其命名為類(lèi)似“Switch for Manual Control”的名稱(chēng)。 12、在屏幕的右側,選擇Tags & Triggers>raw>manualControl并拖到Studio屏幕上。 13、在屏幕的右側,選擇Modules>Foundation>Base Python并拖到Studio屏幕上。 14、雙擊Base Python模塊并在Script部分輸入以下代碼: import MQTT mode=IONode.get_input('in1')['event_data']['value'] if(mode == "on"): MQTT.publish_event_to_client('device1','manualControl_ON', encoding='utf-8') else: MQTT.publish_event_to_client('device1','manualControl_OFF', encoding='utf-8') 15、按Save and Activate。 16、撥動(dòng)智能手機上的開(kāi)關(guān),確認在打開(kāi)和關(guān)閉manualControl的情況下分別顯示manualControl_ON和manualControl_OFF消息。 ![]() 圖11:完成時(shí)的用戶(hù)界面(UI) 接下來(lái),讓我們創(chuàng )建一個(gè)滑塊來(lái)控制LED的亮度。 1、在智能手機應用程序上,單擊+Add New Widget。 2、選擇Switch。 3、在Stream中輸入raw。 4、輸入“ManualBrightnessSetPoint”作為標簽。 5、單擊Done。 6、單擊Save。 7、上下滑動(dòng)開(kāi)關(guān),查找要在Real Time Events Stream中顯示的消息。 8、回到臺式機上,從Medium One儀表板單擊Config>Data Streams>Raw。 9、確保為raw.ManualBrightnessSetPoint標簽勾選Active復選框。 10、從Medium One儀表板單擊Workflow Studio>Create。 11、將其命名為類(lèi)似“Set Manual Brightness Level”的名稱(chēng)。 12、在屏幕的右側,選擇Tags & Triggers>raw>ManualBrightnessSetPoint并拖到Studio屏幕上。 13、在屏幕的右側,選擇Modules>Foundation>Base Python并拖到Studio屏幕上。 14、雙擊Base Python模塊并在Script部分輸入以下代碼: import MQTT level=IONode.get_input('in1')['event_data']['value'] MQTT.publish_event_to_client('device1',str(level), encoding='utf-8') 15、按Save and Activate。 撥動(dòng)智能手機上的開(kāi)關(guān),確認顯示的消息包含0到100之間的字符串值(整數)。 ![]() 圖12a:負責處理智能手機交互的后臺代碼。頂部:設置手動(dòng)亮度設定值。底部:打開(kāi)和關(guān)閉手動(dòng)模式 ![]() 圖12b:底部:打開(kāi)和關(guān)閉手動(dòng)模式 ![]() 圖13:使用智能手機控制照明 運行中的項目 在項目編譯好之后,將Xplained開(kāi)發(fā)板連接到計算機并啟動(dòng)串行終端。您應該能遙測到來(lái)自光傳感器的數據流以及發(fā)往和來(lái)自Medium One MQTT代理的MQTT消息。如果沒(méi)有,請檢查是否有錯誤消息。一些常見(jiàn)錯誤包括: 1、電源的火線(xiàn)、零線(xiàn)、地線(xiàn)接錯。 2、電源或LED驅動(dòng)板上的V+和V-接反。 3、LED燈條或LED驅動(dòng)板上的LED-和LED+接反。 4、傳感器的電源線(xiàn)和地線(xiàn)接反。 5、如果給設備供電,確保電源至少能提供1A的電流。 6、無(wú)線(xiàn)網(wǎng)絡(luò )未運行,或者SSID/安全密鑰輸入錯誤。 ![]() 圖14:左側:亮度約為50%、右側:亮度約為90% 文章來(lái)源:貿澤電子 作者簡(jiǎn)介:專(zhuān)業(yè)工程師Michael Parks是貿澤電子的特約作者,同時(shí)也是GreenShoe Garage的所有者。Green ShoeGarage是一個(gè)提供定制電子設計的工作室和技術(shù)咨詢(xún)機構,位于馬里蘭州南部。MichaelParks創(chuàng )辦了《S.T.E.A.M. Power Podcast》播客來(lái)提升公眾對科技的認知,他擁有馬里蘭州專(zhuān)業(yè)工程師資質(zhì)并擁有約翰·霍普金斯大學(xué)的系統工程碩士學(xué)位。 |