Mundarija:

Aqlli dars: 6 qadam
Aqlli dars: 6 qadam

Video: Aqlli dars: 6 qadam

Video: Aqlli dars: 6 qadam
Video: 6-hikmat. Duoning ijobati kechikishi umidsizlikka sabab bo'lmasin | 10-dars | Himmatlarni uyg'otish 2024, Iyul
Anonim
Aqlli dars
Aqlli dars

Aqlli darsning vizasi yo'q, u erda hech qanday kafolat yo'q. de aula an'anaviy.

1 -qadam: materiallar

Materiallar
Materiallar

Dragonboard 410c dasturi:

- Dragonboard 410c;

- Cabo HDMI;

-USB orqali Teclado -USB -monitor orqali sichqoncha;

- 96 ta taxta taxtasi;

Dastur ijrochisi:

- Dragonboard 410c;

- 96 ta taxta taxtasi;

- Sensor Grove IMU 10DOF MPU - 9250 (sensorli sensorlar);

- Fonte de alimentação externa 11.1V;

- jumper fêmea-fêmea;

2 -qadam: Dragonboard 410c Com Mezzanine 96Boards: Konfiguratsiya E Pinagem

Dragonboard 410c Com Mezzanine 96Boards: Konfiguratsiya E Pinagem
Dragonboard 410c Com Mezzanine 96Boards: Konfiguratsiya E Pinagem
Dragonboard 410c Com Mezzanine 96Boards: Konfiguratsiya E Pinagem
Dragonboard 410c Com Mezzanine 96Boards: Konfiguratsiya E Pinagem
Dragonboard 410c Com Mezzanine 96Boards: Konfiguratsiya E Pinagem
Dragonboard 410c Com Mezzanine 96Boards: Konfiguratsiya E Pinagem

O Shield Mezzanine, Dragonboard 410c, 3.3V / 5V (daraja almashtirgich), shuningdek, 1.8V masofada joylashgan. Magnitometrli sensori MPU -9250 Grove -IMU 10DOF, xususan:

Quvvat manbai: 5V / 3.3V;

Quvvat: 6mA;

Komunika Seriyali;

Pino: VCC, GND, SDA va SCL;

I2C interfeysi;

Masalan, Grove I2C0 (5V) va sensorli sensorlar uchun zarur bo'lgan barcha ketma -ketlikdagi ulanishlar. (haqiqiy tasavvur)

3 -qadam: Integrachao: Birlik + Vuforiya

Integratsiya: Birlik + Vuforiya
Integratsiya: Birlik + Vuforiya

1- Veb-saytni o'chirib tashlaganingizdan so'ng, siz saytni o'chirib qo'yishingiz mumkin.

2- Vazifa menejeri va maqsadli menejerni kuzatish- bu kuzatuv (kvartira majmuasi).

3- Unity-ni import qilish uchun Feito ma'lumotlar bazasi mavjud.

4- Unity konfiguratsiya qilinmaydi, chunki u 3D tasvirini yaratadi, shuning uchun siz mahalliy dasturni yaratishingiz mumkin.

5- "Unity" ni sozlash va sozlashning asosiy sharti.

6- Tasvirni nishonga olish uchun 3D formatdagi dasturiy komponentlar (masalan, Biologiya yoki Fisika bo'limi) tayyorlanadi.

4 -qadam: Birlik: O Android SDK -ni sozlang

Birlik: O Android SDK -ni sozlang
Birlik: O Android SDK -ni sozlang

1- Android-da SDK-ni tanlang, Unity-ni tanlang va boshqaring.

2- Android-da Unity-ni o'rnatish uchun platforma tuzish kerak.

3- Fayllarni o'rnatish (o'rnatish uchun ruxsatnoma shriftlari).

5 -qadam: Mahalliy Criando Servidor va Python ma'lumotlari

Criando Servidor Mahalliy E Recebendo Ma'lumotlari Python
Criando Servidor Mahalliy E Recebendo Ma'lumotlari Python

C ++, Java, Python va boshqalar bilan bir qatorda, tizimni o'rnatish ham mumkin bo'lgan dasturlar va dasturlarning konfiguratsiyasi. Sensorli dasturiy ta'minot uchun javob beradigan dastur, bu sizning sensorli protsessoringiz, dasturiy ta'minot va dasturiy ta'minot dasturlari uchun javob beradi. Depois carrega esses ota -onalar uchun xizmatlar birligi va birligi uchun plataforma uchun mo'ljallangan. Misol uchun, Phyton lingvagel tilidagi loyihalar yordamida. Dragonboard 410c yoki Unity -ni taqdim etadigan ilovalar.

Seguem os códigos mag_python.py (datchiklar sensori), server2.py (mahalliy xizmatlar), Shell -ni bajaring:

Codigo mag_python.py

#!/usr/bin/python

# Muallif: Jon Trulson

# Mualliflik huquqi (c) 2015 Intel korporatsiyasi.

#

# Ruxsat shu tarzda, har qanday shaxsga tekin beriladi

# ushbu dasturiy ta'minot va tegishli hujjatlar fayllarining nusxasi (# "Dasturiy ta'minot"), dasturiy ta'minot bilan cheklanmagan holda shug'ullanish, shu jumladan

# foydalanish, nusxalash, o'zgartirish, birlashtirish, nashr etish huquqlari cheklanmagan holda

# dasturiy ta'minot nusxalarini tarqatish, litsenziyalash va/yoki sotish

# dasturiy ta'minot ta'minlangan shaxslarga ruxsat berilgan

# quyidagi shartlar:

#

# Yuqoridagi mualliflik huquqi to'g'risidagi bildirishnoma va bu ruxsatnoma xabari bo'lishi kerak

# dasturiy ta'minotning barcha nusxalariga yoki katta qismlariga kiritilgan.

#

# Dasturiy ta'minot "qanday bo'lsa," ham shunday kafolatlanmagan holda taqdim etiladi, # EXPRESS yoki IMPLIED, shu jumladan, lekin kafolatlari bilan chegaralanmagan.

# SAVDO BO'LISH, AYNI MAKSADGA MUVOFIQ VA

#NONFRINGEMENT. Hech qanday holatda ham mualliflar yoki mualliflik huquqi egalari bo'lmaydi

# Har qanday da'vo, zarar yoki boshqa mas'uliyat uchun javobgar.

# Shartnoma, qiynoq yoki boshqasi, kelib chiqishi, ulanishi yoki tashqarisida

# Dasturiy ta'minot yoki dasturiy ta'minotdan foydalanish yoki boshqa shartlar bilan.

_future_ dan import print_function

import vaqti, sys, signal, atexit, urllib, urllib2, matematika

upup import pyupm_mpu9150 dan sensorObj sifatida

def main ():

# ta ma'lumot = {}

# ma'lumot ['magnetrometro'] = xom_ kirish ("Harorat haqida ma'lumot berish")

# ma'lumotlar = urlib.urlencode (ma'lumotlar)

# post_request = urlib2. Talab (post_url, ma'lumotlar, sarlavhalar)

# harakat:

# post_response = urlib2.urlopen (post_request)

# chop etish post_response.read ()

# dan tashqari URLError:

# chop etish "Xato:", e.sabab

# 0 I2C avtobusida MPU9250 -ni yarating

Sensor = sensorObj. MPU9250 ()

## Chiqish ishlovchilari ##

# Bu funksiya C-ni bosganingizda pythonning stacktrace-ni chop etishini to'xtatadi

def SIGINTHandler (signal, ramka):

SystemExit -ni ko'taring

# Bu funksiya chiqishda kodni ishga tushirishga imkon beradi

def exitHandler ():

chop etish ("Chiqish")

sys.exit (0)

# Chiqish ishlovchilarini ro'yxatdan o'tkazing

atexit.register (exitHandler)

signal.signal (signal. SIGINT, SIGINTHandler)

sensor.init ()

x = sensorObj.new_floatp ()

y = sensorObj.new_floatp ()

z = sensorObj.new_floatp ()

vaqt (1):

sensor.update ()

sensor.getAkselerometr (x, y, z)

# chop etish ("Akselerometr:")

# chop etish ("AX: %.4f" % sensorObj.floatp_value (x), end = '')

# chop etish ("AY: %.4f" % sensorObj.floatp_value (y), end = '')

# chop etish ("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

# chop etish (modulo1)

modulo1 = (" %.1f" % abs (((modulo1 ** 0.5) -1)*9.8))

# chop etish (modulo1)

#

# sensor.getGiroskop (x, y, z)

# chop etish ("Gyroscope: GX:", sensorObj.floatp_value (x), end = '')

# chop etish ("GY:", sensorObj.floatp_value (y), end = '')

# chop etish ("GZ:", sensorObj.floatp_value (z))

sensor.getMagnitometr (x, y, z)

# chop etish ("Magnetometr: MX:", sensorObj.floatp_value (x), oxiri = '')

# chop etish ("MY:", sensorObj.floatp_value (y), end = '')

# chop etish ("MZ:", sensorObj.floatp_value (z))

modulo2 = sensorObj.floatp_value (x) ** 2+sensorObj.floatp_value (y) ** 2+sensorObj.floatp_value (z) ** 2

# chop etish (modulo2)

modulo2 = (" %.2f" % (modulo2 ** 0,5))

# chop etish (modulo2)

arq = ochiq ('/tmp/dados.txt', 'w')

matn =

texto.append (str (modulo2)+","+str (modulo1))

arq.yozuvlari (matn)

arq.close ()

# havola = ('https://data.sparkfun.com/input/0lwWlyRED5i7K0AZx4JO?private_key=D6v76yZrg9CM2DX8x97B&mag='+str(modulo2))

# chop etish ("enviando dados")

# yuborish = urllib2.urlopen (havola)

# sahifa = send.read ()

# chop etish (sahifa)

# havola = ('https://data.sparkfun.com/input/1noGndywdjuDGAGd6m5K?private_key=0mwnmR9YRgSxApAo0gDX&acel='+str(modulo1))

# chop etish ("enviando dados")

# yuborish = urllib2.urlopen (havola)

# sahifa = send.read ()

# chop etish (sahifa)

# chop etish ("Harorat:", sensor.getTemperature ())

# chop etish ()

# vaqt. uxlash (.5)

agar _name_ == "_main_" bo'lsa:

asosiy ()

Codigo do Servidor Local

import vaqti

BaseHTTPServer -ni import qilish

HOST_NAME = '172.17.56.9' # !!! BUNI O'ZGARTIRISHNI UNUTMANG !!!

PORT_NUMBER = 80 # Balki buni 9000 qilib belgilang.

a = 0

MyHandler klassi (BaseHTTPServer. BaseHTTPRequestHandler):

def do_HEAD (lar):

s.send_response (200)

s.send_header ("Kontent turi", "matn/html")

s.end_headers ()

def do_GET (lar):

dados = le_dados ()

chop etish (dados)

"" "GET so'roviga javob bering." ""

agar s.path == "/1":

s.send_response (200)

s.send_header ("Kontent turi", "matn/oddiy")

s.end_headers ()

s.wfile.write (dados)

elif s.path == "/2":

s.send_response (200)

s.send_header ("Kontent turi", "matn/oddiy")

s.end_headers ()

s.wfile.write ("2")

boshqa:

s.send_response (200)

s.send_header ("Kontent turi", "matn/oddiy")

s.end_headers ()

s.wfile.write (dados)

#s.wfile.write ("topilmadi !!")

def le_dados ():

arq = ochiq ('/tmp/dados.txt', 'r')

matn = arq.readline ()

arq.close ()

matnni qaytarish

agar _name_ == "_main_" bo'lsa:

server_class = BaseHTTPServer. HTTPServer

httpd = server_class ((HOST_NAME, PORT_NUMBER), MyHandler)

chop etish vaqti.asctime (), "Server boshlanadi - %s: %s" %(HOST_NAME, PORT_NUMBER)

harakat qilib ko'ring:

a = a+2

httpd.serve_forever ()

KeyboardInterruptdan tashqari:

o'tish

httpd.server_close ()

chop etish vaqti.asctime (), "Server to'xtaydi - %s: %s" %(HOST_NAME, PORT_NUMBER)

Codigo de Execução dos Códigos anteriores no Shell

#!/bin/bash

echo "mag_pythonni ishga tushirish"

sudo python mag_python.py &

echo "serverni ishga tushirish"

sudo python server2.py

6 -qadam: Final natijasi

Yakuniy natija
Yakuniy natija

Feito, shuningdek, Dragonboard 410c -dan Smart Lesson -ni ishlab chiqish uchun qo'shimcha yordam dasturlari sifatida ishlatiladi. Xizmatlar va tizimlar maxsus dasturiy ta'minot bilan ta'minlanadi.

Google Play ilovasi uchun havola:

Py uchun havola:

Tavsiya: