Inhoudsopgave:

Beargardian: 5 stappen
Beargardian: 5 stappen

Video: Beargardian: 5 stappen

Video: Beargardian: 5 stappen
Video: Teddy Bear SCP-6330 Guardians of the Innocent (SCP Animation) 2024, November
Anonim
Beargardian
Beargardian

Hey jongens voor school, ik had een idee nodig voor een project. Dus ik zat te denken, het moet een project zijn met de Raspberry Pi en het is lokaal. Opeens had ik een geweldig idee en vraag me niet hoe ik op dat idee kom maar ik dacht aan een upgrade voor een babyfoon. Denk even na over dat idee, de meeste babyfoons hebben gewoon de functie om naar de babykamer te luisteren.

De eigenschappen

  • Een kleine lichtshow met instelbare kleuren
  • Een camera die je live beelden laat zien
  • Een luidspreker om muziek af te spelen
  • Sensoren om de bewegingen van de baby vast te leggen
  • Al dat laten zien op een website

Korte informatie

Laat me dit in een korte versie uitleggen. Dus we hebben een website nodig en voor dit project gebruik ik Flask, we hebben ook een database nodig en ik gebruik mysql, ook een script dat de hardware uitvoert en dit is met python (3) en als laatste hebben we een serverconfiguratie nodig dat zou nginx op de PI zijn.

Wat hebben we nodig

  • De Raspberry Pi 3
  • De stappenmotor 28BYJ
  • De stappenmotor driverchip ULN2003 stappenmodule:
  • Een rgb led met 3 weerstanden 330Ohm
  • De Pi NoIR-camera V2
  • De ultrasone sensor HC-SR04
  • De micromodule van ardiuno
  • De MAX98357A
  • Een luidspreker 8 Ohm
  • En vergeet niet een beer te kopen

Raspberry pi instellen ----------------------------------------------- -------------------------------------------------- --------------------------

Eerst moeten we de Pi instellen. Begin al met inloggen via putty, als je geen putty hebt, raad ik je aan dit te downloaden, typ gewoon je statische ip van de Pi met ssh en je gaat ermee akkoord. Als je je Raspberry Pi moet installeren, dan heb ik slecht nieuws, ik ga dit in dit project niet uitleggen.

Pakketten installeren

sudo apt update

sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3

Virtuele omgeving

python3 -m pip install --upgrade pip setuptools wiel virtualenv

mkdir {uw projectmapnaam} && cd {uw projectmapnaam} python3 -m venv --system-site-packages env source env/bin/activeer python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPauth Flask- MySQL mysql-connector-python passlib

Nu moet je de git-repository in je projectmap klonen

github.com/NMCT-S2-Project-I/Project-I.git

Als je in je projectmap kijkt, moet je 5 mappen zien

  • conf
  • benijden
  • sensor
  • sql
  • web

Database

sudo systemctl status mysql

ss -lt | grep mysql sudo mysql

maak een gebruiker aan in de database met alle privileges en maak uw database

maak gebruiker 'gebruiker'@'localhost' geïdentificeerd door 'wachtwoord';

maak database uwdatabasenaam; verleen alle rechten op uwdatabasenaam.* aan 'gebruiker'@'localhost' met toekenningsoptie;

Conf-bestanden voor server

In de uwsgi-flask.ini verander je 'module = …' in 'module= web:app' en het pad naar je virtualenv dat je hebt gemaakt. In de andere bestanden moet u de paden wijzigen in de werkelijke absolute paden van uw directory.

Als je dat eenmaal doorhebt, kun je de bestanden op de juiste plaats zetten.

sudo cp conf/project1-*.service /etc/systemd/system/

sudo systemctl daemon-herlaad sudo systemctl start project1-* sudo systemctl status project1-*

nu moeten we dit beschikbaar stellen

sudo cp conf/nginx /etc/nginx/sites-available/project1

sudo rm /etc/nginx/sites-enabled/default sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/project1 sudo systemctl herstart nginx.service sudo nginx -t

Als alles goed ging, zou je hallo wereld hebben met dit commando

wget -qO - localhost

Gedaan ! Nou, dat is voor het deel om uw systeem op te laten draaien …

Stap 1: Bedrading van de hardware naar de Pi

De hardware aansluiten op de Pi
De hardware aansluiten op de Pi

BCM gebruiken

audio MAX98357A

  • BCK naar GPIO 18
  • Gegevens naar GPIO 21
  • LRCK naar GPIO 19

licht

  • rood naar GPIO 17
  • groen naar GPIO 27
  • blauw naar GPIO 22

motormodule ULN2003

  • pin 1 naar GPIO 5
  • pin 2 naar GPIO 6
  • pin 3 naar GPIO 13
  • pin 4 naar GPIO 26

micro

D0 tot GPIO 21

ultrasoon sensor

  • trig naar GPIO 16
  • echo naar GPIO 20

Stap 2: De hoofdprogramma's coderen

Ik ga hier niet in details, maar je kunt mijn code in github afrekenen.

Om te beginnen heb ik mijn html en css gemaakt, een index, login, register, homescreen, muziek, addmusic, addbear, licht, camera, camera-instellingen, sensor, dashboard pagina. De html-bestanden moeten in de sjablonen staan en de css-bestanden in de static/css-map. U kunt de css volledig naar wens aanpassen.

Als je dit deel hebt gedaan, moet je je kolf instellen. Flask is eenvoudig te gebruiken, slechts een voorbeeld van de hallo wereld

# importeer eerst kolf

from flask import * @app.route('/') def index(): return render_template('index.html')

Nu is dit in mijn code al ingevuld, het enige wat je hoeft te doen is de databasegebruiker en het wachtwoord naar die van jou te veranderen en natuurlijk dezelfde database te maken die je ook in github kunt vinden.

Stap 3: De database maken

De database maken
De database maken

Voor de echte fans ga ik je vertellen hoe je dezelfde database kunt maken.

Dus eerst moeten we de database maken als je dat niet in stap één hebt gedaan.

maak database beargardian;

Zodra je dit hebt gedaan, maak je de tabellen in mysql workbench of phpadmin

gebruikerstabel heeft

  • gebruikersnaam
  • Voornaam
  • achternaam
  • e-mail
  • babynaam
  • wachtwoord met sha1
  • gebruikersmap
  • speelmuziek (int)
  • speellicht (int)
  • afspelen opnemen (int)

muziektafel heeft

  • muziek-ID
  • liedje
  • pad
  • gebruikersmap
  • toestand
  • volume

opnametafel heeft

  • opname-ID
  • pad
  • gebruikersmap
  • tijd
  • dag

kleurentabel heeft

  • kleur-ID
  • rood
  • groente
  • blauw
  • helderheid
  • gebruikersnaam

berentafel heeft

  • bearID (decimaal (8))
  • gebruikers-ID standaard null
  • berennaam

sensor tafel heeft

  • sensorID
  • afstand
  • micro
  • beer-ID
  • tijd
  • dag
  • bedtijd

Dus nu je de database succesvol hebt gemaakt, gaan we naar de hardware.

Stap 4: Hardwarecodering

Ik zal een klein beetje code laten zien en je vertellen waarom ik het op die manier heb gedaan.

Om te beginnen gebruikte ik threading, wat een absolute must is in dit project. Wat is threading, hmmm goede vraag! Een bedreiging in Python is om meerdere programma's tegelijk uit te voeren. Dus als je bijvoorbeeld de kleur verandert kun je ook opnemen. Het is gemakkelijk te gebruiken, maak je geen zorgen.

import _threaddef function_name(something, something_else): code om uit te voeren

_thread.start_new_thread(functienaam, tuple_with_the_functions_variables)

Als je naar mijn programma keek, zag je logger.info('…'). Dit is de afdrukfunctie, maar veel beter, omdat je op de Pi niets kunt afdrukken, dus maak ik een bestand en print het daarin. Met deze code kunt u het logbestand instellen.

logger = logging.getLogger(_name_)logger.setLevel(logging. INFO) # maak een bestandshandler handler = logging. FileHandler('logger.log') handler.setLevel(logging. INFO)

# maak een logformaat aan

formatter = logging. Formatter('%(asctime)s - %(name)s - %(message)s') handler.setFormatter(formatter)

# voeg de handlers toe aan de logger

logger.addHandler(handler)

logger.info('hardware opstarten\n---------------------------------------')

verder in de code zelf leg ik alles uit.

Aanbevolen: