Sisällysluettelo:

Mainoslaatikko "Smart Cities Hackathon Qualcomm17": 13 vaihetta
Mainoslaatikko "Smart Cities Hackathon Qualcomm17": 13 vaihetta

Video: Mainoslaatikko "Smart Cities Hackathon Qualcomm17": 13 vaihetta

Video: Mainoslaatikko
Video: Smart Move with Itella Logistics 2024, Heinäkuu
Anonim
Mainoslaatikko
Mainoslaatikko

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)

Leikkaa laatikon osat MDF -levystä. (Saat parempia tuloksia käyttämällä laserleikkuria)
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

Ruuvaa ruuvit jokaisen laatikon keskelle
Ruuvaa ruuvit jokaisen laatikon keskelle

Vaihe 5: Kun pora tekee reikiä takana olevan laatikon läpi, reiän on oltava anturin kokoinen

Kun pora tekee reikiä takana olevan laatikon läpi, reiän on oltava anturin kokoinen
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)

Hitsaa jokainen CNY 70 -anturi kuparijohtimilla. (toista 4 kertaa enemmän)
Hitsaa jokainen CNY 70 -anturi kuparijohtimilla. (toista 4 kertaa enemmän)

Vaihe 7: Anturia varten käytetään erityistä piiriä

Anturissa käytetään erityistä piiriä
Anturissa käytetään erityistä piiriä

Vaihe 8: Liitä mezzanine Dragon Board 410c -laitteeseen. (käytetään GPIO: n käyttöön)

Liitä mezzanine Dragon Board 410c -laitteeseen. (käytetään GPIO: n käyttöön)
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

Liitä piiri leipälevyltä puolikerrokselle
Liitä piiri leipälevyltä puolikerrokselle
Liitä piiri leipälevyltä puolikerrokselle
Liitä piiri leipälevyltä puolikerrokselle
Liitä piiri leipälevyltä puolikerrokselle
Liitä piiri leipälevyltä puolikerrokselle
Liitä piiri leipälevyltä puolikerrokselle
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.

Suositeltava: