Na última década, muitos tiveram um ou dois smartphones ociosos e o meu também. Decidi usar um smartphone para controlar algo, por exemplo, um carro.
Para começar, escolhi um carro de brinquedo da Lego. Pode avançar e retroceder, virar à esquerda e à direita e possui um controle remoto com raios infravermelhos. Como motorista dos motores da máquina usava o chip LB1836, que possui quatro entradas de informações. In1, In2 - controlam o motor em funcionamento, In3, In4 - controlam o volante, de acordo com o esquema 0, 0 ou 1, 1 - estado inoperante. 0, 1 ou 1, 0 - rotação do motor em uma ou outra direção.
A lógica 0 e 1 nas entradas forma o receptor dos raios infravermelhos do brinquedo ao receber sinais do controle remoto.
Decidi usar uma tela de smartphone para transmitir sinais de um smartphone para uma máquina de escrever, pois outros canais de transmissão são tecnicamente complexos e caros de implementar. Decidi conectar meu dispositivo às entradas do chip LB1836, que receberão sinais de um smartphone.
O esquema de transmissão do sinal é o seguinte. O programa no smartphone cria pontos de luz de uma determinada duração na tela, o dispositivo os registra e gera 0 e 1 lógico da mesma duração nas entradas do LB1836 sem nenhum processamento lógico, o que simplifica bastante o design do dispositivo. Ou seja, acabei de substituir o receptor infravermelho pelo meu dispositivo.
O dispositivo para receber sinais de luz consiste em 4 células. Cada célula é um fototransistor L-3DP3C KGB conectado a um amplificador em um transistor npn KT315. A energia é retirada de uma máquina controlada. A saída, como eu disse, está conectada à entrada correspondente do motorista do motor. Os motores de baixa potência podem ser alimentados diretamente da saída, mas girarão apenas em uma direção. Mas haverá quatro deles!

Sobre a escolha dos elementos do dispositivo, posso dizer o seguinte. Peguei os transistores que tenho desde os tempos antigos. Fototransistores compraram aqueles que estavam na loja. Portanto, se você deseja repetir o esquema, não perca tempo pesquisando, use os elementos que estão disponíveis para você. A propósito, inicialmente montei o amplificador em um chip LM 324N com quatro amplificadores operacionais. Também funciona bem, mas me pareceu que suas dimensões são muito grandes.
O dispositivo foi montado em um papelão, usando tiras de papel alumínio e elementos do designer da Lego.

Os fototransistores são colocados na parte inferior dos poços de luz com um diâmetro de 5 mm e uma profundidade de 9 mm para excluir a iluminação lateral. Filmes metalizados enrolados em um tubo são inseridos em poços de luz, o que aumenta significativamente a sensibilidade dos fototransistores, devido a um aumento no fluxo luminoso.

Aqui está um carro.

Para desenvolver o programa, peguei o aplicativo BASIC! do Googl Play Market. Esta aplicação permite-lhe escrever programas para o Android, criar ficheiros apk e trabalhar com todos os sensores e dispositivos do smartphone.
Listagem do programa
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
O programa usa o controle de voz como o mais apropriado no meu caso. O objeto TTS converte texto em fala. Um objeto STT converte fala em texto. Ao trabalhar com STT, o Wi-Fi deve estar ativado, porque a trilha sonora gravada é enviada para um servidor na Internet, de onde vem o resultado do reconhecimento, são algumas palavras ou frases. O programa verifica se o comando está na lista, exibe o comando na tela e o executa. Se o texto não for reconhecido, o programa exibirá uma mensagem sobre ele. Tudo isso se repete em um ciclo sem fim. O programa é encerrado pelo comando "stop" ou pressionando a tecla Enter. As dimensões geométricas são obtidas em relação a automatizar a encadernação em diferentes telas com diferentes tamanhos e resoluções, o que nem sempre funciona. Os círculos desenhados na tela são objetos e são numerados automaticamente à medida que são criados.
O comando GR.SHOW 2 significa mostrar o círculo que foi criado em segundo. Seu número está contido em n4. Você poderia escrever GR.SHOW n4. Na linha IF (theText $ = "forward") ENTÃO kom $ = "forward" você notará uma diferença nos valores no comando de atribuição - "forward" e "forward". O fato é que o STT teimosamente retorna "encaminhar", embora existam casos de "encaminhar", o programa não reconhece o comando. Foi possível se livrar disso, mas não compliquei o programa, mas simplesmente corrigi a ortografia quando ela era exibida na tela. Ainda existem falhas ao reconhecer o comando "esquerdo". No entanto, talvez essas sejam as características da minha pronúncia.
Infelizmente, não consigo inserir um clipe mostrando a operação do programa aqui.
Dê uma olhada
aqui .