MicroPython动手做(23)——掌控板之WiFi与蓝牙
2020-05-042.9万
AI 快速预览详细
本文介绍了如何使用MicroPython在掌控板上配置和使用Wi-Fi与蓝牙功能。首先解释了Wi-Fi的基本原理,即基于IEEE 802.11标准的无线局域网技术。接着详细说明了Wi-Fi的主要功能,如无线上网、设备互联等。通过本教程,用户可以学会如何在掌控板上配置Wi-Fi与蓝牙,实现无线上网和设备互联。
|
1、Wi-Fi (无线上网) Wi-Fi(发音: /ˈwaɪfaɪ/,法语发音:/wifi/),在中文里又称作“行动热点”,是Wi-Fi联盟制造商的商标做为产品的品牌认证,是一个创建于IEEE 802.11标准的无线局域网技术。基于两套系统的密切相关,也常有人把Wi-Fi当做IEEE 802.11标准的同义术语。“Wi-Fi”常被写成“WiFi”或“Wifi”,但是它们并没有被Wi-Fi联盟认可。并不是每样匹配IEEE 802.11的产品都申请Wi-Fi联盟的认证,相对地缺少Wi-Fi认证的产品并不一定意味着不兼容Wi-Fi设备。IEEE 802.11的设备已安装在市面上的许多产品,如:个人计算机、游戏机、MP3播放器、智能手机、平板电脑、打印机、笔记本电脑以及其他可以无线上网的周边设备。Wi-Fi联盟成立于1999年,当时的名称叫做Wireless Ethernet Compatibility Alliance(WECA)。在2002年10月,正式改名为Wi-Fi Alliance。 WiFi 主要功能 无线网络上网可以简单的理解为无线上网,几乎所有智能手机、平板电脑和笔记本电脑都支持Wi-Fi上网,是当今使用最广的一种无线网络传输技术。实际上就是把有线网络信号转换成无线信号,就如在开头为大家介绍的一样,使用无线路由器供支持其技术的相关电脑,手机,平板等接收。手机如果有Wi-Fi功能的话,在有Wi-Fi无线信号的时候就可以不通过移动联通的网络上网,省掉了流量费。无线网络无线上网在大城市比较常用,虽然由Wi-Fi技术传输的无线通信质量不是很好,数据安全性能比蓝牙差一些,传输质量也有待改进,但传输速度非常快,可以达到54Mbps,符合个人和社会信息化的需求。Wi-Fi最主要的优势在于不需要布线,可以不受布线条件的限制,因此非常适合移动办公用户的需要,并且由于发射信号功率低于100mw,低于手机发射功率,所以Wi-Fi上网相对也是最安全健康的。但是Wi-Fi信号也是由有线网提供的,比如家里的ADSL,小区宽带等,只要接一个无线路由器,就可以把有线信号转换成Wi-Fi信号。国外很多发达国家城市里到处覆盖着由政府或大公司提供的Wi-Fi信号供居民使用,我国也有许多地方实施”无线城市“工程使这项技术得到推广。在4G牌照没有发放的试点城市,许多地方使用4G转Wi-Fi让市民试用。 ![]() |





#心知天气本地版
[code]#MicroPython动手做(23)——掌控板之WiFi与蓝牙
#心知天气本地版
from mpython import *
import network
import json
import urequests
my_wifi = wifi()
my_wifi.connectWiFi("zh", "zy1567")
def get_seni_weather(_url, _location):
_url = _url + "&location=" + _location.replace(" ", "%20")
response = urequests.get(_url)
json = response.json()
response.close()
return json
w1 = get_seni_weather("https://api.seniverse.com/v3/weather/daily.json?key=SMhSshUxuTL0GLVLS", "ip")
w2 = get_seni_weather("https://api.seniverse.com/v3/life/suggestion.json?key=SMhSshUxuTL0GLVLS", "ip")
oled.fill(0)
oled.DispChar((''.join([str(x) for x in [w1["results"][0]["location"]["name"], " ", w1["results"][0]["daily"][0]["text_day"], " ", w1["results"][0]["daily"][0]["low"], " - ", w1["results"][0]["daily"][0]["high"], " 度"]])), 0, 0, 1)
oled.DispChar((str("穿衣指数 : ") + str(w2["results"][0]["suggestion"]["dressing"]["brief"])), 0, 16, 1)
oled.DispChar((str("运动指数 : ") + str(w2["results"][0]["suggestion"]["sport"]["brief"])), 0, 32, 1)
oled.DispChar((str("紫外线指数 : ") + str(w2["results"][0]["suggestion"]["uv"]["brief"])), 0, 48, 1)
oled.show()[/code]
心知天气
是国内最早创立的商业气象服务公司之一,自创立以来,心知一直在数据层面努力积累,相继与中国气象局气象信息中心、国家预警信息发布中心达成战略合作伙伴关系,成为国内官方气象机构的数据授权商。与此同时,心知还与国内外多家商业公司、高校与科研机构合作,不断夯实数据基础。
于2009年推出的国内首个气象数据API,是心知天气最广受好评的产品。其凭借丰富的天气数据内容,与扎实的IT服务基础,成为企业用户最好的选择。心知天气数据API目前已经为蚂蚁金服、中国平安、美的、戴森、蔚来汽车、声智科技、瑞幸咖啡等数百家国内外知名企业提供企业级高精度气象数据服务,累计提供服务超630亿次。
心知天气插件3.0采用了全新的技术架构,支持全站数据通过插件展示:除天气实况与预报外,还可选择展示分钟级实时天气预警、专业空气质量数据、能见度、气压、湿度、风和云量等。支持专业数据展示,不仅扩充了天气插件的应用场景,更能激发天气插件潜力,提高可玩性。
注册链接 https://www.seniverse.com/
#MicroPython动手做(23)——掌控板之WiFi与蓝牙
#通过音频模块播放网络歌曲(掌控宝内置喇叭)
[code]#MicroPython动手做(23)——掌控板之WiFi与蓝牙
#通过音频模块播放网络歌曲(掌控宝内置喇叭)
from mpython import *
import network
import audio
import time
my_wifi = wifi()
my_wifi.connectWiFi("zh", "zy1567")
audio.player_init()
audio.set_volume(70)
audio.play("http://wiki.labplus.cn/images/4/4e/Music_test.mp3")
while True:
oled.fill(0)
oled.DispChar("播放网络歌曲", 30, 16, 1)
oled.DispChar("春天在哪里", 35, 32, 1)
oled.show()
rgb[1] = (int(0), int(51), int(0))
rgb.write()
time.sleep_ms(1)[/code]
播放网络音频
要播放网络上mp3音频文件,需要知道音频的URL地址。目前,大部分的音乐网受版权保护,并不直接提供音乐的URL,你可以通过一些插件爬取音频的URL地址。
注解
掌控板需要确保连接网络通畅。URL必须是完整的网络地址,否则无法解析。音频解码功能使用到 audio 模块的 audio.play(url) 函数, url 参数可以为音源的本地文件系统的路径或网络URL地址。
#MicroPython动手做(23)——掌控板之WiFi与蓝牙
#网络同步时区数码管时钟
[code]#MicroPython动手做(23)——掌控板之WiFi与蓝牙
#网络同步时区数码管时钟
from mpython import *
import network
my_wifi = wifi()
my_wifi.connectWiFi('zh', 'zy1567')
import ntptime
import framebuf
import font.digiface_44
import time
import font.digiface_21
def display_font(_font, _str, _x, _y, _wrap, _z=0):
_start = _x
for _c in _str:
_d = _font.get_ch(_c)
if _wrap and _x > 128 - _d[2]: _x = _start; _y += _d[1]
if _c == '1' and _z > 0: oled.fill_rect(_x, _y, _d[2], _d[1], 0)
oled.blit(framebuf.FrameBuffer(bytearray(_d[0]), _d[2], _d[1],
framebuf.MONO_HLSB), (_x+int(_d[2]/_z)) if _c=='1' and _z>0 else _x, _y)
_x += _d[2]
ntptime.settime(8, "time.windows.com")
while True:
oled.fill(0)
display_font(font.digiface_44, (''.join([str(x) for x in [time.localtime()[3] // 10, time.localtime()[3] % 10, ':', time.localtime()[4] // 10, time.localtime()[4] % 10]])), 0, 0, False, 2)
display_font(font.digiface_21, (str(time.localtime()[5] // 10) + str(time.localtime()[5] % 10)), 103, 45, False, 2)
oled.show()[/code]
//测试掌控板蓝牙功能
[code]//MicroPython动手做(23)——掌控板之WiFi与蓝牙
//测试掌控板蓝牙功能
#include
#include "BluetoothSerial.h"
// 函数声明
void onButtonAPressed();
// 创建对象
BluetoothSerial SerialBT;
// 主程序开始
void setup() {
Serial.begin(9600);
mPython.begin();
SerialBT.begin("mPython");
buttonA.setPressedCallback(onButtonAPressed);
}
void loop() {
if ((SerialBT.available())) {
Serial.println((SerialBT.read()));
}
}
// 事件回调函数
void onButtonAPressed() {
SerialBT.write(1);
}[/code]
打开Mind+——扩展——用户库——添加掌控板蓝牙模块
#MicroPython动手做(23)——掌控板之WiFi与蓝牙
#互联网授时的模拟时钟
[code]#MicroPython动手做(23)——掌控板之WiFi与蓝牙
#互联网授时的模拟时钟
from mpython import *
import time
import network
my_wifi = wifi()
my_wifi.connectWiFi('zh', 'zy1567')
import ntptime
from machine import Timer
def timer1_tick(_):
eagler8.settime()
eagler8.drawClock()
oled.show()
eagler8.clear()
tim1 = Timer(1)
eagler8 = Clock(oled, 64, 32, 30)
rgb.fill( (0, 0, 0) )
rgb.write()
time.sleep_ms(1)
ntptime.settime(8, "time.windows.com")
tim1.init(period=1000, mode=Timer.PERIODIC, callback=timer1_tick)
while True:
rgb.fill((int(0), int(51), int(0)))
rgb.write()
time.sleep_ms(1)
time.sleep(1)
rgb.fill((int(0), int(0), int(0)))
rgb.write()
time.sleep_ms(1)
time.sleep(1)[/code]模拟时钟——UI类指令,提供模拟钟表显示功能
class UI.Clock(x, y, radius)
描述: 构建对象
参数:
x、y - 左上角作为起点坐标
radius - 钟表半径
UI.settime()
描述: 获取本地时间并设置模拟钟表时间
UI.drawClock()
描述: 绘制钟表
UI.clear()
描述: 清除钟表