原帖。感謝
https://www.arduino.cn/thread-48849-1-1.html
智能花盆
項目簡介:
1、遠程澆水2、遠程補光
3、遠程賞花
4、平臺實時采集環境數據
5、語音自我介紹
6、APP實時觀察狀況
??以下為更新項目內容
摘要
? ?? ?隨著社會的進步,人民生活水平的提高,越來越多的人喜歡養花來裝飾室內、陶冶情操,另外也是由于環境污染不得不養植物凈化空氣。但經常由于工作繁忙或在外出差而忘記照料植物。或是對植物的習性不了解養不活植物。不管因為什么原因,都是因為養花者與盆栽里的植物缺少“交流”。而隨著科技的發展,“智能”一詞進入了我們的視野,智能盆栽拉近了人與盆栽的距離。
從當前社會的需求出發設計了智能花盆系統。該設備主要由信息傳感模塊、顯示模塊、語音模塊、遠程視頻監控、無線通信模塊、儲存模塊組成。通過感知設備與語音交互實現互動式養花,通過云服務進行遠程查看花生長、澆水、光照,為用戶解決了上班忙無時間照料植物、出差擔心家中植物的問題,此作品成本低,市場同類產品少、有極大的市場競爭力和很好的經濟價值。
? ?? ?智能花盆系統的設計在于創新理念與設計實踐的結合,一方面,解決不會養花的問題,養花系統利用溫濕度傳感器、光照傳感器、土壤濕度傳感器等獲取植物土壤的水份、光照情況經過MCU的處理實現自動澆水、自動光照和遠程賞花。另一方面,生活的快節奏化,讓我們沒時間養花,但又希望享受綠意,養花系統通過我們日常不離手的手機將虛擬與現實結合。通過WiFi將植物信息發送到手機APP上,用戶不僅手指一點就可隨時隨地了解植物最新信息。而且在現實生活中感受到植物帶給我們的好處,一份綠色,一份健康。同時,你也可以打開手機界面的花友圈,找一群志同道合的花友們討論養花之道,系統也會實時推送最新養花技巧。
? ?? ???隨著現代化科技的發展,該項目的前景廣闊,養花系統還可以應用到市政園林上,對城市環境進行保護。
功能特色
自助養花系統的技術屬于自主研發,主要由上位機、下位機和云服務終端組成

? ?? ???本系統硬件部分采用arduino單片機為處理器,控制各模塊之間的銜接。通過感知層的數據采集,傳入主控芯片進行處理后;網絡層利用WIFI無線通信,將數據傳輸到云平臺;在應用層的智能終端設備上顯示所有數據。各個傳感器來采集溫濕度等相關數據,處理器會將花的數據記錄并存儲,并通過通信模塊(WiFi傳感單元)將數據上傳到云平臺分析出植物所差的養分,平臺上就能操作電子閥泵控來自動澆水、添加營養液。這樣無論你在何處,都不用擔心自己的花沒澆水,隨時隨地、想看就看、一鍵操作。
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???作品展示

所需硬件:遠程監控視頻傳感器,arduino語音模塊,IIC1602,光照傳感器GY-30,WiFi模塊8266,燈泡,濕度傳感器,DHT11溫濕度模塊,電源模塊,其他耗材(水管,噴頭,花盆,洞洞板,導線......)等。
? ? 硬件組成
? ?“智能花盆系統”。溫度傳感器、濕度傳感器、光強傳感器組成傳感模塊,這些模塊一起作輸入;輸出由無線傳感模塊、語音模塊、顯示模塊、自動控制模塊組成。首先是輸入端采集信號給單片機,單片機在對采集到的數據進行分析處理;然后在顯示模塊上進行數據顯示,語音模塊主要是用來播報天氣預報,溫度、濕度、光照等信息;再通過WIFI模塊將數據傳輸到云服務,那么在終端上就能查看數據,了解到植物的生長情況;最后在終端設備進行所需操作,如:補光、澆水、拍照等。其整個硬件結構如圖所示:

? ???硬件部分
? ???首先是通過對控制模塊、傳感器模塊的檢測給單片機輸入信號,單片機在對采集到的數據進行分析處理,通過藍牙/WIFI模塊將數據傳輸到后臺數據庫,可以在終端上查看數據,了解到植物的生長情況;然后輸出相應的控制信號對語音模塊控制,語音模塊主要是用來播報天氣預報,溫度、濕度、光照等。
由電源、光照傳感器、溫度傳感器、濕度傳感器、水泵電子閥、攝像頭、WIFI模塊七大部分為單片機(CPU)服務,共同構成智慧花盆的硬件,來實現遠程訪問,自動控制澆水、拍照,并將數據傳輸到后臺,通過終端查看。硬件組成框圖如下圖所示:

? ???花盆整個主控部分

? ???語音控制部分

? ?? ?顯示部分

? ?? ?遠程監控部分

土壤傳感器部分

光照傳感器部分

補光部分

? ?? ? 軟件架構
軟件系統主要包括主程序、Web程序、中斷控制程序。在云服務系統中,會將設備域(智能花盆)檢測數據和控制參數上傳到平臺域,平臺會進行數據分析及處理、事件告警,之后在應用層的終端設備查看養花信息,也能進行相應的操作。云服務結構如圖所示

? ?作品成本
該作品成本低,只要是采購一些硬件設備,其他都是團隊成員一手設計。采購清單如下表:
序號 名稱單價(元)數量總價(元)1led小射燈184722繼電器3.3516.53光照傳感器6.2212.44土壤傳感器2.36511.85WIFI模塊12.3336.96語音模塊541547水泵271278花盆15.8115.89溫濕度傳感器模塊4.314.310漫反射紅外模塊15.45230.911arduino開發板2511251 12 視頻傳感器1201120
傳統花卉產業與互聯網融合是一個良好的機遇和更是一個花卉產業轉型升級的好開頭,實踐過程中雖然會有專業、技術、經驗等方面的不足,但經過不斷的學習和團隊間的互助將養花系統一步步完善。“傳統植物花卉產業”+“技術”+“互聯網”之間的結合,在未來發展空間非常大,必將成為未來市場、社會的大勢所趨,也將代替傳統花卉產業中的不足,提升我國經濟和國民經濟。
? ?? ?展望
智能養花系統,將來發展方向如下:
1.小型化
體積小型化,帶來用戶方便快捷。
2.便宜化
降低成本,提高精度,增加用戶數量。
3.智能化
增加更多的高級功能,如:APP、健全語音庫。
4.全面化
推廣用戶:花店、花卉市場、種植基地。
5.專用化
設置專用的系統,提高精度,保護珍稀滅絕植物(如:金花葵,華山新麥草),實時監測它的生長。
~~~
軟件代碼部分
軟件部分分為聯網部分,數據上傳部分,接收命令控制和數據讀取部分
\[kenrobot\_code\]8266AT指令部分
while (!doCmdOk("AT", "OK"));
??digitalWrite(8, HIGH);? ?// 使Led亮
??while (!doCmdOk("AT+CWMODE=3", "OK"));? ?? ?? ?? ?//工作模式
??while (!doCmdOk("AT+CWJAP=\\"MyI9023\\",\\"wds109609\\"", "OK"));
??while (!doCmdOk("AT+CIPSTART=\\"TCP\\",\\"183.230.40.39\\",876", "CONNECT"));
??while (!doCmdOk("AT+CIPMODE=1", "OK"));? ?? ?? ???//透傳模式
??while (!doCmdOk("AT+CIPSEND", ">"));? ?? ?? ?? ???//開始發送
/\* EDP 連接 \*/
if (!edp\_connect)
??{
? ? while (WIFI\_UART.available()) WIFI\_UART.read(); //清空串口接收緩存
? ? packetSend(packetConnect(ID, KEY));? ?? ?? ?? ? //發送EPD連接包
? ? while (!WIFI\_UART.available());? ?? ?? ?? ?? ???//等待EDP連接應答
? ? if ((tmp = WIFI\_UART.readBytes(rcv\_pkt.data, sizeof(rcv\_pkt.data))) > 0 )
? ? {
? ?? ?rcvDebug(rcv\_pkt.data, tmp);
? ?? ?if (rcv\_pkt.data\[0\] == 0x20 && rcv\_pkt.data\[2\] == 0x00 && rcv\_pkt.data\[3\] == 0x00)
? ?? ?{
? ?? ???edp\_connect = 1;
? ?? ???DBG\_UART.println("EDP connected.");
? ?? ?}
? ?? ?else
? ?? ???DBG\_UART.println("EDP connect error.");
? ? }
? ? packetClear(&rcv\_pkt);
??}
數據上傳部分
//光照
??liggger = readGZ(lig);
??if (edp\_connect && liggger)
??{
? ? DBG\_UART.print("guang: ");
? ? DBG\_UART.println(lig);
? ? packetSend(packetDataSaveTrans(PUSH\_ID, "HIG", lig));??//發送數據存儲包
? ? digitalWrite(8, HIGH);
? ? delay(100);
? ? digitalWrite(8, LOW);
??}
接收命令部分
while (WIFI\_UART.available())
??{
? ? readEdpPkt(&rcv\_pkt);
? ? if (isEdpPkt(&rcv\_pkt))
? ? {
? ?? ?pkt\_type = rcv\_pkt.data\[0\];
? ?? ?switch (pkt\_type)
? ?? ?{
? ?? ???case CMDREQ:
? ?? ?? ? char edp\_command\[50\];
? ?? ?? ? char edp\_cmd\_id\[40\];
? ?? ?? ? long id\_len, cmd\_len, rm\_len;
? ?? ?? ? char datastr\[20\];
? ?? ?? ? char val\[10\];
? ?? ?? ? memset(edp\_command, 0, sizeof(edp\_command));
? ?? ?? ? memset(edp\_cmd\_id, 0, sizeof(edp\_cmd\_id));
? ?? ?? ? edpCommandReqParse(&rcv\_pkt, edp\_cmd\_id, edp\_command, &rm\_len, &id\_len, &cmd\_len);
? ?? ?? ? DBG\_UART.print("rm\_len: ");
? ?? ?? ? DBG\_UART.println(rm\_len, DEC);
? ?? ?? ? delay(10);
? ?? ?? ? DBG\_UART.print("id\_len: ");
? ?? ?? ? DBG\_UART.println(id\_len, DEC);
? ?? ?? ? delay(10);
? ?? ?? ? DBG\_UART.print("cmd\_len: ");
? ?? ?? ? DBG\_UART.println(cmd\_len, DEC);
? ?? ?? ? delay(10);
? ?? ?? ? DBG\_UART.print("id: ");
? ?? ?? ? DBG\_UART.println(edp\_cmd\_id);
? ?? ?? ? delay(10);
? ?? ?? ? DBG\_UART.print("cmd: ");
? ?? ?? ? DBG\_UART.println(edp\_command);
? ?? ?? ? //數據處理與應用中EDP命令內容對應
? ?? ?? ? //本例中格式為??shuju:{V}
? ?? ?? ? sscanf(edp\_command, "%\[^:\]:%s", datastr, val);
? ?? ?? ? //光照開關
? ?? ?? ? if (atoi(val) == 1)
? ?? ?? ?? ?digitalWrite(6, HIGH);
? ?? ?? ? if (atoi(val) == 11)
? ?? ?? ?? ?digitalWrite(6, LOW);
? ?? ?? ? //澆水系統
? ?? ?? ? if (atoi(val) == 2)
? ?? ?? ?? ?digitalWrite(7, HIGH);
? ?? ?? ? if (atoi(val) == 22)
? ?? ?? ?? ?digitalWrite(7, LOW);
? ?? ?? ? packetSend(packetDataSaveTrans(NULL, datastr, val)); //將新數據值上傳至數據流
? ?? ?? ? break;
? ?? ???default:
? ?? ?? ? DBG\_UART.print("unknown type: ");
? ?? ?? ? DBG\_UART.println(pkt\_type, HEX);
? ?? ?? ? break;
? ?? ?}
? ? }
傳感器數據讀取
bool temperature(char \*hum)
{
??int i, sun\_val, val = 0;
??for (i = 0; i <= 10; i++)
??{
? ? sun\_val += analogRead(A2);
??}
??val = map(sun\_val / 10, 0, 1023, 0, 99);
??delay(1000);
??lcd.setCursor(0, 0);? ?? ?? ?? ?? ?//設置顯示指針
??lcd.print("SH:");? ???//輸出字符到LCD1602上
??lcd.print(val);
??lcd.setCursor(5, 0);
??lcd.print("rh");
??delay(100);
??sprintf(hum, "%d", val);
}\[/kenrobot\_code\]
~~~
? ?最后,作品的全部質料我將全部上傳,視頻質料一并上傳!