这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » GIGA_R1_WiFi 开发指南【WIFI功能使用】

共1条 1/1 1 跳转至

GIGA_R1_WiFi 开发指南【WIFI功能使用】

助工
2026-02-09 21:45:27     打赏


【摘要】介绍GIGA R1的WIFI功能使用方法,并通过WIFI功能控制板载的RGB灯;


一、硬件介绍

1、产品特点

Arduino GIGA R1 WiFi 开发板,提供76个GPIO引脚(其中12个为模拟端口、12个PWM、4个串行端口、3个I2C、2个SPI、1个FDCAN、1个SAI);

采用双核STM32H747XI微控制器(480MHz的Cortex-M7内核和240 MHz的Cortex-M4内核);


配备2MB闪存、1MB内存,以及6MB外部闪存和8MB SDRAM;

通过板载Murata 1DX模块实现WiFi和低功耗蓝牙连接;

还有输入/输出3.5mm音频插孔、JTAG连接器、20Pin的Arducam相机连接器等;


image-20260125205601548

image-20260125205601548.png



主要特性



  • 微控制器:STMicro STM32H747XI Cortex-M7@480 MHz + M4 @ 240 MHz MCU(2MB 双组闪存、1MB RAM)

  • 内存:8MB SDRAM

  • 存储:16MB QSPI NOR 闪存

  • 无线功能:2.4GHz WiFi 802.11b/g/n和蓝牙 5.1 BR/EDR/LE(Murata 1DX 模块)


接口

  • 显示屏:20pin接口

  • 摄像头:20pin Arducam摄像头接口

  • USB1x USB Type-C 端口用于编程和 HID1x USB 2.0 主机 Type-A 端口

  • 音频:3.5 毫米音频插孔

  • 调试:JTAG 连接器

  • 电源:通过VIN引脚提供6 ~ 24V输入

  • VRT(为RTC供电)和 OFF(关闭电路板电源)引脚


  • 复位按钮、BOOT0按钮、RGB_LED、电源LED

  • 安全功能:Microchip ATECC608A

  • 每个 I/O 引脚 8mA




二、功能实现

1、硬件介绍

GIGA R1 WiFi 上的无线功能(2.4GHz Wi-Fi / 蓝牙)模块是 LBEE5KL1DX-883,芯片为Infineon(CYW4343W),该模块需使用外部天线;


image-20260207193916101.png


主要原理图

image-20260207194053517.png


2、功能效果

WIFI功能效果:通过开发板连接WIFI,并通过局域网内的IP地址的网页来远程控制开发板上的RGB灯;

板载RGB灯只有点亮和熄灭两种状态:因此只能实现独立R、G、B的(点亮 / 熄灭)以及组合方式;


网页文本显示当前组合颜色

全开:全部灯亮,显示 “红 + 绿 + 蓝 = 白色”;

单色:如果只有一个灯亮,则直接显示该颜色名称;

全灭:全部灯熄灭,显示全灭 (黑色);

image-20260208215007576.png



三、代码编写

主要相关代码

#include <WiFi.h>

#define MY_SSID "WIFI名称"
#define MY_PASS "WIFI密码"

// WIFI 名称 / 密码
const char* ssid = MY_SSID; 
const char* pass = MY_PASS;
 
WiFiServer server(80);

// LED 状态
bool stateR = false;
bool stateG = false;
bool stateB = false;

void setup() {
  Serial.begin(115200);

  pinMode(LEDR, OUTPUT); 
  pinMode(LEDG, OUTPUT);   
  pinMode(LEDB, OUTPUT);   

  // 默认全部熄灭
  digitalWrite(LEDR, HIGH);
  digitalWrite(LEDG, HIGH);
  digitalWrite(LEDB, HIGH);

  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) {
    delay(3000);
    Serial.print(".");
  }
  // 显示 网页IP地址
  server.begin();
  Serial.println("\nWiFi连接成功  IP地址: " + WiFi.localIP().toString());
}

void loop() {
  WiFiClient client = server.accept();  //监听连接
  if (client) {
    String currentLine = "";
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (c == '\n') {
          if (currentLine.length() == 0) {
            // 发送HTTP响应
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html; charset=utf-8");
            client.println();
            // 生成网页html内容
            client.print("<html><head><meta name='viewport' content='width=device-width, initial-scale=1.0'>");
            client.print("<title>板载RGB 网页控制</title>");
            client.print("<style>body{font-family:sans-serif; text-align:center; padding-top:30px; background-color:#f4f4f9;}");
            client.print(".btn{display:inline-block; width:100px; height:45px; margin:10px; line-height:45px; color:white; font-weight:bold; cursor:pointer; border-radius:5px; text-decoration:none;}");
            client.print(".on{background-color:#4CAF50;} .off{background-color:#f44336;}");
            client.print(".status-box{margin-top:20px; padding:15px; border:1px solid #ccc; display:inline-block; border-radius:10px; background:#fff;}</style></head><body>");
            
            client.print("<h1>板载RGB 网页控制</h1>");
            // 控制按钮
            client.print("<p>红色 LED (LEDR): " + String(stateR ? "<a href='/R/OFF' class='btn off'>关闭</a>" : "<a href='/R/ON' class='btn on'>开启</a>") + "</p>");
            client.print("<p>绿色 LED (LEDG): " + String(stateG ? "<a href='/G/OFF' class='btn off'>关闭</a>" : "<a href='/G/ON' class='btn on'>开启</a>") + "</p>");
            client.print("<p>蓝色 LED (LEDB): " + String(stateB ? "<a href='/B/OFF' class='btn off'>关闭</a>" : "<a href='/B/ON' class='btn on'>开启</a>") + "</p>");
              
            // 组合颜色显示
            client.print("<div class='status-box'><strong>当前组合颜色为:</strong>");
            if (!stateR && !stateG && !stateB) {
                client.print("全灭 (黑色)");
            } else if (stateR && stateG && stateB) {
                client.print("红 + 绿 + 蓝 = 白色");
            } else if (stateR && stateG) {
                client.print("红 + 绿 = 黄色");
            } else if (stateR && stateB) {
                client.print("红 + 蓝 = 品红(紫)");
            } else if (stateG && stateB) {
                client.print("绿 + 蓝 = 青色");
            } else if (stateR) {
                client.print("红色");
            } else if (stateG) {
                client.print("绿色");
            } else if (stateB) {
                client.print("蓝色");
            }
            client.print("</div></body></html>");
            break;
          } else {
            // 处理RGB开关请求
            if (currentLine.indexOf("GET /R/ON") >= 0)  { stateR = true;  digitalWrite(LEDR, LOW); }
            if (currentLine.indexOf("GET /R/OFF") >= 0) { stateR = false; digitalWrite(LEDR, HIGH); }
            if (currentLine.indexOf("GET /G/ON") >= 0)  { stateG = true;  digitalWrite(LEDG, LOW); }
            if (currentLine.indexOf("GET /G/OFF") >= 0) { stateG = false; digitalWrite(LEDG, HIGH); }
            if (currentLine.indexOf("GET /B/ON") >= 0)  { stateB = true;  digitalWrite(LEDB, LOW); }
            if (currentLine.indexOf("GET /B/OFF") >= 0) { stateB = false; digitalWrite(LEDB, HIGH); }
            currentLine = "";
          }
        } else if (c != '\r') {
          currentLine += c;
        }
      }
    }
    client.stop();  //释放资源
  }
}




四、程序烧录

1、连接USB数据线至开发板;

2、选择端口号对应的开发板;

3、点击 上传 烧录程序到开发板上;

image-20260127231208397.png


五、效果演示


GIGA_WIFI.gif








关键词: GIGA R1 WiFi    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]