Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
http
MicroPython
在树莓派PICO上实现http请求demo
发布于 2021-08-20 17:18:45 浏览:1606
订阅该版
[tocm] # 树莓派PICO:使用rt-thread micropython软件包联网获取天气 ### 项目描述 本项目使用树莓派PICO开发板和ESP8266作为硬件,使用[RT-Thread MicroPython - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=RT-Thread.rt-thread-micropython)进行python软件开发,通过http请求获取实时天气信息。 ### 嵌入式软件配置 #### 使用RT-Thread Studio * 安装RP2040-RASPBERRYPI-PICO的SDK ![sdk.png](https://oss-club.rt-thread.org/uploads/20210820/db577686c90ce1cd0b311aa9d09280a6.png.webp) * 创建RT-Thread项目,选择基于开发板--->RP2040-RASPBERRYPI-PICO * 打开所建项目中的RT-Thread Settings,并添加micropython和AT-Device软件包 * 配置micropython 使能usocket和ujson库,并适当调大Heap size ![mp_conf.png](https://oss-club.rt-thread.org/uploads/20210820/5609217d1481f662115897efa6df9bf7.png) * 配置AT_Device * 使能乐鑫ESP8266,并使能示例,输入SSID与密码,将设备名称改为uart1 ![atdevice_conf.png](https://oss-club.rt-thread.org/uploads/20210820/5a43b3977928c289d7ca64f3671bf3e1.png.webp) * 使能组件--->网络--->AT命令 * 使能组件--->设备驱动程序--->使用WiFi框架 * 将ESP8266连接到树莓派PICO的UART1上 * 编译下载程序 #### 使用ENV * 克隆rt-thread代码 ``` bash git clone https://github.com/RT-Thread/rt-thread.git ``` * 进入树莓派pico的bsp中 ``` bash cd rt-thread/bsp/raspberry-pico ``` * 打开menuconfig,并对RT-Thread进行配置,请参考上节【使用RT-Thread Studio】 ``` bash scons --menuconfig ``` * 对软件包进行更新 ``` bash pkgs --update ``` * 执行编译 ``` bash scons ``` ### HTTP请求过程 * 创建socket(TCP数据流模式),连接http服务器 * 发送HTTP请求 HTTP请求由请求行(request line)、请求头部(headers)、空行(blank line)和请求数据(request body)4个部分组成。 > 请求行 > > > 由请求方法、请求地址URL、HTTP协议版本组成。 > > > > > 请求方法:HTTP/1.1 定义的请求方法有8种:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS/TRACE > > > > > > 请求地址URL:要请求的路径 > > > > > > HTTP协议版本:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1 > > > > 例如:`GET /user/login HTTP/1.1` > > 请求头部 > > > 请求头部为请求报文添加了一些附加信息,每行一条,用":"隔开 > > > > 常用请求头: > > > > | Host | 服务器主机地址 | > > | --------------- | -------------------------------- | > > | User-Agent | 发送请求的应用程序名称 | > > | Connection | 指定与连接相关的属性 | > > | Accept-Encoding | 通知服务器可以发送的数据压缩格式 | > > > > 例如:` Connection: keep-alive` > > 空行 > > > 本行只包含`\r\n` > > 请求数据 > > > 请求数据不在GET方法中使用,而在POST方法中使用。与请求数据相关的最长使用的请求头部是Cntent-Type和Content-Length。 * 接收Response Response由状态行(status line)、相应头部(headers)、空行(blank line)和响应数据(response body)4个部分组成。 * 关闭socket ### ### 代码实现 创建RT-Thread MicroPython工程 创建request方法: `def request(uri, method, para=None):` > 解析uri,解算出域名、端口、请求路径 > > 使用usocket建立socket连接 > > 发送请求头部 > > 读取response > > 对response进行解析,并创建`HttpResponse`类并返回 调用`request()`获取天气信息。 API地址: [免费实时天气接口API 实况天气api (yiketianqi.com)](https://yiketianqi.com/index/doc?version=day) ``` python uri = "https://tianqiapi.com/free/day?appid=&appsecret=" uri += "&cityid=" + cityid resp = request(uri, "GET") parsed = parseWeater(resp.body) if("errmsg" in parsed): print(parsed["errmsg"]) continue print("cityid: " + parsed["cityid"]) print("city: " + parsed["city"]) print("update time: " + parsed["update_time"]) print("weather: " + parsed["wea"]) print("temparature: " + parsed["tem_night"] + "~" + parsed["tem_day"] + "C") print("current temparature: " + parsed["tem_day"] + "C") print("wind: " + parsed["win"] + parsed["win_speed"] + " " + parsed["win_meter"]) print() ``` ### 运行示例 获取北京天气 ![eg.png](https://oss-club.rt-thread.org/uploads/20210820/e675e05a722fcf272b76c0e412544d74.png) ### 代码仓库 [cndabai/raspipicodemo (github.com)](https://github.com/cndabai/raspipicodemo)
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Zain
这家伙很懒,什么也没写!
文章
2
回答
0
被采纳
0
关注TA
发私信
相关文章
1
请问rt-thread有没有移植micropython呢
2
micropython import 文件名的方式执行脚本问题
3
第一篇:Micropython 的起源和发展
4
第二篇:RT-Thread Micropython 简介
5
第三篇:RT-Thread Micropython 快速入门
6
第四篇:Micropython DIY 项目汇总
7
第五篇:Micropython 教程和资源
8
第六篇: RT-Thread MicroPython 学习经验和学习路线
9
RT-Thread MicroPython 最新开发板固件汇总【已失效】
10
有Mpy专门的板块啦~
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
812
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部