发新帖本帖赏金 1.00元(功能说明)我要提问
12
返回列表
打印
[单片机资料]

瑞昱双频WiFi+BLE5.0物联网单片机之MicroPython教程

[复制链接]
楼主: Simon西
手机看帖
扫描二维码
随时随地手机跟帖
21
Simon西|  楼主 | 2021-4-28 18:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
WiFi 扫描

终于来到最激动人心的时刻--RTL8722DM最大的特色就是双频WiFi,2.4Ghz和5GHz通吃,让你的wifi无死角,使用wifi scan功能还可以轻松扫描出所有附近的WiFi信号,想连哪个连哪个!
材料准备
  • Ameba x 1
范例说明
WiFi扫描功能可以帮助我们快速发现周围有哪些WiFi网络。该范例不需要任何其他硬件,因此只需复制以下代码并将其粘贴到REPL中即可查看其作用。
from wireless import WLAN
wifi = WLAN(mode = WLAN.STA)
wifi.scan()
wifi 扫描就是这么简单~

使用特权

评论回复
22
Simon西|  楼主 | 2021-4-30 09:23 | 只看该作者

WiFi 连接


扫描WiFi之后,就可以连接上你想要的WiFi网络啦,方法很简单,只需要在wifi.connect() API里面输入WiFi名字和密码就好啦,

材料准备
  • Ameba x 1
范例说明
Ameba可以使用开放安全性或WPA2安全类型连接到WiFi接入点,WPA2安全类型是家用无线路由器中最常用的安全类型。在这里我们将使用下面的代码连接到WiFi接入点,将以下代码逐行复制并粘贴到REPL中,以查看其作用。
from wireless import WLAN
wifi = WLAN(mode = WLAN.STA)
wifi.connect(ssid = "YourWiFiName", pswd = "YourWiFiPassword")


使用特权

评论回复
23
Simon西|  楼主 | 2021-5-3 11:51 | 只看该作者

Socket - Echo服务器与客户端

WiFi网络沟通最简单的就是使用Socket来进行点对点的沟通,想要知道你搭建的Server和client有没有正确的运作,就可以找来两个可以使用WiFi的设备,让他们之间互联并且echo(回应同样的信息)彼此的信息来做验证,以下就是上手啦,


材料准备
  • Ameba x 2
范例说明
WiFi连接完成后即可使用Socket来使用网路。 Socket就像一个假想的乙太网路介面,你可以用它把你的PC连接到互联网上的服务器上,比如Google或Github。即使是像HTTP这样的应用层协议也是建立在socket之上的。一旦给定了IP地址和端口号,就可以自由地连接到远程设备并与其进行通信。连接流程如下图所示。
下面是一个使用服务器socket和客户端socket互相传送消息的范例,要使用这个范例,您需要两个ameba RTL8722来运行MicroPython,在REPL 的paste模式下分别将下面的代码复制并粘贴到两个ameba。
以下是服务器代码
import socket
from wireless import WLAN
wifi = WLAN(mode = WLAN.STA)
wifi.connect(ssid = "YourWiFiSSID", pswd = "YourWiFiPassword") # change the ssid and pswd to yours
s = socket.SOCK()
port = 5000
s.bind(port)
s.listen()
conn, addr = s.accept()
while True:
    data = conn.recv(1024)
    conn.send(data+"from server")

以下是客户端代码

import socket
from wireless import WLAN
wifi = WLAN(mode = WLAN.STA)
wifi.connect(ssid = "YourWiFiSSID", pswd = "YourWiFiPassword") # change the ssid and pswd to yours
c = socket.SOCK()
# make sure to check the server IP address and update in the next line of code
c.connect("your server IP address", 5000)
c.send("hello world")
data = c.recv(1024)
print(data)

这样,你在客户端(client)这边发送的hello world就会被服务器端收到并打印出来了


使用特权

评论回复
24
Simon西|  楼主 | 2021-5-5 19:28 | 只看该作者

Socket - 从HTTP网站获取信息

上次只是本地的socket互相发送东西,这次,我们直接用socket来从MicroPython的官网上面抓一点网站上的信息下来,同样很简单,但是为了简化步骤,下面的示例定义了一个function从而可以让代码更清晰,

材料准备
  • Ameba x 1
范例说明
创建socket后,我们可以访问HTTP网站并从中获取信息。在粘贴模式下,将以下代码复制并粘贴到REPL中。
import socket
from wireless import WLAN
wifi = WLAN(mode = WLAN.STA)
wifi.connect(ssid = "YourWiFiSSID", pswd = "YourPassword") # change the ssid and pswd to yours

def http_get(url):
    _, _, host, path = url.split('/', 3)
    c = socket.SOCK()
    # We are visiting MicroPython official website's test page
    c.connect(host, 80)
    c.send(bytes('GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n' % (path, host), 'utf8'))
    while True:
        data = c.recv(100)
        if data:
            print(str(data,'utf8'), end='')
        else:
            break

http_get('http://micropython.org/ks/test.html')

如果你收到“It's working if you can read this!”的字符串打印在REPL上,就说明你成功了! 恭喜,物联网已经成功走出大门了!


使用特权

评论回复
25
Simon西|  楼主 | 2021-5-7 18:40 | 只看该作者
SDFS - SD卡的读写1


文件系统可以帮助我们存储和读取较大的文件,特别适合网络传输所用的html文件,图片文件或是音频视频文件,如何使用RTL8722DM上面的SDIO来快速读写呢? 请看下面,




import sdfs

s=sdfs            # create a short form
s.listdir()       # listing the files and folders under current path
s.mkdir("test")   # create a folder named "test" under current path
s.chdir("test")   # change directory to test folder
s.pwd()           # print out present working directory(current path)
s.chdir("/")      # change directory bach to root directory
s.rm("test")      # delete the test folder


MicroPython这边使用了和linux相似的API命名方式,方便大家快速、直观的上手, listdir就是展示当前所有文件,mkdir就是创建文件夹,以此类推

使用特权

评论回复
26
Simon西|  楼主 | 2021-5-12 16:16 | 只看该作者
SDFS - SD卡的读写2

上次看了文件系统的文件夹管理,这次着重看一下文件的处理:




import sdfs

s=sdfs                  # create a short form
s.create("ameba.txt")   # create a file named "ameba.txt"
s.write("ameba.txt", "ameba supports sd card file system!") # write a string to the file just created
s.read("ameba.txt")     # read the content from the same file
s.rm("ameba.txt")       # delete the file


开心的话就用create()创建一个新的文件“ameba.txt" , 不开心就可以用rm()来删除它,是不是超方便?






使用特权

评论回复
27
xiaozhi1996526| | 2021-12-7 16:24 | 只看该作者
我要怎么才能重新上电还能继续运行上次下载的DEMO呢?

使用特权

评论回复
发新帖 本帖赏金 1.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则