GithubHelp home page GithubHelp logo

davidecremoninii / arduino Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 5.12 MB

University Project about Arduino and Esp32, using Flask and Plotly too.

License: MIT License

C++ 87.11% Python 7.06% HTML 5.82%
arduino esp32 firebase flask plotly python univr

arduino's Introduction

Arduino Badge Firebase Badge Flask Badge Python Badge Plotly Badge

Proggetto finale Prototipizzazione con Arduino

Indice

Descrizione progetto

Il progetto implementa un sistema di autenticazione di un parcheggio pensato per controllare l’accesso di dipendenti di un ufficio o studenti di un università. L’autenticazione avviene tramite lettura di codici QR associati ad ogni utente. Oltre a permettere l’autenticazione, il sistema registra i tempi di utilizzo del parcheggio di ogni utente e rende possibili consultare queste statistiche da un pannello di controllo. Tramite quest’ultimo è possibile anche ricevere notifiche di un eventuale richiesta di aiuto proveniente dal totem del parcheggio, per poter essere informati e provvedere ad assistere l’utente. Attraverso la presenza di un display e vari led, è presente anche un intefraccia per l’utente del parcheggio che potrà, utilizzando dei pulsanti, accedere a diverse funzionalità:

  • Ingresso: l’utente potrà impostare il circuito in modalità ingresso per permettere di autenticare la propria utenza e far alzare la sbarra corretta ed entrare all’interno del parcheggio;
  • Uscita: l’utente potrà impostare il circuito in modalità uscita per permettere di inserire nel sistema quali tra gli utenti sta lasciando il parcheggio e far alzare la sbarra corretta;
  • Richiesta di aiuto: l’utente potrà, in caso di necessità, aprire una richiesta di assistenza, la quale potrà essere chiusa direttamente dall’utente al totem, oppure tramite il pannello di controllo gestito da un operatore.

Questa interfaccia presenta informazioni che ne facilitano l’utilizzo informando l’utente di come operare, di ciò che sta succedendo o dei tempi di attesa necessari. Per la realizzazione ho utilizzato 2 schede Arduino Uno e una scheda Esp32, collegati in seriale (RXTX). L’Esp32 oltre a permettere il collegamento ad internet, si occupa di scambiare i dati con un realtime database creato con firebase. Il resto del circuito è così diviso:

  • Arduino Uno A: fornisce un’interfaccia all’utente e permette la lettura del qr code, inviando questo dato e la modalità selezionata dall’utente in seriale, attendendo come risposta un riscontro per poi informare l’utente tramite led e display;
  • Arduino Uno B: svolge l’operazione di apertura e chiusura delle due sbarre relative all’ingresso e all’uscita, in base ai dati provenienti dall’esp. Questa parte di circuito controlla anche un led di errore/avviso che completa l’interfaccia per l’utente. Infine, ho creato un pannello di controllo implementando un interfaccia web in python, sfruttando anche flask e plotly.

Schema progetto

Schema progetto

Schema circuito

Schema circuito

Implementazione fisica

Circuito implementato fisicamente

Requisiti

Si consiglia l'utilizzo di Arduino IDE. Librerie necessarie:

  • Per il codice arduino:
    • Firebase_ESP_Client
    • Wifi
    • Servo
    • U8g
    • SoftwareSerial
  • Per il codice python:
    • firebase_admin
    • plotly
    • flask

Inoltre é necessaria l'installazione della board esp32.

Bibliografia e riferimenti

Per apprendere l'utilizzo di alcuni componenti, come il sensore gm65, ho utilizzato alcune guide di questo canale youtube: https://youtube.com/@zeppelinmaker

Per l'idea su come utilizzare firebase intefacciato con esp32 mi sono ispirato a questo progetto, specialmente la parte dove con il database controllano lo stato di un led, per tramutare il suo utilizzo a ciò che più faceva comodo a me: https://youtu.be/aO92B-K4TnQ

Per mostrare a video sul display oled ho fatto uso della libreria u8g, consultando la documentazione presente su github: https://github.com/olikraus/u8glib/wiki/userreference

Licenza

MIT License

Copyright (c) 2023 Cremonini Davide

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

arduino's People

Contributors

davidecremoninii avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.