|
| 1 | +--- |
| 2 | +title: RP2350VR手套 |
| 3 | +date: 2025-5-24 14:46 |
| 4 | +description: 使用RP2350制作VR手套 |
| 5 | +image: "../public/assets/images/glove1.jpg" |
| 6 | +category: 记录 |
| 7 | +tags: |
| 8 | + - 物联网 |
| 9 | + - 嵌入式 |
| 10 | + - vr |
| 11 | +published: true |
| 12 | +sitemap: true |
| 13 | +--- |
| 14 | + |
| 15 | +也是非常荣幸能评测beetle RP2350啊,板子到手第一感觉就是非常迷你,只有一个硬币大小,很符合其嵌入式穿戴设备的定位。 |
| 16 | + |
| 17 | + |
| 18 | +但是麻雀虽小五脏俱全,RP2350的功能却是非常强大。如 双 Cortex-M33 核心,运行频率 150MHz,支持浮点运算单元 FPU,增强的安全性和加密功能,集成 RGB LED、2MB Flash、520kB SRAM 和 19 个多功能 GPIO(模拟、数字、I²C、UART、SPI、PWM。还有着相当低的功耗。 |
| 19 | +RP2350可以直接在arduino中编写上传代码,也可以使用micropy,我这里就使用arduino作为测试了! |
| 20 | + |
| 21 | +RP2350没有官方的arduino库,所以我们需要手动添加社区大佬的库: |
| 22 | +点击文件→首选项 |
| 23 | + |
| 24 | +在其他开发板管理器地址中输入<https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json> |
| 25 | + |
| 26 | + |
| 27 | +然后就可以在开发板管理器中搜到RP2350了!我们点击安装! |
| 28 | + |
| 29 | + |
| 30 | +到手第一件事当然是点灯测试: |
| 31 | + |
| 32 | +```ino |
| 33 | +int useBin = 25; |
| 34 | + |
| 35 | +void setup() { |
| 36 | + |
| 37 | + pinMode(useBin, OUTPUT); |
| 38 | + |
| 39 | +} |
| 40 | + |
| 41 | +void loop() { |
| 42 | + |
| 43 | + digitalWrite(useBin, HIGH); |
| 44 | + |
| 45 | +} |
| 46 | + |
| 47 | +``` |
| 48 | + |
| 49 | +不得不说这块板子不仅迷你,标注也很清晰,一眼就能看到LED的引脚编号 |
| 50 | + |
| 51 | + |
| 52 | +然后是串口测试: |
| 53 | + |
| 54 | +```ino |
| 55 | +int usePin = A0; |
| 56 | + |
| 57 | +void setup() { |
| 58 | + |
| 59 | + Serial.begin(9600); |
| 60 | + |
| 61 | +} |
| 62 | + |
| 63 | + |
| 64 | + |
| 65 | + |
| 66 | +void loop() { |
| 67 | + |
| 68 | + String a = Serial.readString(); |
| 69 | + |
| 70 | + a.trim(); |
| 71 | + |
| 72 | + if(a.equals("")){ |
| 73 | + |
| 74 | + return; |
| 75 | + |
| 76 | + } |
| 77 | + |
| 78 | + Serial.println("user input:"+a); |
| 79 | + |
| 80 | + if (a.startsWith("hello")) { |
| 81 | + |
| 82 | + Serial.println("hi"); |
| 83 | + |
| 84 | + } else { |
| 85 | + |
| 86 | + Serial.println("???"); |
| 87 | + |
| 88 | + } |
| 89 | + |
| 90 | +} |
| 91 | + |
| 92 | + |
| 93 | +``` |
| 94 | + |
| 95 | + |
| 96 | +也是十分顺利了。 |
| 97 | + |
| 98 | +最后是重点:VR手套的实现: |
| 99 | +基于大佬的开源项目:<https://github.com/LucidVR/lucidgloves> |
| 100 | +原理是通过线缆拉动电位器实现电阻变化,封装为数据包,通过串口与pc交互,实现vr手套。 |
| 101 | + |
| 102 | +项目实现需要自己3d打印组件,去tb上双手还是比较贵的,要160左右,有打印机的朋友推荐自己打,打印件地址位于:<https://pan.baidu.com/s/13fnd0DoCyKVVMZP_ibvFpA?pwd=4h4x> |
| 103 | + |
| 104 | + |
| 105 | +其实这里应当是每根手指都有一个的,有个滑轮顶盖商家看错了打少了,只打了一个,就是下面这个:这两天还在加紧补发呢,等到了之后会及时更新的!暂时就只能先演示一根手指的了 |
| 106 | +其他打印件: |
| 107 | + |
| 108 | +项目原本是基于arduino nano的,所以要在咱们的2350上运行需要做一点小小的修改(主要是引脚)。项目有一定复杂度(不算很复杂)这里就只贴部分需要修改的代码了: |
| 109 | +在lucidgloves-firmware.ino中: |
| 110 | +将下方的引脚定义添加一个elif修改为你需要的引脚,我这里只设置了拇指为26。其他的力反馈,摇杆,可以根据自身情况修改 |
| 111 | + |
| 112 | +```ino |
| 113 | +#elif defined(ARDUINO_GENERIC_RP2350) |
| 114 | + |
| 115 | + #define PIN_PINKY 1 |
| 116 | + |
| 117 | + #define PIN_RING 1 |
| 118 | + |
| 119 | + #define PIN_MIDDLE 1 |
| 120 | + |
| 121 | + #define PIN_INDEX 1 |
| 122 | + |
| 123 | + #define PIN_THUMB 26 |
| 124 | + |
| 125 | + #define PIN_JOY_X 16 |
| 126 | + |
| 127 | + #define PIN_JOY_Y 18 |
| 128 | + |
| 129 | + #define PIN_JOY_BTN 19 |
| 130 | + |
| 131 | + #define PIN_A_BTN 19 |
| 132 | + |
| 133 | + #define PIN_B_BTN 19 |
| 134 | + |
| 135 | + #define PIN_TRIG_BTN 19 //unused if gesture set |
| 136 | + |
| 137 | + #define PIN_GRAB_BTN 19 //unused if gesture set |
| 138 | + |
| 139 | + #define PIN_PNCH_BTN 19 //unused if gesture set |
| 140 | + |
| 141 | + #define PIN_CALIB 19 //button for recalibration |
| 142 | + |
| 143 | + #define DEBUG_LED LED_BUILTIN |
| 144 | + |
| 145 | + #define PIN_PINKY_MOTOR 19 //used for force feedback |
| 146 | + |
| 147 | + #define PIN_RING_MOTOR 19 //^ |
| 148 | + |
| 149 | + #define PIN_MIDDLE_MOTOR 19 //^ |
| 150 | + |
| 151 | + #define PIN_INDEX_MOTOR 19 //^ |
| 152 | + |
| 153 | + #define PIN_THUMB_MOTOR 19 //^ |
| 154 | + |
| 155 | + #define PIN_MENU_BTN 19 |
| 156 | + |
| 157 | +#endif |
| 158 | +``` |
| 159 | + |
| 160 | +然后是AdvancedConfig.h中,需要手动设置最大模拟值,取消这行注释并自己设置一个值。 |
| 161 | + |
| 162 | +```ino |
| 163 | +#define ANALOG_MAX 1023 |
| 164 | +``` |
| 165 | +
|
| 166 | +遗憾的是,2350只支持4个模拟引脚。但它真的非常迷你,很喜欢的一款开发板! |
| 167 | +<video id="video" > |
| 168 | + <source id="mp4" src="https://cf-obj-01.62987d3702b4b057c6cae44e429bbc1f.r2.cloudflarestorage.com/videosKgkoAz-gloves.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=c5f4821b30bcb9b7a6eb4bc4d94f54b8%2F20250524%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20250524T063754Z&X-Amz-Expires=3600&X-Amz-Signature=e2082b91a02e7aac911e5cc46253296c53d3c4a68a91c18b7b17ef6310032f76&X-Amz-SignedHeaders=host&response-content-disposition=inline%3B%20filename%3D%22videosKgkoAz-gloves.mp4%22&response-content-type=video%2Fmp4&x-id=GetObject" type="video/mp4"> |
| 169 | +</videos> |
0 commit comments