在过去的十年中,许多人闲置了一两个智能手机,而我的也是如此。 我决定使用智能手机来控制某些东西,例如汽车。
首先,我选择了乐高玩具车。 它可以向前和向后移动,向左和向右旋转,并具有带红外线的遥控器。 作为机器引擎的驱动器,使用了芯片LB1836,它具有四个信息输入。 In1,In2-控制运行中的引擎,In3,In4-控制转向盘,根据方案0、0或1,1-无效状态。 0、1或1,0-引擎朝一个方向或另一个方向旋转。
当从遥控器接收信号时,输入上的逻辑0和1形成玩具红外线的接收器。
我决定使用智能手机屏幕将信号从智能手机传输到打字机,因为其他传输通道在技术上非常复杂且实现成本很高。 我决定将设备连接到LB1836芯片的输入,该芯片将接收来自智能手机的信号。
信号传输方案如下。 智能手机中的程序会在屏幕上创建给定持续时间的亮点,设备会对其进行注册并在LB1836的输入端生成相同持续时间的逻辑0和1,而无需进行任何逻辑处理,从而极大地简化了设备的设计。 也就是说,我只是用设备更换了红外接收器。
接收光信号的设备由4个单元组成。 每个单元是一个L-3DP3C KGB光电晶体管,连接到npn晶体管KT315上的放大器。 动力来自受控机器。 如我所说,输出连接到引擎驱动程序的相应输入。 低功率发动机可以直接从出口提供动力,但只会沿一个方向旋转。 但是会有四个!

关于设备元素的选择,我可以说以下。 我拿起了自古以来的晶体管。 光电晶体管购买了那些在商店中的晶体管。 因此,如果要重复该方案,请不要浪费时间搜索,而要使用可用的元素。 顺便说一句,首先我将放大器组装在带有四个运算放大器的LM 324N芯片上。 它也很好用,但是在我看来,它的尺寸太大。
该设备使用铜箔条和Lego设计者的元件组装在纸板上。

将光电晶体管放置在直径为5毫米,深度为9毫米的光阱底部,以排除侧面照明。 卷入管中的金属化膜被插入到光阱中,由于光通量的增加,这大大提高了光电晶体管的灵敏度。

这是汽车。

为了开发程序,我使用了BASIC应用程序! 来自Googl Play市场。 此应用程序允许您编写Android程序,创建apk文件并与智能手机的所有传感器和设备一起使用。
程序清单
DO LET s$=" : " TTS.INIT TTS.SPEAK s$ TTS.STOP STT.LISTEN "" STT.RESULTS theList LIST.SIZE theList, theSize LET kom$="" FOR k = 1 TO theSize LIST.GET theList, k, theText$ IF (theText$="") THEN kom$="" IF (theText$="") THEN kom$="" IF (theText$="") THEN kom$="" IF (theText$="") THEN kom$="" IF (theText$="") THEN kom$="" NEXT k PRINT kom$ GR.OPEN 255, 0, 0, 0 GR.BRIGHTNESS 0.7 GR.ORIENTATION 1 GR.SCREEN w, h a = 255 r = 255 g = 255 b = 255 fill = 1 GR.COLOR a,r,g,b,fill LET wc=0.95*h LET hc=w LET m=36 GR.CLS GR.CIRCLE n5, hc/m*9.5,wc,w/15.6 GR.CIRCLE n4, hc/m*13.5,wc,w/15.6 GR.CIRCLE n3, hc/m*18,wc,w/15.6 GR.CIRCLE n2, hc/m*22.5,wc,w/15.6 GR.CIRCLE n1, hc/m*26.5,wc,w/15.6 FOR i=1 TO 5 GR.HIDE i NEXT i IF (kom$="") THEN GR.SHOW 2 PAUSE 300 GR.HIDE 2 ENDIF IF (kom$="") THEN GR.SHOW 1 PAUSE 300 GR.HIDE 1 ENDIF IF (kom$="") THEN GR.SHOW 2 GR.SHOW 4 PAUSE 300 GR.HIDE 2 GR.HIDE 4 ENDIF IF (kom$="") THEN GR.SHOW 2 GR.SHOW 5 PAUSE 300 GR.HIDE 2 GR.HIDE 5 ENDIF IF (kom$="") THEN GOTO qq GR.BRIGHTNESS 0.1 GR.CLOSE UNTIL 0 ! ONERROR: qq: LET s$=" " TTS.INIT TTS.SPEAK s$ TTS.STOP GR.BRIGHTNESS 0.1 GR.CLOSE END
在我的情况下,该程序使用语音控制最为合适。 TTS对象将文本转换为语音。 STT对象将语音转换为文本。 使用STT时,必须打开Wi Fi,因为录制的音轨被发送到Internet上的服务器,识别结果来自这些服务器,这些都是一些单词或短语。 程序检查命令是否在列表中,在屏幕上显示命令并执行。 如果无法识别该文本,程序将显示一条有关该文本的消息。 所有这些都是无休止的循环。 该程序通过“停止”命令或按返回键终止。 几何尺寸是相对于在不同尺寸和分辨率的不同屏幕上自动绑定而采取的,但这并不总是有效的。 屏幕上绘制的圆圈是对象,在创建时会自动编号。
GR.SHOW 2命令意味着显示第二个创建的圆。 他的电话号码包含在n4中。 您可以编写GR.SHOW n4。 在IF行(theText $ =“ forward”)THEN kom $ =“ forward”中,您会注意到分配命令中的值有所不同-“ forward”和“ forward”。 事实是STT固执地返回“ forward”,尽管存在“ forward”的情况,但是程序无法识别该命令。 可以摆脱这种情况,但是我没有使程序复杂化,而只是更正了屏幕输出中的拼写。 识别“左”命令时仍然存在故障。 但是,这些也许是我发音的特征。
不幸的是,我无法在此处插入显示程序操作的剪辑。
在这里看看。