Introduction: Surfboard Data Feeder
O projeto visa acoplar dispositivos eletrônicos numa prancha de surf com intuito de coletar dados que contribuem com a experiência do surfista, processo fabril e com o meio ambiente. Experiência com o surfista por disponibilizar informações sobre as características dele durante prática do surf, informações relevantes em tempo real sobre a área em que está, entre outras. No processo fabril, pois com os dados da característica do surfista é possível construir pranchas com a distribuição da flutuação e flexibilidade adequada para um determinado surfista, de acordo com a maneira que surfa. Do meio ambiente, pois sensores acoplados na prancha podem coletar dados ambientais durante a prática do esporte para cientistas, governo e cidadãos.
É possível coletar o trajeto com o GPS, a flutuação pode ser calculada com o valor da pressão atmosférica, a flexibilidade pode ser coletada por meio de sensores flexíveis, o posicionamento do surfista e a pressão podem ser coletados com sensor resistível a força e as característica do mar podem ser coletadas por meio de sensores analíticos, entre outros.
Referência
SmartFin: O projeto SmartFin , apoiado pela fundação Surfrider, tem por objetivo coletar dados do oceano por meio de sensores acoplados
nas quilhas da prancha. Estes dados permitem identificar o pH, salinidade, características das ondas, temperatura, localização do GPS, oxigênio, clorofila do oceano em determinada localidade.Surfsens (Pukas + Tecnalia): O projeto em parceria com Pukas e Tecnalia instala sensores na prancha para coletar informação durante o surf, o projeto é descrito no link: http://pukassurf.com/surfboards/surfsense/ . O vídeo do projeto pode ser assistido em: http://pukassurf.com/surfboards/surfsense/ Opifex: O Opifex é um projeto brasileiro que tem por finalidade coletar informação do surf por meio de um dispositivo acoplado na prancha. Instrumented Surfboard (ISurf): Projeto de estudantes da universidade Virginia Tech que coloca sensores na prancha de surf, o vídeo do projeto está disponível em: http://pukassurf.com/surfboards/surfsense/ Samsung Galaxy Surfboard: A Samsung lançou no ano passado uma prancha de surf conceito nomeada de Galaxy Surfboard em parceria com Gabriel Medina. O link do vídeo da divulgação pode ser assistido em: http://pukassurf.com/surfboards/surfsense/ Generate your perfect surfboard from data: Rob Renn, em sua tese em projeto industrial, projeta sistema de coleta e análise dos dados para projetar o formato da prancha ideal para o surfista. Isto está publicado de maneira resumida no instructables no link: http://pukassurf.com/surfboards/surfsense/ OnboardComputer:Projeto de estudantes da universidade de San Diego na California adiciona um computador de bordo em uma prancha de surf http://pukassurf.com/surfboards/surfsense/ Rastreador de movimentos: Existem diversos dispositivos que permitem rastrear os movimentos durante prática do esporte. Entre eles estão os Smartband/Smart Watches e outros dispositivos que são fixados na prancha como o Trace Up e Xensr Air 3D GPS
Step 1: Configuração Do Ambiente/Enviroment Configuration
Para chegar na arquitetura representada pela imagem, deve-se primeiro configurar o ambiente da seguinte maneira:
- Instalar Debian Linaro
Habilitar SPI no firmware conforme, https://www.instructables.com/id/Habilitando-SPI-V...
Step 2: GPS
Instalar GPS e inicializar o serviço
sudo apt-get install gpsd-clients gnss-gpsd
sudo systemctl start qdsp-start.service sudo systemctl start gnss-gpsd.service sudo systemctl start qmi-gps-proxy.service sudo systemctl restart gpsd
Colocar a DragonBoard 410c com vista para o céu.
Executar o comando:
gpsmon
Executar o código disponibilizado em
http://www.danmandle.com/blog/getting-gpsd-to-work-with-python/
Step 3: I2C - BNO055 Com Java
BNO055
A instalação do mraa e upm permitem que seja possível acessar sensores via java. Como existe a biblioteca do BNO055 em java, então utilizou-se dessa linguagem para a leitura deste sensor. Logo, este módulo é responsável pela leitura do sensor, armazenamento e somente a operação GET é exposta na na camada da Surfboard Data Feeder REST API.
Seguem os passos que permitiram codificar o módulo de orientação em java:
Instalar Java SDK
sudo apt-get install default-jdk
Adicionar JAVA_HOME=usr/lib/jvm/default-java em /etc/enviroment
Gerar libmraajava.so
git clone https://github.com/intel-iot-devkit/mraa.git cd mraa mkdir build; cd build cmake -D BUILDSWIGNODE=OFF -D BUILDSWIGPYTHON=OFF -D BUILDSWIGJAVA=ON .. make mraajava cd src/java cp libmraajava.so /usr/lib/ cp mraa.jar ${JAVA_HOME}/jre/lib/
Se aparecer algum erro, talvez resolva instalando
sudo apt-get install software-properties-common
sudo apt install dirmngr
Executar o mesmo procedimento acima, mas no repositório do upm. É necessário passar o argumento no cmake para habilitar o java (-D BUILDSWIGJAVA=ON)
sudo cmake -DBUILDSWIGNODE=OFF -D BUILDSWIGJAVA=ON BUILDEXAMPLES=ON .. sudo java -Djava.library.path=/home/linaro/upm/build/src/bno055/ -jar upm-test2.jar
A referência utilizada para rodar o mraa e o upm com java pode ser acessada em:
https://software.intel.com/en-us/iss-iot-edition-...Após importar as dependências do upm e mraa no projeto java, então basta instanciar a classe upm_bno055.BNO055 passando como argumento o I2C e o endereço no I2C.
Segue o comando para localizar o I2C em que o sensor está conectado e o endereço do sensor no barramento:
sudo i2cdetect -y -r 0 sudo i2cdetect -y -r 1 sudo i2cdetect -y -r 3
Neste caso o i2c é o 1 e o endereço do sensor é 0x28.
Step 4: FSR Matrix
Arduino
int pinOutS0 = 8;
int pinOutS1 = 9; int pinOutS2 = 10; int pinInMux = A0; int muxState[8] = {0}; String msg; void setup() { pinMode(pinOutS0,OUTPUT); pinMode(pinOutS1,OUTPUT); pinMode(pinOutS2,OUTPUT); Serial.begin(9600); } void loop() { updateMux(); msg = ""; for(int i = 0; i < 8; i++){ if (i == 7){ msg = msg + muxState[i]; } else { msg = msg + muxState[i] + ","; } } Serial.println(msg); delay(100); } void updateMux(){ for (int i = 0; i < 8; i++){ digitalWrite(pinOutS0, HIGH && (i & B00000001)); digitalWrite(pinOutS1, HIGH && (i & B00000010)); digitalWrite(pinOutS2, HIGH && (i & B00000100)); muxState[i] = analogRead(pinInMux); } }
Código DragonBoard 410c (python)
import time
import serial import re import requestsser = serial.Serial('/dev/tty96B0',baudrate=9600,timeout=0.0) urlFsr = 'http://linaro-alip:8080/rest/fsrmatrix'while 1: dataReceived = ser.readline() #if (re.match(r'^d',dataReceived)): responseFsr = requests.post(urlFsr,data=dataReceived.strip(),headers={"Content-Type": "application/json"}) time.sleep(0.05) ser.close()
Step 5: SPI - Linker Mezzanine
Para utilizar o SPI na DragonBoard410c é necessário que o firmware seja alterado.
Após isso basta instalar o libsoc e a partir daí é possível ler os dados dos sensores analógicos pela Linker Mezzanine. As portas da Mezzanine corresponsem aos seguintes endereços: A0(0x80), A1(0x90), A2(0xA0) e A4(0xB0)
Referência