内容介绍
内容介绍
项目介绍
这里是我参加Funpack第三季第五期活动的任务总结报告,我所完成的是任务一,从板子的以太网排针处引出接口,并通过网口通信,控制板子上的LED灯。
以下是详细的操作指导:
步骤 1: 安装 Arduino 并配置 Teensy 4.1 开发板
- 下载并安装 Arduino IDE:
- 访问 Arduino 官方网站 https://www.arduino.cc/en/software 下载 Arduino IDE。
- 安装 Arduino IDE 到你的计算机上。
- 添加 Teensy 4.1 支持:
- 打开 Arduino IDE。
- 进入“文件”>“首选项”(在 macOS 上是“Arduino”>“首选项”)。
- 在“附加开发板管理器网址”字段中,添加 Teensy 的 URL:
https://www.pjrc.com/teensy/td_downloads.json
- 点击“确定”保存设置。
- 安装 Teensy 开发板:
- 进入“工具”>“开发板”>“开发板管理器”。
- 在搜索框中输入“Teensy”。
- 找到“Teensyduino”安装选项并安装。
- 选择 Teensy 4.1 开发板:
- 在“工具”>“开发板”菜单中选择“Teensy 4.1”。
- 下载示例程序和配置编译器:
- Arduino IDE 自动配置编译器和其他工具链,无需手动操作。
步骤 2: 选择合适的示例程序
- 选择以太网相关例程:
- 在 Arduino IDE 中,进入“文件”>“示例”>“Teensy”>“web”。
- 选择一个以太网相关的示例程序,例如“web_server”。
- 选择控制板载 LED 灯的相关例程:
- 在 Arduino IDE 中,进入“文件”>“示例”>“Basics”>“Blink”。
步骤 3: 修改例程
- 修改以太网例程:
- 在以太网例程中,你可以添加 HTML 代码,使其在网页中显示相关内容或组件。
- 例如,你可以在
handleRoot()
函数中添加 HTML 代码,用于创建一个简单的网页界面。
- 修改 LED 控制例程:
- 在 Blink 例程中,你可以添加代码来控制 LED 的亮灭状态。
- 例如,你可以添加一个按钮到网页中,当用户点击按钮时,通过以太网发送命令到 Teensy 4.1,从而控制 LED 的状态。
- 上传代码到 Teensy 4.1:
- 确保 Teensy 4.1 已经正确连接到计算机。
- 在 Arduino IDE 中,点击“上传”按钮上传代码到 Teensy 4.1。
- 测试你的项目:
- 打开浏览器,输入 Teensy 4.1 在本地网络中的 IP 地址。
- 检查网页是否显示了你添加的内容,以及是否可以通过网页控制 LED。
通过这些步骤,你可以成功地在 Teensy 4.1 上运行以太网和 LED 控制的示例程序,并进行相应的修改。
硬件介绍
Teensy 4.1 是一款高性能微控制器,特点如下:
- 处理器与性能:搭载恩智浦i.MX RT1062处理器,基于ARM Cortex-M7内核,最高运行频率600 MHz,具备64位和32位浮点数学单元。
- 内存与存储:拥有7936K闪存、1024K RAM(512K紧密耦合)、4K EEPROM(仿真),支持QSPI存储器扩展。
- 接口与通信:具备2个USB端口(480MBit/S)、55个数字I/O引脚(35个PWM输出)、18个模拟输入引脚、8个串行端口、3个SPI端口、3个I2C端口、2个I2S/TDM和1个S/PDIF数字音频端口、3个CAN总线(1个支持CAN FD)、1个SDIO(4位)microSD卡插槽。
- 网络功能:内置以太网控制器和PHY芯片,支持10/100 Mbit速度。
- 电源管理:支持动态时钟缩放,可在不同频率下保持正确的串行通信、音频采样率等,且具备电源关闭功能,可通过按钮控制。
- 其他特性:32个通用DMA通道、加密加速、随机数生成器、RTC、FlexIO、像素处理流水线、外设交叉触发等。
Teensy 4.1 还支持超频,频率可超过600MHz,且在电源关闭时,如果连接了纽扣电池,RTC仍能跟踪日期和时间。
软件介绍
Teensy支持多种编程软件:
- Arduino IDE + Teensyduino:主要环境,包含优化库。
- Visual Micro:仅限Windows,需付费。
- PlatformIO:跨平台,功能丰富。
- CircuitPython:通过Teensy Loader编程,部分硬件支持。
- 命令行:提供Makefile,适合无图形界面使用。
本次我使用的是arduino的方式进行开发
需要在软件中先安装好相应的开发板管理器,安装好之后,会有许多的示例程序,我们可以先看看,与以太网及led控制相关的例程
/*
Web Server
A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)
created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
modified 02 Sept 2015
by Arturo Guadalupi
*/
#include <SPI.h>
#include <NativeEthernet.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 170, 177);
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
String LEDState = "off";
void setup() {
// You can use Ethernet.init(pin) to configure the CS pin
//Ethernet.init(10); // Most Arduino shields
//Ethernet.init(5); // MKR ETH shield
//Ethernet.init(0); // Teensy 2.0
//Ethernet.init(20); // Teensy++ 2.0
//Ethernet.init(15); // ESP8266 with Adafruit Featherwing Ethernet
//Ethernet.init(33); // ESP32 with Adafruit Featherwing Ethernet
// Open serial communications and wait for port to open:
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.println("Ethernet WebServer Example");
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
// Check for Ethernet hardware present
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :(");
while (true) {
delay(1); // do nothing, no point running without Ethernet hardware
}
}
if (Ethernet.linkStatus() == LinkOFF) {
Serial.println("Ethernet cable is not connected.");
}
// start the server
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
上面是一个Web服务器代码,能够通过Web界面控制板上的LED灯。它使用了Arduino Wiznet Ethernet盾(或兼容的网络接口)来实现网络通信。以下是代码的主要功能:
- 包含库:引入了SPI和NativeEthernet库,用于网络通信。
- 设置MAC地址和IP地址:定义了网络接口的MAC地址和IP地址。
- 初始化Ethernet服务器:在端口80上创建了一个EthernetServer对象,用于处理HTTP请求。
- 定义LED状态:定义了一个字符串变量
LEDState
来跟踪LED的状态(开或关)。 - 设置函数(setup):
- 初始化串口通信。
- 设置LED_BUILTIN引脚为输出模式。
- 等待串口连接(对于原生USB端口的Arduino板)。
- 打印启动信息。
- 启动Ethernet连接和服务器。
- 检查Ethernet硬件是否存在,并在串口打印相关信息。
- 循环函数(loop):
- 监听新的客户端连接。
- 读取HTTP请求头,并检查请求内容。
- 根据请求内容,控制LED的状态,并响应HTTP请求。
- 发送HTTP响应头和HTML页面内容,页面包含LED的当前状态和控制按钮。
- 关闭客户端连接。
- 处理HTTP请求:
- 如果请求是
/led/on
,则将LED状态设置为“on”并点亮LED。 - 如果请求是
/led/off
,则将LED状态设置为“off”并熄灭LED。 - 生成一个简单的HTML页面,显示LED的当前状态,并提供两个按钮来控制LED的开关。
- 如果请求是
这个Web服务器允许用户通过浏览器访问指定的IP地址,看到一个包含LED状态和控制按钮的网页,用户可以通过点击按钮来控制连接到Arduino板上的LED灯。
效果展示
总结
在本次活动中,学习了如何使用以太网发进行通信。在过程中遇到的问题,通过百度搜索都能找到适合的答案,使自我得到了提升,感谢硬禾学堂平台。
附件下载
teensy41-WebServer例程.zip
团队介绍
无
评论
0 / 100
查看更多
猜你喜欢
Funpack3-4 基于FRDM-MCXN947的以太网通讯工具该项目使用了FRDM-MCXN947板卡,实现了通过以太网连接PC进行通信的设计,它的主要功能为:使用板卡上的以太网接口连接到电脑上并通过以太网和电脑通信,实现触摸按键,实体按键,led数据传输。。
反正都一样
35
Funpack3-5基于Teensy 4.1以太网控制LED灯该项目使用了Teensy 4.1开发板,实现了通过以太网控制板载LED的设计,它的主要功能为:通过以太网控制板载LED的亮灭。
eelover
19
Funpack3-5 基于BeagleBone® Black的以太网通讯工具该项目使用了BeagleBone® Black,实现了通过以太网连接pc进行通信的设计,它的主要功能为:使用板卡上的以太网接口连接到电脑上并通过以太网和电脑通信,led数据传输。。
反正都一样
9