【Beetle ESP32-C3试用(2)】连接二哈使用
本帖最后由 Anders项勇 于 2022-6-18 19:50 编辑1.开发环境搭建:
之前测试Beetle ESP32-C3时,是连接了一个温湿度传感器,这个板子确实是小,还有扩展板,接口、功能丰富,并且有GDI显示屏接口,特别适合做小巧的项目,比如智能眼镜。这里我们和二哈连接使用,之前设想再接上df新出的Fermion: 1.51”OLED 透明屏幕透明屏(https://www.dfrobot.com.cn/goods-3443.html)的话,那么就可以做成一个智能眼镜,让二哈获取外部图形识别出信息,然后把信息投射到透明屏上,形成AR眼镜的效果。
先搭建arduino的开发环境。按照说明里面的指导这个地址无法加入https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json。看其他网友总结了一些方法终于把板子开发环境搞好。地址加入这个地址:https://www.arduino.cn/package_esp32_index.json然后安装一个包就好了。包的下载地址:社区成员 鱼小黑 提供:https://cloud.codess-nas.top:5213/s/2Ocn 解压完成后,再打开Arduino IDE,即可在 菜单栏>工具>开发板 中找到你使用的esp32-C3开发板,但有些显示是esp32-S3,可是并不影响使用。环境好了之后安装一个点灯程序,测试正常。
2.硬件连接:
我们拿一个二哈识图来连接Beetle ESP32-C3,二哈连接I2C的接口。ESP32-C3是3.3v电压,二哈单独用usb供电,因为运行时电压要求较高,否则会不太稳定。
3.编程:
发现在arduino环境下二哈识别的一些信息无法得到,比如物体识别模式识别出汽车、花等物体名称,程序中不知道怎么获得到,找了一些资料也不知道怎么获取。本来想获取这些信息可以传递到透明屏上形成AR眼镜效果。那就先测试下获取识别出的物体的中心坐标、宽、高等数据。先把二哈的库文件拷贝到arduino的库目录下面。
#include "HUSKYLENS.h"
#include "SoftwareSerial.h"
HUSKYLENS huskylens;
//HUSKYLENS green line >> SDA; blue line >> SCL
void printResult(HUSKYLENSResult result);
void setup() {
Serial.begin(115200);
Wire.begin();
while (!huskylens.begin(Wire))
{
Serial.println(F("Begin failed!"));
Serial.println(F("1.Please recheck the \"Protocol Type\" in HUSKYLENS (General Settings>>Protocol Type>>I2C)"));
Serial.println(F("2.Please recheck the connection."));
delay(100);
}
}
void loop() {
if (!huskylens.request()) Serial.println(F("Fail to request data from HUSKYLENS, recheck the connection!"));
else if(!huskylens.isLearned()) Serial.println(F("Nothing learned, press learn button on HUSKYLENS to learn one!"));
else if(!huskylens.available()) Serial.println(F("No block or arrow appears on the screen!"));
else
{
Serial.println(F("###########"));
while (huskylens.available())
{
HUSKYLENSResult result = huskylens.read();
printResult(result);
}
}
}
void printResult(HUSKYLENSResult result){
if (result.command == COMMAND_RETURN_BLOCK){
Serial.println(String()+F("Block:xCenter=")+result.xCenter+F(",yCenter=")+result.yCenter+F(",width=")+result.width+F(",height=")+result.height+F(",ID=")+result.ID);
}
else if (result.command == COMMAND_RETURN_ARROW){
Serial.println(String()+F("Arrow:xOrigin=")+result.xOrigin+F(",yOrigin=")+result.yOrigin+F(",xTarget=")+result.xTarget+F(",yTarget=")+result.yTarget+F(",ID=")+result.ID);
}
else{
Serial.println("Object unknown!");
}
}
4.运行:
打开串口监视器,就可以看到识别出的物体方框的中心坐标、宽、高等数据的实时信息。注意板子的usb cdc on boot要设为enabled,否则串口监视器看不到。
页:
[1]