Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01
In deze instructable maken we een slimme spiegel die is geïntegreerd met Google Agenda. Ik heb dit project gemaakt omdat ik slimme spiegels echt gaaf vind, ze zijn een uitkomst in de ochtend. Maar ik besloot er zelf een te maken vanaf nul omdat alle anderen 1 fout hebben. Ze zijn te geavanceerd en rommelig. Ik besloot het simpel te houden.
Benodigdheden
Voordat
we beginnen, dit zijn de dingen die je zeker nodig hebt om een spiegel zoals de mijne te bouwen. Deze benodigdheden kosten ongeveer 250 tot 350 euro, afhankelijk van uw regio en de huidige prijzen.
Hardware
Sensoren
- Een draad temperatuursensor
- RWCL 0516 (Magnetron bewegingssensor)
- Zachte potmeter (Touchstrip van Sparkfun)
computergebruik
en IC's
- Luidspreker (3,2 W bij 4Ω OF 1,8 W bij 8Ω)
- MCP3008
- Adafruit I2S 3W Klasse D versterker Breakout - MAX98357A
- Raspberry Pi 3 B+
- SD-kaart (8GB is prima)
- Weerstand 4.7K Ohm
Verscheidene
- Doorverbindingsdraden
- Breadboard
- Acryl Bidirectionele Spiegel (15% Lichttransmissie)
- IPS-monitor (grootte hangt af van hoe groot je hem wilt)
- HDMI kabel
- Hout
Software
- Stopverf
- Code-editor (Notepad++ is voldoende)
- Win32 Schijfimager
- Raspbian OS-afbeelding
Stap 1: Installatie
Om te beginnen, moeten we eerst je Pi instellen voor de code die ik heb gemaakt.
Je hebt twee dingen nodig:
- Win32 Disk Imager van
- Raspbian OS-afbeelding van
Download het ZIP-bestand en pak het uit waar u maar wilt.
De installatie
- Selecteer je afbeelding via het mappictogram
- Selecteer je SD-kaart via de dropdown
- Klik op schrijven
Nu moeten we wat extra sleutelen aan sommige instellingen, zodat we toegang hebben tot de Pi.
- Ga naar de opstartmap van de SD-kaart
- Open het bestand "cmdline.txt"
- Voeg ip=169.254.10.1 toe aan het einde van de lange tekstregel, gescheiden door een spatie (op dezelfde regel).
- Bewaar het bestand.
- Maak een bestand met de naam ssh zonder extensie in dezelfde map
Nu kunt u de SD-kaart uitwerpen en in uw Pi plaatsen.
Verbinden
Nu moeten we de software instellen.
Sluit eerst een LAN-kabel aan, het ene uiteinde in je desktop/laptop en het andere in je Pi.
Start nu de Raspberry Pi op.
- Installeer Putty van
- Voer 169.254.10.1 in het IP-vak in.
- Zorg ervoor dat SSH is geselecteerd en poort 22 is ingevuld.
- Klik op openen
- Vul de gebruikersnaam in: pi
- Vul het wachtwoord in: framboos
Raspi-config
Open het hulpprogramma Raspi-config met behulp van:
sudo raspi-config
Schakel de volgende opties in de categorie interfaces in:
- 1-draads
- SPI
Kies je wifi-land via de lokalisatiecategorie.
Schakel vervolgens de volgende opties uit in de categorie opstartopties:
Opstartscherm
Stel ten slotte de Desktop/CLI-instelling in de categorie opstartopties in op Desktop Autologin.
Wifi
Voor de spiegel hebben we een wifi-verbinding nodig, dus zorg ervoor dat je je wifi-inloggegevens bij de hand hebt.
Ga naar de root-modus
sudo -i
Plak deze regel, maar zorg ervoor dat de SSID en het wachtwoord beide zijn ingevuld
wpa_passphrase "SSID" "PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf
Voer de WPA-client in.
wpa_cli
Selecteer de interface
interface wlan0
Herlaad de configuratie
opnieuw configureren
Zorg ervoor dat u correct bent verbonden door te typen…
ip a
…en kijken of je een IP hebt op de WLAN0-interfaces.
Pakketjes
Nu we verbonden zijn met internet, moeten we enkele pakketten installeren.
Eerst moeten we de pakketlijsten vernieuwen voor de laatste.
sudo apt update
Python
We dwingen Raspbian om Python 3. te gebruiken
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives --install /usr/bin/python python /usr/bin/python3 2
MariaDB
Plak de volgende regel om de database te installeren.
sudo apt install mariadb-server
Dan moeten we onze installatie beveiligen.
mysql_secure_installation
Het zal ons om het huidige root-wachtwoord vragen, omdat we er geen hebben, druk gewoon op enter.
Vervolgens wordt gevraagd of we een root-wachtwoord willen typen in y, omdat we er een willen.
Voer voor de volgende vragen gewoon Y in.
Ten slotte zullen we een gebruiker maken die we voor de spiegel kunnen gebruiken.
Voer de mysql-shell in door te doen:
Verheffen onszelf tot wortel
sudo -i
Voer de mysql-shell in
mysql
Vervang door uw eigen gebruikersnaam en hetzelfde met
verleen alle privileges op mirror.* aan ''@'%' geïdentificeerd door '';
Nu spoelen we de machtigingentabel door.
SPOEL VOORRECHTEN;
Apache-webserver
Voer de onderstaande regel uit om de webserver te installeren.
sudo apt installeer apache2 -y
Python-pakketten
We gaan deze pakketten installeren
- Kolf
- Kolf-Cors
- Kolf-MySQL
- Kolf-SocketIO
- PyMySQL
- Kolf-talisman
- Gent
- Gevent-websocket
- Google-api-python-client
- Google-authenticatie
- Google-auth-httplib2
- Google-auth-oauthlib
- Httplib2
- Icalendar
- Icalevents
- Oauthlib
- Python-socketio
- Verzoeken
- Wsaccel
- Ujson
Door te doen
pip install Flask Flask-Cors Flask-MySQL Flask-SocketIO PyMySQL Flask-Talisman gevent gevent-websocket google-api-python-client google-auth google-auth-httplib2 google-auth-oauthlib httplib2 icalendar icalevents icalevents u oauthsj verzoeken
Luidsprekeropstelling
curl -sS https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2samp.sh | bash
Nu moeten we opnieuw opstarten, dus druk op y.
Voer het script opnieuw uit
curl -sS https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2samp.sh | bash
Nu moeten we een tweede keer opnieuw opstarten
sudo reboot
Scherm (monitor)
Afhankelijk van hoe je de oriëntatie van je scherm wilt, kun je het scherm misschien roteren.
Om het scherm te draaien, moeten we toegang krijgen tot de opstartopties door te doen:
sudo nano /boot/config.txt
En plak dan een van deze regels in het configuratiebestand:
display_rotate=0
display_rotate=1
display_rotate=2
display_rotate=3
De eerste, 0, is de normale configuratie. 1 Zal 90 graden zijn, 2 is 180 graden en de laatste zal 270 graden zijn.
Start vervolgens opnieuw op.
sudo reboot
Stap 2: De spiegel installeren
Nu gaan we een plek opzetten om mijn code te downloaden.
cd /home/pi/
git clone https://github.com/nielsdewulf/Mirror MirrorProject cd MirrorProject
Nu zullen we enkele mappen naar de juiste bestemming kopiëren
sudo cp -R frontend/mirror/ /var/www/html/mirror/
sudo cp -R frontend/dashboard/ /var/www/html/ Sudo cp -R backend/ /home/pi/Mirror/
Het installeren van de database is een noodzakelijke stap bij het maken van het project.
sudo mysql -u root -p << CREATEDATABASE.sql
Stap 3: Configuratie
Het configuratiebestand bevindt zich op:
sudo nano /home/pi/Mirror/resources/config.ini
Voer de MYSQL-gebruiker en het wachtwoord in.
Dit moet de mysql-gebruiker zijn die we zojuist hebben gemaakt.
De andere instellingen zullen we later in dit instructable bespreken.
Stap 4: API's
Nu we de installatie van de Pi hebben voltooid, zullen we enkele onderwerpen behandelen die u misschien wilt doen.
Donkere lucht
Maak een Darsky API-sleutel aan via
Wanneer u zich heeft geregistreerd, ziet u uw API-sleutel op het Dashboard.
Voer deze sleutel in het configuratiebestand van het spiegelproject dat u eerder hebt geïnstalleerd.
De kalender
Standaard kunt u alleen ical urls gebruiken om uw agenda van te bekijken. Maar dit deel gaat over hoe u uw spiegel kunt koppelen aan het Google-ecosysteem. Dit is een over het algemeen langer en pijnlijker proces.
Dingen die je zeker nodig hebt
Een domeinnaam
Dit zijn de dingen die we zullen instellen tijdens dit deel
- CloudFlare-account
- Google-ontwikkelaarsaccount
- Google-ontwikkelaarsproject
- De Agenda-API instellen
Stap 5: De kalender
Cloudflare
Stel een cloudflare-account in via https://cloudflare.com en volg de wizard om je domeinnaam over te zetten naar Cloudflare DNS.
Het is niet nodig om zelf een A-record te maken dat naar de Raspberry Pi verwijst. Mijn Mirror-code doet dat voor je. Omdat in de meeste huishoudelijke wifi de IP's niet statisch zijn, werkt het mogelijk niet meer na het opnieuw opstarten. Om ervoor te zorgen dat mijn code het ip automatisch bijwerkt, heeft het de API-sleutel van uw account nodig.
- Klik op de knop Uw API-sleutel ophalen op het dashboard aan de rechterkant. [Foto 1]
- Scroll naar beneden en bekijk uw Global API key. [Foto 2]
Voer deze sleutel in het configuratiebestand van het spiegelproject dat u eerder hebt geïnstalleerd.
SSL-certificaat maken
Google vereist dat we een SSL-verbinding hebben. Om deze sectie te starten, moet u ervoor zorgen dat u de Cloudflare DNS correct hebt ingesteld.
Voeg eerst de repository toe.
sudo add-apt-repository ppa:certbot/certbot
Werk de pakketlijst bij.
sudo apt-get update
CertBot installeren
sudo apt install python-certbot-apache
Start het maken van het certificaat. Ook hier dient u de juiste domeinnaam in te vullen.
sudo certbot --apache -d voorbeeld.com -d www.voorbeeld.com
Na de creatie zal het u vragen of het alle verbindingen naar SSL moet omleiden. Kies omleiden.
Nu zal het u vertellen dat het met succes een certificaat voor uw domein heeft gemaakt. Zorg ervoor dat u de 2 paden opslaat die het u geeft.
- /etc/letsencrypt/live/example.com/cert.pem
- /etc/letsencrypt/live/example.com/privkey.pem
Ga nu naar de map met de certificaten in via:
Zorg ervoor dat u example.com naar de juiste host wijzigt.
cd /etc/letsencrypt/live/example.com/
Laten we die inhoud nu naar onze projectmap kopiëren.
cp cert.pem /home/pi/Mirror/resources/certs/cert.pem
En
cp privkey.pem /home/pi/Mirror/resources/certs/privkey.pem
Verbind Apache met uw domein
Om Apache correct te configureren met uw domein, moeten we een configuratiebestand maken. Zorg ervoor dat u uw domeinnaam invult, bijvoorbeeld funergydev.com.
sudo nano /etc/apache2/sites-enabled/example.com.conf
Plak deze dan in het bestand. Vervang voorbeeld.com door uw domeinnaam.
Zorg ervoor dat uw certificaat en privésleutel het juiste pad zijn. Stel ze in op het pad dat u eerder hebt opgeslagen toen we ze vervolgens via certbot maakten.
DocumentRoot "/var/www/html/" SSLEngine op SSLCertificateFile /home/pi/Mirror/resources/certs/cert.pem SSLCertificateKeyFile /home/pi/Mirror/resources/certs/privkey.pem # Andere richtlijnen hier Opties Indexen FollowSymLinks AllowOverride Alle Vereisen dat alles is toegestaan
Nu moeten we enkele wijzigingen inschakelen en Apache dwingen om de configuratie opnieuw te laden door te doen:
sudo a2enmod ssl
sudo a2enmod herschrijven
sudo systemctl herlaad apache2
Nu zou je via je domeinnaam naar je pi moeten kunnen gaan en de standaard apache-pagina zien.
Stap 6: Google-API
Ga naar de ontwikkelaarsconsole via
Deel 1
Maak uw eerste project door naast het Google API-logo te klikken en op de knop NIEUW PROJECT te klikken. Vul een geschikte projectnaam in en klik op de knop Aanmaken. [Foto1]
Deel 2
Nu kom je op deze pagina. Klik op de bibliotheekknop. [Foto2]
Dit is een grote lijst van alle API's die je zou kunnen gebruiken, maar we zullen zoeken naar de Google Calendar API. Klik erop en druk op INSCHAKELEN. [Foto3]
Je komt dan in een overzicht van de Calendar API. Klik op het Google API's-logo om terug te gaan naar uw project. [Foto4]
Deel 3
Om alles correct in te stellen, klikt u op de categorie inloggegevens en kiest u het tabblad Domeinverificatie.
Hier moet u uw domeinnaam verifiëren.
- Klik op DOMEIN TOEVOEGEN
- Vul uw domein in
- Vervolgens wordt gevraagd om uw domein te verifiëren. Klik op doorgaan.
- Kies uw domeinnaamprovider. [Foto5]
- Volg het proces
- Nu kunt u het op deze manier toevoegen aan de domeinverificatielijst in de Google API Console. Zorg ervoor dat uw domein is aangevinkt. [Foto6]
Deel 4
Kies nu het tabblad OAuth-toestemmingsscherm. [Foto7]
Vul de naam van de toepassing in
Vervolgens voegen we scopes toe aan het toestemmingsscherm. Dit betekent dat we de gebruiker op het toestemmingsscherm zullen vragen of ze hun agenda-informatie met de mirror willen delen.
- Klik op bereik toevoegen en zoek naar agenda.
- Controleer../auth/calendar.readonly en druk op toevoegen. [Foto8]
Vul een geautoriseerd domein in. Dit zou het domein moeten zijn dat u zojuist heeft geverifieerd. [Foto9]
Klik nu op de grote knop Opslaan onder het formulier.
Deel 5
Ten slotte moeten we de inloggegevens maken. Omdat we op de knop Opslaan drukten, werden we doorgestuurd naar het tabblad met inloggegevens. Klik op inloggegevens maken en kies OAuth-client-ID. [Foto10]
Kies Applicatietype: Webapplicatie en geef het een naam.
Voer de volgende link in de Authorized Redirect URI's in en vul het juiste domein in.
example.com:5000/api/v1/setup/calendar/response
Klik op maken. Dit toont u een pop-up, klik gewoon op OK. Druk nu op de downloadknop op de inloggegevens die u zojuist hebt gemaakt
Deel 6
Open nu het JSON-bestand en kopieer de inhoud.
sudo nano /home/pi/Mirror/resources/credentials/credentials.json
Plak ze hier.
Deel 7
Nu moeten we ons domein in de configuratie definiëren door te doen:
sudo nano /home/pi/Mirror/resources/config.ini
Stap 7: Het spiegelontwerp
Het ontwerpen van uw spiegel hangt af van hoe u het wilt. Voer nauwkeurige metingen uit van het LCD-scherm en laat een opening van 2 centimeter aan één kant van de spiegel, aangezien de microgolfbewegingssensor daar zal zitten. Het kan niet achter metaal zitten.
Ik heb 4 planken van hout aan elkaar verbonden. Deze werden gefreesd om een mooie schone voorkant van de spiegel te hebben. Aan de bovenkant heb ik ook een paar gaten geboord om het geluid van de luidspreker door te laten. De andere kant van de spiegel, de onderkant, sneed ik een kleine rechthoek zodat ik gemakkelijk de elektrische bedrading kon doen. [Foto1]
Dit zijn 2 stukken goedkoop hout waar de monitor op zal rusten. Omdat ik zei dat we een opening van ongeveer 2 centimeter nodig hadden tussen de spiegel en de behuizing. Ik voegde ook 3 kleine stukjes hout toe en schroefde ze op die rustende stukken. Dus de monitor zou op zijn plaats blijven. [Foto2]
Uiteindelijk zag het er zo uit. Ik had een opening van ongeveer 3 mm tussen die rustende stukken en de voorkant van de spiegelkast. Net genoeg zodat ik de 3 mm dikke bidirectionele spiegel erin kon plaatsen. [Foto3]
Stap 8: De bedrading doen
Zorg ervoor dat u een van deze schema's goed volgt.
Nadat ik de bedrading had gedaan, heb ik deze met dubbelzijdig plakband op de achterkant van het scherm geplakt. Want als ik de spiegel ooit zou willen demonteren en voor andere projecten gebruiken, zou ik hem gemakkelijk kunnen verwijderen. Als je zeker bent, kun je een heet lijmpistool gebruiken en dit op de achterkant van de spiegel lijmen.
Stap 9: De code starten
LXSession
Laten we eerst een paar mappen maken
mkdir -p /home/pi/.config/lxsession/LXDE-pi/
Nu zullen we een bestand maken waarin we een aantal opstartparameters/commando's zullen specificeren.
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
Plak het volgende in het bestand.
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi @xscreensaver -no-splash @point-rpi @sh /home/pi/Mirror/init_mirror.sh @xset s noblank @xset s off @xset -dpms
We zullen het startspiegelschermscript bijwerken zodat het overeenkomt met onze host.
sudo nano /home/pi/Mirror/init_mirror.sh
Kies localhost als u geen Google Calendar en een domein gebruikt.
#!/bin/bash
slaap 15 chromium-browser --incognito --kiosk
Als je het gebruikt, vul dan je host in.
#!/bin/bash
slaap 15 chroom-browser --incognito --kiosk
Onderhoud
Nu gaan we instellen dat de Mirror-code automatisch wordt uitgevoerd.
We gaan een service maken die de code automatisch voor ons start.
Ga naar:
sudo nano /etc/systemd/system/mirror.service
En plak dit in het bestand
[Eenheid]
Description=Mirror Backend After=network.target mariadb.service [Service] Type=simple User=root ExecStart=/bin/sh /home/pi/Mirror/init.sh [Install] WantedBy=multi-user.target
Nu moeten we de systemd-daemon opnieuw laden door te doen:
sudo systemctl daemon-reload
En we zullen de service ook inschakelen om automatisch te starten bij het opstarten.
sudo systemctl spiegel inschakelen
Nu gaan we uit.
sudo poweroff
De laatste instellingen
Ten slotte moeten we onze APIPA-ip verwijderen, zodat deze alleen op wifi werkt.
- Ga naar de opstartmap van de SD-kaart op uw pc.
- Open het bestand "cmdline.txt"
- Verwijder ip=169.254.10.1 Aan het einde van de lange regel tekst.
Stap 10: De spiegel draaien
Bezoek het ip dat op het spiegelscherm staat of vul de domeinnaam in als je de google agenda hebt ingesteld.
Nu kunt u uw spiegel instellen!
Als je een SSL-fout op je mirror krijgt, wil je misschien je certificaten toevoegen aan het Chromium-certificaatarchief.
Aanbevolen:
Google-agenda's aan Google Sites koppelen: 5 stappen
Google-agenda's aan Google-sites koppelen: dit is een Instructable om u te leren hoe u Google-agenda's kunt maken, gebruiken en bewerken en deze vervolgens aan een Google-site kunt koppelen met behulp van de deelmogelijkheden. Dit kan voor veel mensen voordelig zijn, aangezien Google Sites kan worden gebruikt om i
Google Agenda-evenementen naar ESP8266: 10 stappen
Google Calendar Events naar ESP8266: In deze tutorial leg ik uit hoe je Google Calendar event data importeert in Arduino IDE voor het ESP8266 board. Ik importeer de eindtijd en starttijd van mijn training uit Google Calendar en print ze in de Arduino IDE seriële monitor. Naar een
Beheer 100 apparaten in Ubidots-apps, organisaties, rollen en gebruikers: 11 stappen
Beheer 100 apparaten in Ubidots-apps, organisaties, rollen en gebruikers: bij deze gelegenheid heb ik besloten om de bruikbaarheid van het IoT-platform Ubidots voor gebruikersbeheer te testen in het geval dat het veel apparaten heeft voor verschillende organisaties of bedrijven onder hetzelfde Ubidots-platform. Burgemeester informatie: u
Wifi Ducky (*build voor Mac-gebruikers): 6 stappen
Wifi Ducky (*build voor Mac-gebruikers): bestuur een computer door dit apparaat op de usb-poort aan te sluiten. Onderdelenlijst: Arduino Pro Micro D1 Mini NodeMCU Arduino IDE *Optioneel Micro USB Male naar USB Female OTG Adapter Converter ✔ WireDeze tutorial is gericht op Mac-gebruikers. Er zijn genoeg
Werken met meerdere computers (voor studenten): 6 stappen
Werken met meerdere computers (voor studenten): Werken met meerdere computers kan erg moeilijk zijn. U weet nooit welke bestanden zich op welke computer bevinden, u kunt problemen tegenkomen met meerdere versies van hetzelfde bestand en als gevolg daarvan zou u uw bestanden allemaal samen kunnen verliezen of op zijn minst uw