
“两杯美式,谢谢。”
“主人的两杯咖啡好啦,欢迎品尝~”
醒醒,你不是在看日漫,你家里也没有咖啡女仆。
不过,作为万能的工程师,自己DIY也不是不可以。硬件爱好者ValentinFg就把家里的咖啡机改装成了“咖啡女仆”,只要一句话,不用跑去咖啡机旁自己动手做,TA就乖乖地开始给你做咖啡。
后来,他还整理了一份DIY咖啡女仆攻略,只要7步就可完成。
Step1:剁手一些物料首先,你需要一台咖啡机。作者选用的是德龙的型号,国内电商也有这个牌子。

然后,你需要买五块控制器,分别是:
树莓派3B+主板,亲测某宝可购。

ReSpeaker2-MicsPiHAT,适配树莓派的双麦克风扩展板,可以拿来做AI语音应用。

Arduinonano,一款基于ATmega328P()的小型主板。

8通道继电器板

步进电机+控制板

另外还需要充电器、microSDHC卡、转接线、8x8耦合器、一些18AWG导线(最好是红黑的)、2xM3x15螺丝钉、2xM3x45螺丝钉。

然后准备一些工具,包括一个热熔胶枪、不同尺寸的一套钻头、一台电磨机、一些热缩套管、一个电烙铁、一个飞利浦螺丝刀、一个TorxTS20螺丝刀,另外最好有3D打印机,没有的话就去万能的某宝找人帮你做。
Step2:拆咖啡机现在,可以把买来的咖啡机大卸八块了(别哭,后面我们还会装回去)。
先把后面的这五个螺丝拧下来,注意螺丝钉不要丢。

然后可以吧咖啡机的“左脸”和“右脸”悄咪咪往后滑动拖下来。

现在把固定“头盖骨”的两个螺丝拧下来,先不要着急掀起咖啡机的头盖骨。

这个时候,你会发现咖啡机的“右脸颊”有一个用于固定“头盖骨”的螺丝钉,把它拧下来。“左脸颊”也有一个,同样拧下来。

然后把蒸汽主开关拉向你站立的方向,取下来。

现在可以掀起咖啡机的“头盖骨”啦!
掀完之后,可以“面对”你的咖啡机正脸,把左右两侧的两个螺丝拧下来。


再把面板背面的4个螺钉拧下来。面板左右两侧有两个灰色的塑料卡,取下面板的时候轻一点不要弄坏它们,不然就装不回去了。

面板下面的PCB板右上角有个连接处,轻轻地把它拔出来。

完美,现在你的咖啡机成功被大卸八块了。
Step3:前面板焊接现在,你可以把咖啡机正脸上的面板拿下来,准备加工它了。
先在面板上戳5个洞,位置如下图。注意洞的大小,需要保证两根18AWG导线通过。

现在,拿起你的电烙铁,开始把导线焊道面板按钮下面的引脚处,面板上7个按钮分别连一对红黑导线。

先装按钮和透明壳,注意导线的站位,不要卡住。
不过,考虑到反正你要用语音控制咖啡机了,不装按钮也不会怎样,略略略略略~

这块面板的背壳也要和面板一样,戳一些洞洞,方便导线通过。

现在,在咖啡机外壳正脸的最上方中央戳个半圆的洞,也是为了过导线。
另外,作者还3D打印了一个部件,这个部件的下边中央是另外一个半圆。
两个半圆的位置如下图红色大圆圈所示,而两个红色小圆圈的位置需要打直径2.8毫米的孔。

现在,可以把正面的PCB板、外壳等连在一起了。电线留20厘米左右的长度。

用M3x15螺丝钉将步进电机固定到3D打印部件上。
在步进机的尖端添加耦合器(暂不夹紧)。使用M3X45螺钉将3D部件固定到正面外壳上。

现在,把所有电线顺到咖啡机右侧,把整个咖啡机正面装回卡飞机上,注意现在也不要夹住耦合器。

下面是整体的电路图,可以按照这个来连接导线。

连好之后,可以把所有器件一股脑儿塞在咖啡机的右侧,当然要保证里面没有短路的情况,然后找个合适的位置,拿热熔胶固定好。
Step6:写代码和安装程序可以直接复制这段声控代码
1#defineSLAVE_ADDRESS0x0478//namingArduinopin9intONOFF=2;10intx1short=3;//buttonfor1shortcoffee11intx2short=4;//buttonfor1shortcoffee12intclean=5;//buttonclean13intvape=6;//buttonvape14intx1long=7;//buttonfor1longcoffee15intx2long=8;//buttonfor2longcoffee1617intcount=0;18intnumber=0;19intstate=0;20intsteps=0;21intmax_step=(int)(250.0/180.0*(float)REVOLUTION/2.0);22intnb_step=330;23Stepperstepper(STEPS,9,11,10,12);2425intservo_pos=0;2627voidsetup(){28//(9600);30("Ready!");3132//setuppinMode33pinMode(ONOFF,OUTPUT);34pinMode(x1short,OUTPUT);35pinMode(x2short,OUTPUT);36pinMode(x1long,OUTPUT);37pinMode(x2long,OUTPUT);38pinMode(vape,OUTPUT);39pinMode(clean,OUTPUT);4041//setdefaultstatus42digitalWrite(ONOFF,HIGH);43digitalWrite(x1short,HIGH);44digitalWrite(x2short,HIGH);45digitalWrite(x1long,HIGH);46digitalWrite(x2long,HIGH);47digitalWrite(vape,HIGH);48digitalWrite(clean,HIGH);49(200);50(0);51turn_right(1);52turn_left(1);53}5455/*56*Runundefinitly57*/58voidloop(){59if(()0){60//readtheincomingbyte:61intincomingByte=();62if(incomingByte=='B'){63//commandhavetostartwith'B'64number=0;65count=0;66}elseif(incomingByte=='E'){67//commandhavetowith'E'68start_coffee(number);69number=0;70count=0;71}72elseif(incomingByte='0'incomingByte='9'){73//saveasanintallthecharactercomingfromSerial74inttmp=incomingByte-'0';75number*=10;76number+=tmp;77count++;78}79}80}8182/*83*Utils84*/8586/*87*turnthesteppermotortotheleft88*/89voidturn_left(intv){90("turnleft\n");91if(v==0)92return;93if(v==1){94(400);95return;96}97if(v==2){98(800);99return;100}101if(v==3){102(1300);103return;104}105}106/*107*turnthesteppermotortotheright108*/109voidturn_right(intv){110("turnright\n");111if(v==0)112return;113if(v==1){114(-400);115return;116}117if(v==2){118(-800);119return;120}121if(v==3){122(-1300);123return;124}125}126127/*128*simulatepushabutton129*/130voidtouch_button(intpin){131digitalWrite(pin,LOW);132("touchdown\n");133delay(500);134digitalWrite(pin,HIGH);135}136137/*138*simulatepushbuttonfor2shortcoffees139*/140voidtouch_x2(){141("touchx2\n");142touch_button(x2short);143}144/*145*simulatepushbuttonfor2longcoffees146*/147voidtouch_x2_long(){148("touchx2long\n");149touch_button(x2long);150}151/*152*simulatepushbuttonfor1shortcoffee153*/154voidtouch_x1(){155("touchx1\n");156touch_button(x1short);157}158/*159*simulatepushbuttonfor1longcoffee160*/161voidtouch_x1_long(){162("touchx1long\n");163touch_button(x1long);164}165166/*167*simulatepushbuttonforcleaning168*/169voidtouch_clean(){170("touchrince\n");171touch_button(clean);172}173174/*175*simulatepushbuttonforonandoff176*/177voidonoff(){178("turnon/off\n");179touch_button(ONOFF);180}181182/*183*Selecttheintensityfortthecoffeebymovingthesteppermotor184*0-mild185*1-standard186*2-strong187*3-extrastrong188*/189voidselect_intensity(intintensity){190turn_right(intensity);191}192193/*194*Setthesteppermotortoitsdefaultposition195*/196voiddefault_intensity(intintensity){197turn_left(intensity);198}199200/*201*computeintintoorder202*/203voidstart_coffee(unsignedinttype){204intnumber=type%10;205intcoffee_type=type/10%10;206intcoffee_size=type/100%10;207intintensity=type/1000%10;208intspecial=type/10000%10;209(type);210if(special!=0){211switch(special){212case1:213onoff();214return;215}216}elseif(coffee_type==9){217select_intensity(intensity);218if(number==1)219if(coffee_size==1)220touch_x1();221else222touch_x1_long();223elseif(coffee_size==1)224touch_x2();225else226touch_x2_long();227delay(20000);228default_intensity(intensity);229}230}之后需要设置一下你的树莓派主板,确保它安装了RaspbianStretchLite。
然后在树莓派主板上设置Snips语音平台,先连上网,然后启用SSH,安装SAM。
把Snips要安装在SAM上,重启即可启动,把上面的咖啡机程序装进Snips控制台。
Step7:喝咖啡走起现在大功告成啦,连上电源,打开树莓派程序,打开咖啡机,你就可以“点”一杯咖啡试试:
“HeySnips,我要两杯咖啡,蟹蟹。”
传送门内附各种亚马逊链接,不过大家完全可以去(准备退休的)马爸爸那里剁手。
就酱,做手工愉快~
—完—
诚挚招聘
量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。
վ'ᴗ'ի追踪AI技术和产品新动态