Nessa primeira aula prática vamos ver como dois dispositivos se comunicam via CAN BUS.
Pra essa aul...
Video Transcript:
Fala galera beleza tudo bem com vocês Rodrigo Borges mais uma vez na área pessoal vamos para mais uma aula do nosso treinamento aqui sobre redecam né finalmente Chegamos aqui na parte prática do nosso mini treinamento tivemos aí diversas aulas teóricas Eu espero que você tenha gostado você tem entendido aí os conceitos e fundamentos da Red cam e agora vamos pra prática né Vamos colocar em prática aquilo que a gente viu na teoria e para fazer isso nessa aula a gente vai começar utilizando microcontroladores que são bem populares aí né no mundo make aí galera que gosta de tecnologia que é o Arduino Tá e por mais que o Arduino não seja um equipamento que você vai utilizar na indústria os conceitos nós vamos praticar nele por por que que eu escolhi o Arduino primeiro porque é um componente de baixo custo então qualquer um pode ter acesso a ele facilmente tá você compra o arduin vai comprar também um um transistor aí um transer cam tá Para você também poder est fazendo a comunicação can né e tudo é muito baratinho você pode qualquer um vai poder comprar e montar aí uma bancadinha pelo menos com dois dispositivos para você fazer os testes Tá bom então a gente vai iniciar uma sequência de aulas teóricas agora utilizando essa prataforma tá de Hard do Arduino e a gente vai estar colocando em prática todos aqueles conceitos que a gente viu nas nas aulas teóricas eu já te peço se você tá gostando desse conteúdo já senta o dedo no like aí tá já fortalece o meu trabalho aí clicando no gostei para ajudar o YouTube né divulgar Esse meu trabalho para que mais pessoas venham conhecer esse trabalho e se inscreva no canal caso você ainda não seja inscrito e te convido mais uma vez a considerar se tornar um membro aqui do canal tá esse treinamento aqui de redcam ele faz parte do meu treinamento sobre rede devicenet e esse treinamento de rede devicenet já começou a ser postado também aqui na minha área de membros do canal Confere aí dá uma acessada na minha Play nas Playlist da da dos vídeos do meu canal você vai ver quanto conteúdo já tem disponível para membros aí eu tenho certeza que você vai gostar e vai te ajudar bastante Tá bom então galera após a vinheta a gente vai pra nossa primeira aula prática do nosso treinamento de red cam espero vocês [Música] [Música] lá fala galera beleza tudo bem vamos para mais uma aula aqui do nosso treinamento sobre Red cam Finalmente né Vamos começar nossas aulas práticas tivemos aí uma longa jornada aí com aulas teóricas onde aprendemos aí conceitos importantes da rede cam né e agora vamos ver isso aqui em prática tá na nossa aula aqui prática nossa primeira aula prática tá vamos fazer algumas aulas práticas aqui e para fazer essas aulas eu quero utilizar com vocês a plataforma Arduíno beleza por que eu vou usar a plataforma Arduíno porque são microcontrol contadores de baixo custo né são controladores baratos acredito que a maioria dos Senhores aí já conheçam o Arduino já utilizaram alguma vez ou pelo menos já conhece alguém que utilizou né e é um é um tipo de placa de que você vai ter aí como comprar ela porque é um preço baixo né dá para a grande maioria vai conseguir est adquirindo e fácil de programar Tá bom então como eu falei a o a rede cana o protocolo cam ela trabalha praticamente qualquer microcontrolador de mercado aí microcontroladores de baixo processamento tá que não precisa ter muita capacidade você consegue rodar tranquilamente um um dispositivo cam tá tendo um controlador cam E para isso né a gente vai utilizar aqui o Arduino Uno vamos utilizar o Arduino mega e vamos utilizar aqui o controlador cam mcp2515 tá que é o cara que tem já o microcontrolador ele já tem o controlador cam e já tem o o transer já integrado nele Beleza então nesse circuito Zinho aqui já tem tudo que a gente precisa para poder trabalhar então esse carinha aqui vai se comunicar com com o microcontrolador do Arduino e a gente vai fazer o dispositivo cam para poder se comunicar no barramento por que que eu vou usar o Arduino un e o Arduino Mega porque são os dois principais arduinos que você tem aí no mercado você também tem o Arduino nano né que é muito utilizado mas o Arduino nano tudo que eu vou ensinar pro Arduino Uno você aplica pro nano também então a gente vai ver como configurar os dois tá E vamos aprender como que eh vamos ver na prática né O que a gente aprendendo a teoria OC correndo aqui com e o nosso barramento can então primeiro né vamos começar falando um pouquinho do do módulo controlador MCP 2515 eu vou até mostrar aqui que eu tenho ele a eu já tenho uma bancada aqui previamente montada onde eu tenho aqui ó o MCP 2515 ele é esse carinha aqui esse modulo Zinho aqui é um módulo bem baratinho tá galera isso aqui não deve custar aí uns R 30 Se você comprar pelo site chinês você deve pagar uns R 12$ 15 num carinha desse muito baratinho e já tem tudo aqui integrado tem aqui os conectores para você ligar o barramento tem aqui a interface SPI spi né que se comunica com o Arduino né at spi tem aqui o controlador c o trans tá tem aqui dois pinos esses dois pinos aqui da ponta da da aqui na no cantinho é para você conectar um Jumper para ativar o resistor de terminação tá ele tem um resistor pequenininho aqui que é o resistor de 120 Ohm para você ativar o resistor de terminação do barramento e aqui eu já tenho o circuito montado para montar esse circuito que a gente vai precisar vai precisar de jers ma e fême aqui a gente vai precisar aqui do do dois controladores né a gente precisa de dois para poder criar um barramento precisar de um fio um fio aqui para poder interligar eu peguei um pedacinho de fio aqui enrolado onde eu tenho aqui o c h no amarelo e o can low no branco o Jump pro resistor como o meu circuito é muito pequenininho tá em bancado aqui tá na tá na mesa aqui que eu tô colocando eu nem precisava botar esse esse jum do resistor ia funcionar sem Tá mas eu coloquei já porque no campo é preciso que você ative isso aqui tá então uma rede maior com uma mais dispositivos é importante que você coloque um resistor no início e no fim tá bom do barramento tá como me São só dois dispositivos tá um nesse aqui um nesse aqui também tem aqui o Arduino mega e o Arduino Uno e já tá aqui interligado tá ele já a conexão já tá feita aqui ó o jpzinho aqui tanto no Mega quanto no Uno já estão interligado eu vou mostrar no slide aqui como é que você faz essa interligação porque é diferente a ligação do Mega pra ligação do Uno tá e eu vou é importante prestar atenção no Mega porque na internet você encontra muito pouc informação dessa ligação com o Arduino Mega você encontra sempre tutoriais ensinando com Uno mas com mega Você quase não tem informação então é importante que eu vou mostrar para vocês aqui por isso que eu fiz questão de fazer no mega e no un aqui pra gente poder ver Tá bom então vamos lá os conceitos aqui o controlador MCP 2515 é o módulo de que faz o meu controle cam ele é esse carinha aqui conform vocês podem ver na foto né É ele que vai fazer o controle do meu barramento esse cara suporta a versão do canam do 2. 0b se você tá atento né se você assistiu todas as aulas teóricas é importante que você tenha assistido tá o 2. 0b a versão 2.
0b é a versão do cam que suporta mensagens estendidas então eu vou poder mandar a mensagem Standard com 8 byes e a mensagem estendida com mais 8 by Então olha só que legal posso estar mandando Aí 16 byes aí por mensagem cam tá esse módulo suporta até 1 MB por segundo né que é a velocidade máxima da rede cam tá e esse módulo contém o controlador cam MCP 2515 e o transver TJ 1050 então aqui na foto ó eu tenho aqui ó o controlador c e o transer beleza esse cara esse MCP 2515 é um controlador C autônomo e ele possui uma interface Spa integrada tá para poder comunicar com mic controladores Então quer dizer que não esse cara não serve apenas para arduinna você pode se ter um microcontrolador se comunicar via spi com esse microcontrolador tá bom E esse transv aqui o tja 1050 ele atua como uma interface entre o contador cam e o barramento cam físico Beleza a gente já sabe disso né A questão do spi essa esses pinos aqui eu vou eu vou explicar rapidamente para vocês depois o que que é o spi tá quem não conhece né um protocolo de comunicação que a gente usa aí para microcontroladores Beleza então aqui tá uma foto real do MCP 2515 aqui é o que que é cada componente dele eu tenho aqui um conector onde eu tenho aqui o barramento C para ligar o barramento C né então eu tem aqui o c h e o cam l tem até os pinos aqui que você Pode injetar outros módulos né então primeiro pino aqui é o cam h o segundo é o can L Você vai ligar o fio aqui nesse bner parafusado tem aqui esse j1 aqui né que é o resistor de terminação então eu eu coloco um Jumper aqui faço um Jumper aqui para ativar né o resistor de terminação então se o seu dispositivo for um dispositivo de extremidade do barramento né se ele tá no início e no fim você tem que ligar esse cara tem aqui no C5 no J3 aqui eu tenho né o ta o tja 1050 o meu transer can tem aqui um LED e que vai indicar que ele tá ligado tem aqui o meu controlador can que é esse chip aqui ó que é o MCP 251 tem o meu cristal de toque aqui beleza esse cara aqui é importante saber esse módulo ele pelo menos todosos que eu vi até hoje né eles TM uma velocidade aqui de de 8 MHz tá isso aqui é importante que dependendo da biblioteca que você tá usando aqui você tem que definir isso aqui na biblioteca para poder funcionar Tá bom então esse cara aqui é um cara de 8 MHz aqui de o cristal e eu tenho a interface spi beleza onde eu tenho os pinos aqui int sck si so CS groud e vcc grau de vcc é alimentação do Model Então você vai ligar no 5 v e no gnd do Arduíno e o que que é o protocolo spi né vamos entender eu não vou dar uma aula de spi aqui né porque esse curso não é sobre isso mas a gente vai vai explicar porque é importante a gente saber o que a gente tá fazendo né Eu acho que é interessante Então o protocolo spi é um protocolo que ele foi desenvolvido pela Motorola tá E ela ele foi adotado por diversos outros fabricantes aí de microcontroladores porque é um protocolo muito eficiente e muito simples ser implementado esse protocolo spi el você vai ter aqui um pino por chamado de CS que é esse cara aqui ó esse pino CS ele também pode vir na na literatura aí que você tiver utilizando ele pode estar vindo como ss é a mesma coisa tá o CS significa ship select e o ss significa slave select Mas é a mesma coisa no Arduino por exemplo você vai ver na documentação dele isso aqui como SS para que que serve esse CS ou SS uma comunicação spi ela é feita através de um mestre e um escravo e o dispositivo que é mestre na comunicação spi quando ele vai se comunicar com escravo ele tem que tá ativando o pino CS geralmente o mestre da da rede spi ele tem vários pinos CS ele não tem apenas um e cada escravo ele vai ligar em um desses pinos Beleza então por exemplo ó o escravo um tá ligado no cs1 então quando ele quiser conversar com o escravo um ele vai ativar esse cara para poder comunicar com o escravo um aí ele tem um segundo pino CS que vai ser o cs2 é vai tá ligado no escravo dois então quando ele quiser conversar com o escravo dois ele liga o pino cs2 e assim por diante Então esse cara serve para poder dizer né para selecionar Qual dispositivo que vai comunicar né com o mestre tá bom o outro pino muito importante aqui é o sck o sck é o pino clock tá da rede spi a rede spi precisa do clock por quê Porque ela é uma rede síncrona Então você tem que fazer a sincronização entre o mestre e o escravo e esse pino aqui é o que define esse cloque beleza e o pino si e o so esse Na verdade são os pinos chamados moz e miso tá então aqui o moz é o si e o miso é o so o pino moz ele é a entrada serial ele é a linha de recepção de dados tá beleza e o so é o contrário né Ele é a saída serial então ele é a linha da transmissão de dados é importante a gente saber isso porque é a gente tem que saber né Por exemplo que quando a gente for comunicar com o Arduíno Mega a gente vai ter que mudar no código ess pino CS o chip select tá porque o Arduino Mega tem o chip select diferente do Arduino 1 a gente vai ver isso aqui tá aqui tem mais algumas informações né como é o esquema de barramento do módulo tá o o MCP 2515 ele tem três subcomponentes nele tem o módulo cam a lógica de controle o bloco do spi ele é responsável por transmitir e receber mensagem no barramento a lógica de controle dele trata da configuração operacional do mcp2515 fazendo interface com os blocos e o bloco spi é responsável pela interface de comunicação spi beleza e aqui ele fala né que o que o módulo o trans TJ 1050 atua como interface entre o controlador MCP 2515 e o barramento físico e é responsável pegar todos os os dados do controlador também retransmitir para o barramento é um transvel como a gente estudou nas aulas teóricas aqui eu tenho o esquema de ligação para aqueles que quiserem se aprofundar mais né que gosta da eletrônica aí como é a interligação do controlador c com trans Então a gente tem aqui a pinagem como é que é ligada tá pois fica esse material aí vocês podem tirar um print aí para vocês dar uma olhada e vamos aqui e ver a pinagem agora do Arduino Uno Beleza o pinal aqui do Arduino Uno no Arduino Uno a gente vai utilizar e quatro pinos aqui para comunicação spi com o nosso controlador C MCP 25 15 qualis são esses pinos é o pino 13 é o pino 12 é o pino 11 e o pino 10 que são respectivamente o csk o miso né o moz e o ss Beleza então no Uno ou no Arduino nano você vai utilizar esses quatro pinos aqui beleza que já vem aqui na documentação por isso que isso aqui é a documentação do Arduino tá tô trazendo para você essa foto da documentação original dele beleza e a ligação é basicamente essa aqui ó o sck Né o nosso clock vai ser ligado no pino 13 do Arduíno Então você vai pegar aqui aqui ó o SC ligar no 13 o moz tá você vai ligar no pino 11 então você vai pegar aqui ó o si né o si é o moz você vê que o ele na placa ele só mostra o finalzinho da palavra que ele mostra si e si né mas é mo e miso tá então o moz ou si você vai ligar no pino 11 do ardoino o miso que é o so Você vai ligar no pino 12 do Arduino Ok e o pino CS que é o chip select vai ligar no pino 10 do Arduino Então você vai pegar aqui o CS e vai ligar no 10 e aí né claro o o vcc e o groud você liga aqui né você tem aqui o o 5 v aqui e o grow do Arduino você liga esses caras nele então é isso é a ligação faz o Jump kit e liga lá o c h e o c l no barramento beleza essa é a ligação no Arduino un ou qualquer placa baseada no at Mea 328 aqui que é o Arduino un beleza e o Arduino Mega como é que funciona o os pino 13 12 11 10 não tem nada a ver aqui com a comunicação spi no Arduíno Mega Então você não vai utilizar esses pinos aqui no Arduíno Mega mas o Arduino Mega tem um outro barramento aqui de io aqui que fica aqui na parte de trás que é onde vai ter a comunicação spi dele e ela tá representada por esse diagrama aqui os pinos do Arduino Mega isso é importante tá você observar porque se você não seguir isso aqui você não vai conseguir fazer o mega comunicar com esse esse controlador cam você tem que utilizar os pinos do 50 ao 50 então é esses últimos pinos aqui do barramento beleza os os dois últimos são gnd né mas você tem aqui ó o penúltimo e anti penúltimos São 50 51 52 53 Esses são os pinos aqui do miso e do sck e do SS tá bom a ligação do Mega fica exatamente assim você vai pegar né vc6 grau de ligar no 5 v Você vai pegar o pino sck do nosso módulo aqui 25 15 aqui e vai ligar no pino 52 do Arduíno Então você vai pegar aqui o ssk e ligar no 52 você vai pegar o moz aqui que é o si né o moz e vai ligar no 51 você vai pegar aqui o miso que é o nosso so e vai ligar no pino 50 e você vai pegar o pino CS que é o chip select e vai ligar no 53 presta bem atenção nesse pino que você tá ligando CS porque a gente vai ter que lá no código do Arduíno a gente vai ter que definir isso aqui tá se você não definir isso aqui que no código ele não vai funcionar porque o código a biblioteca que eu vou mostrar para vocês ela por padrão ela já define que o o chip select né vai ser o pino 10 né porque ele se baseando no Arduino Uno e no Arduino nano mas a gente vai fazer uma alteração aqui para trabalhar com o mega Tá bom então deixa eu fechar essa parte aqui de slide vamos ver qual é a biblioteca que a gente vai utilizar paraa nossa primeira prática aqui a biblioteca que a gente vai utilizar é essa biblioteca aqui ó é a biblioteca do Sandy mysty tá é uma biblioteca que você vai achar aqui no github eu vou deixar aqui o link dessa biblioteca para vocês baixarem no comentário da aula então aí embaixo na descrição da aula né você po acessando o link para poder baixar essa esse repositório aqui tem umas explicações como ela funciona eu mostrar vocês na prática baixar você vem aqui no code e vem aqui download Zip você vai baixar ela pro seu computador e aí você vai vir na ideia do Arduino vamos ver aqui ó eu tenho a ideia do Arduino aberto aqui deixa eu fechar esse aqui vamos abrir uma que tá em branco então você vai abrir aqui a ideia do Arduino o meu já tá instalado Tá mas eu só vou mostrar para quem não sabe você vem aqui no stack você vem aqui ó incluir biblioteca adicionar biblioteca P Zip aí você vai ver lá no seu computador onde você baixou aquele arquivo vai selecionar e vai mandar abrir ele vai instalar a biblioteca aqui no seu cod essa biblioteca você também pode instalar por aqui ó você pode vir aqui no no ferramentas né ferramentas incluir biblioteca gerenciador de biblioteca perdão gerenciar bibliotecas no ferramentas mesmo aí ele vai abrir a página aqui para você poder é Tá instalando a sua biblioteca é via direto pelo Arduino ele vai abrir aqui o gerenciador deixa ele abrir aqui aí você vai digitar por exemplo aqui can ele vai abrir aqui para você as bibliotecas que tem aver com c você procura aqui a ou se ficar ruim você bota o MCP ó MCP acho que é até mais fácil procurar com MCP 251 vai apcer mais fácil aquela biblioteca então aí você tem aqui alguma V que tem bastante biblioteca né por isso que eu não gosto de mandar instalar por aqui ó minha é essa aqui ó do Sand m tá vendo que vem só escrito eu não gosto de instalar por aqui porque como tem muas você pode acabar instalando errada então eu prefiro usar é aquele outro aquele outro método de você baixar direto o arquivo zip instalar que aí você vai instalar certinho que eu tô usando para depois não ter erro a sua biblioteca ela permite enviar e receber mensagem no barramento c e ela usa o microchip MCP 2515 ou o expressif do esp 32 Beleza então essa biblioteca também serve para se tiver usando expressif aqui então vamos lá para fazer essa aula a gente vai utilizar os exemplos da própria biblioteca eu vou vir aqui arquivos depois instalar né exemplos e vamos lá embaixo ela vai tá aqui ó can ela tem quatro exemplos aqui eu vou usar o can send o can receive só pra gente poder ter um conceito como funciona Vamos colocar primeiro cancen Fechar isso aqui o cancen o que que ele traz pra gente vamos vamos entender o código né ele primeiro vai incluir aqui a biblioteca c. que é a biblioteca que a gente vai usar ele vai no vo setup aqui Inicial serial em 9600 Enquanto Tiver serial e ele vai imprimir essa mensagem cancen beleza vaiar o barramento C em 500 kbps tá então se der um erro se ele não conseguirar né ele vai aparecer essa mensagem aqui start vai fazer esse Wi aqui de um né e depois ele vai pro void loop no void loop ele vai imprimir a mensagem enviando pacote aqui vai ser o pacote estandard o c pbin Packet é o ID da mensagem lembra né que a gente estudou na teoria toda a mensagem cam ela tem um ID toda mensagem cam ela é identificada por um código e é através desse código aqui que o dispositivo vai saber né se quer ou não a mensagem então ela começa enviando o ID da mensagem e depois ele envia o conteúdo no caso aqui ele está enviando cinco dados cinco bytes né Essa biblioteca aqui trabalha enviando caracteres então ele tá enviando aqui ó cinco caracteres beleza que é a palavra Hello tá cada caracter desse equivale a 8 bit né um byte então ele tá enviando cinco ele pode enviar até oito aqui no caso o exemplo ele tá enviando cinco e ele dá um C pend Packet para dizer que encerrou Esse pacote aqui aí ele vai imprimir depois disso um done na tela para dizer que enviou e vai esperar um segundo beleza e aí ele vai enviar um pacote estendido conforme eu falei né esse módulo suporta a versão 2. 0b que pode enviar um pacote estendido então ele vai imprimir enviando um pacote estendido vai vai dar o ID da mensagem aqui ele botou como a b c d e f is aqui tá em ex e vai enviar mais 5 bytes aqui com a palavra Word e vai dar um fim de enviar vai imprimir um Don e vai esperar mais um segundo e vai ficar nesse loop né ele vai ficar enviando isso aqui pro barramento tá simplesinho o código né Vamos então descarregar ó já tô com a minha placa selecionada porta correta vou descarregar isso aqui pro meu hardin un os dois os dois arduinos já estão conectados aqui no meu computador tá tudo ligado certinho beleza então ok vou abrir o monitor cereal só para ver se ele tá tá imprimindo conforme a gente viu né Então tá aqui ó enviando can send né enviando pacote Don enviando estend pacote Don então ele tá enviando pro barramento consecutivamente né como eu não botei nenhuma condição para ele enviar ele tá enviando direto então ele tá enviando o pacote da mensagem e o pacote estendida direto pro barramento tranquilo nessa primeira aula que a gente queria ver uma coisa mais simples Então vou dear dessa forma aqui então ele tá enviando barramento essa mensagem hello world Ok vamos agora fazer outro exemplo no Arduino Mega V diminuir esse cara aqui vamos agora pegar o outro exemplo do C aqui que é o c receive esse cive eu vou usar para o Arduino Mega deixa eu diminuir esse cara aqui Bele deixa esse can aqui o can receive aqui que que eu V mudar no receive o receive ele é um código bem simples também vai inu bibliot biblioteca que gente baixou vai iniciar oal vai imprimir que recebendo vai iniciar oal aqui em 500 kbps vai fazer um loop aqui para pegar o tamanho do pacote que ele tá recebendo vai enviar aqui que ele tá recebendo né vai imprimir que ele tá recebendo o pacote E se o pacote for estendido ele vai imprimir que tá recebendo o pacote estendido Beleza se tiver tendo uma transmissão de requisição remota ele vai aparecer mas a gente não vai trabalhar com isso nessa aula ele vai imprimir aqui o ID do pacote que ele d a mensagem que ele tá recebendo se for remoto ele vai imprimir também né e e ele vai imprimir lá o tamanho e o os dados que ele tá recebendo Beleza então basicamente é isso mas dessa forma que tá aqui não funciona no Arduino Mega por quê Porque Lembra que eu falei que o CS lá o chip select do Arduino é mega ele precisa ser no pino 53 essa biblioteca aqui por de ela já estabelece que o chip select lá vai ser o pino 10 tá porque ela se baseia no Arduíno 1 no Arduíno nano Então a gente vai fazer uma pequena alteração aqui primeiro a gente vai fazer aqui um define aqui a gente vai criar um um CS aqui uma variável CS vamos dizer que ela é do 53 beleza e aqui embaixo a gente vai usar um um comando que a gente tem aqui nessa biblioteca que é o c ponto set pin tá esse c.