最近一段時間沒有看 docker desktop,忽然想起來打開看看,結果死活啟動不了。以前卸載之後,重新安裝就好了,同樣的方法嘗試了很多次還是不太行,重啟也不行... 後來想想是不是 wsl 出了問題,運行 WSA ,WSAClient 啟動後又自動退出了。在命令行下運行 wsl,等待了很久,出現 ...
4為機器人準備無頭Raspberry Pi
本章將介紹以下內容:
- 什麼是無頭系統,為什麼它對機器人有用?
- 在Raspberry Pi上設置Wi-Fi並啟用SSH
- 在網路上找到你的Raspberry Pi
- 連接Raspberry Pi
- 配置Raspberry Pi操作系統
要求:一臺 Raspberry Pi,最好是 3A+(但 Pi3或4也可以)
4.1 什麼是無頭系統,為什麼它對機器人有用?
無頭系統是指在鍵盤、屏幕和滑鼠訪問設備不方便的時間或地點,可以通過網路從另一臺電腦上操作的電腦。無頭訪問可用於伺服器系統、製造機器人和小工具:
與屏幕、鍵盤和滑鼠連接的 Raspberry Pi
上圖展示了一個有頭的系統,用戶可以坐在設備前面。您需要在機器人上安裝屏幕、鍵盤和滑鼠,因此移動性較差。您可以根據需要安裝/拆卸它們,但這樣做也很不方便。有一些攜帶型系統可以與Raspberry Pis像這樣對接,但當機器人移動時,您需要斷開連接或與機器人一起移動。
我曾看到過帶有微型板載屏幕、由無線鍵盤和滑鼠控制的機器人。不過,在本書中,我們將機器人作為無頭設備使用:
機器人上的Raspberry Pi採用無頭配置
上圖中的 Raspberry Pi作為無頭設備安裝在機器人上。這台Raspberry Pi沒有屏幕和鍵盤的束縛;這些都由另一臺電腦來處理。代碼、指令和信息通過無線網路從筆記本電腦發送到 Raspberry Pi,再從 Raspberry Pi發送出去。許多代碼示例都是自主運行的,電腦可以啟動/停止這些示例。手機可以啟動和停止自主行為,查看機器人的狀態,或者直接驅動機器人,完全不需要連接筆記本電腦。這個 Raspberry Pi沒有屏幕和鍵盤。
雖然您通常不需要屏幕和鍵盤,但還是值得準備一下,以防與 Raspberry Pi失去聯繫時,它拒絕通過網路做出響應。這時,您可以使用屏幕和鍵盤與它連接,查看發生了什麼。
對於無頭訪問Raspberry Pi,我們將使用Secure Shell(SSH)。SSH提供了向Pi發送指令的命令行,以及向 Pi 傳輸文件的文件傳輸系統。
讓Pi成為無頭機器人可以讓它自由行動。它無需攜帶屏幕和鍵盤,也無需為其供電,從而保持了機器人的輕便。由於顯示器和鍵盤非常笨重,因此無頭設計使機器人更小巧。它還能鼓勵製造者思考機器人的自主行為,因為你不能總是向機器人輸入命令。
4.2 在Raspberry Pi上設置Wi-Fi並啟用SSH
現在你已經看到了無頭系統的功能,讓我們來修改SD卡,使 Raspberry Pi啟動後即可作為無頭設備使用。我們需要先設置 Wi-Fi:
並創建文件:
- ssh: 沒有擴展名的空文件。
- wpa_supplicant.conf: 該文件包含 Wi-Fi 網路配置,如圖所示:
country=CN
update_config=1
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="<your network ssid>"
psk="<your network password>"
}
讓我們逐行查看該文件:
第一行必須指定ISO/IEC alpha2國家代碼。您可以在 https://datahub.io/core/country-list 找到適合您所在位置的國家代碼。如果沒有,Raspberry Pi OS 將禁用Wi-Fi適配器。
接下來的兩行允許其他工具更新配置。
文件的最後四行定義了機器人和 Raspberry Pi 將連接的 Wi-Fi網路。請使用您自己的網路詳細信息,而不要使用此處的占位符。預共用密鑰(PSK)也稱為 Wi-Fi 密碼。這些信息應與您將筆記本電腦或手機連接到Wi-Fi網路時使用的信息相同。我建議在電腦上保留一份 wpa_supplicant.conf 文件副本,以便在其他 Raspberry Pi SD 卡上使用。
4.3 在網路上找到你的 Pi
假設您的SSID和PSK正確無誤,您的 Raspberry Pi現在已經在Wi-Fi網路上註冊。不過,現在你需要找到它。Raspberry Pi使用動態地址(DHCP)。每次將它連接到網路時,它都可能獲得不同的地址。訪問Wi-Fi路由器的管理頁面並記下IP地址在短期內有效。但每次更改地址時都這樣做會令人沮喪,而且在某些情況下可能無法使用。
幸運的是,Raspberry Pi使用了一種名為mDNS(多播功能變數名稱系統)的技術,因此附近的電腦都能找到它。客戶端電腦會廣播一條本地消息,詢問是否有名稱為 raspberrypi.local 的設備,Raspberry Pi會回覆地址,以便找到它。這也被稱為Zeroconf和Bonjour。因此,你需要做的第一件事就是確保你的電腦能做到這一點。
如果你使用的是 macOS,那麼你的電腦已經在運行Bonjour軟體,它已經具備mDNS功能。此外Ubuntu和Fedora桌面版本也早已相容 mDNS。在其他 Linux 桌面上,你需要找到它們的Zeroconf或 Avahi說明。許多最新的 Linux桌面都預設啟用了這一功能。
但如果你使用的是Windows,則需要使用Bonjour軟體。下麵我們就來看看如何設置。
參考資料
- 軟體測試精品書籍文檔下載持續更新 https://github.com/china-testing/python-testing-examples 請點贊,謝謝!
- 本文涉及的python測試開發庫 謝謝點贊! https://github.com/china-testing/python_cn_resouce
- python精品書籍下載 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- Linux精品書籍下載 https://www.cnblogs.com/testing-/p/17438558.html
- Raspberry Pi(樹莓派4B)4輕鬆入門(上)-安裝 https://www.cnblogs.com/testing-/p/17604049.html
- Raspberry Pi 基金會安裝 Raspberry Pi 操作系統指南:https://www.raspberrypi.org/documentation/installation/installing-images/README.md。
- 《Raspberry Pi By Example》,Ashwin Pajankar和Arush Kakkar,Packt Publishing,其中有一節介紹Raspberry Pi的替代操作系統,以及許多令人興奮的 Raspberry Pi項目。
- Raspberry Pi GPIO 引腳輸出 (https://pinout.xyz/): 它介紹了不同電路板與Raspberry Pi的實際引腳連接方式。
4.3.1 為Microsoft Windows設置Bonjour
如果你安裝了最新版本的Skype或iTunes,你就會擁有這款軟體。你可以使用本指南檢查它是否已經存在並啟用它:https://smallbusiness.chron.com/enable-bonjour-65245.html。
你可以在命令提示符中使用以下命令來檢查它是否已經運行:
C:\Users\danny>ping raspberrypi.local
如果你看到這個,說明你已經安裝了 Bonjour:
64 bytes from 192.168.0.53 (192.168.0.53): icmp_seq=1 ttl=64 time=0.113 ms
64 bytes from 192.168.0.53 (192.168.0.53): icmp_seq=2 ttl=64 time=0.079 ms
如果你看到這個,你需要安裝它:
Ping request could not find host raspberrypi.local. Please check the name and try again.
為此,請瀏覽 Apple Bonjour For Windows 網站 https://support.apple.com/downloads/bonjour_for_windows 並下載,然後安裝 Download Bonjour Print Services for Windows。運行該程式後,Windows 就能按名稱查詢 mDNS 設備了。
4.3.2 測試設置
Raspberry Pi的綠燈應該已經停止閃爍,只能看到紅色的電源指示燈。這表明Pi已完成啟動並連接到網路。
如果一切順利,電腦將顯示已連接到 Pi:
$ ping raspberrypi.local
PING raspberrypi.local (192.168.0.53) 56(84) bytes of data.
64 bytes from 192.168.0.53 (192.168.0.53): icmp_seq=1 ttl=64 time=0.113 ms
64 bytes from 192.168.0.53 (192.168.0.53): icmp_seq=2 ttl=64 time=0.079 ms
64 bytes from 192.168.0.53 (192.168.0.53): icmp_seq=3 ttl=64 time=0.060 ms
64 bytes from 192.168.0.53 (192.168.0.53): icmp_seq=4 ttl=64 time=0.047 ms
4.3.3 故障排除
如果 Raspberry Pi 似乎沒有響應ping操作,你可以採取以下步驟嘗試診斷和補救。嘗試以下步驟:
- 仔細檢查連接。你應該看到綠燈閃爍幾下,紅燈持續亮起。如果沒有,請拔下電源插頭,確保 SD 卡插穩,然後再試一次。
- 在啟動Raspberry Pi時使用Wi-Fi 接入點設置,看看它是否在那裡獲取了IP地址。
- 如果您在Wi-Fi路由器上找到Raspberry Pi,這可能意味著mDNS沒有在您的電腦上正確運行。如果尚未安裝,請重新安裝。在 Windows 上,不同版本的 Bonjour 列印服務、Skype Bonjour 和 iTunes Bonjour 如果安裝在一起可能會發生衝突。請使用 Windows 的添加/刪除功能查看是否有多個版本,並刪除所有 Bonjour 實例,然後重新安裝官方版本。
- 接下來,關閉電源,取出 SD 卡,將其放回電腦,仔細檢查wpa_supplicant.conf文件是否存在,並確保 Wi-Fi 詳情和國家代碼正確無誤。該文件中最常見的錯誤如下:a) Wi-Fi 詳情不正確; b) 缺少引號或缺少/不正確的標點符號;c)國家代碼錯誤或缺失;d)關鍵字大小寫錯誤(關鍵字應小寫,國家代碼應大寫)
- 當 Raspberry Pi 啟動時,SSH 文件會被刪除。如果你確定它存在並已被移除,這意味著 Pi 確實啟動了。
- 最後,您可能需要在連接屏幕和鍵盤的情況下啟動Pi,並嘗試診斷問題。顯示屏會告訴您wpa_supplicant.conf是否存在其他問題或其他問題。使用屏幕文本併在網上搜索答案。我無法在此重現所有這些問題,因為這裡可能出現多種問題。我還建議使用 #raspberrypi 標簽在 Twitter、Stack Overflow 或 Raspberry Pi 論壇(https://www.raspberrypi.org/forums/)上提問。
我們現在已經驗證了 Pi 與網路的連接,並一路排除了各種問題。我們可以通過
ping 找到它。現在我們知道它就在那裡,讓我們連接到它。
4.4 使用PuTTY或SSH連接Raspberry Pi
windows推薦:MobaXterm或git bash, Linux和MacOS可直接使用bash,Linux的PAC也挺不錯。下麵以跨平臺但是不太好用的PuTTY為例:
如果您已經使用SSH客戶端,請註意並非所有Windows命令行SSH客戶端都支持mDNS。
PuTTY 是訪問 SSH 的便捷工具,適用於 Windows、Linux 和 Mac。這些操作系統的安裝信息可在 https://www.ssh.com/ssh/putty/上找到。
從上述鏈接安裝好PuTTY後,讓我們將它連接到 Raspberry Pi。繼續
啟動 PuTTY。你會看到如圖的界面。在 "主機名(或 IP 地址)"框中輸入 raspberrypi.local,然後點擊 "打開 "登錄到你的 Pi:
第一次執行此操作時,PuTTY 會顯示安全警告,要求你添加 Pi 的密鑰(如果你信任它)。單擊 "是";只有當另一個具有相同主機名的設備(例如新的 Raspberry Pi)使用不同的密鑰出現時,PuTTY 才會再次詢問你。當你看到 "Login as"提示時,輸入pi,按Enter,並使用密碼raspberry。現在你將看到類似下圖的內容,表明你已連接到 Pi:
4.5 配置Raspberry Pi操作系統
我們可以使用raspi-config工具來完成許多這些任務,它是一個菜單系統,用於在 Raspberry Pi OS 上執行配置任務。
sudo raspi-config
4.5.1 重新命名你的 Pi
在raspi-config中選擇Network Options(網路選項)-> Hostname(主機名):
4.5.2 更改用戶密碼
在raspi-config頂部菜單中選擇"更改用戶密碼":
4.5.3 重啟並重新連接
使用Tab按鈕轉到"完成"項,然後按 Enter:
下一個屏幕會詢問您是否要重啟Pi。選擇是並按回車鍵:
Raspberry Pi將開始重置,在重置過程中,PuTTY會話將被斷開。等待幾分鐘,Pi上的綠色活動指示燈會閃爍一下,然後穩定下來。PuTTY會告訴你已經失去了與它的連接。此時 Pi已關閉。紅燈將一直亮著,直到你拔掉電源:
4.5.4 更新 Raspberry Pi 上的軟體
$ sudo apt update – y && sudo apt upgrade -y
4.5.5 關閉樹莓派
sudo poweroff
等待綠燈活動停止;PuTTY會檢測到它已斷開連接。現在可以安全斷開電源了。
在不預期的情況下拔掉Raspberry Pi的電源可能會導致文件丟失和 SD卡損壞。您可能會丟失工作並損壞 SD 卡。請務必使用正確的關機程式。
釘釘或微信號: pythontesting 微信公眾號:pythontesting