<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivo para Sistemas Embarcados - Bóson Treinamentos em Ciência e Tecnologia</title>
	<atom:link href="https://www.bosontreinamentos.com.br/tag/sistemas-embarcados/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bosontreinamentos.com.br/tag/sistemas-embarcados/</link>
	<description>Artigos e Tutoriais sobre Desenvolvimento de Software, Bancos de Dados SQL, Linux, Lógica de Programação, Inteligência Artificial, Hardware, Eletrônica, Arduino, Técnicas e Teorias de Estudo e Aprendizagem, Carreira em TI, Ciências Cognitivas, e muito mais!</description>
	<lastBuildDate>Mon, 20 Jan 2025 19:24:10 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>
	<item>
		<title>Tipos de Dados em Rust</title>
		<link>https://www.bosontreinamentos.com.br/rust/tipos-de-dados-em-rust/</link>
					<comments>https://www.bosontreinamentos.com.br/rust/tipos-de-dados-em-rust/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 18 Apr 2023 12:59:11 +0000</pubDate>
				<category><![CDATA[Rust]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Sistemas Embarcados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19278</guid>

					<description><![CDATA[<p>Tipos de Dados em Rust Os valores dos dados que são processados e armazenados, no Rust, são classificados em um determinado tipo de dados, de modo que o Rust saiba como lidar com cada dado em particular. O Rust é uma linguagem de tipagem estática, o que significa que ela precisa saber os tipos de todas as variáveis em tempo de compilação. Os tipos de dados em Rust são divididos em duas grandes categorias: Tipos Escalares e Tipos Compostos. Neste tutorial vamos nos focar nos tipos escalares em Rust, e no próximo, estudaremos os tipos compostos. Tipos Escalares em Rust Um tipo escalar representa um valor único. A linguagem Rust possui suporte a quatro tipos escalares primários, que são: Tipo Inteiro Ponto-Flutuante Booleano (Lógico) Caracteres Vamos estudar cada tipo separadamente. Tipo Inteiro em Rust Se refere a números sem uma parte decimal (fracionária). Os principais tipos inteiros em Rust são: Tabela 1.1: Tipos Inteiros em Rust Comprimento Com Sinal Sem Sinal 8 bits i8 u8 16 bits i16 u16 32 bits i32 u32 64 bits i64 u64 128 bits i128 u128 Com sinal e sem sinal indicam se o número pode ser negativo (com ou sem sinal de negativo: -). [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/tipos-de-dados-em-rust/">Tipos de Dados em Rust</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Tipos de Dados em Rust</h2>
<p>Os valores dos dados que são processados e armazenados, no Rust, são classificados em um determinado tipo de dados, de modo que o Rust saiba como lidar com cada dado em particular.</p>
<p>O Rust é uma linguagem de <em>tipagem estática</em>, o que significa que ela precisa saber os tipos de todas as variáveis em tempo de compilação.</p>
<p>Os tipos de dados em Rust são divididos em duas grandes categorias: Tipos Escalares e Tipos Compostos. Neste tutorial vamos nos focar nos tipos escalares em Rust, e no próximo, estudaremos os tipos compostos.</p>
<h3>Tipos Escalares em Rust</h3>
<p>Um tipo escalar representa um valor único. A linguagem Rust possui suporte a quatro tipos escalares primários, que são:</p>
<ul>
<li>Tipo Inteiro</li>
<li>Ponto-Flutuante</li>
<li>Booleano (Lógico)</li>
<li>Caracteres</li>
</ul>
<p>Vamos estudar cada tipo separadamente.</p>
<h3>Tipo Inteiro em Rust</h3>
<p>Se refere a números sem uma parte decimal (fracionária). Os principais tipos inteiros em Rust são:</p>
<p><em>Tabela 1.1: Tipos Inteiros em Rust</em></p>
<table style="border-collapse: collapse; width: 72.8587%; height: 160px;" border="1">
<tbody>
<tr>
<th style="width: 33.3333%; text-align: center;">Comprimento</th>
<th style="width: 33.3333%; text-align: center;">Com Sinal</th>
<th style="width: 33.3333%; text-align: center;">Sem Sinal</th>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;">8 bits</td>
<td style="width: 33.3333%; text-align: center;">i8</td>
<td style="width: 33.3333%; text-align: center;">u8</td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;">16 bits</td>
<td style="width: 33.3333%; text-align: center;">i16</td>
<td style="width: 33.3333%; text-align: center;">u16</td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;">32 bits</td>
<td style="width: 33.3333%; text-align: center;">i32</td>
<td style="width: 33.3333%; text-align: center;">u32</td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;">64 bits</td>
<td style="width: 33.3333%; text-align: center;">i64</td>
<td style="width: 33.3333%; text-align: center;">u64</td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;">128 bits</td>
<td style="width: 33.3333%; text-align: center;">i128</td>
<td style="width: 33.3333%; text-align: center;">u128</td>
</tr>
</tbody>
</table>
<p><em>Com sinal</em> e <em>sem sinal</em> indicam se o número pode ser negativo (com ou sem sinal de negativo: -).</p>
<p>Cada tipo com sinal pode armazenar números de -(2<sup>n &#8211; 1</sup>) a 2<sup>n &#8211; 1</sup> &#8211; 1 inclusive, onde n é o número de bits que o tipo em particular usa. Assim, um inteiro do tipo i8 pode armazenar números de -(2<sup>7</sup>) até 2<sup>7</sup> &#8211; 1, que equivale à faixa numérica de -128 a 127.</p>
<p>Já tipos sem sinal podem armazenar números de 0 a 2<sup>n</sup> &#8211; 1 (ou seja, somente positivos), e assim um tipo inteiro u8 consegue armazenar números de 0 a 2<sup>8</sup> &#8211; 1, que é a faixa de 0 a 255.</p>
<p>O tipo inteiro <strong>padrão</strong> em Rust é o <strong>i32</strong>, que significa que se o tipo não for explicitamente declarado, será assumido um número inteiro com sinal (i), que pode representar valores positivos e negativos, ocupando um espaço de 32 bits na memória RAM.</p>
<p>Chamamos de <strong>Inferência de Tipo</strong> quando um tipo não é explicitamente declarado.</p>
<p>Exemplo:</p>
<pre><strong>fn main() {
  let a = 90;
  let g: u32 = 100;</strong>
<strong>  let x: i32 = -250;
  println!("Tipo Inteiro com sinal: {}", a);
  println!("Outro dado inteiro, sem sinal: {}", g);</strong>
<strong>  println!("Mais um inteiro com sinal, declarado explicitamente: {}", x);
}</strong></pre>
<h3>Tipo de Ponto Flutuante em Rust</h3>
<p>Tipos de ponto flutuante são aqueles que representam as casas decimais &#8211; são os números quebrados, coloquialmente.</p>
<p>Em Rust os tipos de ponto flutuante são <strong>f32</strong> e <strong>f64</strong>, de tamanhos 32 e 64 bits, respectivamente. O padrão é o tipo f64, e ambos os tipos possuem sinal.</p>
<p>O tipo f32 é de precisão simples (&#8220;<em>float</em>&#8220;), e o tipo f64, de precisão dupla (&#8220;<em>double</em>&#8220;).</p>
<p>Exemplo:</p>
<pre><strong>fn main() {
  let b: f32 = 6.000001; <span style="color: #339966;">// se houver mais um zero na parte decimal, o valor será exibido incorretamente</span></strong>
<strong>  let d: f64 = 6.0000000001; <span style="color: #339966;">// exibe o valor normalmente</span>
  println!("{}", b);</strong>
<strong>  println!("{}", d);
}</strong></pre>
<h3>Tipo Booleano</h3>
<p>Um tipo booleano é um tipo lógico, que suporta apenas dois valores possíveis: <strong>true</strong> e <strong>false</strong> (verdadeiro e falso). Este tipo possui tamanho de um byte, e é declarado com a palavra-chave bool.</p>
<p>São empregados comumente em estruturas de decisão e laços de repetição, onde uma condição deve ser avaliada para decidir o que o programa fará na sequência.</p>
<p>Exemplo:</p>
<pre><strong>fn main() {
  let V: bool = true;</strong>
<strong>  let F: bool = false;</strong>
<strong>  println!("{}", V);</strong>
<strong>  println!("{}", F);
}</strong></pre>
<h3>Tipo de Caractere</h3>
<p>O tipo padrão para armazenamento de caracteres em Rust é o tipo <strong>char.</strong> Este tipo, cujos dados são representados entre aspas simples, ocupa quatro bytes por dado e representa um valor escalar Unicode. Sendo assim, consegue representar caracteres ASCII, símbolos e caracteres especiais, caracteres em idiomas orientais (Chinês, Japonês, Coreano, etc.), emojis e muitos outros.</p>
<p>Exemplo:</p>
<pre><strong>fn main() {</strong>
<strong>  let c: char = 'Q';</strong>
<strong>  println!("{}", c);</strong>
<strong>}</strong></pre>
<p>Note que o tipo char é empregado para o armazenamento de um caractere único. Sendo assim, a declaração a seguir está incorreta, e irá gerar um erro ao compilarmos:</p>
<pre><strong>fn main() {</strong>
<strong>  let c: char = 'Morango';</strong>
<strong>  println!("{}", c);</strong>
<strong>}</strong></pre>
<p>Como declaramos um tipo para representar mais de um caractere então? Para isso necessitamos de um tipo para armazenamento de <em>strings</em>.</p>
<h3>Strings em Rust</h3>
<p>Uma <em><strong>string</strong> </em>é uma cadeia de caracteres, que empregamos para armazenar dados comuns como nomes, palavras, códigos, descrições, etc.</p>
<p>Em Rust, existe um tipo string, com suporte a UTF-8.</p>
<p>Para criarmos um dado do tipo string, devemos representar seu valor entre aspas duplas, como no exemplo a seguir:</p>
<pre><strong>fn main() {</strong>
<strong>  let nome = "Fábio dos Reis";</strong>
<strong>  println!("{}", nome);</strong>
<strong>}</strong></pre>
<p>Neste exemplo, &#8220;Fábio dos Reis&#8221; é um <strong><em>literal de string</em></strong> e o tipo é <strong><em>&amp;&#8217;static str</em></strong>. Um literal de string é uma fatia de string alocada de forma estática, o que significa que ela fica armazenada dentro do programa compilado, existindo enquanto o programa estiver em execução.</p>
<p>Em Rust, existe um outro tipo para armazenamento de Strings. Trata-se do tipo <strong>String</strong>, cujo tamanho pode crescer dinamicamente. É possível criar objetos do tipo String convertendo uma fatia de string com o método <strong><em>to_string()</em></strong>.</p>
<p>Confuso? Não se preocupe. Teremos um tutorial especial dedicado às strings em Rust. Por enquanto, basta declarar os dados do tipo string envolvendo-os em aspas duplas ao declarar uma variável, como no exemplo a seguir:</p>
<pre><strong>fn main() {</strong>
<strong> let canal = "Bóson Treinamentos em Tecnologia!";</strong>
<strong> println!("{}", canal);</strong>
<strong>}</strong></pre>
<p>Nas próximas lições vamos dar uma olhada em alguns tipos compostos em Rust, além de aprender a realizar a conversão de um tipo em outro (<em>casting</em> de tipos).</p>
<h3>Perguntas e Respostas comuns</h3>
<p><strong>O que é um Tipo de Dado em programação?</strong><br />
Tipo de dado é uma classificação que especifica qual tipo de valor uma variável pode armazenar, e que tipos de operações matemáticas, relacionais ou lógicas podem ser aplicadas a essa variável, sem causar erros.</p>
<p><strong>Quais são os tipos escalares em Rust?</strong><br />
Os tipos escalares em Rust são o tipo inteiro, de ponto flutuante , booleano e de caracteres.</p>
<p><strong>O que significa <em>tipo com sinal</em> e <em>tipo sem sinal</em>?</strong><br />
Tipo com sinal indica que o número pode ser negativo (com sinal <strong>&#8211;</strong>), e tipo sem sinal, que o número somente pode ser positivo.</p>
<h3>Referências</h3>
<ul>
<li>Site oficial da linguagem Rust: <a href="https://www.rust-lang.org/" target="_blank" rel="noopener">https://www.rust-lang.org/</a></li>
<li>Documentação oficial do Rust:<a href="https://doc.rust-lang.org/" target="_blank" rel="noopener"> https://doc.rust-lang.org/</a></li>
<li>Rust by Example: <a href="https://doc.rust-lang.org/stable/rust-by-example/" target="_blank" rel="noopener">https://doc.rust-lang.org/stable/rust-by-example/</a></li>
<li>Rust Programming Language Book: <a href="https://doc.rust-lang.org/book/" target="_blank" rel="noopener">https://doc.rust-lang.org/book/</a></li>
<li>The Rust Programming Language Blog: <a href="https://blog.rust-lang.org/" target="_blank" rel="noopener">https://blog.rust-lang.org/</a></li>
</ul>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/tipos-de-dados-em-rust/">Tipos de Dados em Rust</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/rust/tipos-de-dados-em-rust/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>O que é a linguagem Rust de programação</title>
		<link>https://www.bosontreinamentos.com.br/rust/o-que-e-a-linguagem-rust-de-programacao/</link>
					<comments>https://www.bosontreinamentos.com.br/rust/o-que-e-a-linguagem-rust-de-programacao/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 14 Apr 2023 17:04:17 +0000</pubDate>
				<category><![CDATA[Rust]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Sistema Operacional]]></category>
		<category><![CDATA[Sistemas Embarcados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19234</guid>

					<description><![CDATA[<p>O que é a linguagem Rust? Neste artigo dou início a uma série de tutoriais sobre uma linguagem de programação muito interessante, por vários motivos que veremos a seguir, e que está em ascenção na atualidade: a linguagem Rust. O Rust é uma linguagem de programação de sistemas, desenvolvida como um projeto pessoal pelo desenvolvedor Graydon Hoare (que também criou a linguagem Swift), que trabalhava na Mozilla Research, sendo posteriormente financiado pela empresa. É uma linguagem que foi projetada para ser segura, rápida e com suporte a concorrência, combinando o controle de baixo nível existente em linguagens como C e C++ com recursos de alto nível, como gerenciamento de memória sem garbage collector, sistema de tipos forte e estático e abstrações de dados. Logo da linguagem Rust de Programação O site oficial da linguagem Rust é o rust-lang.org. Linguagens de programação de sistemas são empregadas para criar software e plataformas de software, como sistemas operacionais, compiladores, motores de jogos, sistemas embarcados, etc. Ou seja, são linguagens que efetuam uma forte interação com o hardware da máquina. Outros exemplos de linguagens de sistemas são as linguagens C e C++. Características do Rust Uma das principais características da linguagem Rust é sua [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/o-que-e-a-linguagem-rust-de-programacao/">O que é a linguagem Rust de programação</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>O que é a linguagem Rust?</h2>
<p>Neste artigo dou início a uma série de tutoriais sobre uma linguagem de programação muito interessante, por vários motivos que veremos a seguir, e que está em ascenção na atualidade: a <strong>linguagem Rust</strong>.</p>
<p>O Rust é uma linguagem de programação de sistemas, desenvolvida como um projeto pessoal pelo desenvolvedor <a href="https://github.com/graydon" target="_blank" rel="noopener">Graydon Hoare</a> (que também criou a linguagem Swift), que trabalhava na Mozilla Research, sendo posteriormente financiado pela empresa.</p>
<p>É uma linguagem que foi projetada para ser segura, rápida e com suporte a concorrência, combinando o controle de baixo nível existente em linguagens como C e C++ com recursos de alto nível, como gerenciamento de memória sem <em>garbage collector</em>, sistema de tipos forte e estático e abstrações de dados.</p>
<div id="attachment_19262" style="width: 260px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-19262" class="wp-image-19262" title="Logo da linguagem Rust de Programação" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/Rust-Logo-1024x1024.png" alt="Logo da linguagem Rust de Programação" width="250" height="250" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/Rust-Logo-1024x1024.png 1024w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/Rust-Logo-170x170.png 170w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/Rust-Logo-420x420.png 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/Rust-Logo-768x768.png 768w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/Rust-Logo.png 2048w" sizes="(max-width: 250px) 100vw, 250px" /><p id="caption-attachment-19262" class="wp-caption-text">Logo da linguagem Rust de Programação</p></div>
<p>O site oficial da linguagem Rust é o <a href="https://www.rust-lang.org/" target="_blank" rel="noopener">rust-lang.org</a>.</p>
<hr />
<p><span style="color: #003300;">Linguagens de <em>programação de sistemas</em> são empregadas para criar software e plataformas de software, como sistemas operacionais, compiladores, motores de jogos, sistemas embarcados, etc.</span></p>
<p><span style="color: #003300;">Ou seja, são linguagens que efetuam uma forte interação com o hardware da máquina. Outros exemplos de linguagens de sistemas são as linguagens <a style="color: #003300;" href="http://www.bosontreinamentos.com.br/category/programacao-em-linguagem-c/">C</a> e <a style="color: #003300;" href="http://www.bosontreinamentos.com.br/category/programacao-em-c/">C++</a>.</span></p>
<hr />
<h3>Características do Rust</h3>
<p>Uma das principais características da linguagem Rust é sua ênfase na segurança e na prevenção de erros de programação comuns, como por exemplo acessos inválidos a memória, vazamentos de memória e condições de corrida em programas concorrentes.</p>
<p>Para isso, a linguagem inclui diversos recursos como verificação de limites de vetor em tempo de compilação, controle de mutabilidade de dados, gerenciamento de memória baseado em propriedade (<em>ownership</em>) e sistema de tipos avançado com  exclusão mútua.</p>
<p>Além disso, outra característica importante da linguagem Rust é seu desempenho, que pode ser comparado ao de linguagens de sistemas como <a href="http://www.bosontreinamentos.com.br/category/programacao-em-linguagem-c/">linguagem C</a> e <a href="http://www.bosontreinamentos.com.br/category/programacao-em-c/">C++</a>.</p>
<p>Isso se deve em parte ao fato de Rust permitir programação de baixo nível, incluindo acesso direto a hardware, sem a sobrecarga de um garbage collector ou de outros recursos de linguagens de alto nível.</p>
<p>Sendo assim, podemos resumir algumas das características principais da linguagem Rust como sendo:</p>
<ul>
<li><strong>Desempenho</strong><br />
Essa linguagem não possui um coletor de lixo (<em>Garbage Collector</em> &#8211; GC) por padrão. Por conta disso, o desempenho em tempo de execução é bastante melhorado.</li>
<li><strong>Segurança de memória em tempo de compilação</strong><br />
Softwares criados com Rust são protegidos contra problemas de memória, como ponteiros pendentes, estouros de buffer e vazamentos de memória.</li>
<li><strong>Aplicativos Multi-Thread</strong><br />
As regras de propriedade e segurança de memória do Rust fornecem simultaneidade sem corridas de dados.</li>
<li><strong>Suporte para Web Assembly (WASM)</strong><br />
O Web Assembly ajuda a executar algoritmos de computação altamente intensiva no navegador, em dispositivos embarcados ou em qualquer outro lugar. Ele é executado na velocidade do código nativo, para execução rápida e confiável.</li>
</ul>
<p>Além disso, o Rust tem uma comunidade de desenvolvedores ativa e crescente, com muitas bibliotecas e ferramentas disponíveis para uma variedade de aplicações, incluindo automação de processos, jogos, computação científica e sistemas embarcados.</p>
<h3>Quais são as aplicações da linguagem Rust?</h3>
<p>A linguagem Rust é uma linguagem de programação de propósito geral que foi desenvolvida com o objetivo de fornecer segurança e alto desempenho em sistemas de software. Algumas das principais aplicações da linguagem Rust incluem:</p>
<ul>
<li><strong>Sistemas Operacionais</strong>: a linguagem Rust é adequada para o desenvolvimento de sistemas operacionais devido à sua segurança e desempenho.</li>
<li><strong>Software de rede</strong>: a linguagem Rust é adequada para o desenvolvimento de software de rede devido à sua capacidade de lidar com operações de E/S de forma eficiente e segura.</li>
<li><strong>Software para sistemas embarcados</strong>: a linguagem Rust é adequada para o desenvolvimento de software de sistemas embarcados devido à sua capacidade de fornecer código de baixo nível com segurança e alto desempenho.</li>
<li><strong>Servidores web</strong>: a linguagem Rust é adequada para o desenvolvimento de servidores web devido à sua capacidade de lidar com grande quantidade de requisições simultâneas com eficiência e segurança.</li>
<li><strong>Jogos</strong>: a linguagem Rust é adequada para o desenvolvimento de aplicações de jogos devido à sua capacidade de fornecer alto desempenho e segurança no gerenciamento de memória.</li>
</ul>
<p>Essas são algumas das principais aplicações da linguagem Rust. Com o seu crescimento e popularidade, novas aplicações e usos estão sendo desenvolvidos pela comunidade de programadores.</p>
<p>Parece excelente não? <strong><em>Mas como começar a programar em Rust?</em></strong></p>
<p>No próximo tutorial mostrarei <a href="http://www.bosontreinamentos.com.br/rust/como-criar-seu-primeiro-programa-em-rust-e-instalacao-da-linguagem/">como instalar a linguagem e criar seu primeiro programa em Rust</a>.</p>
<h3>Referências</h3>
<ul>
<li>Site oficial da linguagem Rust: <a href="https://www.rust-lang.org/" target="_blank" rel="noopener">https://www.rust-lang.org/</a></li>
<li>Documentação oficial do Rust:<a href="https://doc.rust-lang.org/" target="_blank" rel="noopener"> https://doc.rust-lang.org/</a></li>
<li>Rust by Example: <a href="https://doc.rust-lang.org/stable/rust-by-example/" target="_blank" rel="noopener">https://doc.rust-lang.org/stable/rust-by-example/</a></li>
<li>Rust Programming Language Book: <a href="https://doc.rust-lang.org/book/" target="_blank" rel="noopener">https://doc.rust-lang.org/book/</a></li>
<li>The Rust Programming Language Blog: <a href="https://blog.rust-lang.org/" target="_blank" rel="noopener">https://blog.rust-lang.org/</a></li>
</ul>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/o-que-e-a-linguagem-rust-de-programacao/">O que é a linguagem Rust de programação</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/rust/o-que-e-a-linguagem-rust-de-programacao/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>O que são Sensores</title>
		<link>https://www.bosontreinamentos.com.br/eletronica/curso-de-eletronica/o-que-sao-sensores/</link>
					<comments>https://www.bosontreinamentos.com.br/eletronica/curso-de-eletronica/o-que-sao-sensores/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 06 Feb 2018 23:33:27 +0000</pubDate>
				<category><![CDATA[Curso de Eletrônica]]></category>
		<category><![CDATA[Eletrônica]]></category>
		<category><![CDATA[Sensor]]></category>
		<category><![CDATA[Sistemas Embarcados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=11355</guid>

					<description><![CDATA[<p>O que é um Sensor Um Sensor em Eletrônica&#160;é um dispositivo que capta e converte um fenômeno físico, como temperatura, umidade ou luminosidade, em um sinal elétrico. Desta forma, os sensores fazem parte da interface entre o mundo físico e o mundo dos dispositivos eletrônicos, como os computadores e redes de dados. Geralmente, a saída obtida em um sensor é uma grandeza elétrica como uma pequena tensão, corrente ou ainda uma alteração em um valor de resistência elétrica, que é enviada a um circuito eletrônico para processamento, sendo muito comum o uso de microcontroladores para esse fim. Existem inúmeros formatos de sensores disponíveis, sem que, no entanto, haja uma padronização sobre suas especificações. Assim, vamos encontrar uma grande quantidade de interpretações dos parâmetros técnicos dos sensores, o que pode até mesmo se tornar confuso. Por conta disso, é muito importante ler e saber interpretar o datasheet de um sensor, de modo a poder extrair dele o máximo de performance e funcionalidade. Um Datasheet é uma ficha técnica &#8211; um documento &#8211; que traz toda a especificação de funcionamento de um dispositivo eletrônico. Na verdade, quase toda informação &#8211; sempre há algum dado ausente; mas, mesmo assim, é o documento mais [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/eletronica/curso-de-eletronica/o-que-sao-sensores/">O que são Sensores</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>O que é um Sensor</h2>
<p>Um <em><strong>Sensor</strong></em> em Eletrônica<em><strong>&nbsp;</strong></em>é um dispositivo que capta e converte um <strong>fenômeno físico</strong>, como temperatura, umidade ou luminosidade, em um <strong>sinal elétrico</strong>. Desta forma, os sensores fazem parte da interface entre o mundo físico e o mundo dos dispositivos eletrônicos, como os computadores e redes de dados.</p>
<p>Geralmente, a saída obtida em um sensor é uma grandeza elétrica como uma pequena tensão, corrente ou ainda uma alteração em um valor de resistência elétrica, que é enviada a um circuito eletrônico para processamento, sendo muito comum o uso de microcontroladores para esse fim.</p>
<p>Existem inúmeros formatos de sensores disponíveis, sem que, no entanto, haja uma padronização sobre suas especificações. Assim, vamos encontrar uma grande quantidade de interpretações dos parâmetros técnicos dos sensores, o que pode até mesmo se tornar confuso.</p>
<p>Por conta disso, é muito importante ler e saber interpretar o datasheet de um sensor, de modo a poder extrair dele o máximo de performance e funcionalidade.</p>
<p>Um <strong>Datasheet</strong> é uma ficha técnica &#8211; um documento &#8211; que traz toda a especificação de funcionamento de um dispositivo eletrônico. Na verdade, quase toda informação &#8211; sempre há algum dado ausente; mas, mesmo assim, é o documento mais importante e prontamente disponível que você deve consultar ao projetar uma aplicação que utilize um sensor.</p>
<p>A seguir vamos explicar algumas das características de sensores mais comuns encontradas em datasheets.</p>
<h3>Características dos Sensores</h3>
<p>A terminologia que define as características dos sensores pode ser um pouco confusa, e aqui definimos algumas das mais importantes a seguir:</p>
<ul>
<li><strong>Função de Transferência</strong>: Mostra a relação funcional entre um sinal de entrada físico e o sinal de saída elétrico. No geral, essa relação é representada por meio de um gráfico que mostra o relacionamento entre os sinais de entrada e saída, permitindo descrever as características de um sensor.</li>
<li><strong>Sensibilidade</strong>: Definimos a sensibilidade de um sensor com a relação entre o sinal de entrada físico e o sinal de saída elétrico. É a <strong>razão</strong> entre uma pequena variação no sinal elétrico para uma pequena variação em um sinal físico. Assim, é derivada a partir da função de transferência em relação ao sinal de entrada. Por exemplo, podemos falar em <em>volts/Celsius</em>, ou <em>milivolts/decibel</em>, significando a variação em volts na saída do sensor em relação à variação da temperatura em Celsius, ou ainda a variação em milivolts em relação à variação da entrada em decibéis, respectivamente. Dizemos que um sensor possui alta sensibilidade quando uma pequena variação na entrada resulta em uma variação grande de tensão elétrica na saída do sensor.</li>
<li><strong>Faixa Dinâmica</strong>: Trata-se da faixa de valores do sinal de entrada que podem ser convertidos em sinais elétricos pelo sensor. Sinais de entrada fora desta faixa ainda podem ser convertidos em sinais elétricos, porém podem resultar em valores de leitura muito imprecisos, e assim, inaceitáveis. No geral, as características do sensor descritas no datasheet se aplicam apenas aos valores de entrada contidos dentro da faixa dinâmica informada. Por exemplo, um microfone pode ter uma faixa dinâmica de 100 Hz a 2000 Hz, significando que os valores de tensão gerados na saída somente são aceitáveis e utilizáveis caso a frequência sonora captada pelo dispositivo esteja no intervalo entre esses dois valores.</li>
<li><strong>Incerteza</strong>&nbsp;ou <strong>Precisão</strong>: Define o maior valor de erro esperado entre um sinal de saída ideal e o sinal real, obtido. Por exemplo, podemos ter um sensor de temperatura cuja&nbsp;incerteza é de 5%. Neste caso, o sensor é mais preciso do que outro cujo valor de incerteza é de 10%.</li>
<li><strong>Histerese</strong>: Alguns sensores não fornecem em sua saída o mesmo valor de saída quando o sinal de entrada se desloca para cima e para baixo (aumenta e diminui). A largura do erro esperado em termos do valor medido é definido como <em>histerese</em>, que pode ser medida em valor absoluto ou percentual.</li>
<li><strong>Linearidade</strong> (ou ainda <strong>Não-Linearidade</strong>): Trata-se do valor máximo de desvio de uma função de transferência linear na faixa dinâmica especificada. Pode ser medida por vários métodos diferentes, e mostra com o sensor se comporta em relação a um sensor de saída ideal.</li>
<li><strong>Ruído</strong>: O ruído é um sinal espúrio produzido pelo sensor em sua saída, em adição ao sinal elétrico derivado da medida realizada. Se o ruido for muito elevado, ele pode limitar a performance do sistema baseado no sensor, em alguns casos até impedindo que seja realizada uma leitura correta do valor físico medido. No geral, o ruído produzido é uma distribuição de ruído branco, ou seja, cuja densidade de ruído espectral é a mesma em todas as frequências (combinação de todas as frequências).</li>
<li><strong>Resolução</strong>: Definimos resolução em um sensor com sendo a menor flutuação do sinal de entrada detectável. No geral, as flutuações (variações) do sinal de entrada são fenômenos que variam com o tempo, e desta forma existe uma relação entre o intervalo de tempo da flutuação e a amplitude mínima detectável. Em termos mais simples, a resolução diz respeito à capacidade do sensor de detectar uma mudança no sinal de entrada em um intervalo de tempo específico. Por exemplo, um sensor X pode detectar variações no sinal de entrada a cada 20ms, ou seja, 50 medições por segundo, enquanto um sensor Y, a cada 10ms, equivalente a 100 medições por segundo. Neste caso, o sensor Y possui maior resolução, pois é capaz de detectar mais amostras de sinal em um mesmo intervalo de tempo.</li>
<li><strong>Temperatura de Operação</strong>: Trata-se de uma faixa de temperaturas na qual se pode garantir que o sensor irá operar como esperado, de acordo com suas outras características. Usar o sensor em um ambiente cuja temperatura está fora desta faixa pode ocasionar problemas que vão desde leituras incorretas até a inutilização do dispositivo.</li>
<li><strong>Níveis de Saída</strong>: Os níveis de saída se referem aos valores de tensão gerados na saída do sensor. Podem ser níveis contínuos, variando diretamente com a medida física em sua entrada, ou ainda nível discreto, por exemplo apresentando um nível de tensão alto para uma condição de entrada e outro nível baixo para uma condição diferente de entrada (sensor de disparo).</li>
</ul>
<p>Existem muitas outras características em um sensor, que podem variar dependendo do tipo de sensor considerado, como Resposta Espectral, Dissipação de Potência, Temperatura de Armazenamento, Ângulo de Medição, Tolerância à ESD, etc.</p>
<h3>Precisão e Acurácia</h3>
<p>Dois conceitos muito importantes para levarmos em consideração ao escolher um sensor para aplicação em um projeto são os conceitos de Precisão e Acurácia, que podem trazer certa confusão caso não sejam compreendidos corretamente.</p>
<p>Precisão diz respeito à quantidade de dígitos obtidos no valor que um sensor retorna em uma medida. Por exemplo, suponha um sensor A que consiga retornar valores com três casas decimais, e um sensor B que consiga retorna valores com até oito casas decimais; claramente o sensor B possui maior precisão. Mas isso não significa que a leitura seja 100% correta.</p>
<p>A Acurácia diz respeito à veracidade do valor medido. Por exemplo, um sensor pode retornar uma medida de temperatura em um recinto mostrando o valor de 25,78956ºC, quando na verdade a temperatura é de 27ºC; um segundo sensor, que retorne a temperatura de 26,2ºC é mais acurado, pois o valor retornado é mais próximo do valor real da temperatura &#8211; mesmo o primeiro sensor sendo mais preciso (cinco casas decimais contra apenas uma do segundo sensor).</p>
<h3>Aplicações dos Sensores</h3>
<p>Sensores eletrônicos encontram aplicação em praticamente todas as áreas do conhecimento, como na Medicina, Engenharia, Controle de Tráfego, Segurança, Telecomunicações e muitas outras. Algumas aplicações típicas para os sensores são as seguintes:</p>
<ul>
<li>Engenharia automotiva: Controles de emissão de poluentes, Airbags, Velocidade do Veículo;</li>
<li>Telecomunicações: Um Smartphone, nos dias atuais, possui cerca de dez tipos diferentes de sensores, incluindo acelerômetros, giroscópios, GPS, sensores de luminosidade, microfones, e outros;</li>
<li>Segurança: Sensores de presença, aproximação, detecção de intrusos, detecção de violação de ambientes;</li>
<li>Transportes: Sensores de Altitude em Aviões, Velocidade, Posicionamento e Alinhamento;</li>
<li>Automação Residencial: Sensores de Presença, Iluminação, Controle de Fluxo de Água, Economia de Energia Elétrica, Abertura e Fechamento de Portas;</li>
</ul>
<p>E muitas outras. Novas aplicações continuam a surgir constantemente, incluindo sistemas sensorizados para projetos de Internet das Coisas (IoT), Smart Cities (Cidades Inteligentes), Automação Industrial, Gerenciamento de Resíduos e Controle de Tráfego, por exemplo.</p>
<h3>Limitações dos Sensores</h3>
<p>Existem algumas limitações técnicas que podem dificultar as medidas realizadas com um sensor. Entre elas podemos citar as seguintes:</p>
<ul>
<li><strong>Resistência dos fios</strong>: Os fios elétricos que conectam um sensor a um circuito possuem resistência elétrica, a qual pode interferir no valor obtido na saída de um sensor, principalmente sensores resistivos, adicionando erros à medida realizada.</li>
<li><strong>Capacitância residual</strong>: Os fios também podem introduzir capacitância no circuito, interferindo no valor de sinal obtido em alguns tipos de sensores. A simples movimentação do sensor pode fazer com que a capacitância residual dos fios se altere, confundindo as medidas obtidas, e muitas vezes basta uma pressão acústica sobre o sensor para que este efeito seja notado. Diminuir a distância entre o sensor e o circuito que recebe seu sinal é uma forma de minimizar esse problema.</li>
<li><strong>Impedância de saída</strong>: O&nbsp;sensor possui uma resistência característica que&nbsp;introduz um limite inferior ao valor de uma resistência que pode ser conectada entre&nbsp;seus terminais de saída (sua carga), sem alterar o valor de sua tensão de saída (valor medido). Exemplo: suponha um sensor de temperatura cuja resistência é de 10kΩ, conectado a uma carga de 1MΩ. Neste caso,a&nbsp; impedância de saída do circuito será de aproximadamente&nbsp;10kΩ, portanto basicamente a mesma resistência do sensor &#8211; o valor medido não é alterado. Agora, imagine que esse mesmo sensor seja conectado a uma carga cuja resistência seja de 1kΩ. Agora, a tensão de saída será reduzida em cerca de 90%, pois a carga de 1kΩ é muito menor do que a carga de 1MΩ, diminuindo drasticamente a tensão no divisor formado entre sensor e carga. Por isso é importante balancear com cuidado o valor de resistência de uma carga conectada ao sensor, para que os valores mensurados não sejam alterados.</li>
</ul>
<h3>Tipos de Sensores</h3>
<p>Existem inúmeros tipos de sensores disponíveis atualmente, que permitem medições das mais variadas grandezas físicas. E esta é uma das formas mais tradicionais de classificá-los &#8211; de acordo com a propriedade física que o sensor é projetado para medir. A tabela a seguir mostra alguns dos tipos de sensores mais comuns com exemplos de dispositivos:</p>
<table style="height: 22px; width: 687px;">
<thead>
<tr>
<td style="width: 178px;"><strong>Categoria do Sensor</strong></td>
<td style="width: 230px;"><strong>Finalidade</strong></td>
<td style="width: 271px;"><strong>Exemplos de Dispositivos</strong></td>
</tr>
<tr>
<td style="width: 178px;">Temperatura</td>
<td style="width: 230px;">Detectam a quantidade de calor em meios distintos, usando diversas técnicas.</td>
<td style="width: 271px;">Termoacoplador<br />
Termistores NTC / PTC<br />
Termômetro Infravermelho</td>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 178px;">Luminosidade / Ópticos</td>
<td style="width: 230px;">Detectam a presença ou variação da quantidade de luz que incide sobre o sensor.</td>
<td style="width: 271px;"><a href="http://www.bosontreinamentos.com.br/eletronica/curso-de-eletronica/curso-de-eletronica-o-que-e-um-ldr-light-dependent-resistor/">LDR</a><br />
Fotodiodos<br />
Fototransistores<br />
Células Solares<br />
LTV (Light-to-Voltage)<br />
Encoder Óptico</td>
</tr>
<tr>
<td style="width: 178px;">Pressão</td>
<td style="width: 230px;">Detectam uma força aplicada sobre o dispositivo.</td>
<td style="width: 271px;">Sensor Piezoresistivo<br />
Transdutor Capacitivo<br />
Potenciômetro de Pressão</td>
</tr>
<tr>
<td style="width: 178px;">Aceleração</td>
<td style="width: 230px;">Detectam mudanças no movimento físico do sensor</td>
<td style="width: 271px;">Acelerômetro<br />
Inclinômetro<br />
Giroscópio<br />
Sensor de Vibração<br />
Sensor de Tilt</td>
</tr>
<tr>
<td style="width: 178px;">Distância / Proximidade</td>
<td style="width: 230px;">Detectam e respondem a movimento que ocorre fora do dispositivo, mas dentro de uma área de alcance.</td>
<td style="width: 271px;">Ultrassônico<br />
Óptico Reflexivo<br />
PIR (Passive Infrared)<br />
Proximidade Indutivo ou Capacitivo<br />
Reed Switch</td>
</tr>
<tr>
<td style="width: 178px;">Sonoro</td>
<td style="width: 230px;">Detectam e medem a presença de sons nas faixas audível ou inaudível.</td>
<td style="width: 271px;"><a href="http://www.bosontreinamentos.com.br/eletronica/curso-de-eletronica/como-funciona-um-microfone-curso-de-eletronica/">Microfone de Áudio</a></td>
</tr>
<tr>
<td style="width: 178px;">Substâncias (Meio)</td>
<td style="width: 230px;">Detectam e respondem à presença de uma substância física no sensor</td>
<td style="width: 271px;">Gás (Hidrogênio, Oxigênio, Butano, Álcool, etc).<br />
Fumaça<br />
Poeira<br />
Umidade<br />
Nível de Água</td>
</tr>
<tr>
<td style="width: 178px;">Imagem / Câmera</td>
<td style="width: 230px;">Detectam uma imagem e a transformam em um sinal digital (ou analógico)</td>
<td style="width: 271px;">CCD<br />
Sensor CMOS</td>
</tr>
<tr>
<td style="width: 178px;">Magnético</td>
<td style="width: 230px;">Detectam e respondem quando na presença de um campo magnético</td>
<td style="width: 271px;">Efeito Hall<br />
Sensor Reed<br />
Chaves Magnéticas</td>
</tr>
<tr>
<td style="width: 178px;">Outros</td>
<td style="width: 230px;">Existem sensores para detecção de praticamente toda grandeza física, alguns com mais de uma função.</td>
<td style="width: 271px;">
<p>Sensor de Corrente&nbsp;Contínua<br />
Sensor de Tensão<br />
Tubo Geiger-Müller<br />
GPS</p>
</td>
</tr>
</tbody>
</table>
<p>
E muitos outros. Dentro de cada categoria de sensor listada, mais de uma tecnologia de fabricação e operação pode ser utilizada. Por exemplo, um sensor de temperatura pode ser fabricado usando-se tecnologia de termoacopladores ou de termistores, ou seja, usando semicondutores ou materiais resistivos. O mesmo acontece com um sensor de luminosidade, que pode ser um Fotodiodo (semicondutor) ou um <a href="http://www.bosontreinamentos.com.br/eletronica/curso-de-eletronica/curso-de-eletronica-o-que-e-um-ldr-light-dependent-resistor/" target="_blank" rel="noopener noreferrer">LDR</a> (resistor).</p>
<p>A figura a seguir mostra alguns tipos de sensores comuns:</p>
<div id="attachment_11364" style="width: 610px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11364" class="wp-image-11364 size-full" title="Sensores variados" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2018/02/Sensores-variados.jpg" alt="Sensores variados" width="600" height="600" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2018/02/Sensores-variados.jpg 600w, https://www.bosontreinamentos.com.br/wp-content/uploads/2018/02/Sensores-variados-170x170.jpg 170w, https://www.bosontreinamentos.com.br/wp-content/uploads/2018/02/Sensores-variados-420x420.jpg 420w" sizes="auto, (max-width: 600px) 100vw, 600px" /><p id="caption-attachment-11364" class="wp-caption-text">Diversos tipos de sensores</p></div>
<p>&nbsp;</p>
<p>O site da Wikipedia em inglês traz uma <a href="http://bit.ly/1WJ9P12" target="_blank" rel="noopener noreferrer">lista (incompleta!) com centenas de tipos de sensores</a>, categorizados.</p>
<p>Nos próximos tutoriais vamos explorar diversos tipos de sensores de forma mais aprofundada, estudando suas tecnologias, aplicações e limitações.</p>
<p>Quer aprender tudo sobre Eletrônica? Minha dica é o livro <a href="https://hotm.art/f458xx" target="_blank" rel="noopener">Eletrônica &#8211; Para Autodidatas, Estudantes e Técnicos</a> &#8211; 2ª Edição, de Gabriel Torres, que você pode adquirir em formato digital com preço promocional clicando na imagem a seguir:</p>
<p><a href="https://hotm.art/f458xx" target="_blank" rel="nofollow noopener"><img loading="lazy" decoding="async" class="aligncenter wp-image-15539 size-full" title="Eletrônica - Para Autodidatas, Estudantes e Técnicos - Gabriel Torres" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2015/07/eletronica2018-capa-300x407.jpg" alt="Eletrônica - Para Autodidatas, Estudantes e Técnicos - Gabriel Torres" width="300" height="407"></a></p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/eletronica/curso-de-eletronica/o-que-sao-sensores/">O que são Sensores</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/eletronica/curso-de-eletronica/o-que-sao-sensores/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
