Blog

ESP32 CAM With CH340燒錄 MicroPython in MacOS

資料來源:
1. https://lemariva.com/blog/2019/09/micropython-how-about-taking-photo-esp32
2. https://github.com/espressif/esptool
3. http://twarm.com/commerce/product_info.php?products_id=1323

硬體:
1. ESP32 CAM
2. MicroUSB傳輸線
3. 雙母頭杜邦線

軟體:
1. MicroPython 燒錄檔,下載連結:https://micropython.org/resources/firmware/esp32-20210623-v1.16.bin
2. esptool.py,一個可以燒錄ESP32CAM的 Free Software ,使用說明及安裝
3. Thonny ,Python IDE,可進行Python程式設計,也可以直接將程式碼燒錄到ESP32CAM,下載連結:https://thonny.org/

ESP32 CAM(副廠,內建USB-TTL介面),硬體相關資料如資料來源3

ESP32 CAM 接腳圖

將MicroUSB傳輸線連接到ESP32CAM,並將ESP32CAM的GPIO 0及GND短路,這樣就可以準備燒錄了。

將ESO32CAM的GPIO 0及GND短路
接線連接特寫

前往放置燒錄檔案bin檔所在位置的目錄,在目錄內點擊右鍵從終端機打開

先找出你使用的序列阜,

ls -l /dev/cu.*

先抹除ESP32 CAM的flash,我們使用esptool.py來燒錄。
如果你的USB TTL 是 CH340 請用這個

esptool.py --port /dev/cu.usbserial-1420 erase_flash

如果是 CP210x 請用下面的

esptool.py --port /dev/cu.SLAB_USBtoUART erase_flash

再寫入ESP32 CAM

#燒錄Micropython
esptool.py --chip esp32 --port /dev/cu.usbserial-1420 --baud 460800 write_flash -z 0x1000 <改成你的檔案(esp32-20210618-v1.16.bin)>

#燒錄Circuitpython
esptool.py --port /dev/cu.SLAB_USBtoUART --baud 460800 write_flash -z 0X1000 adafruit-circuitpython-adafruit_metro_esp32s2-en_US-6.3.0.bin
ESP32 CAM燒錄中
ESP32 CAM燒錄完成

韌體燒錄完畢,拆下GPIO 0及GND之間的短路線材,按下RST鍵,重新啟動ESP32CAM,即可使用 Thonny 來寫程式了。

參考資料3的燒錄流程

依照 資料來源3 的硬體資料說明,燒錄要一直按著「Flash」鍵,但是 esptool 燒錄,整個使用過程完全不需要按任何按鍵就完成燒錄了。

安裝 Thonny 完成後,開啟 Thonny 就會看到下面畫面,就代表 Thonny 已經與ESP32CAM完成連接了,並顯示你燒錄的 MicroPython 版本。

Thonny與ESP32CAM完成連接

如果沒有出現,起點選上方工具列點選 Run > Select Interpreter ,如下圖:

接著會出現下面視窗,選取你要連接的USBserial Port,在按下「OK」鍵,

這樣應該就可以連上 ESP32CAM了!

Install Etcher on a Raspberry Pi 4

資料來源:https://forums.balena.io/t/install-etcher-on-a-raspberry-pi-4/43465 , https://github.com/futurejones/balena-etcher-arm/releases/tag/v1.5.63

Etcher 是一個非常容易使用的SD card 及 Flash隨身碟的 imager 燒錄軟體,不僅在 Mac OS、Windows 以及 Linux 上可以使用,現在也可以安裝在 Raspberry Pi 4上了!

請在 Raspberry Pi 4 的終端機鍵入下列命令:

wget https://github.com/futurejones/balena-etcher-arm/releases/download/v1.5.63/balena-etcher-electron_1.5.63_Raspbian_Buster_armhf.deb
sudo apt-get install ./balena-etcher-electron_1.5.63_Raspbian_Buster_armhf.deb

這樣就安裝完成了!

檢查一下, Etcher 就直接放在「附屬應用程式」裡面了 !

NVIDIA Jetson Nano 無刷散熱風扇的使用

資料來源:
https://blog.cavedu.com/2019/10/04/nvidia-jetson-nano-fan/

拿到 NVIDIA Jetson Nano 後,發現 Jetson Nano 散熱片的溫度實在太高了,我還曾經發生過當機的情形,一摸散熱片,非常燙,手摸都已經無法承受,感覺不佳散熱風扇實在不行,只好乖乖的買來裝。

我們使用的散熱風扇是 Wave Share 「Jetson Nano 散熱風扇 PWM 調速 強風」,型號:Fan-4020-PWM-5V

以下是Wave Share Fan-4020-PWM-5V 4線PWM強風散熱風扇的規格:

  • 電壓:DC 5V
  • 額定電流:0.27A
  • 尺寸: 40*40*20MM
  • 消耗功率:1.35W
  • 轉速:7,500 RPM
  • 接線:红色 -> VCC; 黑色 -> GND; 黄色 -> PWM;蓝色 ->测速

散熱風扇除了一個風扇本體外,還有四根自攻牙螺絲,接頭有設計防呆,只要稍微注意一下,是不會接錯的。

我沒有使用自攻螺絲,我是用束帶綁起來,也是非常牢固的。接頭接上去風扇沒有轉,我以為是壞了,上網查才知道要下命令控制才會轉。網路上有人說「風扇出風口要朝下」,但是我覺得不對,熱氣自然會上升,出風朝上,下方的冷空氣自然會吸進散熱片,出封口朝上才可以順勢將熱帶走,一般在PC或筆電的設計也都是如此。

要怎樣散熱風扇才會轉呢?

依照 CAVEDU部落格 以及 Wave Share Fan-4020-PWM-5V 4線PWM強風散熱風扇產品資料說明頁 的說明,由於我們是使用PWM風扇 風扇的轉速可以調整數值從 0 ~ 255 來改變的。

首先我們進入終端機,要讓全速散熱風扇運轉,可以鍵入下列命令:

sudo sh -c 'echo 255 > /sys/devices/pwm-fan/target_pwm'
數值改為 0 就會讓風扇轉速為0,及關閉散熱風扇。
sudo sh -c 'echo 0 > /sys/devices/pwm-fan/target_pwm'

但是我們是希望 Jetson Nano 開機時風扇就自行啟動,而不是開機後才下命令啟動散熱風扇,所以我們可以使用以下面的方法來讓風扇開機時自行啟動。

cd /etc
sudo touch rc.local
sudo chmod u+x rc.local
sudo nano /etc/rc.local

我們在這裡是使用 nano 來編輯 rc.local 這個檔案,輸入上面最後一個命令後,會跳出編輯視窗,進入編輯界面,貼上或輸入下面內容。

#!/bin/bash
sleep 10
sudo /usr/bin/jetson_clocks
sudo sh -c 'echo 110 > /sys/devices/pwm-fan/target_pwm'

由於 數值 255 風扇聲音太大了,所以我測試後給 110

用 nano 編輯 rc.local 檔案

之後,按 " Ctrl + X " ,再打 " Y " ,最後按下 " Enter " ,離開編輯畫面。

回到終端機命令列後,鍵入 " reboot " ,重新開機,散熱風扇就會自動按照 110 轉速啟動了。

那數值 110 散熱風扇的轉速是多少呢?

假設轉速曲線是直線,而且成比例關係,我們就可計算出來了

轉速 = 110 x 7500/255 = 3235

如何在Nvidia Jetson Nano安裝EDIMAX EW-7611ULB WiFi+藍芽二合一USB無限網卡

資料來源:
https://learn.sparkfun.com/tutorials/adding-wifi-to-the-nvidia-jetson/all
and
https://github.com/lwfinger/rtl8723bu

Edimax EW-7611ULB USB無線網卡
EW-7611ULB無線網卡比10元硬幣還小

驅動程式安裝

安裝驅動程式之前,請確認你的JetsonNano系統更新完成以及NVIDIA Jetson Nano完成重開機。

下載並安裝Edimax EW-7611ULB無線網卡的驅動程式

下載Edimax EW-7611ULB 驅動程式

打開終端並輸入下面命令來下載驅動程式:

git clone https://github.com/lwfinger/rtl8723bu.git

下載完成後,您可以使用以下命令進入驅動程序目錄:

cd rtl8723bu

您現在位於目錄中,開始安裝驅動程序!

安裝驅動程式

有兩種方法可以將這些驅動程序安裝在單板計算機或其他任何Linux計算機上。您可以簽出GitHub存儲庫的README文件以從頭開始進行編譯和安裝,但是我們將透過Dynamic Kernel Module Support(DKMS)進行安裝。

在名為“ rtl8723bu”的目錄中,輸入以下命令:

sudo apt-get install dkms
source dkms.conf

一旦回到命令提示,請鍵入以下命令來建立一個工作目錄:

sudo mkdir /usr/src/$PACKAGE_NAME-$PACKAGE_VERSION

建立目錄後,鍵入以下命令將許多文件移動到您的工作目錄中:

sudo cp -r core hal include os_dep platform dkms.conf Makefile rtl8723b_fw.bin /usr/src/$PACKAGE_NAME-$PACKAGE_VERSION

最後,執行以下命令,將這些文件添加到DKMS中:

sudo dkms add $PACKAGE_NAME/$PACKAGE_VERSION

現在一切就緒,就位,我們終於可以鍵入以下命令來安裝驅動程式:

sudo dkms autoinstall $PACKAGE_NAME/$PACKAGE_VERSION

DKMS將採取許多措施來安裝驅動程式,包括對其進行清理以及刪除不必要的文件和目錄。DKMS完成安裝後,您將獲得安裝的確認!

安裝完成後,最好使用以下命令Nvidia Jetson Nano重新開機:

sudo reboot now 

注意:如果要通過SSH訪問Nano,則下一步仍將需要有線網路的連接,但是如果您將鍵盤和滑鼠與顯示器配合使用,則可以斷開有線網路電纜的連接。

連接到您的網絡

重新啟動系統後,您現在應該可以使用WiFi連接了!通過檢查您是否安裝了無線網絡設備,打開命令提示符以驗證成功的驅動程序安裝。打開一個終端並輸入以下命令:

ifconfig wlan0 

ifconfig wlan1

您應該得到與以下截圖類似的回應。請注意,我們有兩個wlan連接… wlan0和wlan1僅連接了一個,並為其分配了IP地址。

要從命令提示處建立連接,您可以按照此處概述的那樣使用Ubuntu的NetworkManager工具。首先,我們將通過鍵入以下命令列出所有可能的網絡連接:

nmcli d 

您應該得到一個類似於此截圖的連接清單:

替代文字

接下來,我們鍵入以下命令來確保WiFi已打開:

nmcli r wifi on

現在,我們可以鍵入以下命令來掃描並列出所有可用的可見WiFi基地台:

nmcli d wifi list

您應該獲得可用WiFi網點列表,包括信號強度,數據速率,信道,安全性等方面的當前狀態。

替代文字

確保您看到要連接的無線網絡。

要連接到特定的網點,可以點選右上角的無線網路符號連上連上你的WiFi基地台

注意:如果您使用的是SSH,現在可以將有線網路電纜上拔下。對於將來的SSH連接,請確保您要通過SSH訪問Nano的筆記本電腦或計算機與前面步驟中為Nano設置的無線網絡相同。

測試您的連接

將您的EW-7611ULB WiFi無線網卡連接到internet後,您就可以對其進行測試了!您可以使用鍵盤和滑鼠打開瀏覽器並試著連到自己喜歡的網站。

故障排除

sudo iw dev wlan0 set power_save off

使用Edimax WiFi無線網卡時,您可能還存在第二個無線設備。這將顯示為wlan1。如果問題仍然存在,請對wlan1重複該命令:

sudo iw dev wlan1 set power_save off

然後重新啟動您的Jetson Nano:

sudo reboot now 

如果您嘗試此操作以及多種故障排除方法,請嘗試將他們的JetBot映像燒錄到SD卡。該映像檔已經安裝了Edeimax EW-7611ULB USB WiFi無線網卡的驅動程式,應該可以立即使用。有關如何安裝JetBot映像的詳細說明,請看該網站《JetBot組裝指南》本節中的“故障排除”步驟。

初入AI心得

我參加了台灣人工智慧學校台中第七期經理人班。,3/6是開學典禮,往後還有15個週六,整天都要泡在Al裏面,希望能蹦出不一樣的火花。

很高興進到AI人工智慧學校這個大家庭,我是透過台中第一期學長的鼓勵,來參加這個經理人班,也是一個初入Al領域的新鮮人。
原本覺得Al好像高深莫測,不容易接近,學長就拿了「初探機器學習」及「動手做深度學習」這二本書給我看,我是土木工程領域的,並非資訊工程背景,在憑著高工電子科的記憶,以及大學時代短暫學習Fortran 程式語言的初淺能力,在輕輕讀過第一本「初探機器學習」後,便依照書上的指引,利用筆記型電腦,以及瀏覽器上Google Colab,就能進行Al範例的操作,真的令人興奮,所以向大家分享這件事。
這二本書的確是讓初入Al領域的入門好書,當然看書當中,一定會有不懂的地方,我想把問題帶著課堂上問老師,相信會讓學習有更進一步的效果。
我已經非常興奮也期待每次的上課,期望我們這一期同學能擕手一起探索Al這個新領域。

我把IBM R51 Laptop 開刀了

我很喜歡IBM的筆電,用料紮實,鍵盤操作很順手,尤其喜歡那些個中原一點紅。

淘汰之後,一直放著,前幾天發現它的蹤影,就拿出來試看看可否開機?果然不行!看到Windows XP開機畫面不要高興太早,沒有出現藍畫面才是開出來。

果然開不了機!

#########################################

於是拆機清理一下,拆下電池、光碟機、硬碟,看到沒什麼灰,簡單擦乾淨,機殼、鍵盤用牙刷刷一刷,油精擦過消毐一下,螢幕用螢幕拭鏡紙擦乾淨,重新組合起來。

配備IDE40G硬碟

開機⋯⋯⋯⋯⋯⋯⋯⋯⋯

⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯

期待又怕受傷害⋯⋯

果然還是不行,但是IBM都想到了,使用者這時候最需要什麼呢?

救援模式啟動了⋯⋯

進入了救援畫面,點選了還原,但是沒有還原檔,最後還是還原到出廠的狀態。

經過了一段時間,終於看到Windows XP桌面,開機了!

但是⋯⋯滑鼠不會動,觸控板不能用,中原一點紅也不動了⋯⋯

最重要的是網路也起不來⋯⋯

只能鍵盤按TAB鍵換位置或是快捷鍵⋯⋯

想了一想,來裝看看樹莓派i386版本,看是否可以Run⋯⋯

在這裡下載樹莓派i386版https://www.raspberrypi.org/software/raspberry-pi-desktop/

樹莓派其實就是Debian的Linux OS,現在這台IBM Laptop 比樹莓派4B還要低階,大概是樹莓派3的等級。

下載好檔案,燒入SD卡,插入USB讀卡機,調整IBM的BIOS由USB開機,重新開機⋯⋯

終於⋯⋯

出現安裝畫面⋯⋯

來不及看仔細它就Boot了,跑了一會兒,就出現Raspberry Pi的桌面,原本也是可以在SD卡上直接啟動,不必安裝也可以用,滑鼠可以用,有線、無線網路也都可以用了,現在更加確定這台可以Run 樹莓派了。

重新開機,正常安裝,先回答一些設定問題後,終於進入安裝程式階段,安裝完成,直接開出桌面,進行幾頊設定後,進入系統更新,把系統各程式更新到最新的版本,重新開機。

Done !

Raspberry Pi 安裝中文輸入法

1.透過指令安裝SCIM輸入法

(若是只想安裝類似新注音的輸入法,直接跳到下一步即可。)
$ sudo apt-get install scim scim-tables-zh

2.安裝SCIM輸入法中的新酷音(類似新注音)

$ sudo apt-get install scim-chewing

安裝第1項會產生非常多的輸入法,我用不到,所以只安裝第2項的新酷音輸入法。

3.設定中文輸入法

請先重開機($ sudo reboot),再到目錄下找到SCIM。

雖然只有安裝新酷音輸入法,但都是在SCIM下設定,到介面全域設定,故只設定新酷音輸入法,預設的輸入法啟用為ctrl+space(空白鍵),左邊shift為切換語言鍵。

4.再次重新開機,設定才算完成

$ sudo reboot

重新開機後,透過指令 $scim 就能夠開啟輸入法

在Mac OS 安裝Labelimg程式

Labelimg 是一個資料標記的程式,網址是

https://github.com/tzutalin/labelImg/tree/v1.8.1

可以作為影像物件辨識或偵測(Object Detection)的資料標記的處理程式。

1.從上面的網址,點擊綠色的按鍵,在點擊 Download ZIP 下載 LabelImg-1.8.1.zip,並解壓放到你要放的目錄下,我把它放在根目錄下。

因為我的 Macbook Pro 安裝 Anaconda 所以我直接在 Anacomda 環境下的命令列下直接安裝,而沒有按照作者建議的Mac OS 安裝方法,一方面也是用作者建議的方法,一直都無法安裝成功,所以看到Windows 環境的安裝方法中,是在 Anaconda 環境下安裝,同樣是 Anacona ,一定可以使用同樣的方法安裝,果不其然,就安裝完成。

conda install pyqt=5
pyrcc5 -o resources.py resources.qrc
python labelImg.py

上面執行完成後,就會開啟 LabelImg 程式,進行資料標記了。

但是為了使用方便,按照作者的更新訊息,

NEW Python 3 Virtualenv + Binary This avoids a lot of the QT / Python version issues, and gives you a nice .app file with a new SVG Icon in your /Applications folder. You can consider this script: build-tools/build-for-macos.sh

brew install python3
pip install pipenv
pipenv --three
pipenv shell
pip install py2app
pip install PyQt5 lxml
make qt5py3
rm -rf build dist
python setup.py py2app -A
mv "dist/labelImg.app" /Applications

這樣就可以把 LabelImg 程式變成 Mac OS 的應用程式,這樣就可以輕鬆使用了,不需要每次使用時,都要用終端機命令列重新執行一遍。

如何在Ubuntu使用Terminal從Github安裝軟體?


nhnnnHow do I install a software from Github in Ubuntu using terminal?https://github.com/cli/cli/blob/trunk/docs/install_linux.md

開始建

立你的網誌。https://github.com/cli/cli/blob/trunk/docs/install_linux.md

sudo apt-add-repository https://cli.github.com/packages
sudo apt update
sudo apt install gh

你今天要發表文章了。不必擔心網誌的外觀配置。此外,如果你還沒有幫網誌命名,或是感到不知所措,也不需要擔心。只要按一下「新增文章」按鈕,並告訴我們你在此撰寫文章的原因即可。

為何要這樣做?

  • 因為這樣可讓新讀者瞭解來龍去脈。你打算做什麼?為何讀者應該閱讀你的網誌?
  • 這將能協助你專注於自己對網誌的想法,以及你想要使用網誌來做的事情。

文章可長可短,可以是你的個人生活介紹或隨性的使命陳述、對於未來的宣言,或者你也可以針對想要發表的事物擬出簡單的大鋼。

為了協助你開始使用,以下提供一些相關問題:

  • 為何你要建立公開網誌,而不是私人日記?
  • 你認為自己會撰寫哪些主題?
  • 你想透過網誌與哪些人建立連結?
  • 如果你在未來一年可以成功持續經營網誌,你希望達成什麼目標?

你不應就此侷限在上述任一問題;網誌的美好之處就是可以觀察它們如何隨著我們學習、成長及互動的步伐不斷演變;不過,瞭解你要從何處著手與開始使用的原因將對你有所幫助,而明確表達自己的目標也許就能提供你一些其他的文章構想。

不知道如何開始嗎?只要寫下心中想到的第一件事就可以了。有一本廣為流傳的寫作相關書籍,作者 Anne Lamott 表示:你需要允許自己寫下「蹩腳初稿」。安妮說到重點:開始寫就對了,編輯的事以後再說。

當你準備發表文章時,為文章提供三至五個能夠說明網誌焦點的標籤,像是寫作、攝影、小說、育兒、食物、車子、電影、運動等。這些標籤將有助於關切你的主題的其他人在「讀取器」中找到你。請確認其中一個標籤為「zerotohero」,這樣其他新的部落客也可以找到你。