Spisu treści:
- Krok 1: Materiały
- Krok 2: Dragonboard 410c Com Mezzanine 96Boards: Konfiguracja E Pinagem
- Krok 3: Integração: Unity + Vuforia
- Krok 4: Unity: skonfiguruj O Android SDK
- Krok 5: Criando Servidor Local E Recebendo Informações Em Python
- Krok 6: Wynik końcowy
Wideo: Inteligentna lekcja: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
O projeto Smart Lesson visa criar um produto no qual os profesores possam utilizar como 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 propore cios dinâmica de aula konwencjonalna.
Krok 1: Materiały
Do programowania Dragonboard 410c:
- Dragonboard 410c;
- Cabo HDMI;
- Teclado przez USB -Mysz przez USB -Monitor;
- Antresola 96 desek;
Para executar o projekt:
- Dragonboard 410c;
- Antresola 96 desek;
- Sensor Grove IMU 10DOF MPU - 9250 (czujnik bez ograniczeń;
- Fonte de alimentação externa 11.1V;
- Sweter femea-fêmea;
Krok 2: Dragonboard 410c Com Mezzanine 96Boards: Konfiguracja E Pinagem
O Shield Mezzanine został wyposażony w Dragonboard 410c, który jest używany do zasilania 3,3 V / 5 V (przełącznik poziomu), jest to miejsce, które wymaga 1,8 V na pokładzie. O sensor utilizado foi um magnetômetro Sensor MPU – 9250 Grove -IMU 10DOF, specyfikacje:
Napięcie wejściowe: 5 V / 3,3 V;
Dokładność działania: 6mA;
Communicação Serial;
Piny: VCC, GND, SDA i SCL;
interfejs I2C;
Para este exemplo foi um dos conectores Grove I2C0 (5V), que proporciona a COMunicação Serial i alimentação necessária dla funkcji czujnika. (ver imagem)
Krok 3: Integração: Unity + Vuforia
1- Witryna Vá ao da vuforia na obszar desenvolvedor e crie uma chave.
2- Vá na tab Target Manager i adicione uma textura para fazer o Tracking (quanto mais complexa melhor).
3- Feito isso baixe baza danych dla Unity e importe.
4- Nie Unity skonfigurować um docelowy obraz z teksturą escolhida i dentro delle dice o modelach 3D que deseja utilizar, o esmos estarão ativos quando imagem dla localizada pelo aplikacji.
5- Adicione a chave de licença da vuforia nas configurações dentro do Unity.
6- Após isso modele os komponenty da aula em algum programa 3D i przygotuj jako aule em cima do celu obrazu (pode ser uma aula de Biologia ou Física…).
Krok 4: Unity: skonfiguruj O Android SDK
1- Baixe o SDK na Androida, w preferencjach Unity e selecione lub seu diretório.
2- Wyeliminuj platformę kompilacji do Unity dla Androida, assim conseguiremos gerar lub APK.
3- Instale o apk em um dispositivo (não esqueça de allowir fontes desconhecidas nas configurações).
Krok 5: Criando Servidor Local E Recebendo Informações Em Python
Concluídas as configurações apresentadas, podemos acessar o Sistema Linaro dentro da placa i używaj różnych języków como C++, Java, Python, itp., para criar o software que será executado. Este software é responsável por receber os dados lidos pelo sensor, processar e tratar estes dados conforme solicitado pelo programa. Depois carrega esses dados para o servidor alocado na própria placa para enviar os dados já tratados para a plataforma Unity. Os exemplos de código deste projeto estão w języku Phyton. O Dados Sao transferidos z Dragonboard 410c dla Unity i Sapresentados em um aplikacji.
Seguem os códigos mag_python.py (leitor de dados do sensor), server2.py (Servidor local), Executável no Shell:
Código mag_python.py
#!/usr/bin/python
# Autor: Jon Trulson
# Prawa autorskie (c) 2015 Intel Corporation.
#
# Niniejszym udziela się nieodpłatnego zezwolenia każdej osobie uzyskującej
# kopię tego oprogramowania i powiązanych plików dokumentacji (# „Oprogramowanie”), do korzystania z Oprogramowania bez ograniczeń, w tym
# bez ograniczeń prawa do używania, kopiowania, modyfikowania, łączenia, publikowania, # rozpowszechniać, udzielać podlicencji i/lub sprzedawać kopii Oprogramowania oraz
# zezwolić na to osobom, którym udostępniane jest Oprogramowanie, z zastrzeżeniem:
# następujące warunki:
#
# Powyższa informacja o prawach autorskich i niniejsza informacja o zezwoleniu powinny być
# zawarte we wszystkich kopiach lub istotnych fragmentach Oprogramowania.
#
# OPROGRAMOWANIE JEST DOSTARCZANE „TAK JAK JEST”, BEZ JAKICHKOLWIEK GWARANCJI, # WYRAŹNE LUB DOROZUMIANE, W TYM MIĘDZY INNYMI GWARANCJE
# SPRZEDAWALNOŚĆ, PRZYDATNOŚĆ DO OKREŚLONEGO CELU ORAZ
# BEZ NARUSZENIA. W ŻADNYM WYPADKU AUTORZY LUB WŁAŚCICIELE PRAW AUTORSKICH NIE BĘDĄ
# ODPOWIEDZIALNY ZA WSZELKIE ROSZCZENIA, SZKODY LUB INNĄ ODPOWIEDZIALNOŚĆ, ZARÓWNO W DZIAŁANIU
# UMOWY, CZYNNEGO LUB INNEGO, WYNIKAJĄCYCH Z LUB W POŁĄCZENIU
# Z OPROGRAMOWANIEM LUB KORZYSTANIEM Z OPROGRAMOWANIA LUB INNYMI CZYNNIKAMI.
from _future_ import print_function
czas importu, sys, sygnał, atexit, urllib, urllib2, math
z upm import pyupm_mpu9150 jako sensorObj
def główna():
# dane = {}
# data['magnetrometro'] = raw_input("Podaj temperaturę")
# dane = urlib.urlencode(dane)
# post_request = urlib2. Request(post_url, dane, nagłówki)
# próbować:
# post_response = urlib2.urlopen(post_request)
# drukuj post_response.read()
# z wyjątkiem URLError jako e:
# print "Błąd: ", e.reason
# Utwórz wystąpienie MPU9250 na magistrali I2C 0
czujnik = obiekt czujnika. MPU9250()
## Obsługa wyjścia ##
# Ta funkcja powstrzymuje Pythona przed drukowaniem śladu stosu po naciśnięciu Ctrl
def SIGINTHandler(znak, ramka):
podnieść SystemExit
# Ta funkcja pozwala uruchomić kod przy wyjściu
def Obsługa wyjścia():
print("Wychodzenie")
sys.exit(0)
# Zarejestruj programy obsługi wyjścia
atexit.register(exitHandler)
sygnał.sygnał(sygnał. SIGINT, SIGINTHandler)
sensor.init()
x = obiekt_czujnika.new_floatp()
y = obiekt_czujnika.new_floatp()
z = obiekt_czujnika.new_floatp()
natomiast (1):
sensor.aktualizacja()
sensor.getAccelerometer(x, y, z)
# drukuj ("Akcelerometr:")
# 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
# drukuj(modulo1)
modulo1 = („%.1f” % abs(((modulo1**0,5)-1)*9,8))
# drukuj (modulo1)
#
# sensor.getGyroscope(x, y, z)
# print("Żyroskop: 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("Magnetometr: MX: ", sensorObj.floatp_value(x), end=' ')
# print(" MÓJ: ", obiekt_czujnika.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
# drukuj(modulo2)
modulo2 = ("%.2f" % (modulo2**0.5))
# drukuj (modulo2)
arq = otwórz('/tmp/dados.txt', 'w')
tekst =
texto.append(str(modulo2)+", "+str(modulo1))
arq.writelines(tekst)
arq.zamknij()
# link = ('https://data.sparkfun.com/input/0lwWlyRED5i7K0AZx4JO?private_key=D6v76yZrg9CM2DX8x97B&mag='+str(modulo2))
# drukuj ('enviando dados')
# wyślij = urllib2.urlopen(link)
# strona = wyślij.odczyt()
# Drukuj stronę)
# link = ('https://data.sparkfun.com/input/1noGndywdjuDGAGd6m5K?private_key=0mwnmR9YRgSxApAo0gDX&acel='+str(modulo1))
# drukuj ('enviando dados')
# wyślij = urllib2.urlopen(link)
# strona = wyślij.odczyt()
# Drukuj stronę)
# print("Temperatura: ", sensor.getTemperature())
# drukuj()
# czas.sen(.5)
if _name_ == '_main_':
Główny()
Código do Servidor Local
czas importu
importuj serwer BaseHTTPServer
HOST_NAME = '172.17.56.9' # !!! PAMIĘTAJ, ABY TO ZMIENIĆ!!!
PORT_NUMBER = 80 # Może ustaw to na 9000.
a=0
class MyHandler(BaseHTTPServer. BaseHTTPRequestHandler):
def do_HEAD(s):
s.send_response(200)
s.send_header("Typ treści", "text/html")
s.end_headers()
def do_GET(ów):
dados = le_dados()
druk (dados)
"""Odpowiedz na żądanie GET."""
jeśli s.path=="/1":
s.send_response(200)
s.send_header("Typ treści", "tekst/zwykły")
s.end_headers()
s.wfile.write(dados)
elif s.path=="/2":
s.send_response(200)
s.send_header("Typ treści", "tekst/zwykły")
s.end_headers()
s.wfile.write("2")
w przeciwnym razie:
s.send_response(200)
s.send_header("Typ treści", "tekst/zwykły")
s.end_headers()
s.wfile.write(dados)
#s.wfile.write("nie znaleziono!!")
def le_dados():
arq = otwórz('/tmp/dados.txt', 'r')
tekst = arq.readline()
arq.zamknij()
zwróć teksto
if _name_ == '_main_':
server_class = BaseHTTPServer. HTTPServer
httpd = klasa_serwera((NAZWA_HOSTA, NUMER_PORTU), MójHandler)
print time.asctime(), "Serwer uruchamia się - %s:%s" % (NAZWA_HOSTA, PORT_NUMBER)
próbować:
a=a+2
httpd.serve_forever()
z wyjątkiem KeyboardInterrupt:
przechodzić
httpd.server_close()
print time.asctime(), "Serwer zatrzymuje się - %s:%s" % (NAZWA_HOSTA, PORT_NUMBER)
Código de Execução dos Códigos anteriores no Shell
#!/kosz/bash
echo "uruchamianie mag_pythona"
sudo python mag_python.py &
echo "uruchom serwer"
sudo python server2.py
Krok 6: Wynik końcowy
Feito isso jako aulas poderão ser auxiliadas i incrementadas pelo projekt Smart Lesson desenvolvido z Dragonboard 410c. Servindo de facilitador e proporcionando um maior aprendizado nos sistemas de ensino tanto público quanto privado.
LINK do aplikacji bez Google Play:
Link para códigos Py:
Zalecana:
Inteligentna skrytka: 7 kroków
Inteligentna skrytka: W tej instrukcji pokażę, jak zrobić inteligentną skrytkę. Skrzynka jest zasilana przez Arduino (UNO) i wykorzystuje RFID oraz silnik serwo do kontrolowania dostępu, jednocześnie śledząc dane przychodzące z różnych czujników. być przechowywane w
Inteligentna boja [Podsumowanie]: 8 kroków (ze zdjęciami)
Smart Buoy [Podsumowanie]: Wszyscy kochamy morze. Jako kolektyw gromadzimy się w nim na wakacje, uprawiać sporty wodne lub zarabiać na życie. Ale wybrzeże to dynamiczny obszar zdany na łaskę fal. Podnoszący się poziom mórz skubnie plaże i potężne wydarzenia ekstremalne, takie jak hurri
Lekcja 2: Używanie Arduino jako źródła zasilania dla obwodu: 6 kroków
Lekcja 2: Używanie Arduino jako źródła zasilania dla obwodu: Witam ponownie, studenci, na mojej drugiej lekcji mojego kursu, aby uczyć podstaw elektroniki. Dla tych, którzy nie widzieli mojej pierwszej lekcji, która opisuje bardzo, bardzo, podstawy obwodów, zobaczcie to teraz. Dla tych, którzy widzieli już mój poprzedni le
Warsztaty Java - Lekcja nr 1: 9 kroków
Warsztaty Java - Lekcja 1: Witaj w warsztatach Java - Lekcja #1. Ta lekcja jest dostarczana przez klasę Code() w Virginia Tech
Arduino Tank Car Lekcja 6-Kontrola Hot Spot przez Bluetooth i Wi-Fi: 4 kroki
Lekcja Arduino Tank Car 6 - Sterowanie Hot Spot przez Bluetooth i Wifi: W tej lekcji nauczymy się sterować aplikacją mobilną samochodu Robot przez Wi-Fi i Bluetooth. przez odbiornik podczerwieni w poprzednich lekcjach. W tej lekcji nauczymy się