Fórum

Palavra-chave
Destaque/Sem destaque
Resolvida/Não Resolvida
Aberta/Encerrada
0 votos
0 respostas
23 visualizações

Olá a todos,

Estou desenvolvendo uma série de tutoriais para ensinar como desenvolver uma aplicação de IoT completa, desde o código a ser embarcado até escrevendo um aplicativo Android para interagir com o hardware. Utiliza-se como backend da aplicação o Parse Server, uma plataforma open-source estável e fácil de usar para que o desenvolvedor se preocupe apenas com o front-end.

Deem uma olhada na primeira parte do artigo, inicialmente para configurar e deixar o Raspberry Pi rodando. Nas próximas semanas vou postar como conectar o Raspberry ao servidor e, finalmente, como desenvolver um App Android que interaja com o eletrônico.

Mandem qualquer feedback que tiverem! Muito obrigado

IoT Series: Raspberry Pi with Parse Server – Setup

0 votos
0 respostas
28 visualizações

Explique o por quê quando alimentamos o A.O. LM741 de maneira single-supply (+Vcc e 0V), configurado com Buffer e injetamos um sinal -2Vdc à entrada não-inversora, a saída não é zero volt (0V).

0 votos
0 respostas
38 visualizações

Boa pessoal, estou tentando comunicar dois mbed (lpc1768), quero enviar um um frase para que meu outro lpc1768 processe.
Estou conseguindo transmitir para meu ESCRAVO mas ele so consegui receber apenas um letra da minha frase,
EXE. meu mestre envia o char “LEANDRO” E MEU ESCRAVO SO CONSEGUI PEGAR O PRIMEIRO CARACTER A LETRA “L” .

o que estou fazendo de errado.

GOSTARIA DE UMA AJUDA …

CÓDIGO****

// MESTRE SPI

include “mbed.h”

include “SPI.h”

include “stdint.h”

SPI spi(p5, p6, p7); //mosi, miso , sck
DigitalOut cs (p8); //Ele e responsavel por demostra ao mestre que a um escravo existe

int main() {

char *nome;
nome = “Leandro”;

 cs = 1; 
spi.format(8,3);  //8 bits 
spi.frequency(1000000); //estou configurando a clock 1MHZ

while(1) {

          cs = 0; //  ativo  enviando escravo           

           spi.write(*nome);
           wait_ms(100);    //virtual int
          cs = 1; 
} 

CODIGO **********

ESCRAVO*********

include “mbed.h”

Serial pc(USBTX, USBRX);
SPISlave device(p5, p6, p7, p8);

char x;
char *k ;

int main() {

 x = *k;

//device.format(32,1);  //8 bits 
//device.frequency(1000000); //estou configurando a clock 1MHZ

while(1){

    if(device.receive()){      
        x = device.read(); 
        pc.printf("%s",&x);

    }    
}

}

  • l3o00559 perguntada 1 semana atrás
  • última atividade 1 semana atrás
0 votos
72 visualizações

Oi pessoal.
Atualmente trabalho com microcontroladores AVR e PIC e estou querendo migrar para microcontroladores ARM de 32bits. Preciso de um microcontrolador que não seja BGA, possa ser programado em C++ e de preferencia tenha boas ferramentas de depuração e análise de dados. Meus projetos não são tão complexos e quase que qualquer família me atenderia portanto estou mais preocupado com o tempo de desenvolvimento e a facilidade de aprender a usar as novas ferramentas. Gostaria de saber então o que vocês recomendariam para mim. Seria bom se me dissessem algo do tipo: uso o chip tal com a IDE tal e o depurador tal e esse conjunto facilita minha vida por causa disso, disso e disso.

Muito obrigado pela atenção.

  • Plinio88 perguntada 2 semanas atrás
  • última atividade 1 semana atrás
0 votos
0 respostas
57 visualizações

Oi Fabio

Por favor me ajuda, não consigo fazer funcionar direito o ADC do S5 da Renesas.

Quando faço uma leitura de um canal, as tensões dos outros canais interferem na medição.

Tem algum truque?

Obrigado,

Fabio
Sinteck

.

0 votos
0 respostas
42 visualizações

Boa tarde!

Meu nome é Andressa e estou finalizando meu trabalho de conclusão com foco em profissionais independentes.
A pesquisa envolve um questionário que pode ser respondido por profissionais que já trabalharam ou trabalham como freelancer.

Podem respondê-lo?

Segue link: https://goo.gl/forms/fLLDzAh2GMHmLnSU2

Muito obrigada!

Att,
Andressa Xarão

0 votos
0 respostas
94 visualizações

Estou com uma dificuldade.
Estou controlando um motor 220V monofásico com dois reles e um botão Pulso .
Vou fazer a parada e inversao do sentido de rotaçao tipo motor de portao eletronico.

A inversao esta funcionando mas não estou conseguindo fazer os fim de cursos desligarem o rele.

Codigo abaixo:

const int sinalparaorele = 11; //define a porta para o acionamento do rele
const int sinalparaorele2 = 12; //define a porta para o acionamento do rele
int pinobotao = 2; //Porta utilizada para o botão de acionamento
int leitura; //Armazena informações sobre a leitura do botão
int estadorele = 0; //Armazena o estado do relé (ligado/desligado)
int estadorele2 =0; //Armazena o estado do relé 2 (ligado/desligado)
const int FC =4; //Fim de curso 1
const int FC2=5; //Fim de cuso 2
int posicao =0;
int estadoFC = 0;
int estadoFC2 =0;

void setup()
{
//Define o pino como saida (sinal para o rele)
pinMode(sinalparaorele, OUTPUT);
pinMode(sinalparaorele2, OUTPUT);
pinMode(pinobotao, INPUT);
pinMode(FC,INPUT);
pinMode(FC2, INPUT);
digitalWrite(sinalparaorele, HIGH);
digitalWrite(sinalparaorele2, HIGH);
// digitalWrite(sinalparaorele, 0);
}

void loop()
{

leitura = digitalRead(pinobotao);
estadoFC = digitalRead(FC);
estadoFC2 = digitalRead(FC2);

if (leitura != 1)
{
while(digitalRead(pinobotao) != 1)
{
delay(100);
}
// Inverte o estado
if(posicao ==4){
posicao = 0;
}
posicao = posicao + 1;

}
if (estadoFC ==HIGH){
posicao = posicao+1;
}
if (estadoFC2 ==HIGH){
posicao = posicao+1;
}
if(posicao == 0||2||4){
digitalWrite(sinalparaorele, HIGH);
digitalWrite(sinalparaorele2, HIGH);

}
if(posicao == 1){
   digitalRead(estadoFC);
   if(estadoFC == LOW){
    digitalWrite(sinalparaorele, LOW);
   digitalWrite(sinalparaorele2, HIGH);

   }
}
if(posicao == 3){
    digitalRead(estadoFC2);
    if(estadoFC2 ==LOW){
      digitalWrite(sinalparaorele, HIGH);
    digitalWrite(sinalparaorele2, LOW);


    }
    }

}

0 votos
0 respostas
91 visualizações

Boa noite pessoal,

Sou Novo na programação do Arduino, e gostaria de utilizar o Shield RFID MFRC522, fazendo uma somatória de variáveis com as “TAG”
gostaria de saber se eu consigo cadastrar valores na “TAG” do RFID MFRC522???
consigo colocar cadastrar Variáveis nos blocos da TAG??

ou se consigo fazer com que a “TAG” String “XX XX XX XX” vale R$ 1,00
e quando o leitor ler duas vezes saíra um total de R$ 2,00
fazer uma soma de variáveis com as “TAG” do RFID MFRC522

Exemplo da programação:

 

introduza o códigointroduza o código aqui
#include <SPI.h>  //inclui biblioteca SPI

include <MFRC522.h>  //inclui biblioteca MFRC522

include <LiquidCrystal_I2C.h>  //inclui biblioteca LCD_I2C

 
//Pinos Reset e SS módulo MFRC522

define SS_PIN 10

define RST_PIN 9

MFRC522 mfrc522(SS_PIN, RST_PIN);

//————Objeto do LCD + I2C
LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
 

define pino_botao_le A2 //define botao para ser utilizado leitura

define pino_botao_gr A3 //define botao para ser utilizado gravação

 
MFRC522::MIFARE_Key key;
 
void setup()
{
  pinMode(pino_botao_le, INPUT);
  pinMode(pino_botao_gr, INPUT);
  Serial.begin(9600);   //Inicia a serial
  SPI.begin();      //Inicia  SPI bus
  mfrc522.PCD_Init();   //Inicia MFRC522
 
  //Inicializa o LCD 16×2
  lcd.begin(16, 2);
  mensageminicial();
 
  //Prepara chave – padrao de fabrica = FFFFFFFFFFFFh
  for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;
}
 
void loop()
{
  //Verifica se o botao modo leitura foi pressionado
  int modo_le = digitalRead(pino_botao_le);
  if (modo_le != 0)
  {
    lcd.clear();
    Serial.println(“Modo leitura selecionado”);
    lcd.setCursor(2, 0);
    lcd.print(“Modo leitura”);
    lcd.setCursor(3, 1);
    lcd.print(“selecionado”);
    while (digitalRead(pino_botao_le) == 1) {}
    delay(3000);
    modo_leitura();
  }
  //Verifica se o botao modo gravacao foi pressionado
  int modo_gr = digitalRead(pino_botao_gr);
  if (modo_gr != 0)
  {
    lcd.clear();
    Serial.println(“Modo gravacao selecionado”);
    lcd.setCursor(2, 0);
    lcd.print(“Modo gravacao”);
    lcd.setCursor(3, 1);
    lcd.print(“selecionado”);
    while (digitalRead(pino_botao_gr) == 1) {}
    delay(3000);
    modo_gravacao();
  }
}
void mensageminicial()
{
  Serial.println(“\nSelecione o modo leitura ou gravacao…”);
  Serial.println();
  lcd.clear();
  lcd.print(“Selecione o modo”);
  lcd.setCursor(0, 1);
  lcd.print(“leitura/gravacao”);
}
 
void mensagem_inicial_cartao()
{
  Serial.println(“Aproxime o seu cartao do leitor…”);
  lcd.clear();
  lcd.print(” Aproxime o seu”);
  lcd.setCursor(0, 1);
  lcd.print(“cartao do leitor”);
}
 
void modo_leitura()
{
  mensagem_inicial_cartao();
  //Aguarda cartao
  while ( ! mfrc522.PICC_IsNewCardPresent())
  {
    delay(100);
  }
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }
  //Mostra UID na serial
  Serial.print(“UID da tag : “);
  String conteudo = “”;
  byte letra;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? ” 0″ : ” “);
    Serial.print(mfrc522.uid.uidByte[i], HEX);
    conteudo.concat(String(mfrc522.uid.uidByte[i]<0x10 ? ” 0″ : ” “));
    conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
 
  //Obtem os dados do setor 1, bloco 4 = Nome
  byte sector         = 1;
  byte blockAddr      = 4;
  byte trailerBlock   = 7;
  byte status;
  byte buffer[18];
  byte size = sizeof(buffer);
 
  //Autenticacao usando chave A
  status=mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,
                                  trailerBlock, &key, &(mfrc522.uid));
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F(“PCD_Authenticate() failed: “));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
  status = mfrc522.MIFARE_Read(blockAddr, buffer, &size);
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F(“MIFARE_Read() failed: “));
    Serial.println(mfrc522.GetStatusCodeName(status));
  }
  //Mostra os dados do nome no Serial Monitor e LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  for (byte i = 1; i < 16; i++)
  {
    Serial.print(char(buffer[i]));
    lcd.write(char(buffer[i]));
  }
  Serial.println();
 
  //Obtem os dados do setor 0, bloco 1 = Sobrenome
  sector         = 0;
  blockAddr      = 1;
  trailerBlock   = 3;
 
  //Autenticacao usando chave A
  status=mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,
                                  trailerBlock, &key, &(mfrc522.uid));
  if (status != MFRC522::STATUS_OK)
  {
    Serial.print(F(“PCD_Authenticate() failed: “));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
  status = mfrc522.MIFARE_Read(blockAddr, buffer, &size);
  if (status != MFRC522::STATUS_OK)
  {
    Serial.print(F(“MIFARE_Read() failed: “));
    Serial.println(mfrc522.GetStatusCodeName(status));
  }
  //Mostra os dados do sobrenome no Serial Monitor e LCD
  lcd.setCursor(0, 1);
  for (byte i = 0; i < 16; i++)
  {
    Serial.print(char(buffer[i]));
    lcd.write(char(buffer[i]));
  }
  Serial.println();
 
  // Halt PIC
  mfrc522.PICC_HaltA();
  // Stop encryption on PCD
  mfrc522.PCD_StopCrypto1();
  delay(3000);
  mensageminicial();
}
 
void modo_gravacao()
{
  mensagem_inicial_cartao();
  //Aguarda cartao
  while ( ! mfrc522.PICC_IsNewCardPresent()) {
    delay(100);
  }
  if ( ! mfrc522.PICC_ReadCardSerial())    return;
 
  //Mostra UID na serial
  Serial.print(F(“UID do Cartao: “));    //Dump UID
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? ” 0″ : ” “);
    Serial.print(mfrc522.uid.uidByte[i], HEX);
  }
  //Mostra o tipo do cartao
  Serial.print(F(“\nTipo do PICC: “));
  byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
  Serial.println(mfrc522.PICC_GetTypeName(piccType));
 
  byte buffer[34];
  byte block;
  byte status, len;
 
  Serial.setTimeout(20000L) ;
  Serial.println(F(“Digite o sobrenome,em seguida o caractere #”));
  lcd.clear();
  lcd.print(“Digite o sobreno”);
  lcd.setCursor(0, 1);
  lcd.print(“me + #”);
  len = Serial.readBytesUntil(‘#’, (char *) buffer, 30) ;
  for (byte i = len; i < 30; i++) buffer[i] = ‘ ‘;
 
  block = 1;
  //Serial.println(F(“Autenticacao usando chave A…”));
  status=mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,
                                    block, &key, &(mfrc522.uid));
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F(“PCD_Authenticate() failed: “));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
 
  //Grava no bloco 1
  status = mfrc522.MIFARE_Write(block, buffer, 16);
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F(“MIFARE_Write() failed: “));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
 
  block = 2;
  //Serial.println(F(“Autenticacao usando chave A…”));
  status=mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,
                                    block, &key, &(mfrc522.uid));
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F(“PCD_Authenticate() failed: “));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
 
  //Grava no bloco 2
  status = mfrc522.MIFARE_Write(block, &buffer[16], 16);
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F(“MIFARE_Write() failed: “));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
 
  Serial.println(F(“Digite o nome, em seguida o caractere #”));
  lcd.clear();
  lcd.print(“Digite o nome e”);
  lcd.setCursor(0, 1);
  lcd.print(“em seguida #”);
  len = Serial.readBytesUntil(‘#’, (char *) buffer, 20) ;
  for (byte i = len; i < 20; i++) buffer[i] = ‘ ‘;
 
  block = 4;
  //Serial.println(F(“Autenticacao usando chave A…”));
  status=mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,
                                    block, &key, &(mfrc522.uid));
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F(“PCD_Authenticate() failed: “));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
 
  //Grava no bloco 4
  status = mfrc522.MIFARE_Write(block, buffer, 16);
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F(“MIFARE_Write() failed: “));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
 
  block = 5;
  //Serial.println(F(“Authenticating using key A…”));
  status=mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,
                                    block, &key, &(mfrc522.uid));
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F(“PCD_Authenticate() failed: “));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
 
  //Grava no bloco 5
  status = mfrc522.MIFARE_Write(block, &buffer[16], 16);
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F(“MIFARE_Write() failed: “));
    Serial.println(mfrc522.GetStatusCodeName(status));
    //return;
  }
  else
  {
    Serial.println(F(“Dados gravados com sucesso!”));
    lcd.clear();
    lcd.print(“Gravacao OK!”);
  }
 
  mfrc522.PICC_HaltA(); // Halt PIC
  mfrc522.PCD_StopCrypto1();  // Stop encryption on PCD
  delay(5000);
  mensageminicial();
}

introduza o código aqui
0 votos
0 respostas
98 visualizações

Criei um datalogger que grava um arquivo txt no cartão SD utilizando o NodeMcu – ESP8266 , para ler o arquivo é preciso remover o cartão e colocá-lo num notebook. O que preciso é uma forma de criar uma pagina web no proprio ESP8266 e acessá-lo de um notebook e através de um botão na página fazer o download do arquivo txt armazenado no SD sem precisar contato manual nem usar a internet , ja que será conectado via wi-fi da própria rede criada no ESP8266. Qualquer ajuda será bem vinda ! Obrigado.

Mostrando 1 - 10 de 312 resultados