SummerScienceCamp
高校科学营
2023 年 7 月 18 日,中科大机器人俱乐部与 RoboWalker 战队承办了高校科学营的夜晚活动,为来自高中参加活动的同学们带来了科里科气小风扇的制作,活动取得了圆满的成功。
小风扇搭载 ESPCam ,使用 Arduino 调用 EspWho 解决方案实现人脸位置检测,并使用 PWM 驱动舵机和电机,实现小风扇追随人脸转动和吹风的效果。
前期筹划
6 月 25 日,我们在得知这个活动后报名负责组织这个活动,共五位俱乐部成员。此时正处于考试周,从龙队那里接单后暂且搁置。
7 月 1 日至 7 月 6 日,跟据之前了解的信息————带领高中的大“小朋友”们一起图形化编程————进行准备,因为去年资料丢失(?听去年负责的同学说程序是买来就烧在开发板上),只能尝试自己解决。
就软件上满足需求有两个重点,一是人脸的识别,二是图形化编程。在人脸识别上有两种方案,要么让 ESPCam 推流,交给服务器跑神经网络识别人脸,再返回数据给开发板(觉得 Cam 性能不足),二是直接在板子上跑网络或者有库可以调用。第一个方法虽然可靠,一旦离开了服务器也就是大家把作品带回家,这个小风扇就无法使用了。而第二个方案,由于看到乐鑫的 ESP-Who 而具有很大的可行性。
张昊鹏和我就两个方案的可行性进行尝试,他去了解是否可以给战队购买域名搭建服务器来解决方案一只能在局域网工作的缺点,而我来尝试 ESP-Who 解决方案的可行性。
众所周知搭建乐鑫的开发环境是一件非常困难的事情,但是在来回折腾之后还是装上了 IDF ,然而不幸的是我并不会修改 IDF 项目的配置使例程与 ESPCam 相适应,更准确地说是找不到在哪里修改配置。搞不定于是倒戈方案一,实现用 Arduino 程序推流的功能,在实现推流之前先要看看如何获取图像,于是运行了 ESPCam 的 Arduino 相机例程,令人惊喜的是相机例程生成的网页中竟然有人脸识别的功能,令人伤心的是点击按钮并没有反应。然而我阴差阳错地修改了 ESP 的包服务器地址,在升级了 ESP 包之后功能就可以用了。从一个完善功能的代码中裁剪出我们想要的横向偏移显然是简单的事情,于是方案一反而首先得到了实现。
在实现人脸检测的同时,我们也尝试了图形化开发,毕竟交给没有接触过代码的同学还是图形化开发比较友好,首先尝试了 mind+ 发现功能不够完善之后又用了 mixly,发现 mixly 可以在 ESP32C3 上基于 micropython 进行图形化编程,尽管有时会有奇怪的问题,但也不是不能用,于是我们的前期工作就完成了。
需求大变
7 月 8 日,我们前期工作完成地差不多了,将要进行下一步准备,结果一问龙队得知我们并不使用机房,而是使用大礼堂,我们的活动时间也只有一个小时,这给了我们一点小小震撼。之前的构想被完全推翻了。
张昊鹏建了一个 QQ 群,把我们小组成员和团委老师拉入,直接和团委老师对接,得知去年是的活动是将物品邮寄到家中线上举办的活动,和今年线下完全不同,而去年完整的图形化授课则是麻神给感兴趣的同学“开小灶”的额外授课。
直到 7 月 10 日,在和团委的老师联系的过程中逐渐“明确”了需求————18日, 200 人,分组,小风扇。
张昊鹏负责采购,严浩瑜负责 3D 结构件的设计,我要去北京参加活动(14 日回)负责摸鱼,两位女生负责活动现场上台讲解。
紧急赶工
7 月 12 日,龙队提醒 3D 打印进度,我推荐去找店家打印。
7 月 13 日,3D 连接件样品一代。
7 月 14 日,采购物品到达部分,3D 连接件样品二代。
7 月 15 日,发现图便宜买的 3 块钱一根 USB 供电线线阻单程有 3 欧,连舵机都带不动,麻。尽管已经超过预算只能咬牙买贵的。超过预算是因为最初说的 200 人其实只有 100 人。3D 连接件样品三代,主要在解决安装孔位置的问题。
7 月 16 日,3D 连接件样品四代、五代,做的插接挡板总会掉下来。改完,决定去找 3D 打印机开始生产。龙队得知还没开始打印震惊。下午,我们前去力三楼借用打印机,结果发现拓竹四个小时能打完的东西那些打印机要打二十四个小时,进度突然出现危机。过了一会发现默认参数打印的东西要么翘边,要么炒面,要么不出料,几乎没有能够顺利工作的,在对比之下才真正理解拓竹的好,我们只能无功而返,去恳请专家姚骧出马。并且立刻开始简化模型,丢弃掉原先有趣但是笨重的插接结构,改为直上直下的结构,没法连接的地方用纳米胶固连,在四个小时里面完成了重新设计,并打样成功,发送给了姚骧。接下来就是漫长的打印机和时间赛跑了。
7 月 17 日,凌晨 1 点,完成第一次成品总装。凌晨 3 点,完成组装视频录制。白天,完成视频剪辑,程序烧录和到货的元件装入60份盒子。
视频
7 月 18 日,张昊鹏熬夜给拓竹下锅,我早起继续下锅。在下午六点,竹子最后一锅出炉,加上其他打印机的产能,惊险而顺利地完成了,生产指标,晚上 7:30 ,活动开始了。
总结
- 一个团队要确立 leader ,Leader 要能够把控进度,沟通联络,对结果负责。
- 一定要明确甲方的需求。要多多沟通。
- 要充分调研,如打印机的速度并没竹子那么快。
- 要快,过程中可能出现各种问题需要解决,要预留充足时间。
- 接活要慎重