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

    文章

    3927

    浏览量

    127164
  • 蓝牙
    +关注

    关注

    114

    文章

    5776

    浏览量

    169880
  • wi-fi
    +关注

    关注

    14

    文章

    2115

    浏览量

    124344
  • 树莓派
    +关注

    关注

    116

    文章

    1699

    浏览量

    105541
收藏 人收藏

    评论

    相关推荐

    Wi-Fi蓝牙的波特率对比分析

    Wi-Fi蓝牙是两种不同的无线通信技术,它们在波特率(或称数据传输速率)方面存在显著的差异。以下是对Wi-Fi蓝牙波特率的对比分析: 一、Wi-
    的头像 发表于 11-22 09:54 116次阅读

    Wi-Fi 7与Wi-Fi 6E有什么区别

    也许很多人还在考虑是否要将使用的Wi-Fi设备升级到Wi-Fi 6或Wi-Fi 6E,而这些标准的继任者却已经开始“登堂入室”了。Wi-Fi 7是新一代
    的头像 发表于 11-07 11:38 549次阅读

    IR900 Wi-Fi联网的配置过程

    例如上图,IR900 通过Wi-Fi接口连接公司办公无线网络 inhand-office (SSID无线网络的名称) 首先将
    发表于 07-25 06:09

    AT 0.60.0.0看不到我的Wi-Fi网络,为什么?

    我对 AT 0.60.0.0 有一点问题。当我通过 AT CWLAP 显示所有网络时,我看不到我的路由器 AP 网络,但我可以连接到它。当我在智能手机中打开
    发表于 07-18 08:31

    AIROC™ Wi-Fi蓝牙组合连接掉线的原因?怎么解决?

    我最近购买了一台配备 AIROC™ Wi-Fi蓝牙组合模块的笔记本电脑。 大多数时候,Wi-Fi 连接都能正常使用图书馆创世纪网站ePUB 转换工具、在线书店和学术出版物,但我注意到蓝牙
    发表于 05-24 07:48

    华为获得全球首个国际Wi-Fi联盟WFA企业级Wi-Fi 7认证!

    Wi-Fi联盟已发布Wi-Fi 7认证标准,华为是第一批送测厂商,获得业界首个企业级Wi-Fi 7 的Wi-Fi联盟官方认证。
    的头像 发表于 04-28 10:17 659次阅读
    华为获得全球首个国际<b class='flag-5'>Wi-Fi</b>联盟WFA企业级<b class='flag-5'>Wi-Fi</b> 7认证!

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

    科普:Wi-Fi 7 vs. Wi-Fi 6,青出于蓝
    的头像 发表于 03-12 10:59 702次阅读
    <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 1143次阅读
    <b class='flag-5'>Wi-Fi</b>的诞生与发展

    WI-FI基础知识及飞易通SOC模块

    什么是Wi-Fi/What is Wi-Fi,首先Wi-Fi又称“无线热点”或“无线网络”,是Wi-Fi联盟的商标,一个基于IEEE 802
    的头像 发表于 03-01 15:01 684次阅读
    <b class='flag-5'>WI-FI</b>基础知识及飞易通SOC模块

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

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

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

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

    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 795次阅读

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

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