Índice:
- Etapa 1: Materiais
- Passo 2: Corte as peças da gaveta no MDF. (Para melhores resultados, use um cortador a laser)
- Passo 3: Cole todas as peças juntas para formar uma gaveta com duas gavetas pequenas e uma grande
- Etapa 4: aparafuse os parafusos no meio de cada gaveta
- Etapa 5: com a broca faça furos na gaveta na parte de trás, o furo deve ter o tamanho do sensor
- Etapa 6: soldar cada sensor CNY 70 com os fios de cobre. (repetir 4 vezes mais)
- Etapa 7: um circuito especial é usado para o sensor
- Etapa 8: Conecte o Mezanino do Sensor ao Dragon Board 410c. (usado para acessar o GPIO)
- Etapa 9: conectar o circuito da placa de ensaio ao mezanino
- Etapa 10: Escreva ou copie o código
- Etapa 11: execute o programa
- Etapa 12: Conclusões
Vídeo: Gaveta de inventário "Smart Cities Hackathon Qualcomm17": 13 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
No próximo documento, você confere o processo de construção e programação de uma gaveta inteligente. Esta gaveta foi programada em Dragon Board 410c, com o objetivo de melhorar a qualidade das cidades. O projeto faz parte do concurso “smart cities hackathon Qualcomm 17”.
A ideia deste projeto começou com um problema que poucas pessoas veem, que é a perda e má gestão de ferramentas e materiais que são fornecidos por empresas como fábricas e até hospitais. Nesses locais, alguns materiais e ferramentas são fornecidos aos trabalhadores para a realização das atividades, esses materiais e ferramentas devem ser reaproveitados por serem caros ou pela falta de recursos econômicos para substituí-los.
Nos hospitais, há pessoas que assumem o controle dos materiais que são retirados, mas quando há intervenção humana há o erro, que pode levar a gastos desnecessários. A melhor solução para este problema é uma gaveta inteligente, capaz de manter um inventário dos objetos emprestados e devolvidos e ao mesmo tempo saber quem é o responsável.
Etapa 1: Materiais
O material necessário para o projeto é o seguinte: 1 x Dragon Board 410c
1 x sensor Mezanino 96 placas para Dragon Board 410c
1 x tábua de pão
1 x folha de MDF (painel de fibra de densidade média) 61 x 122 cms
5 x sensor CNY 70
1 X TIP31B
1 x eletroímã
1 x 7408
1 x teclado
1 x tela
3 x parafusos
Resistências (variedade)
Fios de cobre
Cola
Furar
Passo 2: Corte as peças da gaveta no MDF. (Para melhores resultados, use um cortador a laser)
Passo 3: Cole todas as peças juntas para formar uma gaveta com duas gavetas pequenas e uma grande
Etapa 4: aparafuse os parafusos no meio de cada gaveta
Etapa 5: com a broca faça furos na gaveta na parte de trás, o furo deve ter o tamanho do sensor
Etapa 6: soldar cada sensor CNY 70 com os fios de cobre. (repetir 4 vezes mais)
Etapa 7: um circuito especial é usado para o sensor
Etapa 8: Conecte o Mezanino do Sensor ao Dragon Board 410c. (usado para acessar o GPIO)
É muito importante que esta etapa seja feita com a dragon board desligada, caso contrário ela pode queimar, além de todo o PIN precisar ser colocado corretamente.
Etapa 9: conectar o circuito da placa de ensaio ao mezanino
Etapa 10: Escreva ou copie o código
#include #include #include // # include
#include "libsoc_gpio.h"
#include "libsoc_debug.h" #include "libsoc_board.h"
/ * Este trecho de código abaixo faz com que este exemplo funcione em todos os 96Boards * /
unsigned int LED_1; // electro iman
unsigned int BUTTON_1; // primeiro sensor
unsigned int BUTTON_2; // segundo sensor unsigned int BUTTON_3; // feche unsigned int BUTTON_4; // terceiro sensor
struct User {
nome de usuário char [20]; senha char [20]; }Do utilizador;
struct Database {
char Article_Name [20]; Localização char [20]; }Base de dados;
int sensor1;
int sensor2; int sensor3;
int sensor1_last_state;
int sensor2_last_state; int sensor3_last_state;
nome de usuário char [50];
senha do char [50];
char Sim Não [40];
ARQUIVO * pFILE;
char Sim [20] = {"Sim"};
execução interna = 1;
_attribute _ ((construtor)) static void _init ()
{board_config * config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // sensor de punhos BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // segundo sensor BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // fecha o rack BUTTON_4 = libsoc_board_gpio_id (config, "GPIO-B"); // terceiro sensor // BUTTON_5 = libsoc_board_gpio_id (config, "GPIO-E");
LED_1 = libsoc_board_gpio_id (config, "GPIO-E"); // electro iman
libsoc_board_free (config); } / * Fim do código especial 96Boards * /
int main ()
{gpio * led_1, * button_1, * button_2, * button_3, * button_4; // int touch; struct User Karina; struct User Manager; strcpy (Karina.nomedeusuario, "Karina Valverde"); strcpy (Karina.password, "Taller Vertical"); strcpy (Manager.username, "The Boss"); strcpy (Manager.password, "ITESM"); Ferramenta de banco de dados struct; struct Database Pen; struct caso de banco de dados; strcpy (Tool. Article_Name, "Tool"); Ferramenta de banco de dados struct; struct Database Pen; struct caso de banco de dados; strcpy (Tool. Article_Name, "Tool"); strcpy (Caneta. Nome do artigo, "Caneta"); strcpy (Case. Article_Name, "Case"); libsoc_set_debug (0); led_1 = libsoc_gpio_request (LED_1, LS_SHARED); button_1 = libsoc_gpio_request (BUTTON_1, LS_SHARED); button_2 = libsoc_gpio_request (BUTTON_2, LS_SHARED); button_3 = libsoc_gpio_request (BUTTON_3, LS_SHARED); button_4 = libsoc_gpio_request (BUTTON_4, LS_SHARED); // button_5 = libsoc_gpio_request (BUTTON_5, LS_SHARED);
if ((led_1 == NULL) || (button_1 == NULL) || (button_2 == NULL) || (button_3 == NULL) || (button_4 == NULL))
{goto fail; } libsoc_gpio_set_direction (led_1, OUTPUT); libsoc_gpio_set_direction (button_1, INPUT); libsoc_gpio_set_direction (button_2, INPUT); libsoc_gpio_set_direction (button_3, INPUT); libsoc_gpio_set_direction (button_4, INPUT); // libsoc_gpio_set_direction (button_5, INPUT);
if ((libsoc_gpio_get_direction (led_1)! = SAÍDA)
|| (libsoc_gpio_get_direction (button_1)! = INPUT) || (libsoc_gpio_get_direction (button_2)! = INPUT) || (libsoc_gpio_get_direction (button_3)! = INPUT) || (libsoc_gpio_get_direction (button_4)! = INPUT)) {goto fail; } sensor1 = libsoc_gpio_get_level (button_1); sensor2 = libsoc_gpio_get_level (button_2); sensor3 = libsoc_gpio_get_level (button_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 == 1) {strcpy (Tool. Location, "Localizado no rack"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Nunca colocado neste Rack"); } if (sensor2 == 1) {strcpy (Pen. Location, "Localizado no rack"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Nunca colocado neste Rack"); } if (sensor3 == 1) {strcpy (Case. Location, "Localizado no rack"); } else if (sensor3 == 0) {strcpy (Case. Location, "Nunca colocado neste Rack"); } enquanto (executando) {libsoc_gpio_set_level (led_1, HIGH); printf ("Por favor, insira o nome de usuário:"); scanf ("% s", nome de usuário); printf ("Digite a senha:"); scanf ("% s", senha); if (strcmp (nome de usuário, "Karina") == 0 && strcmp (senha, "Taller") == 0) {libsoc_gpio_set_level (led_1, LOW); libsoc_gpio_set_level (led_1, LOW); while (libsoc_gpio_get_level (button_3)! = 1) {sensor1 = libsoc_gpio_get_level (button_1); sensor2 = libsoc_gpio_get_level (button_2); sensor3 = libsoc_gpio_get_level (button_4); } libsoc_gpio_set_level (led_1, HIGH); if (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, Karina.username); } else if (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Localizado no rack"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } else if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Localizado no rack"); }
if (sensor3 == 1 && sensor3! = sensor3_last_state) {
strcpy (Case. Location, Karina.username); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Localizado no rack"); }} else if (strcmp (username, "Boss") == 0 && strcmp (password, "ITESM") == 0) {printf ("Deseja gerar um arquivo de texto com o banco de dados? [Sim / Não] "); scanf ("% s", Sim Não); if ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Banco de dados.txt", "w"); fprintf (pFILE, "% s", "-------- Banco de dados do Rack ----- / n"); fprintf (pFILE, "% s", "Nome do artigo:"); fprintf (pFILE, "% s", Tool. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Localização do artigo:"); fprintf (pFILE, "% s", Tool. Location); fprintf (pFILE, "% s", "\ n"); fprintf (pFILE, "% s", "Nome do artigo:"); fprintf (pFILE, "% s", Pen. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Localização do artigo:"); fprintf (pFILE, "% s", Pen. Location); fprintf (pFILE, "% s", "\ n");
fprintf (pFILE, "% s", "Nome do artigo:");
fprintf (pFILE, "% s", Case. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Localização do artigo:"); fprintf (pFILE, "% s", Case. Location); fprintf (pFILE, "% s", "\ n");
fclose (pFILE);
}
printf ("Acesso negado / n");
}} falha: if (led_1 || button_1 || button_2 || button_3) {printf ("falha de aplicação GPIO! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (button_1); libsoc_gpio_free (button_2); libsoc_gpio_free (button_3); }
Etapa 11: execute o programa
Etapa 12: Conclusões
O projeto tem um futuro promissor, pois pode melhorar de forma muito eficaz, os sensores podem ser trocados por tags RFID´S e ao mesmo tempo com o RFID é possível usar cartões de identificação para monitorar quem é o responsável pelo material.
Recomendado:
Gaveta secreta: 4 etapas
Gaveta Secreta: Sempre fui fascinado por cômodos secretos ou gavetas escondidas. É por isso que decidi construir minha própria gaveta escondida um dia depois de assistir a um filme do Batman. Este projeto consiste em um busto com um botão secreto que você pode colocar em qualquer lugar
Adicione um bloqueio IOT a QUALQUER gaveta !: 4 etapas
Adicione um bloqueio IOT a QUALQUER gaveta !: Olá! Depois de um bom tempo, decidi compartilhar meu último projeto com todos vocês. Esta foi apenas uma ideia que tive depois de comprar uma fechadura de solenóide barata online, e acabou por ser um grande projeto. Então, basicamente a ideia básica era fazer um se
Alto-falantes vintage Hipster upcycled Bluetooth da gaveta de madeira: 5 etapas
Alto-falantes vintage Hipster Upcycled Bluetooth da gaveta de madeira: Por que não fazer um upcycle como um óculos jeans skinny vestindo hipster soldando um latte caramelo semi-desnatado em uma bicicleta fixie! Você não ama a palavra upcycle! Oh sim. Vamos deixar todo esse absurdo de lado e fazer algo divertido, fácil e útil. Tudo o que você precisa de
Mini gaveta do compartimento secreto: 5 etapas
Mini gaveta de compartimento secreto: este instrutível mostrará como fiz um armário de gaveta com um compartimento secreto. Usarei principalmente pequenos detalhes para descrever as ações que fiz
Divisores de organizador de gaveta de cartões de carteira: 5 etapas
Divisores de organizador de gaveta de cartões de carteira: Este instrutível mostrará como criar novos divisores para organizadores de armazenamento de partes de gaveta com cartões de fidelidade da loja ou outro lixo em sua carteira. Eu estava tentando entender meu caos que consistia em vários tipos de parafusos e parafusos, e eu não