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

    文章

    4035

    浏览量

    134475
  • 蓝牙
    +关注

    关注

    119

    文章

    6389

    浏览量

    179287
  • wi-fi
    +关注

    关注

    15

    文章

    2462

    浏览量

    130014
  • 树莓派
    +关注

    关注

    122

    文章

    2082

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    技术资讯 I Wi-Fi 模块设计

    本文要点Wi-Fi模块设计旨在打造一套紧凑且高效的硬件和软件解决方案,使设备能够通过Wi-Fi网络实现通信。Wi-Fi模块设计是一个复杂的过
    的头像 发表于 02-27 17:12 871次阅读
    技术资讯 I <b class='flag-5'>Wi-Fi</b> 模块设计

    ESP32 Wi-Fi 控制 LED 灯的原理

    在智能家居、物联网设备中,用手机通过Wi-Fi控制灯光、风扇或插座,已经非常普遍。而在嵌入式开发中,ESP32是最常用的Wi-Fi模块之一。本文将带你系统理解:ESP32是如何
    的头像 发表于 01-09 19:04 571次阅读
    ESP32 <b class='flag-5'>Wi-Fi</b> 控制 LED 灯的原理

    Wi-Fi:无线连接的全球通用语

    一、什么是Wi-FiWi-FiWi-Fi联盟制造商的商标认证,是基于IEEE 802.11标准的无线局域网技术。它允许电子设备在特定范围内无线接入网络,实现高速数据交换与互联网访问
    发表于 01-07 09:49

    Wi-Fi模块选型指南 | 低功耗蓝牙/Wi-Fi 6模块推荐 | 物联网设备集成攻略

    物联网的快速发展,Wi-Fi技术的成熟的情况下,越来越多的场景需要用到Wi-Fi来无线传输数据,尤其是移动设备中,怎么再设备中选择合适的Wi-Fi模块呢?下面我们来介绍下Wi-Fi模块
    的头像 发表于 12-09 11:27 1319次阅读
    <b class='flag-5'>Wi-Fi</b>模块选型指南 | 低功耗<b class='flag-5'>蓝牙</b>/<b class='flag-5'>Wi-Fi</b> 6模块推荐 | 物联网设备集成攻略

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

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

    Wi-Fi 6将为智能工厂创造更多价值

    Wi-Fi 6基于IEEE 802.11ax标准开发,满足智能工厂应用需求提供了提升网络效率的新特性。与之前的Wi-Fi 5相比,Wi-Fi
    的头像 发表于 09-28 10:37 1075次阅读

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

    ,美国联邦通信委员会(FCC)投票通过将6GHz频谱划为免许可频段供Wi-Fi使用,这标志着Wi-Fi正式进入“三频”时代——除Wi-Fi 6及前代技术使用的2.4GHz和5GHz频段
    发表于 09-19 18:29 2452次阅读
    浅谈<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 1290次阅读
    锐捷<b class='flag-5'>网络</b>:<b class='flag-5'>Wi-Fi</b> 7加速演进,2025年进入快速爬坡期

    科普|公司的Wi-Fi,为什么这么慢?

    大家在公司上班,经常会使用到Wi-Fi。最近这几年,随着时代的发展,高清视频会议等大带宽网络应用越来越普遍。而公司的网络,却非常不给力,频繁卡顿,严重影响使用体验。哪怕IT的同事已经把网络
    的头像 发表于 06-20 06:06 1795次阅读
    科普|公司的<b class='flag-5'>Wi-Fi</b>,为什么这么慢?

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

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

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

    已着手进行Wi-Fi 8 相关技术功能的制定讨论与研究。Wi-Fi 7的下一代自然就是Wi-Fi 8,正如市面上智能手机的命名逻辑一样,Wi-Fi
    发表于 06-13 11:09

    飞易通 蓝牙+Wi-Fi 组合模块:无线连接的专业选择

    在万物互联时代,无线通信模块的性能已经成为智能设备体验的关键因素。飞易通推出的 蓝牙+Wi-Fi 组合协议栈模块方案,正是应对复杂无线环境而生的高性能解决方案。方案基于成熟的芯片平台打造,融合飞易
    的头像 发表于 06-12 17:24 1173次阅读
    飞易通 <b class='flag-5'>蓝牙</b>+<b class='flag-5'>Wi-Fi</b> 组合模块:无线连接的专业选择

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

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

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

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