資料介紹
描述
這個想法背后的故事:
任何普通/智能家居或建筑物中使用的閃電系統(tǒng)仍在按照百年的開或關(guān)原理工作,需要對其進(jìn)行現(xiàn)代化改造以實現(xiàn)安全能源。在白天,我們可以使用自然光來照亮我們的房屋/建筑物,但在清晨、傍晚或惡劣天氣期間,當(dāng)可用的自然光較少時,我們必須使用人造光。使用當(dāng)前的照明系統(tǒng),我們只需將其全功率打開,而不是用人造光補充自然光。這導(dǎo)致大量能源的浪費,這也是我們星球上最大的危機。因此,為了節(jié)省能源,我們需要構(gòu)建一個足夠智能的照明系統(tǒng),以便在可用時補充自然光,而不是簡單地打開并消耗最大功率。
有目的的解決方案:
為我們的智能家居/建筑構(gòu)建節(jié)能照明系統(tǒng),設(shè)計具有自適應(yīng)亮度控制的智能智能照明,以最大限度地利用自然光。在對這種解決方案進(jìn)行很少的研究時,到目前為止我只發(fā)現(xiàn)了很少的 IEEE 研究論文所以這可能是第一個這樣的解決方案。這種系統(tǒng)的最大優(yōu)勢是它的能源效率,通過改變亮度和補充自然光來保持充足的光線。
這個 Idea 被選為免費硬件,它通過 USPS 運送,但從未到貨。項目中使用的Sony Main + Ext板由Electromaker.IO提供
圖書館要求:
u8g2: https://github.com/olikraus/u8g2
apds9930: https://github.com/Depau/APDS9930
為 Arduino IDE 啟用 RTC:
需要 RTC 才能為 IOT 平臺啟用它并在夜間進(jìn)入省電模式,因為由于外部(太陽)光不可用,我們不需要大量計算。最初我無法使用 Arduino IDE 使用 SONY Spresense 板的 CXD5602GG mcu 的內(nèi)部 RTC 模塊,但在研究了它提供的 SDK 之后,我驚訝地發(fā)現(xiàn)了很多有用的內(nèi)置函數(shù)、傳感器庫和 RTC。在這里我會要求SONY團(tuán)隊提供一些關(guān)于SDK和MCU注冊及其功能的文檔。為了使用 RTC 模塊,我們需要使用給定代碼修改...\Arduino15\packages\SPRESENSE\tools\spresense-sdk\1.1.3\spresense\release\include\sdk\文件夾中可用的cxd56_rtc.h文件. 同時創(chuàng)建新的cxd56_rtc.c文件位于同一位置,其代碼如下所示。
使用 GPS 的自動 RTC 配置:
內(nèi)置 GPS 令人印象深刻的室內(nèi)性能鼓勵我添加自動 RTC 配置功能。啟動時,GPS 時間變量的值為 1980 年。因此,一旦該值發(fā)生變化,我們就可以使用 GPS 時間配置 RTC。RTC 模塊需要 Unix 時間,GPS 模塊提供標(biāo)準(zhǔn)的當(dāng)前時間。可以使用time.h庫mktime()和struct tm將 GPS 時間轉(zhuǎn)換為 Unix 時間。下面給出了通過 GPS 時間更新 RTC 模塊的代碼。
void setup_rtc(){
if(!timeSinceEpoch){ /* check if RTC is already configured or not */
if (Gnss.waitUpdate(-1)){ /* read GPS data */
SpNavData NavData;
Gnss.getNavData(&NavData);
if (NavData.time.year!=1980){ /* check if GPS time is acquired or not */
struct tm tm; /* create time struct variable */
/*
tm_sec -> The number of seconds after the minute, normally in the range 0 to 59, but can be up to 60 to allow for leap seconds.
tm_min -> The number of minutes after the hour, in the range 0 to 59.
tm_hour -> The number of hours past midnight, in the range 0 to 23.
tm_mday -> The day of the month, in the range 1 to 31.
tm_mon -> The number of months since January, in the range 0 to 11.
tm_year -> The number of years since 1900.
tm_wday -> The number of days since Sunday, in the range 0 to 6.
tm_yday -> The number of days since January 1, in the range 0 to 365.
*/
tm.tm_year = NavData.time.year-1900; /*Subtract 1900 from GPS time to get years since 1900 */
tm.tm_mon = NavData.time.month-1; /*Subtract 1 from GPS months*/
tm.tm_mday = NavData.time.day;
tm.tm_hour = NavData.time.hour;
tm.tm_min = NavData.time.minute;
tm.tm_sec = NavData.time.sec;
timeSinceEpoch = mktime(&tm); /* get GMT unix time */
}
}
if(timeSinceEpoch){ /* Check if time is updated */
rtcTime.tv_sec=timeSinceEpoch; /* update the RTC module sec register */
rtcTime.tv_nsec=0; /* no info available to update nano sec register */
up_rtc_settime(&rtcTime); /* update the RTC time */
rtc_status=true; /* RTC status variable to ON/OFF RTC icon */
}
}
else{
rtc_status=false;
}
}
與 PIR 傳感器接口:
通用 PIR 傳感器的輸出不能與外部上拉條件一起使用。當(dāng)它與任何單片機連接時,我們需要設(shè)置引腳“INPUT FLOAT”。對于具有 1.8V VDD-IO 及其 EXT 的 Sony spresense。LSF0204x 4 位雙向多電壓電平轉(zhuǎn)換器板(數(shù)據(jù)表:此處) 用于輸出上拉電阻的 3.3/5V 電平轉(zhuǎn)換。所以這意味著 J2 和 J13 的每個數(shù)字 IO 引腳都不能用作浮動或下拉輸入。如果我們嘗試直接用 EXT 連接一個下拉電阻。電路板 IO 引腳將構(gòu)成一個分壓器,這不是下拉電阻的目的。使用下拉的輸入低電平只能通過連接一個 R<<1K 的電阻來實現(xiàn)。(1K 上拉電阻用于 ext.board 上,詳情請參考 EXT.board schematic documents available HERE )
為了克服這個問題,我們需要添加到外部緩沖器 IC,我使用74LS245(數(shù)據(jù)表:此處)作為 PIR 傳感器輸入和 LED 驅(qū)動器 pwm 輸出的輸入/輸出緩沖器(Fritzing 電路圖)。
APDS9930 環(huán)境光傳感器:
數(shù)字環(huán)境光傳感器 APDS9930(詳情:此處)由于其超低功耗和可編程中斷功能(此處未使用),用于代替模擬傳感器(LDR 等)進(jìn)行光強度測量。這里使用的模塊有板載 5 至 3.3V LDO 和 I2C 電平轉(zhuǎn)換電路,用于 5V 操作。
PIR 傳感器邏輯:
PIR 傳感器設(shè)置為最小延遲時間,具有超時功能的 Sony 外部中斷用于根據(jù) PIR 傳感器輸出打開/關(guān)閉 LED。最低延遲時間設(shè)置用于使 LED 關(guān)閉延遲時間完全可編程。當(dāng) PIR 傳感器模塊設(shè)置為最小延遲時間時,如果檢測到任何物體,它會連續(xù)提供約 1 秒的開啟和約 1 秒的脈沖序列。如果 mcu 將繼續(xù)接收脈沖,則 LED 將保持點亮狀態(tài),否則 LED 可以在接收到最后一個脈沖后經(jīng)過用戶可編程的延遲時間后關(guān)閉。因此,它還可以讓我們在離開房間后(約 1 秒延遲)立即關(guān)閉 LED。
/* PIR senosr Input configured as external interrupt */
pinMode(PIR_PIN, INPUT);
attachInterrupt(PIR_PIN, pir_ISR, CHANGE);
每次恢復(fù) PIR 中斷時,我們都會使用用戶定義的延遲(秒)變量更新pir_delay變量。
/* PIR interrupt service routine */
void pir_ISR(){
/* assign user defined delay value (seconds) to program pir delay value */
pir_delay=pir_user_delay;
}
在我們的代碼中,我們每秒檢查一次pir_delay是否設(shè)置。如果它的設(shè)置然后打開 LED 并減少pir_delay直到變?yōu)榱悴㈥P(guān)閉 LED,否則它可以通過 PIR ISR 繼續(xù)更新。這里的 pir_status變量用于在 OLED 顯示器上顯示 LED ON 或 OFF 圖標(biāo)。
bool pir_sw(){
if (pir_delay>0){
pir_status=true;
pir_delay--;
return true;
}
else{
pir_status=false;
return false;
}
}
LED驅(qū)動電路:
LED 亮度可以通過可編程恒流源或通過施加 PWM 控制的恒壓進(jìn)行數(shù)字控制。在這個項目中,我使用恒壓源和 pwm 來調(diào)節(jié) LED 亮度。
我在這個項目中使用的電源 LED (3W) 的開啟電壓約為 9.8V。為了從通用 12V 電源適配器生成此電壓,我使用了 DC-DC 降壓轉(zhuǎn)換器(也如下圖所示)。現(xiàn)在,將 Sony Spresense pwm 轉(zhuǎn)換為 LED 電源 pwm 所需的第二件事。經(jīng)過一些在線研究,我找到了一個單電源驅(qū)動器 IC L9110(數(shù)據(jù)表:此處)。現(xiàn)在是從 EXT 的 3.3V 電壓電平安全驅(qū)動輸入引腳的問題。板 IO 板使用夏普PC817低成本光隔離器解決(數(shù)據(jù)表:此處)。
LED驅(qū)動邏輯:
本項目中使用的 L9110 板的數(shù)字輸入被上拉至電源電壓。因此,為了打開輸出,需要在數(shù)字 IO 引腳之一輸入低電平。這里是 EXT 的永久 PULL-UP IO 引腳。板變得非常有用,因為 LED 將保持關(guān)閉狀態(tài),直到對其應(yīng)用開啟信號。對于 LED 的最大亮度(全功率打開),只需低電平(0 pwm 值-Arduino)輸入。要完全關(guān)閉 LED 高電平(1023 pwm 值-Arduino)輸入是必需的。
OLED 顯示器的圖標(biāo):
由于功耗低,該項目中使用的顯示模塊是雙色 0.96" OLED。顯示屏分為 128x16 黃色和 128x48 藍(lán)色兩半。黃色的上半部分用于顯示不同的圖標(biāo)和相關(guān)的 LED 功耗級別。 LED 開/關(guān)和成功的自動 RTC 配置通過其內(nèi)置 GPS 模塊也使用圖標(biāo)顯示。為 OLED 模塊構(gòu)建自定義圖標(biāo)的最簡單方法之一是使用在線 XBM 編輯器(在此處用于此項目)。
索尼 Spresense 代碼優(yōu)化問題:
當(dāng) u8g2 庫與 Arduino 或任何其他板一起使用時,代碼將毫無問題地編譯。但在 SONY 板上,它會給出 ram over flow 錯誤,因為沒有為編譯和鏈接過程設(shè)置“ gcc-arm-none-eabi ”的代碼優(yōu)化標(biāo)志。并使用 u8g2 庫為 RAM 提供流代碼。
憑借我有限的編譯器知識,我嘗試在 Sony Spresense 的platform.txt文件中設(shè)置代碼優(yōu)化標(biāo)志“-ffunction-sections,-fdata-sections”(位于 ...\AppData\Local\Arduino15\packages\SPRESENSE \hardware\spresense\1.1.3) 但生成的文件對我不起作用。所以我選擇修改字體文件。
為了克服這個 ram 溢出錯誤,我們需要修改u8g2 庫的“u8g2_fonts.c”和“u8x8_fonts.c” ,如上一節(jié)所示。
畫廊:
?
?
?
?
?
?
?
?
?
?
?
?
- 具有自動亮度調(diào)節(jié)功能的運動激活燈
- 壓電自適應(yīng)桁架結(jié)構(gòu)智能振動
- 基于橋式吊車系統(tǒng)的分組自適應(yīng)控制策略 22次下載
- LMS自適應(yīng)濾波器的MATLAB仿真和DSP實現(xiàn) 64次下載
- 神經(jīng)網(wǎng)絡(luò)自適應(yīng)控制及其發(fā)展應(yīng)用 11次下載
- PMLSM自適應(yīng)反推滑模控制 20次下載
- 環(huán)境光自適應(yīng)的LED驅(qū)動器設(shè)計介紹 2次下載
- 具有自適應(yīng)無功和諧波補償功能的并網(wǎng)逆變器設(shè)計_馬凱莉 0次下載
- 采用自適應(yīng)滯環(huán)控制的LED恒流驅(qū)動芯片_黃少卿 2次下載
- 自適應(yīng)控制原理 0次下載
- 自適應(yīng)PID控制算法及應(yīng)用 36次下載
- 單片機產(chǎn)生PWM波形控制LED燈亮度 68次下載
- 具有自適應(yīng)濾波功能的多路同步數(shù)采裝置
- 基于MATLAB的時變系統(tǒng)自適應(yīng)控制的仿真
- 魯棒自適應(yīng)控制綜述A survey of robust ad
- LED燈都能節(jié)能環(huán)保?假的節(jié)能燈如何分辨? 4852次閱讀
- 最全關(guān)于關(guān)燈LED微亮和節(jié)能燈閃爍的問題分析 8976次閱讀
- 自適應(yīng)控制的應(yīng)用實例 1.9w次閱讀
- 自適應(yīng)控制的優(yōu)缺點_自適應(yīng)控制存在的問題及發(fā)展 4.9w次閱讀
- 自適應(yīng)控制的分類_自適應(yīng)控制的主要類型 2.9w次閱讀
- 什么是自適應(yīng)控制_自適應(yīng)控制基本原理 5.5w次閱讀
- PWM控制LED燈的亮度程序(C 語言) 3.2w次閱讀
- 一款led節(jié)能燈簡易制作過程 2.9w次閱讀
- led和節(jié)能燈哪個好_節(jié)能燈和led燈的區(qū)別 2.8w次閱讀
- led燈珠型號亮度排名_led燈不亮了怎么修 3.5w次閱讀
- 無線傳感器網(wǎng)絡(luò)的自適應(yīng)交通燈控制系統(tǒng) 2887次閱讀
- 自適應(yīng)模糊神經(jīng)網(wǎng)絡(luò)的交通燈控制系統(tǒng)的設(shè)計 2984次閱讀
- 拆解一款LED節(jié)能燈來對比普通的節(jié)能燈的區(qū)別 2.6w次閱讀
- 帶有調(diào)光功能的大功率LED燈驅(qū)動電路設(shè)計方案 5649次閱讀
- LED節(jié)能燈自制指導(dǎo) 1.6w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多