嵌入式期末大作业——家用智能晾衣杆
嵌入式期末大作業——家用智能晾衣桿
目錄
- 嵌入式期末大作業——家用智能晾衣桿
- 前言
- 一、項目介紹
- 1.項目背景
- 2.項目構思
- 二、系統設計
- 1.系統概述
- 2.設計思路
- 3.設計草圖
- 三、硬件設計
- 1.硬件模塊介紹
- 2.硬件系統的Fritzing模型圖
- 四、軟件設計
- 1.晾衣桿自動感應
- 2.晾衣桿手動切換
- 3. 天氣預報
- 五、使用說明
- 1.實物圖展示
- 2.操作流程
- 六、系統總結
前言
昨天早上我的物聯網大作業也成功驗收了。所以從昨天開始,我大學四年與之相關的課程到此結束。
從數字邏輯到嵌入式再到物聯網,每段歷程都應該記錄一下吧=_=
所以今天騰空把上學期的期末大作業給做一個記錄
老樣子,實驗報告和代碼等放文末自取吧
廢話不多說,正文開始!
一、項目介紹
1.項目背景
??隨著我國社會經濟水平的發展,當前人們的生活逐漸追求個性化、自動化,對家用器件要求的檔次越來越高,生活家居人性化、智能化的要求使控制技術在智能家居電子產品中得到了廣泛應用,它不僅優化了人們的生活方式和居住環境,而且方便人們有效地安排時間和節約各種能源。伴隨著高智能家居的快速發展,晾衣工具的智能化發展明顯落后于其他家用器具智能化發展,現在已經引起社會的較大關注。
??當下固定且單一的晾衣桿,無法對天氣和其他外界因素做出反應。對于現在城市中的大多數人來說,每天的工作壓力巨大,白天的時間幾乎都不在家,當天氣變化時不能及時把衣服收回和曬出,對城市生活造成較大不便。
??設計背景:
2.項目構思
??設計開發一種能夠自動感應天氣變化和手動控制晾衣桿的智能晾衣桿。晾衣桿可以選擇自動模式和手動模式:
??自動模式下,晾衣桿可以感應天氣的變化來進行晾衣,雨天時,自動收回,晴天時,自動曬出;
??手動模式下,停止晾衣桿自動檢測,人們可以通過按鈕來控制衣桿。
二、系統設計
1.系統概述
??本項目旨在基于Arduino和樹莓派,模擬開發一個簡易的家用智能晾衣桿。在家用智能晾衣桿中,用戶可以根據自身的需要,切換手動和自動兩個模式。首先是自動模式下,在自動模式中,用戶無需對晾衣桿進行操作。晾衣桿可以根據對當前光照的強度進行檢測,來判斷外邊是否天氣晴朗。同時,晾衣桿將檢測外界的濕度,來檢測外界是否下雨。
??總結四大狀況如下:
??1.當外界光照亮,且沒有下雨時,晾衣桿將會自動曬出;
??2.當外界光照亮,但是下雨了,晾衣桿將會自動收回;
??3.當外界光照暗,但是沒下雨時,晾衣桿將會收回;
??4.當外界光照暗,同時下雨了,晾衣桿將會收回;
??在手動模式下,晾衣桿不再自動感應外界狀況。用戶可以通過按鈕來使晾衣桿曬出和收回。
??同時,在個人小屋中,增設了天氣預報功能,顯示屏將會把最近的天氣實時顯示出來,來方便用戶進行判斷。
??綜上,本系統的主要功能是:
??1.晾衣桿自動感應天氣
??2.晾衣桿手動控制
??3.天氣預報
2.設計思路
(1)家用智能晾衣桿軟硬件設計:
(2)家用智能晾衣桿流程圖:
3.設計草圖
??房屋模型屋頂設計圖
??房屋模型大體設計圖
??衣物設計圖
三、硬件設計
1.硬件模塊介紹
(1)SSD1306 OLED 顯示模塊:
端口連接:
功能:用于顯示天氣狀況和風力大小。
(2)光敏傳感器模塊:
端口連接:
功能:用于檢測房屋外光線強度,來決定晾衣桿的收回和曬出。
(3)雨滴傳感器模塊:
端口連接:
功能:用于檢測房屋外是否下雨,來決定晾衣桿的收回和曬出。
(4)按鈕:
連接:通過檢測輸出引腳的電壓來檢測線路連接和斷開。
功能:用于切換晾衣桿的工作模式和控制晾衣桿的曬出和收回。
(5)舵機:
端口連接:
功能:用于控制晾衣桿的轉動。
2.硬件系統的Fritzing模型圖
四、軟件設計
??軟件設計對應系統主要的3個功能進行設計。分別是:晾衣桿自動感應,晾衣桿手動切換和天氣預報。
1.晾衣桿自動感應
利用光敏傳感器和雨滴傳感器來檢測外界光照和濕度。當外界光照亮度達標,并且沒有下雨時,程序會控制舵機旋轉,從而使晾衣桿曬出。
代碼實現:
設置變量L表示檢測亮度,變量R表示檢測雨滴。當外界亮度超過160且雨滴值為0時,模擬了晴天下天黑的情況,晾衣桿自動收衣服;
L和rainfall接收亮度和降水量信息。
#include <Servo.h> Servo yj;Servo是一個舵機驅動庫,可以創建一個舵機對象。
yj.attach(7); //舵機7號引腳attach(pin)方法可以綁定舵機和引腳。
if(L>160 || rainfall <= 40){yj.write(15); //天黑收衣服(舵機轉到0度)}else{yj.write(105); //天亮曬衣服(舵機轉到90度)}判斷亮度和降水量后,write(tangle)方法可以將舵機旋轉到需要的角度。
2.晾衣桿手動切換
利用按鈕來實現退出和進入循環,從而實現自動和手動的切換。
代碼實現:
tsLastReport變量實現每一秒中對心率和血氧進行一次采樣,使用到了MAX30100Lib庫中PulseOximeter類實例對象的getHeartRate和getSpo2方法分別獲取心率和血氧數據。
當強制收回按鈕按下后,自動收回,并進入循環。
取消收回按鈕后,根據環境自動調節舵機。
3. 天氣預報
Python:
??requests:
此處的respsonse=requests.get(url)方法,可以從url的目標網址得到一個響應,用result=response.json()的方法可以將json格式的數據轉換成字典,最后用daily提取出需要的信息,url的接口可以參看心知天氣的API。
??serial:
serial是python的串口通訊庫。
其中ser = serial.Serial(‘/dev/ttyACM0’,9600)查看樹莓派接口得知串口為‘/dev/ttyACM0’,并設置傳輸速率為9600。ser.write(string),該方法可以向串口傳遞字符串數據,但接收時是單字節的,需要在arduino循環相加。
??Arduino:
<Adafruit_SSD1306.h>:
該庫依賴于<SPI.h><Wire.h><Adafruit_GFX.h>,將他們導入后,設置屏幕的主從關系,片選信號和數據,時鐘信號等引腳后,就設置好屏幕的驅動。
初始化屏幕
使用全局變量weather數組提取出字符串里的天氣信息數據格式為
[a:b :c:d:e:f:],其中a、b和d、e為今天和明天的日夜間天氣,c、f為風速等級。
天氣對應的接口對應心知天氣的天氣圖,可以下載后:調整尺寸->調整透明度->用畫圖工具保存為單色位圖->提取出點陣信息(如我用的zimoV2.2軟件),將點陣信息,存到數組里,根據weather的信息,調用display.drawBitmap()方法就能打印出對應的天氣了。
五、使用說明
1.實物圖展示
(1)模型正面圖
(2)模型背面圖
(3)模型內部圖
2.操作流程
(1)天氣預報
??如圖所示,天氣預報信息將會顯示在OLED屏上。當樹莓派啟動時,將會顯示開機界面。
此時樹莓派開始請求天氣數據,顯示屏顯示“Please Wait”
當樹莓派成功請求到數據后,將傳給Arduino,并實時顯示和更新數據。顯示的數據包括今天和明天中,日間和夜間的天氣狀況。
(2)自動感應
??在自動感應功能下,晾衣桿將會根據天氣來決定曬出和收回。
??當外界光線狀況好,且沒有下雨時,晾衣桿將曬出:
當外界光線狀況差,晾衣桿將收回:
當外界光線狀況好,但是降雨量達到標準后,晾衣桿將收回:
當外界光線好,同時降雨量沒有達到標準時,晾衣桿暫時不收回:
(3)手動切換
??當點擊切換按鈕后,程序將進入到手動控制模式中,同時將晾衣桿收回,此時晾衣桿將不再檢測天氣狀況:
當點擊退出按鈕后,程序將返回自動感應模式中,此時晾衣桿將繼續檢測天氣狀況。
六、系統總結
系統優點:
??完全實現了晾衣桿自動和手動兩種模式的運行,實現了晾衣桿智能化,并且代碼上優化了不同模塊之間的銜接,使得模型響應速度快,準確度高。
系統缺點:
??系對天氣的檢測量種類少,在對天氣感應的靈敏度和準確度上有待提高。在arduino上獲得的天氣數據和舵機的轉動不能統一,即不能有效利用系統內的信息。
改進想法:
??加入更多的器件來提高模型對天氣的預計準確度,并且設計吹干和伸縮的功能,來提高用戶體驗感。
總結
以上是生活随笔為你收集整理的嵌入式期末大作业——家用智能晾衣杆的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Poly2Tri介绍
- 下一篇: 串起珍珠的链条——记腾讯SOSO团队