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