
Cuprins:
- Pasul 1: Materiale
- Pasul 2: Tăiați piesele pentru sertar în MDF. (Pentru rezultate mai bune, utilizați un tăietor cu laser)
- Pasul 3: lipiți toate piesele împreună pentru a forma un sertar cu două sertare mici și unul mare
- Pasul 4: Înșurubați șuruburile în mijlocul fiecărui sertar
- Pasul 5: Cu burghiul, faceți găuri prin sertarul din partea din spate, gaura trebuie să aibă dimensiunea senzorului
- Pasul 6: Sudați fiecare senzor CNY 70 cu firele de cupru. (repetă de 4 ori mai mult)
- Pasul 7: Se utilizează un circuit special pentru senzor
- Pasul 8: Conectați mezaninul senzorului la Dragon Board 410c. (folosit pentru a accesa GPIO)
- Pasul 9: Conectați circuitul de la panou la mezanin
- Pasul 10: Scrieți sau copiați codul
- Pasul 11: Rulați programul
- Pasul 12: Concluzii
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-23 15:04

În documentul următor, puteți vedea procesul de construcție și programare a unui sertar inteligent. Acest sertar a fost programat într-un Dragon Board 410c, cu scopul de a îmbunătăți calitatea orașelor. Proiectul face parte din concursul „smart cities hackathon Qualcomm 17”.
Ideea acestui proiect a început cu o problemă pe care o văd foarte puțini oameni, care este gestionarea pierdută și proastă a sculelor și a materialelor furnizate de companii precum fabrici și chiar spitale. În aceste locuri, unele materiale și instrumente sunt puse la dispoziția lucrătorilor pentru a desfășura activități, acest material și instrumente trebuie refolosite deoarece sunt scumpe sau lipsa resurselor economice care să le înlocuiască.
În spitale, există oameni care preiau controlul asupra materialelor care sunt îndepărtate, dar atunci când există o intervenție umană există eroarea, care poate duce la cheltuieli inutile. Cea mai bună soluție la această problemă este un sertar inteligent capabil să mențină un inventar al obiectelor care sunt împrumutate și returnate și, în același timp, să știe cine este responsabilul.
Pasul 1: Materiale
Materialul necesar pentru proiect este următorul: 1 x Dragon Board 410c
1 x senzor Mezzanine 96 plăci pentru Dragon Board 410c
1 x panou de pâine
1 x foaie MDF (fibră de densitate medie) 61 x 122 cms
5 x senzor CNY 70
1 X TIP31B
1 x electromagnet
1 x 7408
1 x tastatură
1 x ecran
3 x șuruburi
Rezistențe (varietate)
Sârme de cupru
Lipici
Burghiu
Pasul 2: Tăiați piesele pentru sertar în MDF. (Pentru rezultate mai bune, utilizați un tăietor cu laser)

Pasul 3: lipiți toate piesele împreună pentru a forma un sertar cu două sertare mici și unul mare
Pasul 4: Înșurubați șuruburile în mijlocul fiecărui sertar

Pasul 5: Cu burghiul, faceți găuri prin sertarul din partea din spate, gaura trebuie să aibă dimensiunea senzorului

Pasul 6: Sudați fiecare senzor CNY 70 cu firele de cupru. (repetă de 4 ori mai mult)

Pasul 7: Se utilizează un circuit special pentru senzor

Pasul 8: Conectați mezaninul senzorului la Dragon Board 410c. (folosit pentru a accesa GPIO)

Este foarte important ca acest pas să fie făcut cu placa dragonului oprită, dacă nu, poate arde, în afară de toate, PIN-ul trebuie să fie plasat corect.
Pasul 9: Conectați circuitul de la panou la mezanin




Pasul 10: Scrieți sau copiați codul
#include #include #include // # include
#include "libsoc_gpio.h"
#include "libsoc_debug.h" #include "libsoc_board.h"
/ * Acest bit de cod de mai jos face ca acest exemplu să funcționeze pe toate cele 96 de plăci * /
unsigned int LED_1; // electro iman
unsigned int BUTTON_1; // primul senzor
unsigned int BUTTON_2; // al doilea senzor unsigned int BUTTON_3; // închide unsigned int BUTTON_4; // al treilea senzor
struct Utilizator {
numele de utilizator char [20]; parola char [20]; }Utilizator;
struct Database {
char Article_Name [20]; char Location [20]; }Bază de date;
int senzor1;
int senzor2; int sensor3;
int sensor1_last_state;
int sensor2_last_state; int sensor3_last_state;
numele de utilizator char [50];
parola char [50];
char Da Nu [40];
FIȘIER * pFILE;
char Da [20] = {"Da"};
int rulare = 1;
_attribute _ ((constructor)) static void _init ()
{board_config * config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // senzor de pumn BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // al doilea senzor BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // închideți raftul BUTTON_4 = libsoc_board_gpio_id (config, "GPIO-B"); // al treilea senzor // BUTTON_5 = libsoc_board_gpio_id (config, "GPIO-E");
LED_1 = libsoc_board_gpio_id (config, "GPIO-E"); // electro iman
libsoc_board_free (config); } / * Sfârșitul codului special 96Boards * /
int main ()
{gpio * led_1, * button_1, * button_2, * button_3, * button_4; // int touch; struct Utilizator Karina; struct User Manager; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.password, "Taller Vertical"); strcpy (Manager.username, „Șeful”); strcpy (Manager.password, "ITESM"); Instrumentul de baze de date struct; struct Database Pen; struct Case de date; strcpy (Tool. Article_Name, „Instrument”); Instrumentul de baze de date struct; struct Database Pen; struct Case de date; strcpy (Tool. Article_Name, „Instrument”); strcpy (Pen. Article_Name, „Pen”); strcpy (Case. Article_Name, „Caz”); libsoc_set_debug (0); led_1 = libsoc_gpio_request (LED_1, LS_SHARED); button_1 = libsoc_gpio_request (BUTTON_1, LS_SHARED); buton_2 = cerere libsoc_gpio_ (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))
{go fail; } libsoc_gpio_set_direction (led_1, OUTPUT); libsoc_gpio_set_direction (buton_1, INPUT); libsoc_gpio_set_direction (buton_2, INPUT); libsoc_gpio_set_direction (buton_3, INPUT); libsoc_gpio_set_direction (buton_4, INPUT); // libsoc_gpio_set_direction (buton_5, INPUT);
if ((libsoc_gpio_get_direction (led_1)! = OUTPUT)
|| (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)) {merge eșuat; } sensor1 = libsoc_gpio_get_level (button_1); senzor2 = libsoc_gpio_get_level (buton_2); sensor3 = libsoc_gpio_get_level (button_4); sensor1_last_state = senzor1; sensor2_last_state = senzor2; sensor3_last_state = senzor3; if (senzor1 == 1) {strcpy (Tool. Location, „Situat pe rack”); } else if (senzor1 == 0) {strcpy (Tool. Location, „Niciodată plasat în acest rack”); } if (senzor2 == 1) {strcpy (Pen. Location, „Situat pe rack”); } else if (senzor2 == 0) {strcpy (Pen. Location, „Niciodată plasat în acest rack”); } if (senzor3 == 1) {strcpy (Case. Location, „Situat pe rack”); } else if (senzor3 == 0) {strcpy (Case. Location, „Niciodată plasat în acest rack”); } în timp ce (rulează) {libsoc_gpio_set_level (led_1, HIGH); printf ("Vă rugăm să introduceți numele de utilizator:"); scanf („% s”, nume de utilizator); printf ("Vă rugăm să introduceți parola:"); scanf („% s”, parolă); if (strcmp (nume de utilizator, "Karina") == 0 && strcmp (parola, "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); senzor2 = libsoc_gpio_get_level (buton_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, "Situat pe rack"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } else if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Situat pe rack"); }
if (sensor3 == 1 && sensor3! = sensor3_last_state) {
strcpy (Case. Location, Karina.username); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Situat pe rack"); }} else if (strcmp (nume de utilizator, "Boss") == 0 && strcmp (parola, "ITESM") == 0) {printf ("Doriți să generați un fișier text cu baza de date? [Da / Nu] "); scanf („% s”, da nu); if ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "% s", "-------- Rack's Database ----- / n"); fprintf (pFILE, "% s", "Numele articolului:"); fprintf (pFILE, "% s", Tool. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Locația articolului:"); fprintf (pFILE, "% s", Tool. Location); fprintf (pFILE, "% s", "\ n"); fprintf (pFILE, "% s", "Numele articolului:"); fprintf (pFILE, "% s", Pen. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Locația articolului:"); fprintf (pFILE, "% s", Pen. Location); fprintf (pFILE, "% s", "\ n");
fprintf (pFILE, "% s", "Numele articolului:");
fprintf (pFILE, "% s", Case. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Locația articolului:"); fprintf (pFILE, "% s", Case. Location); fprintf (pFILE, "% s", "\ n");
fclose (pFILE);
}
printf ("Acces refuzat / n");
}} fail: if (led_1 || button_1 || button_2 || button_3) {printf ("aplicați resursa gpio fail! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (buton_1); libsoc_gpio_free (buton_2); libsoc_gpio_free (buton_3); }
Pasul 11: Rulați programul
Pasul 12: Concluzii
Proiectul are un viitor promițător, deoarece se poate îmbunătăți într-un mod foarte eficient, senzorii pot fi schimbați pentru etichetele RFID și în același timp cu RFID este posibilă utilizarea cardurilor de identificare pentru a monitoriza cine este responsabil de material.
Recomandat:
SISTEM DE FACTURARE ȘI CONTROL DE INVENTAR: 3 pași

SISTEM DE FACTURARE FACTURĂ ȘI CONTROL INVENTAR: Cu ajutorul acestor instrumente, vă voi da o idee pentru a crea un sistem de control factură și inventar. Folosind accesul MS. Este foarte ușor și nu este nevoie de mai multe cunoștințe de calculator sau programare. Dacă aveți cunoștințe de bază despre Ms Acces, tabele. formulare și rapoarte t
Sertar secret: 4 pași

Sertar secret: am fost întotdeauna fascinat de camerele secrete sau de sertarele ascunse. Acesta este motivul pentru care am decis să-mi construiesc propriul sertar ascuns într-o zi după ce am vizionat un film Batman. Acest proiect constă dintr-un bust cu un buton secret pe care îl puteți așeza oriunde în
Adăugați o blocare IOT la ORICE sertar !: 4 pași

Adăugați o blocare IOT la ORICE sertar !: Bună ziua! După destul de mult timp am decis să vă împărtășesc ultimul meu proiect cu voi toți. Aceasta a fost doar o idee pe care am luat-o după ce am cumpărat un dispozitiv de blocare solenoid ieftin online și s-a dovedit a fi un proiect minunat
Boxe Bluetooth Vintage reciclate Hipster din sertar din lemn: 5 pași

Boxe Bluetooth Vintage reciclate Hipster din sertar din lemn: De ce să nu faci o bicicletă ca un ochelar subțire de jean purtând hipster sudând un latte semi-degresat de caramel pe o bicicletă fixie! Nu-ți place cuvântul upcycle! Oh da. Să punem toate acele prostii la o parte și să facem ceva distractiv, ușor și util. Tot ce aveți nevoie de
Mini sertar compartiment secret: 5 pași

Mini sertar cu compartimente secrete: acest instructiv vă va arăta cum am făcut un dulap cu sertare cu un compartiment secret. Voi folosi în principal detalii mici pentru a descrie acțiunile pe care le-am făcut