Skip to content

Commit bf67232

Browse files
committed
Algumas seçoes adicionadas
1 parent 5fbd454 commit bf67232

27 files changed

+87
-9
lines changed

Palestra Python para Arduino.pdf

100644100755
File mode changed.

README.md

100644100755
Lines changed: 73 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ A ideia da apresentação é mostrar como é possível integrar Arduino e Python
2929
</p>
3030

3131
<p>
32-
Além desse projeto, também sou responsável por uma loja de componentes eletrônicos, o <a href="http://github.com/becodaeletronica.com">Beco da Eletrônica</a>, que funciona localmente no Centro de Informática da UFPB, oferecendo materiais para que todos tenham acesso e possam realizar diversos projetos.
32+
Além desse projeto, também sou responsável por uma loja de componentes eletrônicos, o <!--a href="http://github.com/becodaeletronica.com">Beco da Eletrônica</a--> Beco da Eletrônica, que funciona localmente no Centro de Informática da UFPB, oferecendo materiais para que todos tenham acesso e possam realizar diversos projetos.
3333
</p>
3434

3535
> ## Contato
36-
36+
3737
> - Instagram: <a href="instagram.com/matteus_antonio">@matteus_antonio</a>
3838
3939
<img id="introd" src="img/imagens-palestra/4.png" style="height:300px, ">
@@ -71,7 +71,7 @@ A ideia da apresentação é mostrar como é possível integrar Arduino e Python
7171
<img id="facilidade-python2" src="img/imagens-palestra/8.png" style="height:300px, ">
7272

7373
<p>
74-
Para mostrar um exemplo prático, o código em python exibido acima é responsável por controlar um Dron! Alguns drones no mercado funcionam com aplicativos de celular ou controles mais simples, pois são de baixo custo e feito para iniciantes. Em alguns casos, como o dro drone mostrado (DJI Tello), a empresa disponibiliza um <i>SDK</i> (Software Development Kit, do inglês Kit de Desenvolvimento de Software). Com esse SDK podemos utilizar uma linguagem de programação para desenvolver o nosso próprio sistema de controle do dispositivo, nesse caso, o drone.
74+
Para mostrar um exemplo prático, o código em python exibido acima é responsável por controlar um Drone! Alguns drones no mercado funcionam com aplicativos de celular ou controles mais simples, pois são de baixo custo e feito para iniciantes. Em alguns casos, como o dro drone mostrado (DJI Tello), a empresa disponibiliza um <i>SDK</i> (Software Development Kit, do inglês Kit de Desenvolvimento de Software). Com esse SDK podemos utilizar uma linguagem de programação para desenvolver o nosso próprio sistema de controle do dispositivo, nesse caso, o drone.
7575
</p>
7676

7777
```python
@@ -136,8 +136,78 @@ A ideia da apresentação é mostrar como é possível integrar Arduino e Python
136136

137137
<img id="objetivo" src="img/imagens-palestra/9.png" style="height:300px, ">
138138

139+
<p>
140+
Como mencionado anteriormente, o objetivo é que com os códigos que serão mostrados e o exemplos fornecidos, <b>você seja capaz de desenvolver muito mais projetos</b> a partir dali, com diversas funcionalidades.
141+
</p>
142+
143+
<img id="objetivo" src="img/imagens-palestra/11.png" style="height:300px, ">
144+
145+
Com isso, <b>seu leque de opções</b> vira o verdadeiro cinto do Batman, com diversas ferramentas para resolver os problemas mais variados! Ter conhecimento acerca dessas tecnologias significa que para cada problema que surgir, mais soluções poderão ser pensadas para resolvê-lo. Além disso, a própria prática com essas tecnologias auxilia no aprendizado delas individualmente, como <b>melhorar programando</b>, <b>utilizando algoritmos</b>, <b>estruturas de dados</b> e <b>ferramentas do mercado</b>, como criando protótipos para projetos cada vez mais complexos e aprendendo sobre eletrônica e hardware no processo.
146+
147+
<img id="objetivo" src="img/imagens-palestra/10.png" style="height:300px, ">
148+
149+
<p>
150+
No final das contas, depois que passar por todo esse processo, todo esse conhecimento será útil para diversas coisas! <b>Hackathons</b> acontecem em todo o País o tempo todo, em eventos e plataformas online, com diversos problemas esperando as soluções mais criativas. <b>Contests</b> também ocorrem com frequências, mais focado em desafios para não só resolução de problemas, mas também criação de coisas dentro de regras que podem variar bastante de acordo com o tema. Ambos tem premiações que podem chegar a ser bem legais.
151+
</p>
152+
153+
<p>
154+
<b>Projetos de disciplinas</b> e <b>projetos de pesquisa</b> estão estritamente ligados ao meio acadêmico, dependendo do laboratório, disciplina ou professor responsável em que você está envolvido. Na universidade e em diversas instituições de ensino sempre se está trabalhando em soluções científicas e resolução de problemas para uma contribuição maior. Portato, ter um conhecimento para a resolução de problemas no geral trazem diversas vantagens em uma seleção para bolsa de pesquisa, mais prestígio na criação de <b>projetos para disciplinas</b> que exijam conhecimento na área, entre outras situações.
155+
</p>
156+
157+
<p>
158+
Com <b>projetos pessoais</b> não é muito diferente, mas o mais legal é poder criar, modificar e ser o mais versátil possível, tendo a própria criatividade como o único limite imposto. A quantidade de aprendizado acerca de diversos temas é inifinito, pois cada coisa aprendida leva a uma combinação de projetos e ideias que seria impossível realizar todos. Isso desperta não só um crescimento pessoal mas também pode levar a outros campos, como o Ensino, <b>quando há uma vontade e paixão por aquilo</b>, não só de desenvolver, mas de fazer com que outras pessoas também enxerguem esse potencial.
159+
</p>
160+
139161
# Sobre Arduino <a id="sobre-arduino"></a>
140162

163+
<p>
164+
Nesta seção será mostrada os principais pontos relacionados ao Arduino que precisamos saber para realizar a comunicação entre ele e a linguagem de programação Python. Além disso, <b>o que daria pra fazer com essa integração?</b> Porque seria tão útil aprendê-la, além dos pontos que já foram levantados? Veremos uma visão mais técnica da coisa.
165+
</p>
166+
167+
## Imagem: Não Apenas Arduino...
168+
169+
<p>
170+
É válido dizer que as dicas e informações passadas aqui não valem apenas para Arduino, mas também com ESP8266 e outros tipos de placas de desenvolvimento. Como vai ser mostrado a frente, <b>essas placas tem algo em comum: a forma em que se comunicam com o computador</b>.
171+
</p>
172+
173+
## Imagem: Vários tipos de Arduino
174+
175+
<p>
176+
Então dá pra desfrutar de diversas funcionalidades através dos diversos tipos de placas. O <b>Arduino tem inúmeras versões</b>, cada uma com sua particularidade, e é possível desfrutar de cada uma dessas particularidades para a criação dos projetos com Python.
177+
</p>
178+
179+
## Imagem: O que dá pra fazer?
180+
181+
<p>
182+
Mas afinal de contas, o que dá pra fazer com isso que vamos aprender? Só dizer que a quantidade de possibilidades é vasta não adianta, é preciso falar quais são. Como já é conhecido, um dos maiores motivos do Arduino ser a placa de desenvolvimento mais famosa é a quantidade de <b>sensores e atuadores</b> que podem ser utilizados com ele, a fim de coletar dados e realizar funções. Se o Arduino por si só já consegue realizar inúmeras tarefas com seus próprios sensores e atuadoras, imagine com a utilização de funções do Python, conexão com a internet, uso de bibliotecas próprias do python para auxiliar nas tomadas de decisão. Com a facilidade das <b>bibliotecas</b> do Python e comunicação com o Arduino, seria possível desfrutar da internet, armazenar os dados do Arduino em diversos tipos de banco de dados, seja local ou na nuvem, utilizando serviços famosos como o <b>Firebase</b> do Google ou <b>Amazon Web Services</b> da Amazon. Também seria possível realizar diversas dessas funções com Arduino ou ESP8266, você deve estar se perguntando qual seria a real utilidade. Então imagine um <b>cenário escasso</b>, onde você não tem acesso aos sensores e atuadores certos para realizar essas funcionalidades, onde as bibliotecas podem ser complicadas e o acesso a informação prejudicado. Aí entra o Python, para suprir necessidades e deficiência nesses pontos, entre muitos outros.
183+
</p>
184+
185+
<p>
186+
A quantidade de possíveis integrações vão além das mencionadas anteriormente. Como já foi dito, tudo depende da criatividade, pois a própria linguagem oferece inúmeras bibliotecas capazes de realizar milhares de funções. Nada impede de utilizar IA, Reconhecimento de Face, Processamento Digital de Imagens, entre muitas outras coisas, para acionar atuadores e realizar funções para o Arduino. Todas essas funcionalidades estão longe da realidade de algo que poderia ser processado diretamente de um Arduino.
187+
</p>
188+
189+
## Imagem: Comunicação Serial
190+
191+
<p>
192+
A comunicação do Arduino com o Python se dá através da <b>Comunicação Serial</b>. A Comunicação Serial nada mais é do que a comunicação entre o Arduino e o computador em que ele está conectado, através do <b>Cabo USB</b>. Quando o computador envia informações para compilar um código no Arduino, quando você utiliza o <b>Monitor Serial</b>, entre outros, você está utilizando a interface Serial para realizar essas comunicações.
193+
</p>
194+
195+
<p>
196+
Do ponto de vista do Hardware, os pinos por onde passam esses dados que podem ir do Arduino para o Computador ou do Computador para o Arduino, são os <b>RX</b> e <b>TX</b>. RX de 'Receber', é por onde passam todas as informações que recebe do Computador ou qualquer outro dispositivo em que esteja conectado. TX de 'Transmitir', é por onde passam todos os dados que o Arduino transmite para o dispositivo em que está conectado. Por isso <b>recomenda-se que não se utilize esses pinos</b> nos projetos, a não ser que sejam utilizados com propósitos específicos de transmissão e recepção de dados entre dispositivos. Porque quando eles são utilizados como portas comuns, a comunicação pode ser interrompida e <b>problemas com compilação de código</b> no Arduino entre outros podem ocorrer.
197+
</p>
198+
199+
<p>
200+
Através da Comunicação Serial é possível descobrir informações como <b>Vendor ID</b> e <b>Product ID</b>, que são identificações únicas acerca do dispositivo em questão. Elas podem ser úteis para <b>identificar o Arduino</b> dentre outros dispositivos que possam estar conectados, além de ser útil para funcionalidades como autenticação de dispositivos e afins.
201+
</p>
202+
203+
<p>
204+
Em relação a como os Arduinos e afins são identificados nos computadores, varia com o <b>Sistema Operacional</b>. No Windows, como pode ser visto na IDE do Arduino quando o código vai ser compilado, são identificados como portas <b>COM1, COM2, COM3...</b>, variando de acordo com a <b>porta USB</b> em que está conectado. Já no Linux, são identificados como <b>/dev/ttyacm, /dev/ttyusb, ...</b>, também a depender da porta em que foi conectado. <b>Saber como são identificados é importante</b> para realizar a conexão no Python, pois ele será utilizado no código para conseguir enviar mensagens e receber sempre da porta correta.
205+
</p>
206+
207+
<p>
208+
Um último detalhe necessário para entender a comunicação serial seria o <b>Baudrate</b>. A seguir veremos como o Baudrate é programado, mas é importante saber que o valor de Baud determinado no Arduino deve ser exatamente igual ao indicado na linguagem de programação. Isso se deve ao fato desse valor determinar a velocidade em que as duas partes irão transferir bits de uma para a outra. Com o mesmo valor, elas conseguem sincronizar esses dados e tanto transmitir como receber da maneira correta. Esse valor está diretamente relacionado a <b>quantidade de bits por segundo</b> em que a comunicação ocorre.
209+
</p>
210+
141211
# Sobre Python <a id="sobre-python"></a>
142212

143213
# Códigos, Aplicações e Utilitários <a id="aplicacao"></a>

codes/Arduino/serial_read_write/serial_read_write.ino

100644100755
File mode changed.

codes/Serial/serial_escrita.py

100644100755
Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
# -*- coding: iso-8859-1 -*-
22
import serial
33

4-
arduino = serial.Serial(port='/dev/ttyACM0', baudrate=9600, timeout=1) # open serial port
5-
arduino.write(b'a') # escreve uma string
6-
#arduino.write(bytes('a', encoding='utf-8')) # escreve uma string
7-
arduino.close() # Fecha porta de comunicação
4+
# Abre porta Serial com seus devidos parâmetros
5+
arduino = serial.Serial(port='/dev/ttyACM0', baudrate=9600, timeout=1)
6+
7+
# escreve uma string na porta serial
8+
arduino.write(b'a')
9+
#arduino.write(bytes('a', encoding='utf-8'))
10+
#
11+
arduino.close() # Fecha porta de comunicação
12+

codes/Serial/serial_escrita_leitura.py

100644100755
File mode changed.

codes/Serial/serial_leitura.py

100644100755
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
# -*- coding: iso-8859-1 -*-
22
import serial
33

4-
ser = serial.Serial(port='/dev/ttyACM0', baudrate=9600, timeout=1) # open serial port
4+
# Abre porta Serial com seus devidos parâmetros
5+
ser = serial.Serial(port='/dev/ttyACM0', baudrate=9600, timeout=1)
56

7+
# Lê repetidamente e imprime qualquer mensagem que vem do arduino
68
while True:
79
msg = ser.readline().decode('ascii')
8-
print(msg)
10+
print(msg)
11+

codes/opencv/c1.png

100644100755
File mode changed.

codes/opencv/captura.py

100644100755
File mode changed.

codes/pysound/Akryl - Gradient.mp3

100644100755
File mode changed.

codes/pysound/Akryl - Jazz Bandicoot.mp3

100644100755
File mode changed.

codes/pysound/Akryl - Mocha.mp3

100644100755
File mode changed.

codes/pysound/Akryl - Typical Day At The Office.mp3

100644100755
File mode changed.

codes/pysound/aimless-old habits.mp3

100644100755
File mode changed.

codes/pysound/play.py

100644100755
File mode changed.

codes/speech-to-text/spch.py

100644100755
File mode changed.

codes/speech-to-text/spch_arduino.py

100644100755
File mode changed.

img/imagens-palestra/1.png

100644100755
File mode changed.

img/imagens-palestra/10.png

100644100755
File mode changed.

img/imagens-palestra/11.png

100644100755
File mode changed.

img/imagens-palestra/2.png

100644100755
File mode changed.

img/imagens-palestra/3.png

100644100755
File mode changed.

img/imagens-palestra/4.png

100644100755
File mode changed.

img/imagens-palestra/5.png

100644100755
File mode changed.

img/imagens-palestra/6.png

100644100755
File mode changed.

img/imagens-palestra/7.png

100644100755
File mode changed.

img/imagens-palestra/8.png

100644100755
File mode changed.

img/imagens-palestra/9.png

100644100755
File mode changed.

0 commit comments

Comments
 (0)