Cuprins:
- Pasul 1: Materiale
- Pasul 2: Dragonboard 410c Com Mezzanine 96Boards: Configuração E Pinagem
- Pasul 3: Integração: Unity + Vuforia
- Pasul 4: Unitate: configurați SDK O Android
- Pasul 5: Criando Servidor Local E Recebendo Informações Em Python
- Pasul 6: Rezultatul final
Video: Lecție inteligentă: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
O proiectă Smart Lesson visa criar um produto no qual os professores possam use as um conteúdo a mais para ensinar seus alunos os levando a um nível de aprendizado muito superior por conseguir mostrar os conteúdos de forma dinâmica și interactivă, oferind experiențe fără prezențe em uma sala de aula convențională.
Pasul 1: Materiale
Pentru programarea unui Dragonboard 410c:
- Dragonboard 410c;
- Cabo HDMI;
- Teclado prin USB -Mouse prin USB -Monitor;
- Mezzanine 96boards;
Pentru executarea proiectului:
- Dragonboard 410c;
- Mezzanine 96boards;
- Sensor Grove IMU 10DOF MPU - 9250 (nu este limitat la utilizarea unui senzor unic);
- Fonte de alimentație externă 11.1V;
- Jumper fêmea-fêmea;
Pasul 2: Dragonboard 410c Com Mezzanine 96Boards: Configuração E Pinagem
O Shield Mezzanine deve ser acoplado à placa Dragonboard 410c, pentru că haja furneciment de saída 3.3V / 5V (level shifter), pois a placa só fornece 1.8V de saída. Senzorul utilizat a fost cu un magnetometru Sensor MPU - 9250 Grove -IMU 10DOF, specificații:
Tensão de Entrada: 5V / 3.3V;
Corrente de funcționare: 6mA;
Comunicação Serial;
Pinos: VCC, GND, SDA e SCL;
Interfață I2C;
Pentru acest exemplu a fost folosit cu doi conectori Grove I2C0 (5V), care oferă o comunicație Serial și o necesitate alimentară pentru funcționarea senzorului. (ver imagem)
Pasul 3: Integração: Unity + Vuforia
1- Vá ao site da vuforia na área de desenvolvedor e crie uma chave.
2- Vai na tab Target Manager și adică o textură pentru fazer o Tracking (cât mai complexe).
3- Feito isso baixe a database for o Unity e importe.
4- No Unity configure um image target com a textura escolhida and inside dele adicione os models 3D that deseja use, os mesmos estarão ativos when a imagem for localizada pelo app.
5- Adicione a chave de licença da vuforia nas configurações dentro do Unity.
6- Após isso modele os componentes da aula em algum program 3D e prepare as aulas em cima do image target (poate fi uma aula de Biologia ou Física…).
Pasul 4: Unitate: configurați SDK O Android
1- Baixe sau SDK pentru Android, selectați preferințele Unity și selectați-vă direcția.
2- Mude a build plataform pentru Unity pentru Android, pentru a obține gerar o APK.
3- Instale o apk em um device (não esqueça de permitir fontes desconhecidas nas configurações).
Pasul 5: Criando Servidor Local E Recebendo Informações Em Python
Încheiat ca configurații prezentate, putem accesa sau Sistemul Linar în interiorul plăcii și utilizați limbaje lingvistice ca C ++, Java, Python, etc., pentru un software care va fi executat. Acest software este responsabil de receber os dados lidos pelo sensor, procesează și tratează aceste dados conforme solicitate pelo program. Depois carrega esses dados para o server alocado na própria placa para enviar os dados já tratados para a plataforma Unity. Os exemplos de code deste projecto estão em linguagem Phyton. A fost transferat de Dragonboard 410c pentru o Unity și a prezentat o aplicație.
Urmăriți codurile mag_python.py (monitorizare a senzorului), server2.py (Servidor local), Executare fără Shell:
Cod mag_python.py
#! / usr / bin / python
# Autor: Jon Trulson
# Copyright (c) 2015 Intel Corporation.
#
# Permisiunea se acordă, în mod gratuit, oricărei persoane care obține
# o copie a acestui software și a fișierelor de documentare asociate (# „Software”), pentru a gestiona software-ul fără restricții, inclusiv
# fără limitare drepturile de utilizare, copiere, modificare, îmbinare, publicare, # distribuie, sublicențiază și / sau vinde copii ale software-ului și către
# permite persoanelor cărora li se furnizează software-ul să facă acest lucru, sub rezerva
# următoarele condiții:
#
# Avizul de mai sus privind drepturile de autor și acest aviz de autorizare vor fi
# inclus în toate copiile sau părți substanțiale ale software-ului.
#
# SOFTWARE-UL ESTE OFERIT „CA ATARE”, FĂRĂ GARANȚIE DE NICIUN TIP, # EXPRESĂ SAU IMPLICITĂ, INCLUSIV DAR NU LIMITAT LA GARANȚIILE DE
# VANZABILITATE, ADECVĂ PENTRU UN SCOP PARTICULAR ȘI
# NEÎNCĂLCARE. În niciun caz nu vor fi autorii sau deținătorii de drepturi de autor
# RESPONSABIL PENTRU ORICE REVENDICARE, DAUNE SAU ALTE RESPONSABILITĂȚI, FIE ÎNTR-O ACȚIUNE
# CONTRACTULUI, TORT SAU ALTUI, CARE SUNT DIN, ÎN LĂSURĂ SAU ÎN CONEXIUNE
# CU SOFTWARE-UL SAU UTILIZAREA SAU ALTE DISCIPLUȚII ÎN SOFTWARE.
din _future_ import funcția print_
timp de import, sys, semnal, atexit, urllib, urllib2, math
din upm import pyupm_mpu9150 ca senzorObj
def main ():
# date = {}
# data ['magnetrometro'] = raw_input ("Informează o temperatură")
# data = urlib.urlencode (date)
# post_request = urlib2. Cerere (post_url, date, anteturi)
# încerca:
# post_response = urlib2.urlopen (post_request)
# print post_response.read ()
# cu excepția URLError ca e:
# print "Eroare:", e.reason
# Instantați un MPU9250 pe magistrala 0 I2C
senzor = sensorObj. MPU9250 ()
## Handlerele de ieșire ##
# Această funcție oprește python să imprime un stacktrace când apăsați control-C
def SIGINTHandler (signum, cadru):
ridicați SystemExit
# Această funcție vă permite să rulați codul la ieșire
def exitHandler ():
print („Ieșire”)
sys.exit (0)
# Înregistrați gestionarele de ieșire
atexit.register (exitHandler)
signal.signal (signal. SIGINT, SIGINTHandler)
sensor.init ()
x = sensorObj.new_floatp ()
y = sensorObj.new_floatp ()
z = sensorObj.new_floatp ()
în timp ce (1):
sensor.update ()
sensor.getAccelerometer (x, y, z)
# print ("Accelerometru:")
# print ("AX:%.4f"% sensorObj.floatp_value (x), end = '')
# print ("AY:%.4f"% sensorObj.floatp_value (y), end = '')
# print ("AZ:%.4f"% sensorObj.floatp_value (z))
modulo1 = (sensorObj.floatp_value (x) -0.005) ** 2+ (sensorObj.floatp_value (y) -0.0150) ** 2+ (sensorObj.floatp_value (z) -0.0450) ** 2
# print (modulo1)
modulo1 = ("%.1f"% abs (((modulo1 ** 0.5) -1) * 9.8))
# print (modulo1)
#
# sensor.getGyroscope (x, y, z)
# print ("Giroscop: GX:", sensorObj.floatp_value (x), end = '')
# print ("GY:", sensorObj.floatp_value (y), end = '')
# print ("GZ:", sensorObj.floatp_value (z))
sensor.getMagnetometer (x, y, z)
# print ("Magnetometru: MX:", sensorObj.floatp_value (x), end = '')
# print ("MY:", sensorObj.floatp_value (y), end = '')
# print ("MZ:", sensorObj.floatp_value (z))
modulo2 = sensorObj.floatp_value (x) ** 2 + sensorObj.floatp_value (y) ** 2 + sensorObj.floatp_value (z) ** 2
# print (modulo2)
modulo2 = ("%.2f"% (modulo2 ** 0.5))
# print (modulo2)
arq = deschis ('/ tmp / dados.txt', 'w')
texto =
texto.append (str (modulo2) + "," + str (modulo1))
arq.writelines (texto)
arq.close ()
# link = ('https://data.sparkfun.com/input/0lwWlyRED5i7K0AZx4JO?private_key=D6v76yZrg9CM2DX8x97B&mag='+str(modulo2))
# print ('enviando dados')
# send = urllib2.urlopen (link)
# pagină = send.read ()
# tipărire (pagină)
# link = ('https://data.sparkfun.com/input/1noGndywdjuDGAGd6m5K?private_key=0mwnmR9YRgSxApAo0gDX&acel='+str(modulo1))
# print ('enviando dados')
# send = urllib2.urlopen (link)
# pagină = send.read ()
# tipărire (pagină)
# print ("Temperatura:", sensor.getTemperature ())
# imprimare()
# time.sleep (.5)
dacă _name_ == '_main_':
principal()
Código do Servidor Local
timpul de import
import BaseHTTPServer
HOST_NAME = '172.17.56.9' # !!! AMINTIȚI SĂ SCHIMBAȚI ACESTA !!!
PORT_NUMBER = 80 # Poate setați acest lucru la 9000.
a = 0
clasa MyHandler (BaseHTTPServer. BaseHTTPRequestHandler):
def do_HEAD (s):
s.send_response (200)
s.send_header („Tip conținut”, „text / html”)
s.end_headers ()
def do_GET (s):
dados = le_dados ()
print (dados)
"" "Răspundeți la o solicitare GET." ""
dacă s.path == "/ 1":
s.send_response (200)
s.send_header („Tip conținut”, „text / simplu”)
s.end_headers ()
s.wfile.write (dados)
elif s.path == "/ 2":
s.send_response (200)
s.send_header („Tip conținut”, „text / simplu”)
s.end_headers ()
s.wfile.write („2”)
altceva:
s.send_response (200)
s.send_header („Tip conținut”, „text / simplu”)
s.end_headers ()
s.wfile.write (dados)
# s.wfile.write ("nu a fost găsit !!")
def le_dados ():
arq = deschis ('/ tmp / dados.txt', 'r')
texto = arq.readline ()
arq.close ()
return text
dacă _name_ == '_main_':
server_class = BaseHTTPServer. HTTPServer
httpd = server_class ((HOST_NAME, PORT_NUMBER), MyHandler)
print time.asctime (), „Serverul pornește -% s:% s”% (HOST_NAME, PORT_NUMBER)
încerca:
a = a + 2
httpd.serve_forever ()
cu excepția KeyboardInterrupt:
trece
httpd.server_close ()
print time.asctime (), "Serverul se oprește -% s:% s"% (HOST_NAME, PORT_NUMBER)
Cod de Execuție dos Codes anteriores no Shell
#! / bin / bash
ecou „pornind mag_python”
sudo python mag_python.py &
ecou „start server”
sudo python server2.py
Pasul 6: Rezultatul final
Feito isso as aulas powerão ser auxiliadas and incrementadas hair project Smart Lesson desenvolvido com a Dragonboard 410c. Servind de facilitator și furnizând um mai mare învățat sisteme de învățământ atât public cât și privat.
LINK pentru aplicație fără Google Play:
Link pentru coduri Py:
Recomandat:
Curea inteligentă: 18 pași
Smart Belt: Purtarea unor gadgeturi este foarte provocatoare. Sincer, în acest proiect, am primit ajutor de la mama mea pentru a coase carcasa pentru mine, deoarece nu pot coase singur. Aveți grijă când coaseți cu mașina de cusut. Dacă nu experimentați niciodată cusutul cu mașina de cusut, este și
Lumină LED cu birou inteligent - Iluminare inteligentă cu Arduino - Spațiul de lucru Neopixels: 10 pași (cu imagini)
Lumină LED cu birou inteligent | Iluminare inteligentă cu Arduino | Neopixels Workspace: Acum câteva zile petrecem mult timp acasă, studiem și lucrăm virtual, așa că de ce să nu ne îmbunătățim spațiul de lucru cu un sistem de iluminare personalizat și inteligent bazat pe LED-urile Arduino și Ws2812b. Aici vă arăt cum vă construiți Smart Lumina LED de birou care
Sonerie inteligentă DIY Raspberry Pi care poate detecta oameni, mașini etc.: 5 pași
Sonerie inteligentă DIY Raspberry Pi, care poate detecta oameni, mașini, etc. Nest, sau unul dintre ceilalți concurenți) Mi-am construit propria ușă inteligentă
Ceas cu alarmă inteligentă: o ceas cu alarmă inteligentă realizată cu Raspberry Pi: 10 pași (cu imagini)
Ceas cu alarmă inteligentă: o ceas cu alarmă inteligentă realizată cu Raspberry Pi: Ți-ai dorit vreodată un ceas inteligent? Dacă da, aceasta este soluția pentru dvs.! Am creat Smart Alarm Clock, acesta este un ceas pe care îl puteți schimba ora alarmei conform site-ului web. Când alarma se declanșează, se va auzi un sunet (buzzer) și 2 lumini vor
Grădinărire inteligentă bazată pe IoT și agricultură inteligentă folosind ESP32: 7 pași
Grădinărire inteligentă bazată pe IoT și agricultură inteligentă Utilizarea ESP32: Lumea se schimbă odată cu trecerea agriculturii. În prezent, oamenii integrează electronica în toate domeniile, iar agricultura nu face excepție. Această fuziune a produselor electronice în agricultură ajută fermierii și oamenii care gestionează grădinile