使用樹莓派遠程控制Led燈


使用樹莓派遠程控制Led燈

前言:本人初次接觸樹莓派,是小白一名,找了各路視頻來學習樹莓派
樹莓派的安裝是看到這位大佬的視頻:
https://www.bilibili.com/video/BV1ab411x7aC
本次項目使用的源碼是這位大佬的:
https://www.bilibili.com/video/BV1nt411h7dw
其他參考的相關博客已在文章末尾列出

1. 樹莓派的安裝與遠程登陸

1.1 實驗所用硬件

樹莓派3B、16GB SD卡一個、讀卡器一個、樹莓派電源線、LED燈若干、杜邦線若干

1.2 將16GB SD卡通過讀卡器插入電腦

1.2.1 格式化SD卡

如果是之前用過的SD卡,需要用SD Formatter工具格式化這張SD卡,我們用的SD卡是新SD卡,故不需要格式化

01格式化SD卡.PNG

1.2.2 燒錄樹莓派官方操作系統Raspbian到SD卡里

燒錄樹莓派操作系統鏡像

燒錄成功之后,在SD卡里就會有以下文件:

燒錄成功

1.2.3 配置SSH遠程登錄文件和wifi文件

創建兩個記事本txt文件,然后把它們的名字分別改成sshwpa_supplicant.conf(注意要把.txt擴展名刪掉)

創建ssh文件和wpa_supplicant.conf空白文件

用文本編輯器Notepad++打開wpa_supplicant.conf,輸入以下配置:

country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
	ssid="tsccg"
	psk="123456"
	priority=5
}

將ssh空白文件和wpa_supplicant.conf文件放入boot盤中

將ssh文件和wpa_supplicant.conf文件放入boot盤中

1.3 樹莓派開機及獲取ip地址

1.3.1 開機

拔出SD卡,插入樹莓派,插好電源線,通電

樹莓派上的紅燈常亮,表示通電。綠燈間歇性亮,表示讀寫SD卡。

1.3.2 獲取樹莓派ip地址

將樹莓派用網線連接到與筆記本電腦同一個網絡的路由器,查看wifi的路由器后台配置界面,找到樹莓派,查看ip地址

1.4 遠程登錄樹莓派

使用遠程ssh工具FinalShell和遠程桌面工具VNC Viewer遠程登陸樹莓派

樹莓派初始用戶名為pi,密碼是raspberry

1.4.1 FinalShell

02使用finalshell登陸樹莓派01.PNG

03使用finalshell登陸樹莓派成功.PNG

1.4.2 VNC Viewer

04使用VNC登陸配置.PNG

05使用VNC登陸成功.PNG

2. 初始化樹莓派配置

2.1 換源

2.1.1 給Raspbian的包管理器apt-get換源

在樹莓派的命令行界面輸入

sudo nano /etc/apt/sources.list

使用鍵盤方向鍵控制,在第一行開頭加一個#,把下面的內容拷貝到最后一行之后,如圖中的效果:

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

06樹莓派換源.PNG

先按鍵盤上的ctrl+o,再按回車保存,再按ctrl+x退出nano編輯器回到命令行界面。再輸入以下命令更新到清華大學鏡像源最新的軟件列表。

sudo apt-get update 

這個命令,會訪問源列表里的每個網址,並讀取軟件列表,然后保存在樹莓派本地。

2.1.2 給Python的第三方模塊安裝工具pip換源

配置換源腳本

在樹莓派的命令行中依次輸入運行以下三個命令

sudo mkdir ~/.pip
cd .pip
sudo nano pip.conf

在打開的文件中輸入以下內容:

[global]
timeout = 10
index-url =  http://mirrors.aliyun.com/pypi/simple/
extra-index-url= http://pypi.douban.com/simple/
[install]
trusted-host=
    mirrors.aliyun.com
    pypi.douban.com

先按鍵盤上的ctrl+o,再按回車保存,再按ctrl+x退出nano編輯器回到命令行界面。

2.2樹莓派內部配置

打開樹莓派命令行界面輸入命令,進入樹莓派配置界面。

sudo raspi-config

樹莓派配置界面

用上下鍵和左右鍵切換光標位置。

第一行:Change User Password修改密碼

按照里面的要求修改成自己的密碼即可。默認用戶名為pi,密碼為raspberry

這個密碼會用於遠程ssh登陸、VNC遠程桌面及需要管理員root權限時輸入。

第五行:Interfacing Options開啟功能

Interfacing Options

打開VNCSerialRemote GPIO

Camera:攝像頭

SSH:ssh遠程通信與登陸

VNC:VNC遠程桌面登陸

Serial:串口控制

Remote GPIO:遠程GPIO引腳控制

第七行:Advanced Options高級設置

Adcanved Options

  • 選擇Expand Filesystem,將根目錄擴展到這個SD卡,充分利用SD卡的存儲空間

  • 選擇Overscan,在整個屏幕上顯示

  • 選擇Audio,選擇Force 3.5mm('headphone' jack),樹莓派的聲音會從耳機孔輸出

  • 選擇Resolution,選擇默認設置,自動根據顯示屏調整分辨率

  • 選擇Pixel Doubling,增加桌面顯示畫質

    選擇Finish,會跳出對話框問是否重新啟動,可以直接回車確定重啟,也可以等下次啟動時候生效。

3. 使用 web 控制樹莓派 GPIO 引腳

3.1 web 環境安裝

3.1.1 部署Apache服務器

執行以下命令安裝Apache2

sudo apt-get install apache2 -y

測試web服務器

默認情況下,Apache將一個測試html文件index.html放在web文件夾/var/www/html中,在raspberry的瀏覽器中輸入http://127.0.0.1/,或者在另一台電腦的瀏覽器中輸入http://192.168.43.36/(自己樹莓派的IP),可以看到以下頁面

img

該頁面表示Apache正常工作了。

開啟服務並設置為開機啟動

systemctl start apache2
systemctl enable apache2

部署自己的網站只要將網站文件放到/var/www/html文件夾中就可以了。

3.1.2 安裝php

要允許Apache服務器處理PHP文件,需要安裝最新版本的PHP和Apache的PHP模塊。輸入以下命令來安裝這些:

sudo apt-get install php libapache2-mod-php -y

3.2 ftp 文件上傳、下載服務器安裝

安裝 vsftpd 服務

sudo apt-get install vsftpd

開啟服務並設置為開機啟動

systemctl start vsftpd
systemctl enable vsftpd

修改默認配置

安裝vsftpd后,它的配置文件里的寫入權限默認是開着的,但是被注釋了

vim /etc/vsftpd.conf

02修改vsftpd配置文件.PNG

把注釋刪掉即可

3.3 GPIO 庫安裝

3.3.1 樹莓派中安裝wiringPi

cd /home/pi/Downloads
wget http://project-downloads.drogon.net/files/wiringPi.tgz
tar xf wiringPi.tgz
cd wiringPi/wiringPi/
make
make install

使用wiringPi的程序進行測試編譯時出現了如下問題:

/usr/lib/gcc/arm-linux-gnueabi/4.6/../../../libwiringPi.so:undefined reference to `i2c_smbus_write_byte'
/usr/lib/gcc/arm-linux-gnueabi/4.6/../../../libwiringPi.so:undefined reference to `i2c_smbus_read_byte'
/usr/lib/gcc/arm-linux-gnueabi/4.6/../../../libwiringPi.so:undefined reference to `i2c_smbus_write_byte_data'
/usr/lib/gcc/arm-linux-gnueabi/4.6/../../../libwiringPi.so:undefined reference to `i2c_smbus_write_word_data'
/usr/lib/gcc/arm-linux-gnueabi/4.6/../../../libwiringPi.so:undefined reference to `i2c_smbus_read_word_data'
/usr/lib/gcc/arm-linux-gnueabi/4.6/../../../libwiringPi.so:undefined reference to `i2c_smbus_read_byte_data'
collect2: ld returned 1 exit status

網上搜索是缺少依賴,

執行命令 sudo apt-get install libi2c-dev

然后重新編譯就可以了。

make clean
sudo make uninstall
make
sudo make install

之后就能正常編譯了

3.4 實際接線與網頁代碼

3.4.1 接線

08樹莓派實際接線.png

09實際接線.png

3.4.2 網頁代碼

網頁

具體源代碼見附件

使用finalshell將源碼文件上傳到樹莓派的/var/www/html里

10上傳網頁文件.PNG

在瀏覽器中打開樹莓派ip地址

11本地ip打開網頁.PNG

4. 實現內網穿透

4.1 方法1 通過Sunny-Ngrok 實現內網穿透

國內Ngrok官網:https://www.ngrok.cc/

4.1.1 注冊賬號

4.1.2 開通隧道

12開通隧道.PNG

4.1.3 在需要映射的機器里建立web服務

這一步我們已經在樹莓派里做過了

4.1.4 下載操作系統對應客戶端

根據自己樹莓派的操作系統下載對應客戶端,我的是Linux ARM版本,然后將下載的文件傳入樹莓派中

4.1.5 啟動映射服務

在樹莓派中進入到客戶端的目錄,執行以下命令 (隧道id在開通隧道后查看隧道管理)

./sunny clientid 隧道id

13開通隧道后.PNG

4.1.6 訪問服務

在瀏覽器中輸入贈送域名即可看到頁面

16域名打開網頁.PNG

4.1.7 設置開機自啟動映射服務

4.1.7.1 賦予權限

進入客戶端執行文件所在目錄,給予可執行權限。

cd /home/pi
sudo chmod +x /home/pi/sunny
4.1.7.2 編寫啟動腳本

編寫映射腳本

nano nwct.sh
./sunny clientid f9b6d7e301d74857

14自啟動腳本01.PNG

4.1.7.3 設置開機自動運行shell腳本

在 /home/pi/.config 下創建一個文件夾,名稱為 autostart,並在該文件夾下創建一個lightShell.desktop文件,文件內容如下:

[Desktop Entry]
Name=lightShell
Comment=My light Program
Exec=/home/pi/nwct.sh start
Icon=/home/pi/Pictures/ledon.png
Terminal=false
MultipleArgs=false
Type=Application
Categories=Application;Development;
StartupNotify=true

15自啟動腳本02.PNG

之后 sudo reboot 重啟,就可以看到映射服務在樹莓派啟動后也自動啟動了

重啟樹莓派后打開網頁:

16域名打開網頁.PNG

4.2 方法2 通過natapp實現內網穿透

NATAPP官網:https://natapp.cn

4.2.1 注冊賬號

4.2.2 開通隧道

點右上角開通隧道,用免費的就可

12開通隧道.PNG

開通后查看我的隧道

13開通隧道后.PNG

4.2.3 在需要映射的機器里建立web服務

4.2.4 下載操作系統對應客戶端

14下載natapp.png

將客戶端文件傳輸到樹莓派/usr/local中

15傳輸客戶端文件到樹莓派.PNG

4.2.5 運行natapp

我們之前將natapp放在 /usr/local下,進入該目錄

cd /usr/local

執行以下命令 ( authtoken在開通隧道后查看我的隧道)

nohup ./natapp -authtoken=7295530337edd260 -log=stdout

16運行natapp01.PNG

17運行natapp02.PNG

4.2.6 訪問網頁

在瀏覽器中輸入上一步所顯示域名即可看到頁面

18根據域名打開網頁.PNG

5. 實驗演示

5.1 打開樹莓派電源,瀏覽器輸入網址,默認關燈

14演示_關燈.PNG

5.2 點擊開啟按鈕

15演示_開燈.PNG

參考文章:

https://github.com/TommyZihao/ZihaoTutorialOfRaspberryPi

https://www.makedream.site/index.php/archives/49/

https://www.jianshu.com/p/a2edbd027120

https://www.cnblogs.com/jakeyChen/p/9295650.html

https://blog.csdn.net/scottly1/article/details/26881571

https://my.oschina.net/LfYtbCK2j/blog/3230705


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM