软件准备
根据树莓的介绍,我们基于树莓派 pico 可以开发类开发官网环境
关于环境的好参考,国内有很多人问了,我已经在韦东山百网问了出的教程的开发环境:
硬件准备
在硬件开始实验前,需要准备好看看到硬件
连接
uart0我的串口模块PC连接显示,所以我从uart1开始使用,uart1给ESP8266使用。
[ tr 想要ESP8266[图片/tr]
虚拟总线 | VCC、CH-EN |
GND | GND |
UART1TX Pin6 | U0RXD |
UART1RX Pin7 | U0TXD |
C/C++实现代码
/**
*
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include
#include
#include
#include "pico/stdlib.h"
#include "pico/multicore.h"
#include "hardware/gpio.h"
#include "hardware/uart.h"
#define UART_ID uart1
#define BAUD_RATE 115200
#define UART_TX_PIN 4
#define UART_RX_PIN 5
#define RECV_BUFFER 256
char recv_buf[RECV_BUFFER];
int buff_count = 0;
无效 core1_entry()
{
memset(recv_buf,'0',RECV_BUFFER);
//printf("%c", uart_getc(UART_ID));
recv_buf[buff_count++] = uart_getc(UART_ID);
if(buff_count >= RECV_BUFFER) buff_count = 0;
}
}
int main() {
stdio_init_all();
// 以所需的速度设置我们的 UART。
UART_init(UART_ID,波特率);
// 使用 GPIO 上的功能选择设置 TX 和 RX 引脚
// 设置数据表以获取有关功能选择的更多信息
gpio_set_function(UART_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART_RX_PIN, GPIO_FUNC_UART);
multicore_launch_core1(core1_entry);
printf("在 ESP8266 上设置网络...n");
printf(" - 将 CWMODE 设置为 1 站模式...n");
uart_puts(UART_ID, "AT+CWMODE=1rn");
睡眠毫秒(2000);
printf(" - 加入 Wifi ...'n");
uart_puts(UART_ID, "AT+CWJAP="baiwenwang","www.100ask.org"rn");
睡眠毫秒(5000);
printf("完成!nn");
printf("在 ESP8266 上启动 Webserver 端口...n");
睡眠毫秒(1000);
printf(" - 为多个连接设置 CIPMUX...n");
uart_puts(UART_ID, "AT+CIPMUX=1rn");
睡眠毫秒(2000);
printf(" - 在端口 80 上启动 CIPSERVER...n");
uart_puts(UART_ID, "AT+CIPSERVER=1,80rn");
printf("完成!nn");
睡眠毫秒(1000);
// 查询本地IP地址
uart_puts(UART_ID, "AT+CIFSRrn");
睡眠毫秒(1000);
printf("%sn", recv_buf);
printf("等待连接...n");
while (true) {
if (strstr(recv_buf, "+IPD"))
{
printf("!传入连接 - 发送网页");
uart_puts(UART_ID, "AT+CIPSEND=0,108rn"); // 发送一个 HTTP 响应,然后是一个网页作为字节,108 是您发送的字节数,如果您更改在
sleep_ms(1000) 以下发送的数据,请更改此值;
uart_puts(UART_ID, "HTTP/1.1 200 OKrn");
uart_puts(UART_ID, "内容类型: text/htmlrn");
UART_puts(UART_ID,
uart_puts(UART_ID, "rn");
uart_puts(UART_ID, "rn");
uart_puts(UART_ID, "rn");
uart_puts(UART_ID, "它有效!rn");
uart_puts(UART_ID, "rn");
睡眠毫秒(1000);
uart_puts(UART_ID, "AT+CIPCLOSE=0rn"); // 完成后关闭连接。
睡眠毫秒(4000);
printf("nn等待连接...n");
睡眠毫秒(250);
memset(recv_buf,'0',RECV_BUFFER);
buff_count = 0;
实验现象
CW0+AP的命令模式AT=:
AT+1
AT+="baiwenwang","www.10ask.org"
+ CIPMUX=1
AT+CIPSERVER=1,80
AT+CIFSR
AT+CIPSEND=0,108
> HTTP/1.1 200 OK Content-Type: text/html Connection: close It Works!324
![](https://file.elecfans.com/web2/M00/23/89/pYYBAGGtoEqAXP2RAAAQNtZDONs485.png)
软件准备
根据树莓的介绍,我们基于树莓派 pico 可以开发类开发官网环境
关于环境的好参考,国内有很多人问了,我已经在韦东山百网问了出的教程的开发环境:
硬件准备
在硬件开始实验前,需要准备好看看到硬件
连接
uart0我的串口模块PC连接显示,所以我从uart1开始使用,uart1给ESP8266使用。
[ tr 想要ESP8266[图片/tr]
虚拟总线 | VCC、CH-EN |
GND | GND |
UART1TX Pin6 | U0RXD |
UART1RX Pin7 | U0TXD |
C/C++实现代码
/**
*
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include
#include
#include
#include "pico/stdlib.h"
#include "pico/multicore.h"
#include "hardware/gpio.h"
#include "hardware/uart.h"
#define UART_ID uart1
#define BAUD_RATE 115200
#define UART_TX_PIN 4
#define UART_RX_PIN 5
#define RECV_BUFFER 256
char recv_buf[RECV_BUFFER];
int buff_count = 0;
无效 core1_entry()
{
memset(recv_buf,'0',RECV_BUFFER);
//printf("%c", uart_getc(UART_ID));
recv_buf[buff_count++] = uart_getc(UART_ID);
if(buff_count >= RECV_BUFFER) buff_count = 0;
}
}
int main() {
stdio_init_all();
// 以所需的速度设置我们的 UART。
UART_init(UART_ID,波特率);
// 使用 GPIO 上的功能选择设置 TX 和 RX 引脚
// 设置数据表以获取有关功能选择的更多信息
gpio_set_function(UART_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART_RX_PIN, GPIO_FUNC_UART);
multicore_launch_core1(core1_entry);
printf("在 ESP8266 上设置网络...n");
printf(" - 将 CWMODE 设置为 1 站模式...n");
uart_puts(UART_ID, "AT+CWMODE=1rn");
睡眠毫秒(2000);
printf(" - 加入 Wifi ...'n");
uart_puts(UART_ID, "AT+CWJAP="baiwenwang","www.100ask.org"rn");
睡眠毫秒(5000);
printf("完成!nn");
printf("在 ESP8266 上启动 Webserver 端口...n");
睡眠毫秒(1000);
printf(" - 为多个连接设置 CIPMUX...n");
uart_puts(UART_ID, "AT+CIPMUX=1rn");
睡眠毫秒(2000);
printf(" - 在端口 80 上启动 CIPSERVER...n");
uart_puts(UART_ID, "AT+CIPSERVER=1,80rn");
printf("完成!nn");
睡眠毫秒(1000);
// 查询本地IP地址
uart_puts(UART_ID, "AT+CIFSRrn");
睡眠毫秒(1000);
printf("%sn", recv_buf);
printf("等待连接...n");
while (true) {
if (strstr(recv_buf, "+IPD"))
{
printf("!传入连接 - 发送网页");
uart_puts(UART_ID, "AT+CIPSEND=0,108rn"); // 发送一个 HTTP 响应,然后是一个网页作为字节,108 是您发送的字节数,如果您更改在
sleep_ms(1000) 以下发送的数据,请更改此值;
uart_puts(UART_ID, "HTTP/1.1 200 OKrn");
uart_puts(UART_ID, "内容类型: text/htmlrn");
UART_puts(UART_ID,
uart_puts(UART_ID, "rn");
uart_puts(UART_ID, "rn");
uart_puts(UART_ID, "rn");
uart_puts(UART_ID, "它有效!rn");
uart_puts(UART_ID, "rn");
睡眠毫秒(1000);
uart_puts(UART_ID, "AT+CIPCLOSE=0rn"); // 完成后关闭连接。
睡眠毫秒(4000);
printf("nn等待连接...n");
睡眠毫秒(250);
memset(recv_buf,'0',RECV_BUFFER);
buff_count = 0;
实验现象
CW0+AP的命令模式AT=:
AT+1
AT+="baiwenwang","www.10ask.org"
+ CIPMUX=1
AT+CIPSERVER=1,80
AT+CIFSR
AT+CIPSEND=0,108
> HTTP/1.1 200 OK Content-Type: text/html Connection: close It Works!324
![](https://file.elecfans.com/web2/M00/23/89/pYYBAGGtoEqAXP2RAAAQNtZDONs485.png)
举报