不是吧!你還在手動拉窗簾?
“寶兒,去拉下窗簾吧~”
“我忙著呢,你去?!?/p>
“你離那邊近,你去!”
“石頭剪刀布,誰去!”
家中窗簾太多,費事費力;平時家中老人腿腳不便,開窗簾困難;想關閉窗簾,卻因忙碌騰不開手; 家中有多個窗簾,費時費力!
“攻城獅”小王躺在床上深思:
如果安裝電動窗簾,需要結合戶型、門窗大小預留安裝空間和電源接口,往往需要專業(yè)人員上門丈量確認是否符合改裝要求,大大增加了安裝成本。有沒有不用拆?改?換?就能隨心掌控家中窗簾的“神器”!
靈光一現(xiàn),目前市場上出現(xiàn)的小型的窗簾機器人,能讓普通窗簾秒變智能窗簾。何不自己動手 DIY 一個~
實現(xiàn)功能點
戳我,即可查看完整開發(fā)資料!
硬件方案介紹
利用涂鴉智能低功耗嵌入式 Bluetooth LE 模組作為控制單元和無線連接單元。通過照度傳感器檢測當前環(huán)境的光照強度,加速度傳感器識別手動拽拉窗簾的狀態(tài)以及電機帶動窗簾運動來實現(xiàn)窗簾智能化開啟和關閉。
1. 核心控制單元
涂鴉智能低功耗嵌入式 Bluetooth 模組基于 SoC 開發(fā),能夠實現(xiàn) Bluetooth LE 直連,電機控制和傳感器數(shù)據(jù)采集。
2.電源管理單元選用 4000mHA 的可充電鋰電池(3.7V)作為主供電源,在提供穩(wěn)定運行保障的同時,無需另外再布電線,且當電量不足時,還可以拆卸充電。
3.照度傳感器可感應光照強度的器件主要有光敏電阻、光敏二極管和照度傳感器芯片。光敏電阻和光敏二極管采集的是模擬量。光照傳感器選擇 TI 的 OPT3004 傳感器芯片,可通過數(shù)字接口直接輸出當前的光照強度值,適合在 App端實時顯示光照強度值。
4.加速度傳感器ST 的 LIS2DW12 加速度傳感器為 3 軸加速度傳感器,能夠比較在精準識別完成拉窗簾動作的水平方向上的力。
5.電機驅動窗簾機器人的動力原理是通過轉輪和窗簾導軌的摩擦力帶電機器人和窗簾運動,需要比較大的扭矩而對運動速度要求沒有很高。利用高速低扭矩通過齒輪減速增扭以后帶動發(fā)動機,不僅能夠產(chǎn)生很大的扭矩,而且功耗較小,符合窗簾機器人的動力需求。
窗簾機器人原理圖:
窗簾機器人PCB圖:
戳我,即可查看完整開發(fā)資料。
軟件實現(xiàn)方案
窗簾機器人源代碼已開源到 GitHub:
注:GitHub 具體地址通過關注“涂鴉開發(fā)者”,回復“窗簾”,即可獲取哦~
下面一一對各功能的實現(xiàn)原理作簡單說明:
普通控制和百分比控制都需要在已經(jīng)知道窗簾長度的情況下進行。由于電機的轉速是一定的,在測量窗簾長度的時候其實是測試從 0% 到 100% 需要多少時間,然后根據(jù)電機當前所處位置和要到達的位置來計算需要運行的時間,以此來實現(xiàn)控制窗簾機器人移動到指定位置。
實現(xiàn)方法:百分比控制在接收到app下發(fā)的DP點后先調用void curtain_percent_control(unsigned char current_position, unsigned char target_position) 函數(shù)使窗簾機器人向對應的方向運行,將需要運行的時間存入全局變量中,供停止任務函數(shù)使用。
void curtain_percent_control_stop_task(void)函數(shù)需要被一直執(zhí)行,當檢測到運行時間已達到的時候,停止電機運行,將當前位置存入到FLASH中,上報當前電機位置。
百分比控制部分代碼示例:
```c voidcurtainpercentcontrol(unsignedchar current_position, unsignedchar targetposition){ unsignedlong totaltime;
自動測量窗簾長度實際上是測量窗簾桿子的長度,那么如何判斷窗簾機器人是否到達終點是兩端是測量的關鍵??刂齐姍C運動的功能實現(xiàn)是通過獲取測量得到的總時長來實現(xiàn)的。
判斷窗簾機器人到達終點,在該硬件上有兩種方法來判斷:
一是通過測量電機驅動芯片中的 MOCUR 引腳,當電機堵轉的時 MOCUR 引腳將會比正常運行時的電壓高,通過判斷該引腳電壓是否發(fā)生變化可以知道電機是否發(fā)生堵轉,從而確認是否到達終點。
二是通過三軸加速度傳感器 lis2dw12 來判斷是否到達終點。根據(jù) lis2dw12 在硬件上的放置位置來看,判斷窗簾機器人的運行狀態(tài)主要依靠三軸加速度傳感器中的x軸來判斷。
下圖為窗簾機器人在運行過程中三軸加速度傳感器 x 軸的數(shù)據(jù),靜止狀態(tài)基本無波動,啟動后到到達終點前上下波動較大,在到達終點撞擊的那一刻x軸數(shù)據(jù)明顯的一個凸起的上升,到達終點后電機未停止運行可以看到x軸的數(shù)據(jù)比靜止時平均要高,且數(shù)據(jù)上下浮動比運行過程中要較小。
通過上面的兩種方式可以看到,使用電壓比較的方式來判斷是否到達終點相較于使用 lis2dw12 來判斷來看是較為簡單。但使用三軸加速度計 lis2dw12 可以清晰的知道當前電機處于何種運行狀態(tài)。
通過觀察波形可以知道,當你向某一方向拉窗簾時,總體來看雖呈波動狀態(tài),但最開始時的值與拉取的方向有關,所以該部分功能的實現(xiàn)是通過判斷窗簾機器人被拉動后最開始的一部分數(shù)值來確定將要跑動的方向。
示例代碼:
1)```c short xdatabuf[100] = {0}; unsignedint cleanxbufcount = 0; unsignedchar xdata_index = 0;
2)voidautopowertask(void){ short xaxisdata = 0; unsignedchar i = 0; unsignedchar opencount = 0, closecount = 0;
檢測光照強度的傳感器使用的是 opt3004,通過 IIC 協(xié)議,通過讀取 opt3004 的 result 寄存器獲取當前的光照值。
示例代碼:
1、```c
2、define I2CCLKSPEED 200000
3、short lsbsizetab[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048};
4、unsignedcharopt3004init(void){ unsignedchar deviceiddatabuf[2] = {0}; unsignedchar manufactureriddata_buf[2] = {0};
App 面板使用可以涂鴉 IoT 平臺提供的公版單開簾面板。
讓家中普通窗簾秒變智慧窗簾,你可遠程控制開關,還能根據(jù)光照強度自動開啟關閉,為家人送去便捷生活~其實并不難!各位發(fā)燒友們動起來啦~
- END -
一起秒變智能窗簾,戳我!
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。