ShIoTiny:小型自動化、物聯網或“假期前六個月”

ShIoTiny:小型自動化、物聯網或“假期前六個月”

要點或本文的內容

Т由於人們的興趣不同,而且時間又少,那麼簡單介紹一下文章的內容。

С本文概述了具有最低價格和功能的控制器項目 視覺化程式設計 透過網頁瀏覽器。

П由於這是一篇旨在展示「可以從廉價控制器中榨取什麼」的評論文章,因此您不應該在其中尋找深刻的事實和詳細的演算法。

Р考慮建構基於WiFI晶片的控制器的動機、想法和結果 ESP8266.

慎重

我本來不想寫這篇文章的。 我根本不喜歡寫文章。 你必須考慮這個問題,而且要考慮很多。 想想如何以這樣的方式寫作,才能將誤解你的人減少到最低限度。 想想如何不走極端。 還有很多事情要思考。
但我的朋友們說,既然我在物聯網和其他小型自動化領域的努力對他們來說很有趣,那麼他們也可能對其他人和公眾感興趣。 那麼,對此感興趣的公眾聚集在哪裡呢? 當然是在集線器上。 我在這裡。 老讀者和新作家。

對於讀者可能不喜歡的錯誤、不準確、拼字錯誤、過時的簡報風格等,我不承擔任何責任。 閱讀風險自負。

我還立即警告您,我不會解釋什麼是 MQTT、WiFi 和 UDP 群播以及其他與主題不直接相關的內容。 文章末尾有一些連結。

一個想法或一些歌詞的誕生

Ж生活並不是一件容易的事,機會陛下在其中扮演著重要的角色。 因此,我想分享隨機事件如何與天生的懶惰相結合,如何導致基於 ESP8266 的控制器的相當有趣的開發。

Н這一切都是按慣例開始的:我想建立一個系統來控制該國花園床和灌木叢的供水和澆水。

Н哦,因為我只能在假期裡全力投入管道、水箱和水龍頭的工作,距離假期還有六個多月的時間——一切都僅限於在工作中與同事、朋友和同志在非正式的場合進行討論。

Т「小型自動化」這個主題,或者正如他們通常在「這些男生駭客時髦人士」中所說的那樣——物聯網——物聯網——長期以來一直讓我感興趣。 早在網路本身被廣泛使用之前。

Е當我還是個孩子的時候,我就希望事物能夠「自己」做一些事情。 我希望能夠以某種方式從遠處控制它們。 但在當時(上世紀80年代、90年代初),這是相當困難的。 世界上任何地方都沒有廣泛使用互聯網,就像任何地方都沒有手機、平板電腦、甚至液晶顯示器或 USB 隨身碟一樣。 因此,我們不得不將自己限制在「拍手電筒燈開關」和簡單的無線電遙控器上。 但對於那個時代、那個年代來說,這還不錯,也很有趣。

Н哦,這些都是過去的事情了。 現在是15世紀了。 每個人的口袋裡都有一部智慧型手機,幾乎在任何需要和不需要的地方都可以使用互聯網,而現在可用的電子元件的基礎是 XNUMX 年前地球上的普通居民做夢也想不到的。 。

П因此,在決定為別墅做一個水務控制器後,我把注意力轉向了ESP8266晶片。
首先,這款晶片價格便宜。 如果一個控制器不夠,您可以安裝兩個、三個或五個。 其次,船上有WiFi。 也就是說,您可以透過網路觀看正在發生的事情,甚至可以透過任何智慧型手機控制整個過程。 當然,您需要一個可以訪問互聯網的接入點,但這不是問題。 不管怎樣,它幾乎無所不在,或即將無所不在,包括在我的別墅裡。

П當我沉浸在ESP8266 的奇妙項目世界中時,我驚訝地發現,儘管該晶片具有令人敬畏的功能,但除極少數例外之外,其上的項目分為兩種類型:這些要么是極其原始的程序,例如「click透過智慧型手機進行開關並透過網路查看感測器溫度的狀態」; 或者好的、可靠的 JavaScript 或 Lua 解釋器,但不幸的是,它們消耗了幾乎所有的內存,並且不允許你做任何嚴肅的事情。

П我的第一個想法就像煎餅一樣簡單 - 編寫一個簡單的程式來根據感測器的狀態控制泵,僅此而已。 但是,就像經驗豐富的滾筒在實施不同系統的耙子上跳躍一樣,我明白我絕對無法提前預見在構建過程中我想要或需要拉直的算法的所有彎曲。供水和灌溉系統。

Д在別墅、黑暗的穀倉裡處理程序不太方便。 但你必須這樣做。
出路何在? 當然,我首先想到的是讓演算法可自訂。 我的一位同事給了很多建議——設定什麼以及如何設定。 就這樣,他把我的第一個想法扼殺在萌芽狀態。 感謝他。 如果不是他在我眼前透露了我需要配置的參數數量,我可能不會拒絕這個選項:製作一個演算法設定頁面。

Н設定參數的數量,甚至是相互影響的設定參數的數量令人恐懼,這讓我清醒了過來。 我再次意識到你無法預見一切......

С我就預約一次:我很懶。 非常懶! 坦白說我懶得每次都重寫程式。 因此,任務出現了 - 如何快速、輕鬆地設定演算法,最好無需編程? 而且這個演算法會相當複雜; 會有很多參數; 將針對我的情況,不適合其他人。 我真的想讓這個設備或多或少變得通用...

П由於距離放假還有大約六個月的時間,還有各種抽管工作,我決定慢慢來,想一想,怎樣才能既方便又美觀呢? 不程式設計怎麼程式? 配置時沒有萬億個可以更改的參數怎麼辦?

К像往常一樣,一切都已經在我們面前發明了:我意識到我想以動作方塊的形式繪製一個演算法,並將它們與顯示資料從何處飛向何處的通訊線連接起來。 好吧,透過指向方塊,我希望能夠配置它的一些單獨參數。

И透過在正方形中繪製演算法來定義演算法的想法並不新鮮。 此類系統早在 80 年代就已存在; 現在有一個超級流行的 NodeRed 系統,對於已經加入小型自動化/物聯網世界的人來說是眾所周知的。

Н哦,問題是:這樣的系統是為“大型 PC”設計的。 最糟的情況是在 Raspberry PI 上。 但在 ESP8266 上就不行了,它只有幾十 KB RAM,而且沒有作業系統!

К怎麼辦? 只有兩個出路:在「大型 PC」或筆記型電腦上編寫和繪製程序,然後以某種形式將其傳輸到 ESP8266,或嘗試將不可能的事情「推入」ESP8266 控制器本身。

П因此,我的最大程式是這樣的:要對你的控制器進行編程,除了帶有WEB瀏覽器的筆記型電腦之外,你不需要任何東西! 也就是說,一台帶有 WEB 瀏覽器和我的控制器的筆記型電腦 - 這應該足以完全配置、編寫和繪製控製程式。

И事實證明,這是完全有可能實現的!
我不會向您介紹專案開發的所有細節。 我只會說,根據我在開發過程中想到的和舌頭上的文字,有可能編寫一個單獨的“電子業工人使用的淫穢語言詞典」 但一切都結束了。 更準確地說,不是一切,而是第一個也是最困難的階段,當你不清楚你的生活想法是否會在那裡,或者只是一匹灰色騸馬在月夜的譫妄。

П我將分享結果和名字 “ShIoTiny 控制器”.

所以發生了什麼事?

硬件部分 ShIoTiny 控制器標準且簡單:三個輸入為「幹接點」型感測器(按鈕、乾簧管,它們也是水箱中的水位感測器)設計,一個 ADC 輸入,一個用於連接設備的溫濕度感測器的輸入。 DHT22 型或類似類型。 最後,以開關繼電器形式提供 220 伏特、1 安培的三個輸出。 繼電器顯示為 10A,但我是一個現實主義者,不允許 10A 通過電路板。 為了控制泵浦啟動器,1Amp 就足夠了。 所有這些均由電壓為 5 至 9 伏特的電源供電。

Ч老實說,我就這樣添加了溫度感測器,但在 ADC 上我希望測量供電網路的電壓。 誰知道?

Р當然,除了連接DHT22的輸入之外,所有輸入都受到電阻和二極體的保護:我不想燒毀ESP8266,二極體和電阻只花費幾戈比。

照片 成品可以看文章開頭。 我訂購了幾塊這樣的板子 - 如果我燒毀它們或必須切割軌道腿怎麼辦?
但幸運的是,我不用這麼做。

Ф當然,這個產品是美麗而宏偉的。 但為了方便起見,以下是感測器和執行器的模擬器連接到板的示意圖。

ShIoTiny:小型自動化、物聯網或“假期前六個月”

В輸入 1..3 按鈕取代了液位感測器,連接到 Relay1..3 繼電器的 LED 取代了啟動器。 嗯,ADC 上有一個可變電阻來類比輸入電壓。
К當繼電器關閉時,紅色 LED 亮起。 當它打開時,它是綠色的。 於是我就在桌上調試了一下。

К除此之外,板子左側還有一個電源連接器,右側有兩個服務按鈕:Reset 和 AP。 好吧,有一個 DIP 開關可以將設備切換到編程模式。 另提供透過 USB-UART 轉接器的 ESP8266 編程連接器。

關於按鈕的一些解釋。 什麼是 重設 ——所以很清楚了。 這是按鈕 AP 需要翻譯 什洛蒂尼 開啟接入點模式(配置模式或Config Mode)。 為什麼這是必要的? 舉例來說,您搞亂了網路設定並想要更改它們。 按住 AP 按鈕幾秒鐘(直到漂亮的藍色 LED 亮起)。 然後,拿起您的智慧型手機或筆記型電腦,打開 WiFi,然後看到一個名為 esp_8266_xxxx 的開放存取點並連接到它。 然後轉到智慧型手機或筆記型電腦的瀏覽器並在網址列中輸入:192.168.4.1。 如果一切正常,您將進入 ShIoTiny 控制器頁面並可以再次配置。

К正如我們所見,硬體並不復雜。 因此o 軟體部分.

В我將在稍後描述實現的所有怪癖。 有一天。 今天,我將只「從外部」考慮該軟體,即從用戶的角度 - 我自己或冒著使用我的手藝的風險的其他人(也有這樣的特技演員)。

С 從使用者的角度來看,該設備是可透過 WiFi 存取的 HTTP 伺服器。 所有設定、程式設計等均使用WEB瀏覽器完成。

И所以,我們進入了控制器頁面。 我們看到了什麼? 我們看到「控制和狀態」選項卡,它顯示了所用設備的當前狀態:輸入、輸出、ADC、DHT22。 此外,也會顯示存取點的連線參數(如果我們在 WiFi 站模式下運作); 接入點參數(如果我們在 WiFi 接入點模式下工作)或兩者。 另外,如果使用 MQTT 協議,也會顯示與 MQTT 代理程式的連接參數。

ShIoTiny:小型自動化、物聯網或“假期前六個月”

К正如我們所看到的,沒有什麼特別或有趣的。 連點擊都沒有! 雖然……多了兩個標籤! 設定網路設定 網路相關 和程式電路編輯器 繪圖.

К所以你猜對了, 網路相關 - 這是網路設置,但不僅僅是網路設置。 它有幾個更有趣的參數。 我們點擊選項卡 網路相關 我們將看到大約如圖所示的內容。
Н設定每種模式的存取點名稱和密碼 - WiFi 站和 WiFi 接入點。 一切似乎都很清楚了。 以及按鈕的用途 “掃描 WiFi” 相當透明。
А 這是下拉列表 “ShIoTiny模式” 需要澄清。 事實上,我無法決定哪種模式對我來說更方便工作。 因此他提供了該設備的 5 種操作模式。

ShIoTiny:小型自動化、物聯網或“假期前六個月”

П讓我們簡單列出這些操作模式。

配置模式 — 配置模式。 這是一個開放的存取點模式,固定位址為 192.168.4.1,名稱為 esp_8266_xxxx。

車站模式 — 連接到您的存取點的 WiFi 站的模式。

AP模式 — 封閉式存取點模式。 您自己設定名稱和密碼。

AP+站模式 - 這是同時啟動AP模式+Station模式。

單模 — 完全無需網路連線即可運作。 一個孤獨的控制者承擔著他沉重的份額......

В 任何模式,除了 “配置模式”,您可以透過勾選該方塊來封鎖網頁 “在網站模式下鎖定網路”。 這是出於安全原因。

НMQTT 設定很明顯:伺服器、連接埠、密碼、開啟連線或透過 SSL。 這裡我就不詳細說了。

К除此之外,ShIoTiny 控制器還可以透過多點傳播發送和接收特殊格式的資料包。 它的設定也很明顯:群組位址和連接埠。
當然,如果您描述了設定的所有細微差別,您將獲得一篇單獨的文章,但這不是我計劃的一部分。

И是的,有一個選項卡 網路相關 一切或多或少都清楚了。 讓我們繼續討論控制器的主要功能 - 程式電路編輯器 繪圖.

Т透過點擊選項卡 繪圖,我們會看到類似下面的內容。 當然,如果設備沒有載入電路,則電路欄位將為空。

ShIoTiny:小型自動化、物聯網或“假期前六個月”

С左 - 元素或節點(節點)的調色板。
С權限 - 模式欄位或簡稱「模式」。
С頂部有用於載入和卸載到磁碟和裝置的按鈕,以及編輯按鈕。

Д對於那些與編輯共事過的人來說,管理通常是顯而易見的。 您需要在圖表中新增一個元素 - 用滑鼠將其從調色板拖曳到圖表中。 如果需要從圖中刪除元素或連接,請用滑鼠點選它或它,然後按 鍵 。 我們需要連接元素 - 我們取得一個元素的輸入並將其連接到另一個元素的輸出。

Е還有縮放(SHIFT+滑鼠滾輪)。 不幸的是,無法複製元素和元素組。 但這並不困擾我。

К此外,出於邏輯原因,一個節點的輸入只能連接到另一個節點的一個輸出。 但一個節點的輸出與其他節點的多個輸入有關。 入口始終位於節點的左側。 出口始終位於右側。

К我們有什麼能力實現演算法?
В可能性相當廣泛。 調色板包含代表所有控制器硬體的節點 什洛蒂尼:輸入、繼電器、ADC、DHT11/22。

Д有用於資料處理的邏輯節點和算術節點。

Ч為了讓我們能夠透過網路使用設備,MQTT 代理程式上有用於訂閱和發布參數的節點。

Е如果我們希望多個ShIoTiny控制器相互交換訊息,我們可以使用UDP組播協定使用節點來傳送和接收參數。

К另外還有定時器節點; 事件處理控制節點。

П我給你舉幾個例子。 例如,您希望每 30 分鐘向 MQTT 伺服器發布一次溫度和濕度資料嗎? 沒有什麼比這更簡單的了。 我們就這樣畫吧。

ShIoTiny:小型自動化、物聯網或“假期前六個月”

Ж模因按鈕“上傳”。 全部!
Е如果您已在「網路」標籤上正確配置了與 MQTT 代理程式的連接,就這樣!
К每半小時,溫度將在經紀商的 /T 主題下發布,濕度 - 在 /H 主題下。 或者,如果您設定自己的主題名稱,則在其下方。
З顯而易見的問題是:為什麼 18000 是 30 分鐘? 因為所有時間都以十分之一秒為單位。

Т現在您想為此方案添加透過網路開啟 Relay1 中繼的能力,甚至是一段時間? 沒問題。 讓我們像這樣完成繪圖。

ShIoTiny:小型自動化、物聯網或“假期前六個月”

О五、點選「上傳」按鈕。 全部! 現在,除了每半小時在 MQTT 代理上發布一次溫度和濕度之外,還可以打開 Relay1 繼電器。 是的,不僅僅是打開它,而是剛好 10 分鐘。 您可以透過發佈主題 /r1cmd 來啟用中繼,設定為 1。並且中繼的真實狀態將發佈在主題 /r1status 中。

В您不僅要打開繼電器,還要提前關閉繼電器嗎? 是的,無論你說什麼。 下圖展示瞭如何做到這一點!

ShIoTiny:小型自動化、物聯網或“假期前六個月”

П原理清楚嗎? 您只需用滑鼠畫出演算法即可! 並寫一些設定:時間、主題名稱,僅此而已。 這比寫一堆程式碼清晰多了。

К順便說一句,用不同顏色突出顯示連接並不是“Photoshop”——它是編輯器的功能之一。 您可以根據需要為連接著色,以免混淆。

Н哦,這還不是全部! 為了調試演算法,有一個“Monitor start”按鈕。 奇怪的是,它打開了“監視器”模式。 在此模式下,定期從控制器讀取所有節點的所有輸出的狀態 什洛蒂尼 並顯示在圖表上。 大約如下圖所示。

ShIoTiny:小型自動化、物聯網或“假期前六個月”

Т也就是說,我們可以「幾乎是即時」地看到每個節點的輸入和輸出。 當某些事情不清楚時,它會很有幫助。

Е我還想描述更多的“技巧和功能”,但我的良心不允許您在一篇文章中浪費時間。 實現的主要想法已經很明確:最少的可自訂參數 - 最大的清晰度。

美中不足

К當然,我希望沒有美中不足,但世界並不理想。 我的編輯器和控制器都不是完美的。 我發現了兩個我還無法消除的主要特徵。

В首先,在群組中移動元素時有時會發生故障。 但這並不會對工作造成太大干擾。 更多的是“功能”而不是“錯誤”。

И其次,在某些情況下,使用「上傳」按鈕將電路載入到設備後,設備會重新啟動。 這不會影響生活,但是編輯器頁面需要更新。

結論

Н我希望你喜歡繪製演算法而不是編寫程式的想法。 這就是為什麼隨機的想法、想法和爭論有時會產生完全可行的發展。

Н哦,在我看來,文章的篇幅已經超出了所有合理的限度。 那我今天就講完了。
П我只想說,距離假期只剩下幾週了,我已經準備好從在桌子上調試控制器轉向“現場”調試。
Е如果有人對我的想法或開發細節感興趣,請寫信給我: [電子郵件保護]

В當然,如果相關的話,我總是很高興收到評論和批評。

Ж歡迎您的回饋、意見和建議。

連結、參考資料和包裹

ESP8266
無線網絡
MQTT
UDP組播

應工人的要求

В我正在發布原始文檔和韌體(二進制)。

https://github.com/shiotiny/ShIoTinyBin

韌體: https://github.com/shiotiny/ShIoTinyBin/blob/master/bin/esp-07-shiotiny.bin

方案: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/esp-07-shiotiny.png

組件說明及簡要說明: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/ShIoT-esp8266-nodes.pdf

那裡有“如何縫紉”的說明。

來源: www.habr.com

添加評論