山姆的編程實作分享。。。

Sam Blog, Sam Sharing, Sam Studio

顯示具有 ESP8266 標籤的文章。 顯示所有文章
顯示具有 ESP8266 標籤的文章。 顯示所有文章

2020年11月11日

[MicroPython 教學] The Best MicroPython IDE - PyCharm


MicroPython 官方並未提供整合的 GUI 開發環境 ( IDE : Integrated Development Environment ),僅提供 Command Mode Tools,讓開發者可以更新 firmware 以及替換板上檔案而已;但這樣的開發環境著實提高了入門門檻!


還好,在 GitHub 原始碼開發平台上,無私的開發者幫 MicroPython 解決了這樣的困境;例如 Visual Studio Code 以及 PyCharm 都有無數的 Micropython 套件 (Extension / Plugin) 供開發者選用,甚至有些組織還提供 MicroPython 專屬的 IDE。


但在親身體驗這些套件或 MicroPython 專屬的 IDE 後,發覺 MicroPython 專屬的 IDE 往往是連安裝都有問題,許久未見更新;一些套件則是缺東缺西,不夠完善,往往無法同時支援 PyBoard / STM32 boards 以及 ESP8266 / ESP32;唯有 PyCharm 的 MicroPython 套件最為完善,同時支援 PyBoard 以及 ESP8266 的下載方式,並且在 IDE 的開發環境下,整合了 AMPY ( Adafruit Micropython tool ) 。 



安裝

PS : 在安裝 PyCharm 前,記得先完成 Python 3 的安裝。


PyCharm 下載網址 ,安裝完成 PyCharm 後,請點選

" File -> Settings -> Plugins -> Marketplace ",然後搜尋 MicroPython 套件,並且安裝它。安裝完成 MicroPython 這套件後,請依照提示重新啟動 PyCharm ,以完成MicroPython 套件的安裝以及啟動。



New MicroPython Project

完成 IDE 以及MicroPython 套件的安裝後,接著就是來生成 MicroPython 的專案了;請點選 " File -> New Project…",接著就會跳出如下的 "Create Project”的視窗。



請在 " Location:”指定專案的開發路徑及資料夾,這裡,我的專案名稱是 "HelloMicroPython”,然後點選 " Create”生成專案。


PS : PyCharm 是一套針對 Python 語言開發的 IDE ,所以每個專案都有各自的虛擬環境 ( Virtual Environment )。



完成新專案的生成後,你應該可以看到如下圖的專案檔案結構,此時的所有檔案都只是 Python 新專案的相關聯檔案以及虛擬環境,還算不上是 MicroPython 的專案。



請點選 " File -> Settings -> Languages & Frameworks -> MicroPython ”

然後勾選 "Enable MicroPython support”。

接著在 "Device type”,點選你的開發板種類;如果你的開發板是 ESP8266 或 ESP32 則點選 “ESP8266",若是 STM32 系列,則點選 "Pyboard”。

在 "Device path” 填入 Serial Port 的路徑,如 COM3 。

最後在點選 "OK",這樣新專案的屬性才會轉換成 MicroPython 的專案。


PS :  如果是在 Ubuntu 的環境下,則是填入 /dev/ttyUSB0 或 /dev/ttyACM0 



main.py

到這一步驟, 只是建立一個 MicroPython 的新專案而已,main.py 還未被產生。

請點選 " File -> New... ”

然後選擇 "Python file”並填入新檔案名稱 "main.py",接著按下 Enter 鍵。



此時 "空白的" main.py 就被建立在專案檔案結構下了。



因為是 MicroPython 的專案,PyCharm 則會在這生成 main.py 檔案後, 提醒你專案還要額外安裝 Packages,如 pyserial,ampy 。



請大膽點選右側的 "Missing reqired MicroPython packages”讓 PyCharm 幫你安裝必要的軟件。


Project Structure

接下這步驟可做也可不做,但個人建議做,因為實在沒有必要將 .idea 這目錄下的檔案也歸類為 Source Directory。

請點選 " File -> Settings ->Project: Nam of your project -> Project Structure”,然後點選 ".idea”,接著按滑鼠右鍵將 "  .idea " 這目錄 “Exclude”出 Source Directory。



下圖是 "  .idea " 這目錄 “Exclude”出 Source Directory 的畫面。



Hello MicroPython on PyCharm

完成以上的步驟後,是時候在空白的 " main.py" 輸入程式碼了!

不免俗的,我們也來段 "Hello World”吧!

請在空白的 " main.py" 輸入print("Hello MicroPython on PyCharm")吧!


Download main.py to board

請點選 "main.py”,接著按滑鼠右鍵,選擇 Run ‘Falsh main.py’。




若板子就緒且 COM port 設定正確,你應該可以看到 main.py 被正確的下載到板子了,如下圖。



REPL

既然 main.py 已經成功的下載到板端了,當然就應該試試在 PyCharm 跑 REPL (  Read,Evaluate, Print and Loop )。

請點選 "Tools -> MicroPython ->MicroPython REPL”執行 REPL。



接著在 Terminal 視窗則會有如下的 REPL connected 的結果



這時你不妨按下 “Ctrl+D”,來個 soft reboot,就能看到你撰寫 main.py 的執行結果了。



Run AMPY

想必你也猜得到是在 Terminal 視窗執行 ampy,以下就是執行畫面的截圖。



想省去一直敲打comport 這段字串  “-p com7',可以在 Terminal 輸入如下圖的字串,來設定 comport 路徑。



以上就是 MicroPython 在 PyCharm 的使用教學,感謝閱讀!

2020年9月17日

[MicroPython] REPL not responding on ESP8266 / ESP32


I met this issue before. I use Putty, when I changed "Flow Control" from "XON/XOFF" to  "None" under Connection -> Serial setting Category, this issue is gone.

After checked with ESP8266 data sheet, ESP32 / ESP8266 chips do not support the "Flow Control", that is why I changed "Flow Control" from "XON/XOFF" to  "None", the issue is gone.

Hope this information can help someone.



2020年5月17日

2020年4月24日

[Arduino][ESP8266] WiFi Switch 的實作


[Arduino][ESP8266]

WiFi Switch 的實作

實作準備

整個實作可以切成以下4部分:

  1. WiFi Switch 的硬體線路:也就ESP8266 以及 Relay 的接線圖。

  2. ESP8266 的程式碼:用來接收Cloud Server傳送來的指令,進而控制家中的電器,如燈泡。

  3. Cloud Server:用來接收手機傳來的指令,然後將指令傳送到你家中的ESP8266 / WiFi Switch。

  4. App:用來連接Blynk Cloud Server,然後控制你家中WiFi Switch以及電器的App。 

WiFi Switch 的硬體線路

我們先從 WiFi Switch 硬體線路這個點開始解說,然後再延伸到整個系統,這樣會比較有感;

實作中我採用的是ESP8266控制板,且選用GPIO13 (D7) ,當作Relay 的控制訊號,

來開關Relay負載端的輸出;Relay的DC+/- ,我依照我手中Relay 的規格,連接DC 5V,

至於Relay負載端的輸出,則是接110 伏特以及燈泡;實際Relay負載端的輸出線路,

大家請依照你手上Relay的規格連接負載,切勿直接套用範例線路。


ESP8266 的程式碼

Step1:安裝 Blynk Library

有了WiFi Switch硬體線路,接下來,當然就是控制WiFi Switch硬體線路的程式碼;

程式碼因為要配合Blynk Cloud Server,所以必須要包含 Blynk Library,也就是說,

要先安裝 Blynk Library for Arduino IDE

How to install Blynk Library for Arduino IDE

上面連接提供了3種方式來安裝 Blynk Library,我個人建議使用第3種-“手動安裝”,

這樣你會更清楚知道 Arduino IDE 以及Blynk Library的檔案結構;安裝完Blynk Library後,

在Arduino IDE安裝路徑下,會分別在\libraries以及 \tools目錄下,新增以下4個資料夾:

/libraries/Blynk
/libraries/BlynkESP8266_Lib
/tools/BlynkUpdater
/tools/BlynkUsbScript

Step2:新增 WiFi Switch 專案

接著就是開啟Arduino IDE,然後按照下面圖示,

選取 ESP8266_Standalone範例來當作 WiFi Switch 的專案;

以下就是ESP8266_Standalone.ino 原始程式碼,這原始程式碼還也3處必須修改,

才能和Blynk Cloud Server連接上。

  1. #define BLYNK_PRINT Serial  

  2.   

  3. #include <ESP8266WiFi.h>  

  4. #include <BlynkSimpleEsp8266.h>  

  5.   

  6. // You should get Auth Token in the Blynk App.  

  7. // Go to the Project Settings (nut icon).  

  8. char auth[] = "YourAuthToken";  

  9.   

  10. // Your WiFi credentials.  

  11. // Set password to "" for open networks.  

  12. char ssid[] = "YourNetworkName";  

  13. char pass[] = "YourPassword";  

  14.   

  15. void setup()  

  16. {  

  17.   // Debug console  

  18.   Serial.begin(9600);  

  19.   

  20.   Blynk.begin(auth, ssid, pass);  

  21. }  

  22.   

  23. void loop()  

  24. {  

  25.   Blynk.run();  

  26. }  

Step3:修改程式碼以連接Blynk Cloud Server

首先是 行12以及行13,請修改成為你要連接WiFi AP的ID以及密碼,請注意這WiFi AP 必須能連到外網,

這樣才能連上 Blynk Cloud Server。

再來就是 行8的 auth[],它應該是呈現以下型式:

char auth[] = "53e4da8793764b6197fc44a673ce4e21";

而這串Auth Token,會在你使用Blynk App,來建立一個新專案時被產生,

Blynk 會把這個Token寄到你註冊郵件信箱,目前我們就留空,收到Token,記得要回來改!

做到這個步驟,你就擁有控制WiFi Switch 的ESP8266的程式碼了。

到這個階段,你若有仔細觀看ESP8266_Standalone.ino 原始程式碼,你會發覺,

這原始程式碼並沒有設定以及控制GPIO13 (D7)相關的程式碼,為什麼?這樣Relay 會做動?

告訴你,會的!

至於為何,等我們利用Blynk App 建立專案時,你就會知道原因了😊

Cloud Sever

這塊,Blynk 處理掉了,我們碰不到;

但是 Blynk 有釋出原始碼,放在GitHub,有興趣了解的人,可以參考以下連結。

(https://github.com/blynkkk/blynk-server )

Blynk App

Step1:安裝 Blynk App

Android 手機Blynk - IoT for Arduino, ESP8266/32, Raspberry Pi

iOS 手機 Blynk - IoT for Arduino, ESP32, ESP8266, Raspberry Pi, NodeMCU

Step2:透過Blynk App建立WiFi Switch 控制頁面


打開Blynk ,然後參照以下畫面建立控制頁面




結論

利用Blynk的資源完成WiFi Switch 的IoT實作有何感想?

或實作過程有遇到任何問題,都歡迎留言給我喔!


利用Blynk實現了IoT Home Assistant,我個人有以下幾點感想:

優點:

  1. 省去了手機App 的開發,你只要動動手指頭,把Widget設定好,就可以有美美的控制畫面。

  2. 省去架設Server時間以及費用。

缺點:

  1. 天下沒有白吃的午餐,Blynk這樣類似的應用,基本上都有流量計費的,做實驗還可以,想商業化或長期使用,必須精算一下。

  2. Blynk Library這黑盒子,我個人不喜歡,Blynk 掌控太多了;GPIO的控制,我竟然不必做…


想實現IoT,只能依靠3rd Party App? 

第19集的影片,讓我來介紹另一種,掌控在我們自己手裡的做法吧,敬請期待!


熱門文章