电脑基础 · 2023年3月31日

使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序

微软新必应是一款由人工智能驱动的AI搜索引擎(基于Chat GPT4.0的先进自然语言生成模型),它能与用户进行流畅、自然、有趣的对话,并提供可靠、及时的搜索结果,以及回答用户的各种问题。我们可以使用新必应生成程序代码、诗歌、故事、歌词等内容,或者模仿名人发表段子、推文等内容。
树莓派Pico W开发板是树莓派基金会于2022年6月底发布的一款无线WiFi开发板,本文介绍使用New Bing AI机器人生成树莓派Pico W开发板MicroPython应用程序的基本方法。
1、微软新必应(New Bing)简介
微软新必应(New Bing)是一款由人工智能驱动的AI搜索引擎(基于Chat GPT4.0自然语言生成模型,比Open AI的不久前推出的GPT3.5模型要领先很多倍),它能与用户进行流畅、自然、有趣的对话,并提供可靠、及时的搜索结果,以及回答用户的各种问题。它不仅能给出问题的答案,还会注明来源,让用户更加放心。
用户可以使用自己喜欢的方式提问,无论是简单还是复杂的搜索、直接还是跟进的问题、文字还是语音输入,新必应都能理解并给出满意的回答。
新必应不仅具有强大的搜索和问答功能,还具有创意和娱乐性。用户能让新必应生成诗歌、故事、程序代码、歌词等内容,或者模仿名人发表段子、推文等内容。新必应也可以根据用户的兴趣和需求,提供个性化的建议和服务。
新必应预计于近期正式发布。由于新必应目前还处于测试阶段,如果要使用新必应还需【加入候补名单】进行申请并等待(大多需等待几天)。本人用邮箱申请New Bing帐号后,第3天就收到可以使用新必应的回复邮件。国内用户如何申请及使用新必应,可以参阅CSDN相关博文,此处不再赘述。这里仅介绍使用New Bing生成树莓派Pico W开发板MicroPython应用程序(特别说明:由于Open AI的Chat GPT3.5只更新到2021年,而树莓派Pico W开发板是2022年6月底发布的;经亲自测试,Chat GPT3.5不能胜任本文的编程任务)。
2、使用New Bing生成树莓派Pico W板载LED闪亮MicroPython程序
首先,打开浏览器,输入新必应网址https://www.bing.com/new,如图1所示。
使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序
图1
点击图1的【登录】按钮,输入已申请到的帐号和密码后,显示页面如图2所示。
使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序
图2
点击图2的【立即聊天】按钮,显示聊天新主题编辑框,如图3所示。
使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序
图3
在图3的编辑框中输入“请编写一个Raspberry Pi Pico W板载LED闪亮的MicroPython程序。”,如图4所示。
使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序
图4
New Bing AI将显示:
√ 正在搜索: Raspberry Pi Pico W MicroPython LED
√ 正在为你生成答案…
您好,这是Bing。我可以帮助您编写一个Raspberry Pi Pico W板载LED闪亮的MicroPython程序。
根据搜索结果,Pico W的板载LED不是连接到RP2040的引脚上,而是连接到无线芯片的GPIO引脚上。因此,您需要导入machine模块,并使用"LED"作为引脚名称来创建一个Pin对象。然后,您可以使用on()和off()方法来控制LED的状态。
下面是一个简单的MicroPython示例程序,它会让板载LED每隔一秒闪烁一次:

import machine
import time
led = machine.Pin("LED", machine.Pin.OUT) # 创建Pin对象
while True:
    led.on() # 打开LED
    time.sleep(1) # 等待一秒
    led.off() # 关闭LED
    time.sleep(1) # 等待一秒

接下来,将树莓派Pico W开发板与电脑相连,并将上面New Bing生成的程序复制并粘贴到Thonny IDE编辑器中,并用“NBing-LED.py”程序文件命名,如图5所示。
使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序
图5
在图5中,第2~11行是复制粘贴的New Bing所生成的程序代码,仅第1行“# Filename: NBing-LED.py”是另外录入的程序文件命名注释。
关于Thonny和树莓派Pico W的具体使用方法,可参阅本人CSDN博文“树莓派Pico W无线WiFi开发板使用方法及MicroPython编程实践”。
将程序存储到树莓派Pico W开发板Flash存储器,点击Thonny的播放按钮测试New Bing AI生成的MicroPython程序,可以看到树莓派Pico W板载LED间断闪亮。
3、使用New Bing生成Pico W开发板MicroPython网络程序
现向New Bing输入问题:请编写一个用浏览器输入网址控制Raspberry Pi Pico W板载LED亮灭的Web程序。
New Bing AI显示情况及给出的MicroPython程序清单如下:
使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序

import machine
import network
import socket
led = machine.Pin("LED", machine.Pin.OUT) # 创建一个Pin对象,指定"LED"为名称和输出模式
wlan = network.WLAN(network.STA_IF) # 创建一个WLAN对象,指定STA模式
wlan.active(True) # 激活WLAN
wlan.connect('your_ssid', 'your_password') # 连接到你的WiFi网络
while not wlan.isconnected(): # 等待连接成功
    pass
print('IP address:', wlan.ifconfig()[0]) # 打印IP地址
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建一个socket对象,指定IPv4协议和TCP协议
s.bind((wlan.ifconfig()[0], 80)) # 绑定到本地IP地址和80端口
s.listen(5) # 监听最多5个连接
while True: # 无限循环
    conn, addr = s.accept() # 接受一个新的连接
    print('Got a connection from %s' % str(addr)) # 打印客户端地址
    request = conn.recv(1024) # 接收客户端发送的数据(最多1024字节)
    request = str(request) # 将数据转换为字符串
    if 'on' in request: # 如果请求中包含'on'字符串
        led.on() # 打开LED
    if 'off' in request: # 如果请求中包含'off'字符串
        led.off() # 关闭LED
    response = 'HTTP/1.1 200 OK\n\nHello from Raspberry Pi Pico W!'
    conn.send(response.encode()) # 发送响应给客户端(需要编码为字节)
conn.close()

将以上程序直接复制粘贴到Thonny编辑器;wlan.connect(‘your_ssid’, ‘your_password’)语句中,your_ssid和your_password分别替换为用户使用的无线WiFi名称及密码,程序命名为“nb_prog2.py”并存到Pico W开发板Flash。
下面测试用New Bing AI生成的以上程序。运行程序后,电脑Thonny Shell窗口将显示IP address: 192.168.1.10,它是Pico W开发板的IP地址。现在手机浏览器地址栏输入“192.168.1.10/on”,此时可看到Pico W开发板板载LED点亮。使用手机点亮Pico W板载LED及电脑Thonny Shell展示效果截图如图6和图7所示。
使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序
图6
使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序
图7
下面继续向New Bing提问:请问如何在网页上添加按钮来控制LED?
New Bing AI显示情况及给出的HTML文件清单如下:
使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序

<html>
<head>
<script>
function sendRequest(command) { // 定义一个函数,用于发送请求给Web服务器
  var xhr = new XMLHttpRequest(); // 创建一个XMLHttpRequest对象
  xhr.open("GET", command, true); // 设置请求方法为GET,请求地址为command参数,异步模式为true
  xhr.send(); // 发送请求
}
</script>
</head>
<body>
<h1>Control LED from Webpage</h1>
<button onclick="sendRequest('on')">Turn ON LED</button> <!-- 创建一个按钮,点击时调用sendRequest函数并传入'on'参数 -->
<button onclick="sendRequest('off')">Turn OFF LED</button> <!-- 创建一个按钮,点击时调用sendRequest函数并传入'off'参数 -->
</body>
</html>

您可以将这个网页保存为index.html文件,并替换之前程序中的响应内容。然后,在浏览器中输入http://<ip_address>/就可以看到这个网页,并通过点击按钮来控制LED。
现将以上HTML文件命名为“index.html”文件并存到Pico W中。
为了在前面的MicroPython程序中加载index.html文件,接下来,我们继续向New Bing提问:请问如何在之前的MicroPython程序中加入index.html文件响应内容?
New Bing AI显示情况如下:
您好,这是Bing。我可以帮您在之前的MicroPython程序中加入index.html文件响应内容。
您可以使用open函数来打开index.html文件,并读取它的内容,然后将其作为响应发送给客户端。例如,您可以在程序的开头添加以下代码:

f = open('index.html', 'r') # 打开index.html文件,以只读模式
html = f.read() # 读取文件内容,并赋值给html变量
f.close() # 关闭文件

然后,您可以将之前程序中的响应内容替换为以下代码:

response = 'HTTP/1.1 200 OK\n\n' + html # 将html变量添加到响应内容中

这样,当客户端请求根目录时,就会收到index.html文件的内容,并显示网页上的按钮。
以上答复还不是十分令人满意,我们希望New Bing能直接给出改写好的MicroPython程序,因此继续向New Bing提问:好的,请帮助改写加入index.html文件后的的MicroPython程序!
New Bing AI显示情况及改写的MicroPython程序清单如下:
您好,这是Bing。我可以帮助改写加入index.html文件后的的MicroPython程序。
以下是改写后的完整MicroPython程序:

import machine
import network
import socket
led = machine.Pin("LED", machine.Pin.OUT) # 创建一个Pin对象,指定"LED"为名称和输出模式
wlan = network.WLAN(network.STA_IF) # 创建一个WLAN对象,指定STA模式
wlan.active(True) # 激活WLAN
wlan.connect('your_ssid', 'your_password') # 连接到你的WiFi网络
while not wlan.isconnected(): # 等待连接成功
    pass
print('IP address:', wlan.ifconfig()[0]) # 打印IP地址
f = open('index.html', 'r') # 打开index.html文件,以只读模式
html = f.read() # 读取文件内容,并赋值给html变量
f.close() # 关闭文件
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建一个socket对象,指定IPv4协议和TCP协议
s.bind((wlan.ifconfig()[0], 80)) # 绑定到本地IP地址和80端口
s.listen(5) # 监听最多5个连接
while True: # 无限循环
    conn, addr = s.accept() # 接受一个新的连接
    print('Got a connection from %s' % str(addr)) # 打印客户端地址
    request = conn.recv(1024) # 接收客户端发送的数据(最多1024字节)
    request = str(request) # 将数据转换为字符串
    if 'on' in request: # 如果请求中包含'on'字符串
        led.on() # 打开LED
    if 'off' in request: // 如果请求中包含'off'字符串
        led.off() // 关闭LED
    response = 'HTTP/1.1 200 OK\n\n' + html
    conn.send(response.encode()) // 发送响应给客户端(需要编码为字节)
conn.close()

将以上改写的程序复制粘贴到Thonny编辑器;wlan.connect(‘your_ssid’, ‘your_password’)语句中,your_ssid和your_password分别替换为用户使用的无线WiFi名称及密码。
仔细阅读本程序,发现if ‘off’ in request语句后的两处//注释符应修改为#,conn.send(response.encode())后的//注释符应修改为#(说明:New Bing误将这里的MicroPython语句注释用C/C++注释符“//”标注了)。
将程序命名为“main.py”文件存储到Pico W开发板Flash中。此时,Pico W开发板存储了“main.py”程序和“index.html”文件。
下面测试New Bing AI生成的main.py程序和index.html文件。点击Thonny的播放按钮运行main.py程序,在手机浏览器中输入192.168.1.10,将显示两个按钮的页面,如图8所示。
使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序
图8
在图8中,按下[Turn ON LED]按钮,Pico W板载LED点亮;按下[Turn OFF LED]按钮,Pico W板载LED熄灭。这说明New Bing AI生成的main.py程序和index.html文件正确。
从本文介绍可知,使用New Bing可以生成高质量的MicroPython应用程序。类似地,借助New Bing也可同样能生成C/C++、Java等程序代码,还可用New Bing生成TensorFlow/tf.Keras/PyTorch等AI深度学习程序代码。借助New Bing、ChatGPT等AI智能机器人平台能取代程序员的几乎90%以上的编程任务,从而大大提高软件开发的效率和缩短智能硬件等新产品的研发周期。

发布日期:2023年3月11日