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

    文章

    3851

    浏览量

    125637
  • 蓝牙
    +关注

    关注

    112

    文章

    5428

    浏览量

    165646
  • wi-fi
    +关注

    关注

    14

    文章

    1976

    浏览量

    122778
  • 树莓派
    +关注

    关注

    113

    文章

    1639

    浏览量

    104732
收藏 人收藏

    评论

    相关推荐

    Wi-Fi 7与Wi-Fi 6的相关知识科普

    科普:Wi-Fi 7 vs. Wi-Fi 6,青出于蓝
    的头像 发表于 03-12 10:59 207次阅读
    <b class='flag-5'>Wi-Fi</b> 7与<b class='flag-5'>Wi-Fi</b> 6的相关知识科普

    Wi-Fi的诞生与发展

    短距离无线通信技术有Wi-Fi、ZigBee、蓝牙以及Z-Wave,今天我们先揭开Wi-Fi的神秘面纱。Chrent短距离无线通信技术——Wi-Fi过去的20多年,
    的头像 发表于 03-07 08:26 412次阅读
    <b class='flag-5'>Wi-Fi</b>的诞生与发展

    Wi-Fi HaLow和传统Wi-Fi的区别

    Wi-Fi HaLow和传统Wi-Fi的区别  Wi-Fi是一种无线网络技术,可以连接到互联网或局域网,为用户提供无线上网的便利。随着科技的发展和互联网的普及,
    的头像 发表于 02-02 15:28 251次阅读

    康普携手Wi-Fi联盟,RUCKUS Wi-Fi 7系列接入点成Wi-Fi

     康普高级副总裁兼网络、智能蜂窝和安全解决方案总裁Bart Giordano对此表示: “我们非常荣幸能与Wi-Fi Alliance形成长期合作伙伴关系,将我们的RUCKUS Wi-Fi 7 接入点平台作为
    的头像 发表于 01-23 14:10 306次阅读

    BT Wi-Fi模式是否可以通过ModustoolBox对套件进行编程来实现?

    配置用于分析 CYW43439 的 CY8CPROTO-062S2-43439 原型开发套件。 浏览文档我无法弄清楚如何在不同的 Wi-Fi蓝牙模式(电源模式、连接模式等)下配置
    发表于 01-22 06:19

    Wi-Fi联盟已正式确认Wi-Fi 7标准,无线网络新时代来临!Wi-Fi 联盟已开始对 Wi-Fi 7 设备

    无线网络wi-fi
    北京中科同志科技股份有限公司
    发布于 :2024年01月10日 10:43:56

    谷歌优化Wi-Fi密码分享,便捷高效

    此前分享Wi-Fi密码需进入设置栏的“网络与互联网”及“互联网”项目,进入选定Wi-Fi网络设置后选择“分享”。Android 14 QPR
    的头像 发表于 12-13 14:49 445次阅读

    Wi-Fi 6和Wi-Fi 5之间有哪些区别呢?

    Wi-Fi 6和Wi-Fi 5之间有哪些区别呢? Wi-Fi 6和Wi-Fi 5是无线局域网标准的两个版本,它们之间存在很多区别。Wi-Fi
    的头像 发表于 12-09 16:09 1024次阅读

    紫光展锐Wi-Fi 6成功通过Wi-Fi联盟认证

    近日,紫光展锐Wi-Fi 6产品成功通过Wi-Fi联盟 (简称“WFA”) Qualified Solution 认证,并支持Wi-Fi 6 Release 2,标志着紫光展锐自研
    的头像 发表于 11-30 13:30 395次阅读

    2024年将会是Wi-Fi 7元年

    Wi-Fi 7,正式名称为 802.11be,建立在 Wi-Fi 6E 奠定的基础上。这意味着它支持 2.4 GHz、5 GHz 和 6 GHz 无线频段。然而,Wi-Fi 联盟确保 Wi-F
    发表于 11-30 10:10 568次阅读
    2024年将会是<b class='flag-5'>Wi-Fi</b> 7元年

    转载 | WBA“最佳企业Wi-Fi网络”奖首次花落华为Wi-Fi 7,意味着什么?

    近日,国际产业组织无线宽带联盟 WBA(Wireless Broadband Alliance) 颁布2023年WBA行业奖,首次将“最佳企业Wi-Fi网络”大奖颁给了Wi-Fi领导者厂商华为
    的头像 发表于 11-10 18:15 345次阅读
    转载 | WBA“最佳企业<b class='flag-5'>Wi-Fi</b><b class='flag-5'>网络</b>”奖首次花落华为<b class='flag-5'>Wi-Fi</b> 7,意味着什么?

    引领Wi-Fi 7产业发展,华为企业级Wi-Fi 7荣获2023年WBA最佳企业网络大奖

    近日,国际产业组织无线宽带联盟WBA (Wireless Broadband Alliance )颁布2023年WBA行业奖,华为凭借“高品质 AirEngine Wi-Fi 7 网络方案”独家蝉联
    的头像 发表于 11-03 18:20 328次阅读
    引领<b class='flag-5'>Wi-Fi</b> 7产业发展,华为企业级<b class='flag-5'>Wi-Fi</b> 7荣获2023年WBA最佳企业<b class='flag-5'>网络</b>大奖

    Wi-Fi 6E:Wi-Fi的下一个前沿

    电子发烧友网站提供《Wi-Fi 6E:Wi-Fi的下一个前沿.pdf》资料免费下载
    发表于 07-19 16:48 0次下载
    <b class='flag-5'>Wi-Fi</b> 6E:<b class='flag-5'>Wi-Fi</b>的下一个前沿

    如何将ESP-12F作为Wi-Fi模块进行无线传输?

    你好!我正在设计一个基于 Raspberry RP2040 处理器和 ESP-12F 的 PCB 板,用于通过 Wi-Fi 提供物联网服务。我已经按照 创建了 RP2040 连接。现在我应该将
    发表于 06-01 08:59

    Wi-Fi协议中的MIMO技术是什么

      Wi-Fi标准中MIMO代表多输入多输出,是一种无线通信技术。它利用多个天线来发送和接收信号,从而提高了传输速率和信号稳定性。   早期的Wi-Fi标准只支持单用户MIMO技术,可以通过向同一
    发表于 05-05 11:26