如果你已經(jīng)使用Raspberry Pi一段時(shí)間了,你可能會(huì)遇到幾個(gè)您需要連接并重新連接Pi的Wi-Fi網(wǎng)絡(luò)的情況。這樣做可能需要您將Pi連接到顯示器,鍵盤(pán)和整個(gè)設(shè)備,或者使用其他設(shè)備直接在存儲(chǔ)卡上進(jìn)行配置。
在本教程中,我想向您展示一種通過(guò)藍(lán)牙僅使用Android手機(jī)為Raspberry Pi配置Wi-Fi網(wǎng)絡(luò)的簡(jiǎn)便方法。
使用此技術(shù),您不再需要擔(dān)心在無(wú)頭Raspberry Pi上切換Wi-Fi網(wǎng)絡(luò)。
必備材料
首先,您需要:
Raspberry Pi 3
Raspbian加載到microSD
Android手機(jī)
APK文件和Python運(yùn)行腳本
在Raspbian上安裝Bluez
在Raspbian終端中逐步輸入以下命令,從安裝Bluez(Python藍(lán)牙庫(kù))開(kāi)始:
$ sudo apt-get install python-bluez
啟動(dòng)藍(lán)牙守護(hù)程序兼容模式,編輯/etc/systemd/system/dbus-org.bluez.service ,輸入以下命令:
$ sudo nano /etc/systemd/system/dbus-org.bluez.service
并修改ExecStart參數(shù)
ExecStart =/usr/lib/bluetooth/bluetoothd -C
加載串口配置文件:
重新啟動(dòng)你的Pi:
$ sudo reboot
將Pi的藍(lán)牙與Android配對(duì)
重啟后,將Pi的藍(lán)牙與Android手機(jī)配對(duì)。
配對(duì)藍(lán)牙:
打開(kāi)手機(jī)的藍(lán)牙,將手機(jī)與Raspberry Pi配對(duì)。接下來(lái),在您的Pi上輸入:
$ bluetoothctl
power on
discoverable on
scan on
您的手機(jī)將顯示在可用設(shè)備列表中。記下您手機(jī)的地址。
信任
對(duì)
要退出藍(lán)牙ctl,請(qǐng)輸入退出命令:
退出
您也可以跳過(guò)以上設(shè)置如果您發(fā)現(xiàn)可以使用Raspbian的UI輕松設(shè)置藍(lán)牙。
在配對(duì)藍(lán)牙后,通過(guò)輸入nano命令并復(fù)制/粘貼源代碼,將Python腳本直接添加到Raspbian中:
$ sudo python run.py
你也可以在這里直接復(fù)制run.py文件。
接下來(lái),您可以運(yùn)行該腳本。但首先使腳本可執(zhí)行:
$ chmod +x run.py
運(yùn)行:
$ sudo 。/run.py
執(zhí)行此操作后,現(xiàn)在需要打開(kāi)Android應(yīng)用程序。為此,請(qǐng)使用此處的.apk文件下載并安裝應(yīng)用程序。
在藍(lán)牙配對(duì)設(shè)備中選擇Raspberry Pi。輸入SSID,PSK并點(diǎn)擊開(kāi)始配置按鈕。在幾秒鐘內(nèi),您的Raspberry Pi的Wi-Fi應(yīng)該連接,如下圖所示。
要在啟動(dòng)時(shí)運(yùn)行此腳本,請(qǐng)編輯/etc/rc.local 并添加:
(睡10;/path/to/script/。/run.py)&
源代碼(run.py)
#!/usr/bin/env python
import os
from bluetooth import *
from wifi import Cell, Scheme
import subprocess
import time
wpa_supplicant_conf = “/etc/wpa_supplicant/wpa_supplicant.conf”
sudo_mode = “sudo ”
def wifi_connect(ssid, psk):
# write wifi config to file
cmd = ‘wpa_passphrase {ssid} {psk} | sudo tee -a {conf} 》 /dev/null’.format(
ssid=str(ssid).replace(‘!’, ‘\!’),
psk=str(psk).replace(‘!’, ‘\!’),
conf=wpa_supplicant_conf
)
cmd_result = “”
cmd_result = os.system(cmd)
print cmd + “ - ” + str(cmd_result)
# reconfigure wifi
cmd = sudo_mode + ‘wpa_cli -i wlan0 reconfigure’
cmd_result = os.system(cmd)
print cmd + “ - ” + str(cmd_result)
time.sleep(10)
cmd = ‘iwconfig wlan0’
cmd_result = os.system(cmd)
print cmd + “ - ” + str(cmd_result)
cmd = ‘ifconfig wlan0’
cmd_result = os.system(cmd)
print cmd + “ - ” + str(cmd_result)
p = subprocess.Popen([‘hostname’, ‘-I’], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out, err = p.communicate()
if out:
ip_address = out
else:
ip_address = “”
return ip_address
def ssid_discovered():
Cells = Cell.all(‘wlan0’)
wifi_info = ‘Found ssid : ’
for current in range(len(Cells)):
wifi_info += Cells[current].ssid + “ ”
wifi_info+=“!”
print wifi_info
return wifi_info
def handle_client(client_sock) :
# get ssid
client_sock.send(ssid_discovered())
print “Waiting for SSID.。.”
ssid = client_sock.recv(1024)
if ssid == ‘’ :
return
print “ssid received”
print ssid
# get psk
client_sock.send(“waiting-psk!”)
print “Waiting for PSK.。.”
psk = client_sock.recv(1024)
if psk == ‘’ :
return
print “psk received”
print psk
ip_address = wifi_connect(ssid, psk)
print “ip address: ” + ip_address
client_sock.send(“ip-address:” + ip_address + “!”)
return
try:
while True:
server_sock=BluetoothSocket( RFCOMM )
server_sock.bind((“”,PORT_ANY))
server_sock.listen(1)
port = server_sock.getsockname()[1]
uuid = “815425a5-bfac-47bf-9321-c5ff980b5e11”
advertise_service( server_sock, “RPi Wifi config”,
service_id = uuid,
service_classes = [ uuid, SERIAL_PORT_CLASS ],
profiles = [ SERIAL_PORT_PROFILE ])
print “Waiting for connection on RFCOMM channel %d” % port
client_sock, client_info = server_sock.accept()
print “Accepted connection from ”, client_info
handle_client(client_sock)
client_sock.close()
server_sock.close()
# finished config
print ‘Finished configuration ’
except (KeyboardInterrupt, SystemExit):
print ‘ Exiting ’
-
Android
+關(guān)注
關(guān)注
12文章
3943瀏覽量
127738 -
藍(lán)牙
+關(guān)注
關(guān)注
114文章
5866瀏覽量
170959 -
wi-fi
+關(guān)注
關(guān)注
14文章
2169瀏覽量
124832 -
樹(shù)莓派
+關(guān)注
關(guān)注
117文章
1710瀏覽量
105805
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論