Sisällysluettelo:
- Vaihe 1: Materiaalit
- Vaihe 2: Leikkaa laatikon osat MDF -levystä. (Saat parempia tuloksia käyttämällä laserleikkuria)
- Vaihe 3: Liitä kaikki kappaleet yhteen muodostaen laatikon, jossa on kaksi pientä laatikkoa ja yksi iso
- Vaihe 4: Ruuvaa ruuvit jokaisen laatikon keskelle
- Vaihe 5: Kun pora tekee reikiä takana olevan laatikon läpi, reiän on oltava anturin kokoinen
- Vaihe 6: Hitsaa jokainen CNY 70 -anturi kuparijohtimilla. (toista 4 kertaa enemmän)
- Vaihe 7: Anturia varten käytetään erityistä piiriä
- Vaihe 8: Liitä mezzanine Dragon Board 410c -laitteeseen. (käytetään GPIO: n käyttöön)
- Vaihe 9: Liitä piiri leipälevyltä puolikerrokselle
- Vaihe 10: Kirjoita tai kopioi koodi
- Vaihe 11: Suorita ohjelma
- Vaihe 12: Johtopäätökset
Video: Mainoslaatikko "Smart Cities Hackathon Qualcomm17": 13 vaihetta
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Seuraavassa asiakirjassa näet älykkään laatikon rakentamisen ja ohjelmoinnin prosessin. Tämä laatikko on ohjelmoitu Dragon Board 410c: hen kaupunkien laadun parantamiseksi. Hanke on osa älykkäiden kaupunkien hackathon Qualcomm 17 -kilpailua.
Tämän projektin idea alkoi ongelmasta, jonka hyvin harvat näkevät. Se on menetetty ja huono työkalujen ja materiaalin hallinta, jota tarjoavat yritykset, kuten tehtaat ja jopa sairaalat. Näissä paikoissa työntekijöille tarjotaan joitain materiaaleja ja työkaluja toimintojen suorittamiseen, tämä materiaali ja työkalut on käytettävä uudelleen, koska ne ovat kalliita tai puuttuvat taloudelliset resurssit niiden korvaamiseksi.
Sairaaloissa on ihmisiä, jotka ottavat hallintaan poistettavat materiaalit, mutta kun ihminen puuttuu asiaan, tapahtuu virhe, joka voi aiheuttaa tarpeettomia kuluja. Paras ratkaisu tähän ongelmaan on älykäs laatikko, joka pystyy ylläpitämään luetteloa lainatuista ja palautetuista esineistä ja samalla tietämään, kuka on vastuussa.
Vaihe 1: Materiaalit
Projektissa tarvittava materiaali on seuraava: 1 x Dragon Board 410c
1 x Mezzanine 96 -levyt Dragon Board 410c: lle
1 x leipälauta
1 x MDF (keskitiheyskuitulevy) arkki 61 x 122 cm
5 x CNY 70 anturi
1 X VIHJE 31B
1 x sähkömagneetti
1 x 7408
1 x näppäimistö
1 x näyttö
3 x ruuvit
Resistanssit (lajike)
Kuparilangat
Liima
Porata
Vaihe 2: Leikkaa laatikon osat MDF -levystä. (Saat parempia tuloksia käyttämällä laserleikkuria)
Vaihe 3: Liitä kaikki kappaleet yhteen muodostaen laatikon, jossa on kaksi pientä laatikkoa ja yksi iso
Vaihe 4: Ruuvaa ruuvit jokaisen laatikon keskelle
Vaihe 5: Kun pora tekee reikiä takana olevan laatikon läpi, reiän on oltava anturin kokoinen
Vaihe 6: Hitsaa jokainen CNY 70 -anturi kuparijohtimilla. (toista 4 kertaa enemmän)
Vaihe 7: Anturia varten käytetään erityistä piiriä
Vaihe 8: Liitä mezzanine Dragon Board 410c -laitteeseen. (käytetään GPIO: n käyttöön)
On erittäin tärkeää, että tämä vaihe tehdään lohikäärmetaulun ollessa pois päältä, ellei se voi palaa, lisäksi kaikki PIN -koodit on asetettava oikein.
Vaihe 9: Liitä piiri leipälevyltä puolikerrokselle
Vaihe 10: Kirjoita tai kopioi koodi
#Sisällytä #Sisällytä #Sisällytä // #Sisällytä
#include "libsoc_gpio.h"
#include "libsoc_debug.h" #include "libsoc_board.h"
/ * Tämä alla oleva koodibitti saa tämän esimerkin toimimaan kaikilla 96 -levyillä */
unsigned int LED_1; // electro iman
unsigned int BUTTON_1; // ensimmäinen anturi
unsigned int BUTTON_2; // toinen anturi unsigned int BUTTON_3; // close unsigned int BUTTON_4; // kolmas anturi
rakenne Käyttäjä {
char -käyttäjänimi [20]; char -salasana [20]; } Käyttäjä;
struk -tietokanta {
char Artikkelinimi [20]; char Sijainti [20]; }Tietokanta;
int -anturi1;
int -anturi2; int -anturi3;
int sensor1_last_state;
int sensor2_last_state; int sensor3_last_state;
char -käyttäjänimi [50];
char -salasana [50];
char KylläEi [40];
FILE *pFILE;
char Kyllä [20] = {"Kyllä"};
int käynnissä = 1;
_attribute _ ((rakentaja)) staattinen void _init ()
{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // nyrkit anturi BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // toinen anturi BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // sulje teline BUTTON_4 = libsoc_board_gpio_id (config, "GPIO-B"); // kolmas anturi // BUTTON_5 = libsoc_board_gpio_id (config, "GPIO-E");
LED_1 = libsoc_board_gpio_id (kokoonpano, "GPIO-E"); // electro iman
libsoc_board_free (kokoonpano); } / * 96Boards -erikoiskoodin loppu * /
int main ()
{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; rakenne Käyttäjä Karina; rakenne User Manager; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.salasana, "Korkeampi pystysuora"); strcpy (Manager.username, "Pomo"); strcpy (Manager.password, "ITESM"); strukt Database Tool; rakenne Database Pen; rakennetietokannan tapaus; strcpy (Tool. Article_Name, "Tool"); strukt Database Tool; rakenne Database Pen; rakennetietokannan tapaus; strcpy (Tool. Article_Name, "Tool"); strcpy (Pen. Article_Name, "Pen"); 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))
{epäonnistuu; } libsoc_gpio_set_direction (led_1, LÄHTÖ); libsoc_gpio_set_direction (button_1, INPUT); libsoc_gpio_set_direction (painike_2, TULO); libsoc_gpio_set_direction (painike_3, TULO); libsoc_gpio_set_direction (button_4, INPUT); // libsoc_gpio_set_direction (button_5, INPUT);
if ((libsoc_gpio_get_direction (led_1)! = LÄHTÖ)
|| (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)) {mene epäonnistumaan; } anturi1 = libsoc_gpio_get_level (painike_1); anturi2 = libsoc_gpio_get_level (painike_2); anturi3 = libsoc_gpio_get_level (button_4); sensor1_last_state = anturi1; sensor2_last_state = anturi2; sensor3_last_state = anturi3; if (sensor1 == 1) {strcpy (Tool. Location, "Sijaitsee telineellä"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Ei koskaan sijoitettu tähän telineeseen"); } if (sensor2 == 1) {strcpy (Pen. Location, "Sijaitsee telineellä"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Ei koskaan sijoitettu tähän telineeseen"); } if (sensor3 == 1) {strcpy (Case. Location, "Sijaitsee telineellä"); } else if (sensor3 == 0) {strcpy (Case. Location, "Ei koskaan sijoitettu tähän telineeseen"); } ollessa (käynnissä) {libsoc_gpio_set_level (led_1, HIGH); printf ("Anna käyttäjänimi:"); scanf ("%s", käyttäjänimi); printf ("Anna salasana:"); scanf ("%s", salasana); if (strcmp (käyttäjätunnus, "Karina") == 0 && strcmp (salasana, "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); anturi2 = libsoc_gpio_get_level (painike_2); anturi3 = libsoc_gpio_get_level (button_4); } libsoc_gpio_set_level (led_1, KORKEA); if (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, Karina.username); } else if (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Sijaitsee telineellä"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } else if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Sijaitsee telineellä"); }
jos (anturi3 == 1 && sensori3! = anturi3_viime_tila) {
strcpy (Case. Location, Karina.username); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Sijaitsee telineellä"); }} else if (strcmp (käyttäjänimi, "pomo") == 0 && strcmp (salasana, "ITESM") == 0) {printf ("Haluatko luoda tekstitiedoston tietokannan avulla? [Kyllä/Ei] "); scanf ("%s", KylläEi); if ((strcmp (KylläNo, Kyllä) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Tietokanta.txt", "w"); fprintf (pFILE, "%s", "-------- Rackin tietokanta ----- / n"); fprintf (pFILE, "%s", "Artikkelin nimi:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Artikkelin sijainti:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "Artikkelin nimi:"); fprintf (pFILE, "%s", Pen. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Artikkelin sijainti:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");
fprintf (pFILE, "%s", "Artikkelin nimi:");
fprintf (pFILE, "%s", Case. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Artikkelin sijainti:"); fprintf (pFILE, "%s", Case. Location); fprintf (pFILE, "%s", "\ n");
fclose (pFILE);
}
printf ("Pääsy estetty / n");
}} epäonnistua: if (led_1 || button_1 || button_2 || button_3) {printf ("Apply gpio resource fail! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (painike_1); libsoc_gpio_free (painike_2); libsoc_gpio_free (painike_3); }
Vaihe 11: Suorita ohjelma
Vaihe 12: Johtopäätökset
Hankkeella on lupaava tulevaisuus, koska se voi parantua erittäin tehokkaasti, anturit voidaan vaihtaa RFID -tunnisteisiin ja samaan aikaan RFID: n kanssa on mahdollista käyttää henkilökortteja materiaalin vastuuhenkilön seurantaan.