Mobile RFID Reader - um projeto de kit de fabricante usando Particle e Ubidots
Nos últimos anos, Ubidots se uniu à Particle para alcançar um objetivo final; permitindo uma criação rápida, fácil e eficiente de IoT .
Avançando até os dias atuais, temos orgulho de afirmar que ambos os produtos estão sendo usados para acelerar IoT em nível global . Desde empreendedores e start-ups até grandes e pequenas empresas, estamos ajudando as empresas a criar um futuro baseado em dados.
Recentemente, Friedl aceitou o desafio de criar um IoT do zero. edge de Friedl sobre o assunto era limitado. No entanto, graças à pesquisa que ele conduziu - e a muitos vídeos do YouTube, ele ficou confiante ao usar uma variedade de ferramentas para materializar seu objetivo; Criando um leitor de RFID móvel sem ser um IoT .
Depois de alcançar esse resultado surpreendente, entramos em contato com Friedl para parabenizá-lo pelo sucesso e aprender com sua conquista. Também queríamos partilhar esta história com a Comunidade Ubidots porque acreditamos que é uma história para inspirar e aprender.
À luz dessas grandes conquistas, minha entrevista explorará o processo de desenvolvimento de Friedl, as técnicas que ele usou para atingir seu objetivo e outras lições valiosas.
A postagem original pode ser encontrada no site da comunidade Particle . Friedl também compartilhou isso com Ubidots .
Escrito por : friedl_1977
Como primeiro projeto, decidi construir um leitor RFID móvel postando dados ao vivo para MySQL, Google Sheets ou Ubidots via Webhooks.
- Crédito da foto: Migal Vanas
Observação:
Este não é um tutorial como tal, mas apenas uma vitrine do produto. Como tive muita ajuda do Fórum Particle , decidi publicar meus arquivos e codificar os Eagle para disponibilizá -lo a qualquer pessoa que possa querer usá -lo.
Suponho que você tenhaedge básico do ambiente Particle , ganchos da web e configurou sua conta e dispositivos no console Particle . Caso contrário, faça -o antes de tentar esta construção.
O resumo:
Construir um scanner RFID verdadeiramente sem fio (móvel) com o objetivo de digitalizar cartões RFID, capturar os UIDs desses cartões e publicá-los em qualquer um deles;
Lista de materiais:
- Módulo leitor de cartão MFRC522 3
- Bateria 3.7V LiPo 1
- Módulo de bateria 1
- LM394N1
- Conjunto de 0603 LEDs para indicador de bateria
- 2 LEDs RGB para status do sistema e status de leitura do cartão
- Fóton Particle
- Interruptor deslizante - Alimentação principal
- Inclinar 1 interruptor
- PCB de design personalizado (de PCBWAY ou similar )
- Gabinete de design personalizado
- Vários resistores 0603
- Ferrita 2 !!!
Primeiras coisas primeiro:
Se você é algo como eu, o gabinete de protótipo genérico simples não será suficiente, então eu me esforcei um pouco, conheci o caminho do rinoceronte e projetei um gabinete simples, mas elegante (ou pelo menos pensei sim) que mostraria o fóton Particle e outros componentes.
Além disso, decidi não optar por uma placa proto genérica porque ODEIO fios. Incluí uma imagem da minha tentativa inicial de fazer uma placa “bonita” usando placa proto e fios de jumper, mas depois de algumas horas percebi que simplesmente não funcionaria. Mais uma curva de aprendizado, pesquisei no Google e passei algumas horas no YouTube e consegui me orientar no Autodesk Eagle. Vale cada minuto gasto.
***A última imagem indicando a PCB totalmente montada com LED de status indicando "OK ", bem como o LM3914N em ação indicando ±90% de bateria carregada. (7 de 8 LEDs)
Enviei os arquivos Gerber para PCBWAY e em menos de uma semana e In tinha meu novo PCB personalizado pronto para montagem.
O importante:
Agora a codificação, essa é a parte com a qual eu mais luto, mas, graças a algum cavalheiro útil nos fóruns de Particle e hackster, criei o código abaixo. Agora, provavelmente não é o código mais limpo já escrito, mas funciona, então fique à vontade para usar e melhorar, se quiser.
// Projeto: Mobile RFID Atendimento Registro // Um projeto da Firefli (Pty) Ltd // Data: Julho de 2019 // Compilado por: Friedl Basson // Detalhes: Declare os UIDs de Cartões RFID e Publicações: Special Agradece a UbiDots, Particle DB ou Google Sheets // Credits: Special Agradece // firmware: v2.1.1 // modo do sistema // - comente se você estiver configurando WiFi via aplicativo Particle e não precisará se conectar a outra rede sem fio após o fato // System_mode (semi_automatic); // Esta instrução #include foi adicionada automaticamente pelo IDE Particle . #include "rfid.h" #include <Ubidots.h> /* define os pinos usados para os pinos SS (SDA) e RST (redefinir) para hardware e software spi* /#define ss_pin a2 #define rst_pin d2 /misfine os pins usados para os dados (os dados */#Define mosi_pin d3 #define miso_pin d4 #define sck_pin d5 // inicializando o início do RGB - o LED rgb e a campainha é usado como indicador de status do sistema int redpin = d6; int greenpin = d1; int bluepin = d0; int buzzpin = d7; // Inicializando RGB END/ * Crie uma instância da biblioteca RFID */#if definida (_use_soft_spi_) rfid rc522 (ss_pin, rst_pin, mosi_pin, miso_pin, sck_pin); // software spi #else rfid rc522 (ss_pin, rst_pin); // hardware spi #endif // const char* webhook_name = "rfid_uid"; const char* webhook_name = "Ubidots"; Ubidots ubidots("webhook", ubi_PARTICLE); void setup () {serial.begin (9600); // wifi.listen (); pinmode (redpin, saída); pinmode (Greenpin, saída); pinmode (bluepin, saída); pinmode (buzzpin, saída); // Definir credenciais para nova conexão WiFi /* Esta seção é necessária apenas se você deseja se conectar a uma nova rede WiFi após a configuração inicial, isso funcionará apenas se as credenciais WIFI atuais forem limpas. O código será executado apenas uma vez na inicialização e definirá novas credenciais especificadas. Depois que novas credenciais estiverem definidas, esse código não será executado novamente. */ Wifi.on (); if (! wifi.hAcredentials ()) {wifi.setCredentials ("ssid", "senha", wpa2, wlan_cipher_aes); } Wifi.connect (); waituntil (wifi.ready); Particle.Connect (); #if! definido (_use_soft_spi_) / * Ative a interface hw spi * / spi.setDatamode (spi_mode0); Spi.setBitorder (msbfirst); Spi.setClockDivider (spi_clock_div8); Spi.Begin (); #endif / * inicialize o leitor RFID * / rc522.init (); atraso (5000); DigitalWrite (Bluepin, alto); DigitalWrite (Greenpin, alto); DigitalWrite (Redpin, Low); } void loop () { / * contador de loop temporário * / uint8_t i; /* Foi detectado um cartão? */ if (rc522.iscard ()) {/ *se assim for, obtenha seu número de série */ rc522.readCardSserial (); Char Str [16]; snprintf (str, sizeof (str), " %02x %02x %02x %02x", rc522.sernum [0], rc522.sernum [1], rc522.Sernum [2], rc522.Sernum [3]); // webhooks /// * rfid_wp = seu nome webhook str = seus dados que você deseja publicar privado ou público */ // Particle.publish ("rfid_wp", str, privado); // publica dados para WordPress db // Particle.publish ("xls", str, privado); // publica dados no Google Sheets Serial.print (STR); / * Adiciona pares de valor-chave de contexto */ ubidots.addContext ("uid", str); char * context = (char *) malloc (sizeof (char) * 60); / * Constrói o contexto com a matriz acima para enviar para Ubidots */ ubidots.getContext (contexto); ubidots.Add ("uid", 1, contexto); // altere para o seu nome variável bool buffersent = false; buffersent = ubidots.send (webhook_name, público); // usará webhooks particle para enviar dados //} // - tente Ubidots - // // DigitalWrite (Buzzpin, High); atraso (500); DigitalWrite (Buzzpin, Low); DigitalWrite (Bluepin, Low); atraso (750); DigitalWrite (Bluepin, alto); } else if (rc522.iscard ()) {rc522.readCardSserial (); Char Str [16]; snprintf (str, sizeof (str), " %02x %02x %02x %02x", rc522.sernum [0], rc522.sernum [1], rc522.Sernum [2], rc522.Sernum [3]); DigitalWrite (Bluepin, Low); DigitalWrite (Greenpin, Low); DigitalWrite (Redpin, alto); // DigitalWrite (Buzzpin, alto); atraso (1000); DigitalWrite (Bluepin, alto); DigitalWrite (Greenpin, alto); DigitalWrite (Redpin, Low); DigitalWrite (Buzzpin, Low); } atraso (500); }
Front-ends:
Graças à função webhook no console Particle , pude postar perfeitamente o código para praticamente qualquer lugar. Agora, se você conhece o PHP e o MySQL muito bem, poderá escrever seu próprio script do lado do servidor, mas para aqueles que são novos nisso como eu, eu recomendaria os dois serviços a seguir;
Eles diferem muito, então você deve dar uma olhada em ambos para determinar qual é mais adequado para seu uso. Resumindo, se você deseja que os dados sejam publicados ao vivo em um local de sua escolha, o Zapier (ou algo semelhante) é a melhor opção. Se você não se importa em armazenar dados no servidor de outra pessoa, Ubidots é uma opção muito mais econômica (custo por ponto de dados) e tem o benefício adicional de alguns widgets bacanas para apresentar seus dados de forma gráfica. Anexei uma captura de tela de um Dashboard que construí no Ubidots .
- Crédito da foto: Migal Vanas
Em retrospectiva:
Inicialmente pensei que construir um indicador de bateria que funcionasse fora do microcontrolador fosse a melhor ideia, pois funcionaria de forma independente e liberaria os pinos digitais necessários, mas a desvantagem disso é que sem uma entrada analógica sendo enviada ao MC , você não será capaz de exibir a duração da bateria em um dashboard. O LM3914N também requer alguns cálculos para definir volutas de referência e determinar quais resistores usar dependendo da diferença de tensão entre o status “totalmente carregado” e “esgotado”. Tenha em mente que por todas as razões práticas você deve trabalhar com 3,1V na bateria já descarregada, pois a maioria dos componentes não funcionará abaixo de 3V ou começará a se comportar esporadicamente. Seis de um, suponho.
Eu também não usaria o interruptor de inclinação novamente para acionar o indicador de bateria, pois ele é muito sensível e causa 'oscilação'. Um simples interruptor tátil parece uma ideia muito melhor... só uma ideia.
Obrigatório:
A maior curva de aprendizado aqui para mim foi o efeito que qualquer metal ou circuito terá e um leitor RFID. Projetei, construí e testei toda a unidade primeiro conectada a uma fonte de alimentação constante. Devido ao design compacto da unidade, a bateria foi instalada muito próxima do módulo leitor RFID. A consequência…. Sem varreduras 😲 Como medida temporária, enrolei a bateria em fita isolante elétrica que fez um trabalho “ok”. Encomendei Ferrite da Amazon como Ave Maria e como num passe de mágica a interferência era coisa do passado.
Obrigado a todos que ajudaram no projeto de alguma forma, @Scruffr por entender que todos tivemos que começar em algum lugar e mostrar extrema paciência 🙂 Também um enorme agradecimento a @joe no Particle pelos kits incríveis de criadores. Ansioso por mais projetos !!!
Arquivos:
Esquema Eagle - DOWNLOAD
Arquivo Eagle Board - DOWNLOAD
Incrível, certo? Agora, como prometido... Aqui você encontrará algumas das perguntas que Friedl gentilmente respondeu.
P/O que fez você começar no ecossistema IoT ?
R/ Sempre gostei de tecnologia e meu desejo de criar coisas novas se encaixou perfeitamente no setor de IoT . Desenvolver coisas novas que possam melhorar a vida é o que mais gosto.
P/Por que você experimentou muitas plataformas?
A/ Como sou completamente novo em IoT e não gosto muito de codificação, estava procurando uma plataforma fácil de usar que também fosse econômica, em vez de escrever a minha própria. Descobri que a maioria das plataformas foi projetada tendo em mente os usuários experientes, o que torna muito difícil para alguém novo na IoT. Mesmo alguns usuários experientes podem achar que gastam muito tempo configurando sistemas desnecessariamente complicados. Como meu foco é principalmente o desenvolvimento de produtos, design de produtos e PCB, era fundamental que eu encontrasse uma solução que pudesse entender rapidamente e começar a usar.
P/ O que você aprendeu com cada um deles?
R/ A maioria das plataformas parece difícil de aprender e muito cara se você não tomar cuidado. Custos iniciais baixos ou versões “gratuitas” podem facilmente induzi-lo a usar o produto, mas assim que você começar a transmitir dados ao vivo, ele se revelará bastante caro.
P/Por que você decidiu usar Ubidots?
A/ Ubidots provou ser o melhor de ambos, fácil de aprender, bastante barato e com política de uso de dados justa. Além disso, o apoio foi ótimo! A GUI é fácil de entender e a opção de etiqueta personalizada é interessante, embora um pouco cara.
Eu realmente espero que esta história inspire você a começar a construir e mexer em seus próprios IoT e, melhor ainda, esperamos que você use Ubidots para aproveitar seus melhores esforços para habilitar seu processo.