使用樹莓派遠程控制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卡,故不需要格式化
1.2.2 燒錄樹莓派官方操作系統Raspbian到SD卡里
燒錄成功之后,在SD卡里就會有以下文件:
1.2.3 配置SSH遠程登錄文件和wifi文件
創建兩個記事本txt文件,然后把它們的名字分別改成ssh
和wpa_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盤中
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
1.4.2 VNC Viewer
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
先按鍵盤上的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
開啟功能
打開VNC
、Serial
、Remote GPIO
Camera:攝像頭
SSH:ssh遠程通信與登陸
VNC:VNC遠程桌面登陸
Serial:串口控制
Remote GPIO:遠程GPIO引腳控制
第七行:Advanced 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),可以看到以下頁面
該頁面表示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
把注釋刪掉即可
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 接線

3.4.2 網頁代碼
具體源代碼見附件
使用finalshell將源碼文件上傳到樹莓派的/var/www/html里
在瀏覽器中打開樹莓派ip地址
4. 實現內網穿透
4.1 方法1 通過Sunny-Ngrok 實現內網穿透
國內Ngrok官網:https://www.ngrok.cc/
4.1.1 注冊賬號
4.1.2 開通隧道
4.1.3 在需要映射的機器里建立web服務
這一步我們已經在樹莓派里做過了
4.1.4 下載操作系統對應客戶端
根據自己樹莓派的操作系統下載對應客戶端,我的是Linux ARM版本,然后將下載的文件傳入樹莓派中
4.1.5 啟動映射服務
在樹莓派中進入到客戶端的目錄,執行以下命令 (隧道id在開通隧道后查看隧道管理)
./sunny clientid 隧道id
4.1.6 訪問服務
在瀏覽器中輸入贈送域名即可看到頁面
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
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
之后 sudo reboot 重啟,就可以看到映射服務在樹莓派啟動后也自動啟動了
重啟樹莓派后打開網頁:
4.2 方法2 通過natapp實現內網穿透
NATAPP官網:https://natapp.cn
4.2.1 注冊賬號
4.2.2 開通隧道
點右上角開通隧道,用免費的就可

開通后查看我的隧道
4.2.3 在需要映射的機器里建立web服務
4.2.4 下載操作系統對應客戶端
將客戶端文件傳輸到樹莓派/usr/local中
4.2.5 運行natapp
我們之前將natapp放在 /usr/local下,進入該目錄
cd /usr/local
執行以下命令 ( authtoken在開通隧道后查看我的隧道)
nohup ./natapp -authtoken=7295530337edd260 -log=stdout
4.2.6 訪問網頁
在瀏覽器中輸入上一步所顯示域名即可看到頁面
5. 實驗演示
5.1 打開樹莓派電源,瀏覽器輸入網址,默認關燈
5.2 點擊開啟按鈕
參考文章:
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