Índice:
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Meus filhos adoraram esse pequeno trem de Lego Duplo, especialmente minha caçula, que luta para se comunicar com palavras, então eu queria construir para ela algo que a ajudasse a brincar com o trem independentemente de adultos ou telefones / tablets. Algo que acrescentaria uma dimensão extra ao trem e lhe desse um valor extra de jogo
O conjunto de Lego já tem poucas maneiras de controlar o trem, você pode empurrá-lo para frente para iniciar e segurá-lo para pará-lo, você pode controlá-lo usando etiquetas coloridas que vão na pista para que quando o trem passar por cima ele desencadeie ações diferentes, ou seja, avançar, retroceder, reproduzir sons, acender as luzes. Você também pode baixar um aplicativo para o seu telefone ou tablet que pode se conectar ao trem via bluetooth.
Aqui está uma revisão completa do trem
Depois de pesquisar na Internet, descobri que havia muito poucas pessoas diferentes que já haviam escrito códigos prontos para controlar o trem. O nó 'Poweredup' escrito por nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) parecia um início perfeito, foi escrito usando Javascript, com o qual eu não estava parcialmente familiarizado, mas pensei se eu poderia encontrar um microchip baseado em java, isso seria um bom começo.
Mais uma vez, depois de vasculhar a internet novamente, encontrei o sistema espruino, que é semelhante ao ardiuno, mas baseado em javascript. O código espriuno pode ser carregado em um mircochip MDBT42Q que tenha bluetooth incorporado. Eu pensei que se eu pudesse carregar o módulo "ligado" nele, eu estaria no meio do caminho, no entanto, este não era o caso, pois o módulo continha muitas bibliotecas muito grandes para carregar no MDBT42Q, então parece que tenho que encontre uma solução mais simples….
Etapa 1: O Código
Esprinuo
Para aqueles que não conhecem a plataforma Espruino https://www.espruino.com (e eu não conhecia) é muito semelhante ao Arduino, há algumas diferenças principais, um escrito para javascript ao invés de c, parece um pouco mais recente portanto, não há exemplos, no entanto, o suporte através dos fóruns é ótimo e muito útil.
Javascript encontre o trem
O primeiro obstáculo foi conectar-se ao trem via bluetooth. Isso pode ser feito usando a classe NRF fornecida com o código espruino.
NRF.connect pode ser usado para se conectar ao trem. No entanto, sua primeira necessidade de encontrar o endereço do próprio trem, você pode usar NRF.findDevices para obter essas informações
Depois de fazer isso, você precisa enviar o valor dois do trem para o handshake com o trem, para o meu trem foi "00001623-1212-efde-1623-785feabcd123" seguido por "00001624-1212-efde-1623-785feabcd123" Eu acredito este será o mesmo para todos os conjuntos de trens a vapor, mas as outras versões, ou seja, o conjunto de carga pode ser diferente
Depois de ter isso, você pode conectar o trem usando a função a seguir, você pode dizer quando o trem foi conectado, pois ele piscará seus faróis azuis
NRF.connect ("e0: 7d: ea: 0c: 03: 29"). Then (função (g) {
console.log ("Iniciando a conexão2"); gatt = g; return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). then (function (service) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). then (function (feature) {Characteristic_store = Character; return Character.readValue ();}).then (value => {console.log (value);}). then (function () {console.log ("Train Connected"); connected = 1;
As coisas divertidas
Agora que você está conectado ao trem, é hora de todas as coisas divertidas, como movê-lo para frente, fazer som e ligar e desligar a luz. É simples enviar ao trem um valor de preparação, seguido pelo comando real, ou seja, function play_horn () {
console.log ("mensagem =", Characteristic_store); const prepval = novo Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue (prepval).then (_ => {Characteristic_store.writeValue (sendvalue);}); }
Você pode ter que pesquisar um pouco para encontrar outro comando além dos que usei
Botões e alavancas
O lado físico do controle remoto é muito simples: quatro botões (para tocar sons, ligar e desligar as luzes) e um potenciômetro que é conectado à alavanca para que você possa controlar a velocidade e a direção do trem
O botão não precisa puxar o resistor, em vez disso, você pode fazer isso no código, ou seja, pinMode (D15, 'input_pulldown');
Você pode conectar o potenciômetro a uma das entradas e, em seguida, ler o sinal analógico usando o seguinte comando
var leitura = analogRead (D31);
A outra diferença do arduino é que o esprunio não tem configuração e loop. Então, em vez disso, coloco todos os comandos / gatilhos separados em funções e, em seguida, configuro setInterval que faz um loop a cada 100 milissegundos, ouvindo o botão e executando a função necessária quando o botão é pressionado.
if (digitalRead (D15) == 1) {play_horn (); }
Acionar a alavanca era um pouco mais complicado, pois queria ser capaz de ajustar incrementalmente a velocidade, então primeiro tive que enviar o valor analógico para funcionar
var leitura = analogRead (D31);
train_direction (leitura * 1024);
Então, na função train_direction, quebrei o comando em 6 incrementos diferentes com base no valor do pote
Todo o caminho para cima, diz ao trem para ir a toda velocidade à frente
No meio do caminho, diz ao trem para avançar a 50% da velocidade
Meio, diz ao trem para parar
No meio do caminho, diz ao trem para voltar a 50% da velocidade
Todo o caminho para baixo, diz ao trem para ir a toda velocidade em marcha à ré
ie
function train_direction (dir_val) {
//console.log("message = ", Characteristic_store); const prepval = novo Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); if (dir_val> 300 && dir_val 400 && dir_val 500) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } if (dir_val 200) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } if (dir_val 100) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } if (dir_val {Characteristic_store.writeValue (sendvalue);}); }
O código completo pode ser encontrado no link abaixo
Etapa 2: a fiação
A fiação era a parte mais simples
Consistia apenas em 4 botões conectados a D15, D16, D17 e D18 sem qualquer resistência pull up, pois isso era feito no código e 1 resistor de 10k conectado a D31
Ainda estou trabalhando na fonte de alimentação, mas atualmente toda a energia vem de um breakout micro usb e isso pode ser conectado diretamente a um banco de energia ou a uma porta USB
Etapa 3: a construção
O controle remoto é feito principalmente de folhas de madeira compensada A4 de 3 mm, 6 mm ou 9 mm. Elas foram cortadas na minha máquina CNC, no entanto, usando o modelo fornecido, eu usaria, embora não fosse impossível fazer à mão
Espero que o modelo e as fotos forneçam tudo que você precisa para refazer, no entanto, há algumas notas que podem ajudar
A montagem Push Button de 3mm é para furar o botão, a lacuna irá posicionar o botão no lugar correto, mas nós permitimos que você acesse a perna na parte traseira para que possa soldar ao microchip, no reverso você também pode montar o MDBT42Q usando um pouco de cola. Na frente, você precisará adicionar espuma para que os botões saltem um pouco ao pressioná-los, você também pode usar molas
Os botões de 9 mm precisarão da tinta, gravação ou outra coisa do logotipo para mostrar qual botão faz o quê
A alavanca / alça precisará ser colocada em camadas, usei um pino de 6 mm para ajudar a alinhá-los em todas as posições corretas
Recomendado:
O controle remoto da TV se torna um controle remoto de RF -- NRF24L01 + Tutorial: 5 etapas (com imagens)
O controle remoto da TV se torna um controle remoto RF || NRF24L01 + Tutorial: Neste projeto vou mostrar como usei o popular IC nRF24L01 + RF para ajustar o brilho de uma faixa de LED sem fio por meio de três botões inúteis de um controle remoto de TV. Vamos começar
Kit de controle remoto comum transformado em controle remoto de brinquedo RC de quatro canais: 4 etapas
Kit de controle remoto comum transformado em controle remoto de brinquedo RC de quatro canais:改造 方法 非常 简单。 只需 准备 一些 瓦楞纸 板, 然后 按照 视频 教程 完成 这个 电子 项目 并 为 您 服务。 玩具 车船 提供 远程 无线 控制。
Controle o layout do trem modelo com o controle remoto da TV: 7 etapas (com imagens)
Controle o layout do trem-modelo com o controle remoto da TV !: Neste manual, mostrarei como fazer um sistema de controle remoto IR para um trem-modelo. Você poderá então controlar seus trens enquanto relaxa em seu sofá. Então vamos começar
Como usar alguns pedaços de madeira para montar em um braço robótico de madeira bonito e poderoso: 10 etapas
Como usar alguns pedaços de madeira para montar em um braço robótico de madeira bonito e poderoso: O nome do braço do robô é WoodenArm. Parece muito fofo! Se você quiser mais detalhes sobre o WoodenArm, consulte www.lewansoul.com. Agora podemos fazer uma introdução sobre o WoodenArm, vamos prosseguir
Controle seus aparelhos elétricos com seu controle remoto de TV (ir remoto) com display de temperatura e umidade: 9 etapas
Controle seus aparelhos elétricos com o controle remoto da TV (ir remoto) com visor de temperatura e umidade: oi, sou Abhay e é meu primeiro blog no Instructables e hoje vou mostrar como controlar seus aparelhos elétricos com o controle remoto da TV construindo este projeto simples. obrigado ao atl lab pelo apoio e fornecimento do material