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

news2024/11/25 12:53:02

微软新必应是一款由人工智能驱动的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所示。
在这里插入图片描述
图1
点击图1的【登录】按钮,输入已申请到的帐号和密码后,显示页面如图2所示。
在这里插入图片描述
图2
点击图2的【立即聊天】按钮,显示聊天新主题编辑框,如图3所示。
在这里插入图片描述
图3
在图3的编辑框中输入“请编写一个Raspberry Pi Pico W板载LED闪亮的MicroPython程序。”,如图4所示。
在这里插入图片描述
图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所示。
在这里插入图片描述
图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程序清单如下:
在这里插入图片描述

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所示。
在这里插入图片描述
图6
在这里插入图片描述
图7
下面继续向New Bing提问:请问如何在网页上添加按钮来控制LED?
New Bing AI显示情况及给出的HTML文件清单如下:
在这里插入图片描述

<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所示。
在这里插入图片描述
图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日

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/403417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL workbench基本查询语句

1.查询所有字段所有记录 SELECT * FROM world.city; select 表示查询&#xff1b;“*” 称为通配符&#xff0c;也称为“标配符”。表示将表中所有的字段都查询出来&#xff1b;from 表示从哪里查询&#xff1b;world.city 表示名为world的数据库中的city表&#xff1b; 上面…

13 node 程序后台执行加上 tail 命令, 中断 tail 命令, 同时也中断了 node 程序

前言 呵呵 最近帮朋友解决问题[2022.09.08] 需要启动一个 node 程序, 然后 需要一个 startUp.sh 脚本 然后 反手写了一个过去, 按道理 来说 应该是 后台启动了对应的 node 程序, 然后将 标准输出, 错误输出 输出到 logs/nohup.log 日志文件中, 然后基于 tail 命令 来查看 …

【Kafka】MM2同步Kafka集群时如何自定义复制策略(ReplicationPolicy)

文章目录需求准备工作自定义复制策略编译代码需求 使用MM2同步集群数据&#xff0c;topic名称不能变&#xff0c;默认的复制策略为&#xff1a;DefaultReplicationPolicy&#xff0c;这个策略会把同步至目标集群的topic都加上一个源集群别名的前缀&#xff0c;比如源集群别名为…

设计模式-第13章(状态模式)

状态模式状态模式状态模式的好处和用处工作状态状态模式 状态模式&#xff08;State&#xff09;&#xff0c;当一个对象的内在状态改变时允许改变其行为&#xff0c;这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况…

【大数据】HDFS客户端命令行(hdfs dfs)详细使用说明

DFS命令使用概览使用说明lsdfducountappendToFilecatchecksumchgrpchmodchownconcatcopyFromLocalcopyToLocalcpcreateSnapshotdeleteSnapshotexpungefindgetgetfaclgetfattrgetmergeheadmkdirmoveFromLocalmoveToLocalmvputrenameSnapshotrmrmdirsetfaclsetfattrsetrepstattai…

实现VOC数据集与COCO数据集格式转换

实现VOC数据集与COCO数据集格式转换2、将voc数据集的xml转化为coco数据集的json格式2、COCO格式的json文件转化为VOC格式的xml文件3、将 txt 文件转换为 Pascal VOC 的 XML 格式<annotation><folder>文件夹目录</folder><filename>图片名.jpg</file…

2020蓝桥杯真题凯撒加密 C语言/C++

题目描述 给定一个单词&#xff0c;请使用凯撒密码将这个单词加密。 凯撒密码是一种替换加密的技术&#xff0c;单词中的所有字母都在字母表上向后偏移 3 位后被替换成密文。即 a 变为 d&#xff0c;b 变为 e&#xff0c;⋯&#xff0c;w 变为z&#xff0c;x 变为 a&#xff0…

【QT网络编程】实现UDP协议通信

文章目录概要&#xff1a;本期主要讲解QT中对UDP协议通信的实现。一、UDP协议通信二、Qt中UDP协议的处理1.QUdpSocket三、Qt实现UDP通信1.客户端2.服务器端结尾概要&#xff1a;本期主要讲解QT中对UDP协议通信的实现。 一、UDP协议通信 Internet 协议集支持一个无连接的传输协…

SprintBoot打包及profile文件配置

打成Jar包 需要添加打包组件将项目中的资源、配置、依赖包打到一个jar包中&#xff0c;可以使用maven的package&#xff1b;运行: java -jar xxx(jar包名) 操作步骤 第一步: 引入Spring Boot打包插件 <!--打包的插件--> <build><!--修改jar的名字--><fi…

认识vite_vue3 初始化项目到打包

从0到1创建vite_vue3的项目背景效果vite介绍&#xff08;对比和vuecli的区别&#xff09;使用npm创建vitevitevuie3创建安装antdesignvite自动按需引入&#xff08;vite亮点&#xff09;请求代理proxy打包背景 vue2在使用过程中对象的响应式不好用新增属性的使用$set才能实现效…

FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(二)

通过上面的介绍相信大家对数字变频已经有了一个较为整体性的认识&#xff0c;下面笔者来对照XILINX的DDS IP核对数字变频技术展开更进一步的说明&#xff0c;做到了理论和实践很好地结合&#xff0c;这样大家再带入Modelsim进行仿真测试就不仅掌握了数字变频的理论知识&#xf…

【Linux】网络原理

本篇博客让我们一起来了解一下网络的基本原理 1.网络发展背景 关于网络发展的历史背景这种东西就不多bb了&#xff0c;网上很容易就能找到参考资料&#xff0c;我的专业性欠缺&#xff0c;文章参考意义也不大。这里只做简单说明。 网络发展经过了如下几个模式 独立模式&…

创建线程的三种方法

文章目录1、创建一个类实现Runnable接口&#xff0c;并重写run方法。2、创建一个类继承Thread类&#xff0c;并重写run方法。3、实现Callable接口&#xff0c;重写call()方法&#xff0c;这种方式可以通过FutureTask获取任务执行的返回值。4、run()方法和start()方法有什么区别…

14 Day:同步锁与操作系统输入输出

前言&#xff1a;在上一期的线程章节中&#xff0c;我们的线程输出貌似有大问题&#xff0c;今天我们便要来学习同步锁来解决这个问题&#xff0c;同时再次基础上拿下键盘输入&#xff0c;实现操作系统的输入和输出。从今天开始我们的操作系统不在是一块“看板”了&#xff01;…

Python|数学|贪心|数组|动态规划|单选记录:实现保留3位有效数字(四舍六入五成双规则)|用Python来创造一个提示用户输入数字的乘法表|最小路径和

1、实现保留3位有效数字&#xff08;四舍六入五成双规则&#xff09;&#xff08;数学&#xff0c;算法&#xff09; 贡献者&#xff1a;weixin_45782673 输入&#xff1a;1234 输出&#xff1a;1234 12 12.0 4 4.00 0.2 0.200 0.32 0.320 1.3 1.30 1.235 1.24 1.245 1.24 1.…

Docker 入门建议收藏 第一部分

一、Docker 是什么&#xff1f; Docker&#xff0c;翻译过来就是码头工人 Docker是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化。容器完全使用沙盒…

JVM概览:内存空间与数据存储

核心的五个部分虚拟机栈&#xff1a;局部变量中基础类型数据、对象的引用存储的位置&#xff0c;线程独立的。堆&#xff1a;大量运行时对象都在这个区域存储&#xff0c;线程共享的。方法区&#xff1a;存储运行时代码、类变量、常量池、构造器等信息&#xff0c;线程共享。程…

ClassMix: Segmentation-Based Data Augmentation for Semi-Supervised Learning学习笔记

ClassMix相关介绍主要思想方法Mean-Teacher损失函数交叉熵损失标签污染实验实验反思参考资料相关介绍 从DAFormer溯源到这篇文章&#xff0c;ClassMix主要是集合了伪标签和一致性正则化&#xff0c;思想来源于CutMix那条研究路线&#xff0c;但是优化了CutMix中的标签污染的情…

使用 HTML5 轻松验证表单插件

下载:https://download.csdn.net/download/mo3408/87559594 效果图: 当您通过表单从人们那里收集信息时,必须应用某种验证。如果不这样做,可能会导致客户流失、数据库中的垃圾数据甚至网站的安全漏洞。从历史上看,构建表单验证一直很痛苦。在服务器端,全栈框架会为您处理…

【AI绘图学习笔记】深度前馈网络(一)

有关深度前馈网络的部分知识&#xff0c;我们已经在吴恩达的机器学习课程中有过了解了&#xff0c;本章主要是对《深度学习》花书中第六章&#xff1a;深度前馈网络的总结笔记。我希望你在看到这一章的时候&#xff0c;能回忆起机器学习课程中的一些环节或者细节&#xff0c;这…