0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样通过蓝牙仅使用Android手机为树莓派配置Wi-Fi网络

454398 来源:工程师吴畏 2019-07-26 15:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

如果你已经使用Raspberry Pi一段时间了,你可能会遇到几个您需要连接并重新连接Pi的Wi-Fi网络的情况。这样做可能需要您将Pi连接到显示器,键盘和整个设备,或者使用其他设备直接在存储卡上进行配置。

在本教程中,我想向您展示一种通过蓝牙仅使用Android手机为Raspberry Pi配置Wi-Fi网络的简便方法。

使用此技术,您不再需要担心在无头Raspberry Pi上切换Wi-Fi网络。

必备材料

首先,您需要:

Raspberry Pi 3

Raspbian加载到microSD

Android手机

APK文件和Python运行脚本

在Raspbian上安装Bluez

在Raspbian终端中逐步输入以下命令,从安装Bluez(Python蓝牙库)开始:

$ sudo apt-get install python-bluez

怎样通过蓝牙仅使用Android手机为树莓派配置Wi-Fi网络

启动蓝牙守护程序兼容模式,编辑/etc/systemd/system/dbus-org.bluez.service ,输入以下命令:

$ sudo nano /etc/systemd/system/dbus-org.bluez.service

并修改ExecStart参数

ExecStart =/usr/lib/bluetooth/bluetoothd -C

加载串口配置文件:

$ sudo sdptool add SP

重新启动你的Pi:

$ sudo reboot

将Pi的蓝牙与Android配对

重启后,将Pi的蓝牙与Android手机配对。

配对蓝牙:

打开手机的蓝牙,将手机与Raspberry Pi配对。接下来,在您的Pi上输入:

$ bluetoothctl

power on

discoverable on

scan on

您的手机将显示在可用设备列表中。记下您手机的地址。

信任

要退出蓝牙ctl,请输入退出命令:

退出

您也可以跳过以上设置如果您发现可以使用Raspbian的UI轻松设置蓝牙。

在配对蓝牙后,通过输入nano命令并复制/粘贴源代码,将Python脚本直接添加到Raspbian中:

$ sudo python run.py

你也可以在这里直接复制run.py文件。

接下来,您可以运行该脚本。但首先使脚本可执行:

$ chmod +x run.py

运行:

$ sudo 。/run.py

执行此操作后,现在需要打开Android应用程序。为此,请使用此处的.apk文件下载并安装应用程序。

在蓝牙配对设备中选择Raspberry Pi。输入SSID,PSK并点击开始配置按钮。在几秒钟内,您的Raspberry Pi的Wi-Fi应该连接,如下图所示。

要在启动时运行此脚本,请编辑/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
    +关注

    关注

    12

    文章

    3986

    浏览量

    133074
  • 蓝牙
    +关注

    关注

    119

    文章

    6222

    浏览量

    177556
  • wi-fi
    +关注

    关注

    15

    文章

    2380

    浏览量

    128905
  • 树莓派
    +关注

    关注

    122

    文章

    2069

    浏览量

    109713
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    赋予白色家电新智能!增添Wi-Fi 6、低功耗蓝牙和Matter连接

    Wi-Fi助力实现高带宽和对时间敏感的云端交互,而低功耗蓝牙提供低功耗、短距离的本地通信,用于简化设备入网和控制。在单一设备中同时集成Wi-Fi和低功耗蓝牙
    的头像 发表于 11-12 15:55 162次阅读
    赋予白色家电新智能!增添<b class='flag-5'>Wi-Fi</b> 6、低功耗<b class='flag-5'>蓝牙</b>和Matter连接

    浅谈Wi-Fi 6E与Wi-Fi 7的关键器件——BAW滤波器新技术

    ,美国联邦通信委员会(FCC)投票通过将6GHz频谱划为免许可频段供Wi-Fi使用,这标志着Wi-Fi正式进入“三频”时代——除Wi-Fi 6及前代技术使用的2.4GHz和5GHz频段
    发表于 09-19 18:29 1326次阅读
    浅谈<b class='flag-5'>Wi-Fi</b> 6E与<b class='flag-5'>Wi-Fi</b> 7的关键器件——BAW滤波器新技术

    基于 SSID 的 Wi-Fi 定位:与其他定位服务的性能比较

    是一种著名的无线网络技术,用于设备的局域网和互联网接入。Wi-Fi 通过 Wi-Fi 网络
    发表于 08-31 21:01

    锐捷网络Wi-Fi 7加速演进,2025年进入快速爬坡期

    随着4K/8K、VR/AR、远程医疗、工业物联网等新型应用的不断涌现,家庭、企业和工业环境对Wi-Fi网络提出了更高要求。在此驱动下,行业正向Wi-Fi 7加速演进,而2025年成
    的头像 发表于 08-01 10:29 844次阅读
    锐捷<b class='flag-5'>网络</b>:<b class='flag-5'>Wi-Fi</b> 7加速演进,2025年进入快速爬坡期

    Wi-Fi 8:开启极高可靠性 (UHR) 连接的新纪元——2

    Aggregation)。由于所有操作均可跨频段与频道进行,因此显著提升了整个网络系统的数据传输速度,并有效降低了多用户同时在线传输时所产生的延迟问题。图3展示了Wi-Fi 7中 MLO技术如何通过不同频段实现同时传输
    发表于 06-13 11:15

    DA16600MOD超低功耗Wi-Fi低功耗蓝牙组合模块数据手册

    SoC 集成在单个模块上。 二者合二一,方便快捷,可实现较长的电池寿命和较低的功耗。作为单一集成系统,Wi-Fi/Bluetooth LE 共存以及通过蓝牙 LE 连接
    的头像 发表于 05-25 16:10 710次阅读
    DA16600MOD超低功耗<b class='flag-5'>Wi-Fi</b>低功耗<b class='flag-5'>蓝牙</b>组合模块数据手册

    搭建树莓网络监控系统:顶级工具与技术终极指南!

    安全。安装树莓网络监控系统有诸多益处。树莓具备以太网接口,还内置了Wi-Fi功能,拥有足够的
    的头像 发表于 05-14 15:32 1215次阅读
    搭建<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>网络</b>监控系统:顶级工具与技术终极指南!

    基于 Wi-Fi 的定位服务

    以下捕获使用 location_wifi_get 函数请求 Wi-Fi 定位服务。该事件的总功耗 125.85mC,日志显示精确度 30.0m。 Got location: method
    发表于 04-17 15:16

    nRF Cloud Wi-Fi 定位服务

    、Predictive-GPS、Single-Cell、Multi-Cell 和 Wi-Fi 定位。通过利用 nRF Cloud 的优化定位算法,基于 Nordic SoC 和 模组的产品可在定位用例
    发表于 04-17 15:07

    Wi-Fi 定位服务

    Wi-Fi 是一种著名的无线网络技术,用于设备的局域网和互联网接入。Wi-Fi 通过 Wi-Fi 网络
    发表于 04-17 15:01

    推出了期待已久的 nRF7002 低功耗Wi-Fi 6

    支持长寿命的电池供电Wi-Fi操作。 借助 Wi-Fi 6,我们将支持用于 Matter 的所有无线协议、用于调试的蓝牙 LE、用于低功耗mesh网络的 Thread 以及用于高吞吐量
    发表于 03-26 11:00

    nRF7002是我们独特的Wi-Fi产品组合中的第一款设备

    ,包括进一步提高效率,以支持长寿命的电池供电Wi-Fi操作。 借助 Wi-Fi 6,我们将支持用于 Matter 的所有无线协议、用于调试的蓝牙 LE、用于低功耗mesh网络的 Thr
    发表于 03-10 15:42

    2025,国产手机Wi-Fi FEM元年

    转载自钟林谈芯 Wi-Fi FEM的故事我讲过很多,新的一年,新的故事。 2025年,将迎来国产手机Wi-Fi FEM元年,Wi-Fi FEM将焕发出新的生机活力。唯捷创芯、康希通信、
    的头像 发表于 01-09 16:48 1319次阅读
    2025,国产<b class='flag-5'>手机</b><b class='flag-5'>Wi-Fi</b> FEM元年

    华为海思正式进入Wi-Fi FEM赛道?

    大家都知道了,2018年11 月离开锐迪科(RDA),前往福建晋江创立三伍微,专注于Wi-Fi射频前端芯片,从路由器Wi-Fi FEM,到手机Wi-Fi FEM,再到IoT FEM全覆
    发表于 12-11 17:42

    Wi-Fi 4到Wi-Fi 7:网速飙升40倍的无线革命

    1 Wi-Fi技术的快速发展 每一代新的Wi-Fi协议发布,都会带来更高的无线速率。   从Wi-Fi 4到Wi-Fi 7:无线网络技术显著
    的头像 发表于 12-09 10:10 1612次阅读
    从<b class='flag-5'>Wi-Fi</b> 4到<b class='flag-5'>Wi-Fi</b> 7:网速飙升40倍的无线革命