4586|31

3386

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

MicroPython动手做(22)——掌控板之无线广播 [复制链接]

 
 
本帖最后由 eagler8 于 2020-5-2 05:29 编辑

1、掌控板无线广播主要函数

radio 模块提供无线广播功能,支持13 个频道 (Channel),在相同的频道内能接收到成员发出的广播消息,适合10米范围内的多板组网的通讯。

 

radio.on()
描述: 开启无线功能
 
radio.off()
描述: 关闭无线功能

 

radio.config(channel)
描述: 配置无线参数
 
参数:
channel (int) - 无线频(通)道,范围1~13

 

radio.receive()
描述: 接收无线广播消息,消息以字符串形式返回。最大可接收250字节数据。如果没有接收到消息,则返回 None 。当 receive 内参数为 True ,即 receive(True) ,返回 (msg,mac) 的二元组。默认缺省 receive(False) ,即只返回 msg
 
radio.receive_bytes()
描述: 接收无线广播消息,消息以字节形式返回。其他同 radio.receive() 相同

 

radio.send()
描述: 发送无线广播消息,发送数据类型为字符串。当发送成功后返回 True,否则返回 False
 
radio.send_bytes()
描述: 发送无线广播消息,发送数据类型为字节。当发送成功后返回 True,否则返回 False

 



此内容由EEWORLD论坛网友eagler8原创,如需转载或用于商业用途需征得作者同意并注明出处

最新回复

赞!!!楼主这个系列帖子快更完了吗?想等你更新完成后给你这个系列弄成干货哦   详情 回复 发表于 2020-5-2 16:20
点赞 关注
 
 

回复
举报

3386

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 

2、无线广播的简单实验(需要二块掌控板)

 

#MicroPython动手做(22)——掌控板之无线广播
#无线广播发射端程序

 

#MicroPython动手做(22)——掌控板之无线广播
#无线广播发射端程序

from mpython import *

import time

import radio
oled.fill(0)
oled.DispChar('        13频道广播哦', 0, 16, 1)
oled.show()
rgb[1] = (int(51), int(204), int(0))
rgb.write()
time.sleep_ms(1)
while True:
    radio.on()
    radio.config(channel=13)
    radio.send('msg')

 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 

#MicroPython动手做(22)——掌控板之无线广播
#无线广播接收端程序

 

#MicroPython动手做(22)——掌控板之无线广播
#无线广播接收端程序

import radio
from mpython import *
import time
from machine import Timer
import ubinascii

def radio_recv(_msg):
    rgb[1] = (int(255), int(0), int(0))
    rgb.write()
    time.sleep_ms(1)
    oled.fill(0)
    oled.DispChar("       收到13频道广播", 0, 16, 1)
    oled.show()

_radio_msg_list = []
def radio_callback(_msg):
    global _radio_msg_list
    try: radio_recv(_msg)
    except: pass
    if _msg in _radio_msg_list:
        eval('radio_recv_' + bytes.decode(ubinascii.hexlify(_msg)) + '()')

tim13 = Timer(13)

def timer13_tick(_):
    _msg = radio.receive()
    if not _msg: return
    radio_callback(_msg)

tim13.init(period=20, mode=Timer.PERIODIC, callback=timer13_tick)


while True:
    radio.on()
    radio.config(channel=13)
    oled.fill(0)
    oled.DispChar("            接收状态", 0, 16, 1)
    oled.show()
    rgb.fill( (0, 0, 0) )
    rgb.write()
    time.sleep_ms(1)

 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

4
 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

5
 

无线广播发射端程序(mPython 图形编程)

 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

6
 

无线广播接收端程序(mPthon X 图形编程)

 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

7
 

3、AB键组网控制RGB灯

 

#MicroPython动手做(22)——掌控板之无线广播
# AB键组网控制RGB灯——控制端

from mpython import *

import time

import radio
rgb[1] = (int(0), int(102), int(0))
rgb.write()
time.sleep_ms(1)
while True:
    radio.on()
    radio.config(channel=6)
    if button_a.value() == 0:
        radio.send('on')
    if button_b.value() == 0:
        radio.send('off')

 

 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

8
 

掌控板之无线广播工作时(发射)的串口信息如下

 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

9
 

无线广播发射端程序(mPython 图形编程)

 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

10
 

#MicroPython动手做(22)——掌控板之无线广播
# AB键组网控制RGB灯——接收端

 

#MicroPython动手做(22)——掌控板之无线广播
# AB键组网控制RGB灯——接收端

import radio
from mpython import *
import time


while True:
    radio.on()
    radio.config(channel=6)
    rgb.fill( (0, 0, 0) )
    rgb.write()
    time.sleep_ms(1)
    if radio.receive():
        rgb.fill((int(102), int(0), int(0)))
        rgb.write()
        time.sleep_ms(1)
    else:
        rgb[1] = (int(0), int(102), int(0))
        rgb.write()
        time.sleep_ms(1)

 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

11
 

无线广播接收端程序(mPthon X 图形编程)

 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

12
 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

13
 

4、A键打开绿灯,B键打开红灯

 

#MicroPython动手做(22)——掌控板之无线广播
#A键打开绿灯,B键打开红灯——控制端

from mpython import *

import time

import radio
rgb[1] = (int(0), int(102), int(0))
rgb.write()
time.sleep_ms(1)
while True:
    radio.on()
    radio.config(channel=6)
    if button_a.value() == 0:
        radio.send('on')
    if button_b.value() == 0:
        radio.send('off')

 

 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

14
 

无线广播发射端程序(mPython 图形编程)

 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

15
 

#MicroPython动手做(22)——掌控板之无线广播
#A键打开绿灯,B键打开红灯——接收端

 

#MicroPython动手做(22)——掌控板之无线广播
#A键打开绿灯,B键打开红灯——接收端

import radio
from mpython import *
import time
import music


while True:
    radio.on()
    radio.config(channel=6)
    oled.fill(0)
    oled.show()
    rgb.fill( (0, 0, 0) )
    rgb.write()
    time.sleep_ms(1)
    if radio.receive() == "on":
        rgb.fill((int(0), int(102), int(0)))
        rgb.write()
        time.sleep_ms(1)
        music.pitch(440, 500)
        oled.fill(0)
        oled.DispChar("on 绿灯", 40, 22, 1)
        oled.show()
        time.sleep(1)
    if radio.receive() == "off":
        rgb.fill((int(102), int(0), int(0)))
        rgb.write()
        time.sleep_ms(1)
        music.pitch(294, 500)
        oled.fill(0)
        oled.DispChar("off 红灯", 40, 22, 1)
        oled.show()
        time.sleep(1)

 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

16
 

无线广播接收端程序(mPthon X 图形编程)

 

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

17
 

视频:A键打开绿灯,B键打开红灯

https://v.youku.com/v_show/id_XNDY1NzMxODYyNA==.html?spm=a2h0c.8166622.PhoneSokuUgc_1.dscreenshot

 


 

 

 

 
 
 

回复

1万

帖子

2853

TA的资源

管理员

18
 

赞!!!楼主这个系列帖子快更完了吗?想等你更新完成后给你这个系列弄成干货哦

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

谢谢鼓励,快完了,后面不多了  详情 回复 发表于 2020-5-2 17:02
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

19
 
okhxyyo 发表于 2020-5-2 16:20 赞!!!楼主这个系列帖子快更完了吗?想等你更新完成后给你这个系列弄成干货哦

谢谢鼓励,快完了,后面不多了

 
 
 

回复

3386

帖子

0

TA的资源

五彩晶圆(中级)

20
 

5、自控行人过马路交通信号灯

 

#MicroPython动手做(22)——掌控板之无线广播
#自控行人过马路交通信号灯(行人控制端)

 

行人端红绿灯:

  ①行人方向的灯是红色的,等待行人按下A键,

  ②当行人需要过马路的时候,按下按钮,同时给行车方向的红绿灯发射信号,等待缓冲时间,红灯转绿灯。

  ③行人走完之后(绿灯亮一段时间),黄灯闪烁3次,再变为红灯。

 


 

#MicroPython动手做(22)——掌控板之无线广播
#自控行人过马路交通信号灯(行人控制端)

import radio
from mpython import *
import time
import framebuf
import font.digiface_44

def Flash():
    global i, j, k, m, n, x
    for m in range(1, 4):
        rgb.fill((int(255), int(255), int(0)))
        rgb.write()
        time.sleep_ms(1)
        time.sleep_ms(500)
        rgb.fill( (0, 0, 0) )
        rgb.write()
        time.sleep_ms(1)
        time.sleep_ms(500)

def _E4_BF_A1_E6_81_AF_E6_8F_90_E7_A4_BA():
    global i, j, k, m, n, x
    oled.fill(0)
    oled.DispChar("行人如需过马路", 0, 16, 1)
    oled.DispChar("请按下A键", 0, 32, 1)
    oled.show()

def upRange(start, stop, step):
    while start <= stop:
        yield start
        start += abs(step)

def downRange(start, stop, step):
    while start >= stop:
        yield start
        start -= abs(step)

def _E6_97_B6_E9_97_B4_E6_8F_90_E7_A4_BA(x):
    global i, j, k, m, n
    for n in (1 <= int(x)) and upRange(1, int(x), 1) or downRange(1, int(x), 1):
        oled.fill(0)
        display_font(font.digiface_44, (str((x + 1) - n)), 32, 8, False, 2)
        oled.show()
        time.sleep_ms(1000)

def on_button_a_down(_):
    global i, j, k, m, n, x
    time.sleep_ms(10)
    if button_a.value() == 1: return
    radio.send("1")
    _E6_97_B6_E9_97_B4_E6_8F_90_E7_A4_BA(10)
    rgb.fill((int(51), int(255), int(51)))
    rgb.write()
    time.sleep_ms(1)
    _E6_97_B6_E9_97_B4_E6_8F_90_E7_A4_BA(12)
    Flash()
    rgb.fill((int(255), int(0), int(0)))
    rgb.write()
    time.sleep_ms(1)
    _E4_BF_A1_E6_81_AF_E6_8F_90_E7_A4_BA()

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]

button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)


radio.on()
radio.config(channel=11)
rgb.fill((int(255), int(0), int(0)))
rgb.write()
time.sleep_ms(1)
_E4_BF_A1_E6_81_AF_E6_8F_90_E7_A4_BA()

 

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表