我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


記得曾經在某篇文章中看到,大意是辨別菜鳥程式設計師的幾個特徵,如果你的新同事符合這些特性的話,要儘快遠離他,避免跟他同一個團隊,而該文所羅列的特徵中其中有一個是使用「白底界面」的開發工具,這個戳中我的笑點,其實沒這麼嚴重(不過該篇本來就是搞效用的),因為資深的程式設計師大多會把程式界面轉黑色、文字為白色,這樣長時間工作下會比較不傷眼睛,不過這也沒這麼誇張,我就常遇到用白底的工程師,叫她換她還不爽,說看白的習慣。

不過事實上來說,主要是寫程式抓Bug時間長,尤其很人都是半夜工作,白色太亮確實傷眼睛,所以開發工具大都是推薦黑色主題,筆者常用的VSCode甚至安裝好就採用黑色主題,想到這裡我就發現有一個開發工具竟然不是黑色的,就是ArduinoIDE,太糟糕了,難怪很多大師都故意遠離我,原來是看到我的Arduino IDE是白色主題才會這樣(攤手)。

image

好吧,那麼我們來把Arduino IDE轉成黑色主題吧。

1. 下載Arduino 黑色主題

原來早就有人弄好黑色Arduino的主題檔,下載網址:https://github.com/jeffThompson/DarkArduinoTheme

點選右上角的Code/DownloadZIP。(對了,我的Chrome網頁也是黑色背景)

image

先暫時解壓縮放到桌面上,解開後的內容如下(對了,我的檔案總管也是黑色背景)

image

2. 將檔案覆蓋theme資料夾

首先將上述的theme資料夾解壓縮覆蓋自己電腦的Arduino\lib底下,一般是在C:\Program Files (x86)\Arduino\lib,不過你如果安裝在別的地方,就請自己找看看了。

image

找到後,將上述的theme直接覆蓋到arduino/lib底下的theme資料夾

image

對了,如果你未來要需要還原成白色背景的話,建議你先把theme備份到其他地方,未來要還原成白色時,只須再覆蓋回來即可。

3. 重開開啟Arduino啟動黑色主題

上述步驟都完成後,將Arduino重開,即可獲得防禦+9的黑色斗篷,啊不是,是黑色主題的Arduino,馬上變身為資深程式設計師,是不是很棒呢。

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


ESP32內建WiFi及藍芽,藍芽部份支援2.0的BTSerial及4.0的BLE,關於2.0 BTSerial連線的範例可以參考:https://youyouyou.pixnet.net/blog/post/120275962
而4.0 BLE部份功能則更多,可以拿來做Beacon定位偵測(https://youyouyou.pixnet.net/blog/post/119410657),或者BLE Notify(https://youyouyou.pixnet.net/blog/post/120916475),今天則是再增加一個功能,就是模擬成藍芽鍵盤。

一、BLE藍芽鍵盤
ESP32與傳統Arduino比較起來雖然大部分都比較強,但是有一個小小的缺憾,就是不能模擬成USB鍵盤,不過還好可以透過BLE模擬成藍芽鍵盤,使用的程式庫則是ESP32-BLE-Keyboard(網址:https://github.com/T-vK/ESP32-BLE-Keyboard),此程式庫尚未被Ardunio IDE收錄,因此請自行下載匯入安裝。除了鍵盤以外,也可以模擬滑鼠及遊戲遙控器,可以參考作者的說明。
根據作者的說明,模擬鍵盤的方式就是送出BLE指令,例如要打「A」,就是送出藍芽指令,其方式為bleKeyboard.print(“A”),除了print之外,也有write、press等指令,差異列表如下

image

關於所有鍵盤的特殊功能鍵用法,可以參考「BleKeyboard.h」(https://github.com/T-vK/ESP32-BLE-Keyboard/blob/master/BleKeyboard.h)裡面有完整的列表。

二、實做迷片救星,老婆通知器

本次我們就假設你正在觀看「日本首都很熱」,或者「澳門賭場」等類型的愛情動作片時,很怕有人發現,那麼就做一個人體感測器在門口,當有人經過時,就讓ESP32送出「暫停影片播放」、「清空桌面」、「開啟瀏覽器搜尋"ESP32"」等三個動作,假裝我們正在認真找資料,是不是很棒呢?要完成這三個藍芽鍵盤指令,其語法分別為
1.「暫停影片播放」
bleKeyboard.write(KEY_MEDIA_PLAY_PAUSE)

2.「清空桌面視窗」:
bleKeyboard.press(KEY_LEFT_GUI);//windows左側按鈕
bleKeyboard.print(“d”);//輸入d,即windows+d=清空桌面
bleKeyboard.releaseAll();//釋放windows按鈕

3.「開啟瀏覽器搜尋”ESP32”」:

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

虛擬化是一個伺服系統非常重要的技術,「虛擬化」技術解決實體機常見的問題

舉例來說:硬體故障,一般遇到硬體故障,如果你有備用機做Cluster那就還好,如果是單一主機,那就必須停擺維修,你可能會說,儘快準備一台備用機不就好了,原則是這樣沒錯,但是備用機如果硬體規格不同,那麼把HD換上新電腦就不一定能正常開啟,可能要處理一推驅動程式問題,最後可能還是要重灌系統。重灌一整個服務可不是那麼容易的。

那麼虛擬化能解決哪些問題?我覺得最大的幫助是,虛擬機器把整個「服務系統」變成「檔案格式」,你只要把這個檔案複製到任何一台電腦,就可以重啟這個服務,換一個方式來說呢,假設未來人類可以抽取靈魂,那麼就像是把靈魂抽取出來存在隨身碟,然後在市場上找一個合適的無主身體,插入USB開機,你就在新身體上復活了。

而虛擬機器也是相同道理,虛擬機器是安裝在作業系統之上,所以硬體問題影響的是你本機(Host)的問題,而我們安裝一台新機器驅動程式與虛擬機(Guest)上的作業系統無關

VM (3)

                       傳統系統架構                                                                                虛擬化系統架構

以上圖而言,可以了解機器虛擬化後,與虛擬機器是否啟動主要就是虛擬化軟體了,在任何一台規格符合的電腦中,安裝好虛擬化軟體,就可以啟動原有的服務。

簡單的說筆者所歸納的虛擬化優點

1. 虛擬機器脫離硬體,與機器規格無關

2. 虛擬機器更加容易部署:只須複製虛擬機器的封裝檔案到新的機器上,即可在任意電腦上復活服務

3. 虛擬機更加容易備份:只須複製檔案或者製作快照即可備份系統

4. 虛擬機可以區隔不同服務的軟體衝突:如果你有兩個服務,一個使用.net 4,一個是.net core,那可以透過VM區隔,互不影響。

5. 虛擬機可以節省資源:原本需要兩台伺服機,現在可以安裝在同一台中,多個服務之間不太可能同時高覆載,最佳化資源利用。

那麼我們要如何建立虛擬機呢?這部份網路很多文章可以參考,本文著重在如何將一台現有的實體機器虛擬化成一台虛擬機,也就是P2V(Physical to Virtual)

一、disk2vhd備份工具

二、VirutalBox轉換


一、disk2vhd備份工具

Disk2vhd是微軟的備份工具,可以從微軟官網下載:https://docs.microsoft.com/en-us/sysinternals/downloads/disk2vhd

程式非常簡單,下載後解壓縮

image

夜市 小霸王 發表在 痞客邦 留言(1) 人氣()

稍後更新


文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


ESP32 OTA的第二種模式是OTAWebUpload,一樣是ArduinoIDE內的範例,方式是將ESP32變成一台Webserver,透過ESP32的網頁上傳ArduinoIDE編譯過得bin(binary)檔,這方式雖然貌似較BasicOTA把功能直接做在ArduinoIDE上麻煩,但是較為穩定,根據之前的經驗在ArduinoIDE上的WiFi虛擬Port不一定能正常使用,而走Http模式的Web為TCP/IP模式,相對非常穩定,兩者相比,如果需要穩定性高的還是採用OTAWebUpload吧。


1. 第一次燒錄OTAWebUpload程式碼

OTAWebUpload一樣是ArduinoIDE內建的範例,在檔案/範例/ArduinOTA/OTAWebUpload可以找到

image

開啟之後,首先要修改的是最前面第8-9行的WiFi SSID及密碼,至於host則改不改無所謂(mDNS用)。

image

程式上傳完成後,就可以看到取得的IP

image

用瀏覽器開啟上面這個IP就可以看到ESP32所模擬的網站登入畫面

image

由於這個是用來更新程式碼的,所以當然要有帳密了,不然隨便有人跑來登入,隨便上傳程式碼,你的ESP32就被綁架了,哈哈,至於帳密是多少?很愚蠢的,帳密已經寫在html原始檔,都是admin。

image

要修改這個帳密也很簡單,Arduino原始檔中的第17-97行都是網頁的原始檔,帳密可以在第47行看到,不過改這個實際上沒什麼意思,因為只要會檢視原始檔的都知道怎麼找帳密。

image

完成帳號密碼登入ESP32網站後,就可以準備上傳編譯的bin檔。

image


2. 上傳bin檔

接下來我們要準備下一個要上傳到EPS32上的程式bin檔,bin就是將原始碼編譯後的binary二進位檔,由於我們使用Arduino時編譯上傳的過程我們是不太關心的,所以可能大部分的使用者都不知道原始檔有經過編譯成bin。

文章標籤

夜市 小霸王 發表在 痞客邦 留言(1) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


今天來介紹ESP32 OTA遠端更新

OTA為OverTheAir的縮寫,意思就是空中更新程式碼,個人認為這個IoT產業非常重要的一環,畢竟當你的裝置從實驗室走到實際場域後,一定會遇到很多問題,如果場域分散在很多不同的地方,光程式改版就會讓你疲於奔波,帶著USB線到處更新你的ESP32,想想就很累,如果今天你的裝置支援OTA,那你在家裡就可以直接更新客戶端裝置的程式,是不是很方便。

OTA並非是ESP32的專屬功能,很多Arduino系列也都支援,以目前筆者所觀察到的OTA目前來說主要分成以下四種模式

1. Basic OTA:在Arduino IDE中形成一個虛擬的Port,選擇該Port即可上傳新的程式碼

2. OTAWebUpload:ESP32會變成一台Webserver,透過ESP32的網頁上傳ArduinoIDE編譯過得bin(binary)檔

3. HTTP Update:將編譯好的bin檔放在一個公開的網站上,讓ESP32主動下載

4. Stream Update:透過MQTT將編譯好的bin檔直接上傳到ESP32中

除了4之外,目前我都實做過,本篇先從最簡單的1. Basic OTA開始吧。


Basic OTA是內建的功能,只要檔案/範例ArduinoOTA/BasicOTA就可以找到,範例程式這裡就不列出。

image

上傳時選擇Partition Scheme為Default 4MB wiht spiffs(1.2MM APP/1.5M SPIFFS)

image

修改好程式最上面的WiFi設定後,上傳即可

image

BasicOTA由於筆者很少用,程式內容我就不一一說明

程式上傳後,如果網路有連上,理論上就可以在ArduinoIDE中找到裝置

image

找到的畫面會向下面這樣,在原本序列埠下方會出現一個ESP32虛擬的Port,後方則為ESP32的IP。

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


NodeMCU-32s(也就是安信可的esp32)有一個「小」問題,就是腳位寫在背面,插在麵包版上以後腳位就看不到了,後續使用就要參考腳位,至少以往Arduino UNO腳位是寫在正面,這樣比較起來,教學上有點不便。

為了解決這樣的問題,我製作了腳位貼紙V.1版,目前提供免費試用,於本賣場購買ESP32都會贈送一組。

賣場:https://www.ruten.com.tw/item/show?21848118800764

使用方式有兩種,貼在ESP32上或者貼在麵包版上,請參閱以下影片:

1.貼在ESP32腳位上

image

2.貼在麵包版上

image

目前改進方向

1.材質改不容易破損的塑膠
2.預先裁切刀模
3.字的大小及顏色

 


文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


經常有夥伴跟我反應ESP32的網路連不上的問題,經常就是序列視窗一直出現無限的

........................................................................................................................

會印出上面這些點就是代表ESP32還在尋找網路,所以你應該檢查的是"網路環境"及"SSID名稱密碼",而不是程式碼。

image

發生這樣的問題可以分成以下幾種可能:

1.SSID或Password打錯:SSID、Password都有分大小寫,名字越簡單約好,不要用中文、空白及其他特殊符號,尤其是IOS手機,分享熱點的名稱就是手機名稱,所以請依照一下方式修改
   -進入設定/一般/關於本機/名稱
   -修改手機顯示的名稱

iphone 熱點名稱


2.網路訊號太差:手機、筆電能連得到,不代表esp32也可以,畢竟版載天線功率有限,如果真的沒辦法請使用外接天線(需修改0R電阻)

3.WiFi AP是5G頻段:越來越多的WiFi支援5G頻段,但是ESP32只有2.4G,如果AP是5G WiFi,那連到天荒地老也不會成功,而且目前很多手機或電腦分享WIFI時會預設開啟5G網路,例如IOS手機可以開啟"最大化相容性",否則ESP32無法連線,Android手機也有這個選項

iphone-maximize-compatiblity-5ghz-wifi-2.jpg image
IOS手機開啟最大化相容性(2.4G WiFi) Android手機開啟擴充相容性(2.4G WiFi)

4. 不可使用連線後才登入的網路:有些網路連線SSID時不用密碼,但是連線後有一個登入畫面,要輸入使用者名稱或密碼才能用網路,這種網路物聯網裝置也無法使用,因為他沒辦法在連線後輸入帳號密碼,例如像是學術網路TANet,要輸入Mail及密碼這種,ESP32就無法連線了。
 
image


5. 有時候就是ESP32要RST才能連上
上面的問題中最惱人的就是第4,長期的經驗發現ESP32在特定狀況就是要連不上時按一下RST重開,然後...她就連上了,問題是什麼我並不清楚,不過解決方案倒是滿簡單的,就是加入嘗試一段時間後依然連不上網路時,就下ESP.restart()重開機即可。

例如以下的語法

文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

這次的疫情影響到很多人,不過對我來說,各方面的影響都是好的。

對我的教育事業來說,網路部份更加重的,我是一個外向的人,喜歡跟人互動,所以以往遠距教學我總是忘之卻步,卻在某次博班老師的邀約下(老師已經仙去,祝福老師),首次嘗試遠距上課,沒想到效果異常好,遠距時的互動也能透過「刷跑車、+1、舉手」,這也讓我不再懼怕遠距課程,也讓更多人認識我。

image image image

對我的親子關係來說,小孩整天在家,也培養了更好的默契,每天晚上的運動時間也加強我與小孩之間的感情,聽他們邊運動邊講生活中的趣事,流行的影片等,讓我越來越貼近他們的生活。

我的手機裡,不再是滿滿的ESP32教學照片,而是一起運動的回憶。

image image image image

總之,這個特別的暑假,不只特別長,也特別溫馨~


夜市 小霸王 發表在 痞客邦 留言(1) 人氣()

今天載著全家人出門,沒想到卻下起大雨,馬路也逐漸淹水了。
就這樣水慢慢往上漲起來,途中經過一條隧道,水勢忽然加大,前方車輛受到水的衝擊開始左右搖擺,我往窗外一看,已經漲到一個輪胎高,車子也開始不受控制了,好像漂浮起來了,正在危急時刻,煩惱該怎麼辦,發現尤心妮竟然不知不覺得跑到車外,還開心的涉水走路,天呀,這個時候竟然跑出去玩?
我大喊她:尤心妮你在幹什麼?
妮:我在幫你看路呀!
我:搞什麼鬼,快回車子裡
但是也許水勢或雨聲聲音太大了,她沒聽到....
我再大喊:「尤心妮快回來」
她還是沒聽到....
這次我拉到最大嗓門,大喊:「尤心妮.............」
.
.
.
.
.
--------------------------------
妮:「靠,幹麻,是誰啦,誰半夜在大叫?」
我正想罵人時,發現眼前一片黑暗,沒有車子,也沒有淹水,看一下手機,半夜兩點多,原來是惡夢一場....
尤心妮還在生氣大罵:「到底是誰在亂喊?是誰?」
我:默不作聲.......
--------------------------------

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()