Redboard Qwiic

Enginursday: Uma nova experiência sensorial com o escudo de Cthulhu – Notícias

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Usando o conjunto Arduino Shield e Electrode da Sapien LLC, podemos expandir nossos sentidos humanos.





Favorito



Favorito


1

Há muitos anos, trabalhei na área médica, ajudando pessoas com deficiências físicas e mentais. A tecnologia assistiva / adaptativa pode ser proibitivamente cara e proprietária. Isso dificulta o acesso e a adaptação a uma necessidade específica. Quando soube que uma empresa local estava criando “a primeira plataforma de desenvolvimento de substituição sensorial / aumento sensorial de código aberto do mundo para o Arduino” Peguei meu RedBoard Qwiic e comecei ansiosamente a planejar um projeto.

Redboard Qwiic

O Escudo Cthulhu

Para aqueles que não estão familiarizados com o Cthulhu Shield, é um escudo do Arduino com pegada R3 capaz de enviar e receber informações de um conjunto de eletrodos que é colocado na sua língua. Isso permite que um indivíduo controle coisas como um mouse apenas com a língua. Ele também permite a saída de dados para o conjunto de eletrodos, onde produz sensação através de pulsos de tensão bifásicos no eletrodo. A sensação resultante é semelhante ao doce Pop Rocks. Como eu queria que meu projeto fosse portátil, liguei meu RedBoard com uma simples bateria de 9V.


Escudo de Cthulhu

25 disponíveis

SEN-15897

O Cthulhu Shield é a primeira plataforma de desenvolvimento de substituição sensorial e aprimoramento sensorial de código aberto do mundo.

texto alternativo

Se você estiver interessado na ciência por trás disso ou quiser saber mais sobre a empresa, recomendo ver a página do Kickstarter.

Mais informações sobre o escudo de Cthulhu
Matriz de eletrodo

Aqui vamos nós!

Substituição sensorial por sensor de distância

Eu queria testar o quão bem eu poderia confiar em um sensor no lugar dos meus olhos para navegar no edifício. Usei nosso sensor de distância VL53l1x e defina três limites diferentes. Se um objeto detectado estivesse a menos de um metro de distância, os eletrodos seriam ajustados para uma saída intensa; entre 3-10 pés, uma saída média; e nenhuma saída se o objeto estiver a mais de 10 pés de distância.

texto alternativo

Como é ser um morcego?

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
#include 

#include 
#include 
#include 
#include 
#include 

#include 
#include "SparkFun_VL53L1X.h"



int started = 0;



SFEVL53L1X distanceSensor;
//Uncomment the following line to use the optional shutdown and interrupt pins.
//SFEVL53L1X distanceSensor(Wire, SHUTDOWN_PIN, INTERRUPT_PIN);


Cthulhu mycthulhu; //creating and instance of Cthulhu



int array[18];

//array to hold which electrodes should be on or off.
int trodes[] = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;

//pulse period for each electrode, in microseconds. Can be manipulated with Pp and IN to change the intensity of the sensation.
int  PP[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10;

//length of positive pulse for each electrode, in microseconds. Can be manipulated with PP and IN to change the intensity of the sensation.
int  Pp[] = 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9;

//inner burst number (how many pulses in each inner burst). Can be manipulated with PP and Pp to change the intensity of the sensation.
int  IN[] = 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3;

//inner burst period.  In microseconds. Can change quality, or 'feel' of sensation.
int  IP[] = 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150;

//Outer burst number. Can change quality, or 'feel' of sensation.
int  ON[] = 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5;


//Requirements:
//Pp must be less than PP.                    CheckWaveform Error 1.
//(PP*IN) must be less than IP.               CheckWaveform Error 2.
//IP*IN must be less than 2000 microseconds.  CheckWaveform Error 3.


void setup(void)

  Serial.begin(9600);



void loop(void)

  Wire.begin();

  mycthulhu.Begin(); //Initialize Cthulhu library
  oldone();

  distance();






void oldone()




  //mycthulhu.Begin(); //Initialize Cthulhu library
  //check our waveform parameters and verify that they meet requirements
  int myerror = mycthulhu.CheckWaveform(trodes, PP, Pp, IN, IP, ON);

  if (myerror == 0) //if our waveform parameters are ok, update the stimulation parameters and perform one 36ms stimulation cycle.
  
    mycthulhu.UpdateStimuli(trodes, PP, Pp, IN, IP, ON); //update waveform parameters
    mycthulhu.Stimulate(); //create the stimulation pulsetrain on the electrodes
  
  else
  
    //if we entered an invalid waveform, tell us which rule we violated so we can fix it
    Serial.print("Error in waveform parameters. CheckWaveform Error: "); Serial.println(myerror);
  
  // Wire.end();
  delay(100); // increased delay to avoid eagleye conflict.


void distance ()





  distanceSensor.begin();



  distanceSensor.startRanging(); //Write configuration bytes to initiate measurement
  int distance = distanceSensor.getDistance(); //Get the result of the measurement from the sensor
  distanceSensor.stopRanging();

  Serial.print("Distance(mm): ");
  Serial.print(distance);

  float distanceInches = distance * 0.0393701;
  float distanceFeet = distanceInches / 12.0;

  Serial.print("tDistance(ft): ");
  Serial.print(distanceFeet, 2);

  Serial.println();
  if ( distanceFeet < 3)
  
    for (int i = 0; i < 18; i++)
    
      trodes[i] = 1;
      PP[i] = 40;
      Pp[i] = 39;
      ON[i] = 8;

    
  

  if (( distanceFeet < 10) && (distanceFeet > 3))
  
    for (int i = 0; i < 18; i++)
    

      trodes[i] = 1;
      PP[i] = 10;
      Pp[i] = 9;
      ON[i] = 5;

    
  
  if ( distanceFeet > 10)
  

    for (int i = 0; i < 18; i++)
    
      trodes[i] = 0;
      PP[i] = 10;
      Pp[i] = 9;
      ON[i] = 5;

    
  


Aumento sensorial com sensor infravermelho Eagle Eye

Quando eu estava pensando em qual novo sentido eu queria ter, pensei imediatamente em um certo caçador de alienígenas - um predador, se preferir - que usava a visão infravermelha para rastrear suas presas. As cobras também têm um órgão de fosso que lhes permite usar a IR.

Usei nosso sensor de infravermelho Eagle Eye, que convenientemente já usa uma matriz de grade e reduzi a resolução de 64 pontos para 16 no Cthulhu Shield. Isso permitiu alguma sensação posicional. Se um objeto "quente" se aproximasse da minha esquerda para o campo de visão, eu o sentiria primeiro no lado esquerdo da minha língua. À medida que o objeto se movia através do meu FOV ou quando movia meu sensor em direção ao objeto, eu podia sentir quando estava centrado na frente do sensor.

Naturalmente, prendi o sensor a uma máscara, coloquei os eletrodos na boca, peguei uma arma Nerf e comecei a caçar.

texto alternativo

Vá para o helicóptero!

#include 
#include 
int started = 0;

#include 


#define HOT 30
#define COLD 20

// This table can be of type int because we map the pixel
// temperature to 0-3. Temperatures are reported by the
// library as floats
int pixelTable[64];
//int transarray[64];
GridEYE grideye;



Cthulhu mycthulhu; //creating and instance of Cthulhu



int array[18];


//two arrays I used to generate geometric patterns

int cElectrodeMap[5][4] =

  0, 0, 1, 0,
  2, 3, 4, 5,
  6, 7, 8, 9,
  10, 11, 12, 13,
  14, 15, 16, 17
;

int on[5][4] =

  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0
;


//array to hold which electrodes should be on or off.
int trodes[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;

//pulse period for each electrode, in microseconds. Can be manipulated with Pp and IN to change the intensity of the sensation.
int  PP[] = 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40;

//length of positive pulse for each electrode, in microseconds. Can be manipulated with PP and IN to change the intensity of the sensation.
int  Pp[] = 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39;

//inner burst number (how many pulses in each inner burst). Can be manipulated with PP and Pp to change the intensity of the sensation.
int  IN[] = 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3;

//inner burst period.  In microseconds. Can change quality, or 'feel' of sensation.
int  IP[] = 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150;

//Outer burst number. Can change quality, or 'feel' of sensation.
int  ON[] = 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8;


//Requirements:
//Pp must be less than PP.                    CheckWaveform Error 1.
//(PP*IN) must be less than IP.               CheckWaveform Error 2.
//IP*IN must be less than 2000 microseconds.  CheckWaveform Error 3.

void setup(void)




void loop(void)



  mycthulhu.Begin(); //Initialize Cthulhu library
  oldone();

  Wire.begin();


  Serial.begin(115200);
  eagle();


void oldone()




  //mycthulhu.Begin(); //Initialize Cthulhu library
  //check our waveform parameters and verify that they meet requirements
  int myerror = mycthulhu.CheckWaveform(trodes, PP, Pp, IN, IP, ON);

  if (myerror == 0) //if our waveform parameters are ok, update the stimulation parameters and perform one 36ms stimulation cycle.
  
    mycthulhu.UpdateStimuli(trodes, PP, Pp, IN, IP, ON); //update waveform parameters
    mycthulhu.Stimulate(); //create the stimulation pulsetrain on the electrodes
  
  else
  
    //if we entered an invalid waveform, tell us which rule we violated so we can fix it
    Serial.print("Error in waveform parameters. CheckWaveform Error: "); Serial.println(myerror);
  
  //Wire.end();
  delay(100); // increased delay to avoid eagleye conflict.


void eagle ()

  int x = 0;
  //Wire.begin();
  grideye.begin();

  // loop through all 64 pixels on the device and map each float value to a number
  // between 0 and 3 using the HOT and COLD values we set at the top of the sketch
  for (unsigned char i = 0; i < 64; i++) 
    pixelTable[i] = map(grideye.getPixelTemperature(i), COLD, HOT, 0, 3);
  


  // loop through the table of mapped values and print a character corresponding to each
  // pixel's temperature. Add a space between each. Start a new line every 8 in order to
  // create an 8x8 grid
  for (unsigned char i = 1; i < 64; i++) 
    if (pixelTable[i] == 0) 
      Serial.print(".");
      if ( (i % 4 ) == 0)
      
        trodes[i / 4] = 0;
      
    

    else if (pixelTable[i] == 1) 
      Serial.print("o");
      if ( (i % 4 ) == 0)
      
        trodes[i / 4] = 1;
      
    
    else if (pixelTable[i] == 2) 
      Serial.print("0");
      if ( (i % 4 ) == 0)
      
        trodes[i / 4] = 1;
      
    
    else if (pixelTable[i] == 3) 
      Serial.print("O");
      if ( (i % 4 ) == 0)
      
        trodes[i / 4] = 1;
      
    
    Serial.print(" ");
    if ((i + 1) % 8 == 0) 
      Serial.println();
    
  

  // in between updates, throw a few linefeeds to visually separate the grids. If you're using
  // a serial terminal outside the Arduino IDE, you can replace these linefeeds with a clearscreen
  // command
  Serial.println();
  Serial.println();


  // toss in a delay because we don't need to run all out
  delay(100);



Avançando com o Escudo de Cthulhu

Leva tempo e prática para começar a aumentar a sensibilidade à posição e força dos eletrodos na matriz. Alterei as configurações de saída dos eletrodos para produzir o máximo de sensação possível para ajudar com minha língua não iniciada. Planejo reduzir isso à medida que melhora a análise da força e da posição dos eletrodos. Também tive um problema ao usar dispositivos I2C em que, se eu mordesse completamente o eletrodo, a placa congelaria onde estava no circuito. Como resultado, eu precisava colocá-lo cuidadosamente na minha língua ou bloquear um dos eletrodos com algum plástico para evitar o congelamento. Não sei por que isso ocorreu, mas é para isso que os osciloscópios e as solicitações de emissão do GitHub são necessárias!

Escudo de Cthulhu anexado ao Nerd

Pronto para sentir um mundo totalmente novo!

Com um mundo inteiro de sensores e dados por aí, o limite para o Cthulhu Shield é a nossa imaginação. Se você pudesse se dar um novo sentido, qual seria? A capacidade de detectar compostos orgânicos voláteis totais? Use o GPS para ajudar a guiar-se ao seu destino?

Blogs Relacionados:

https://holidayservice-tn.com/20-melhores-aplicativos-de-laptop-para-2017-que-solucionam-problemas-reais/

https://draincleaningdenverco.com/como-o-meny-pode-ser-ainda-melhor-no-facebook/

https://clipstudio.com.br/como-encontrar-e-contratar-o-seu-primeiro-rockstar-membro-da-equipe/

https://proverasfestas.com.br/ferramenta-de-palavra-chave-de-bing-como-usar-essa-alternativa-eficiente-de-custos/

https://coniferinc.com/vale-pena-fazer-um-marketing-na-fotografia/

https://weeventos.com.br/nucleo-net-gdiplus-dll-nao-foi-encontrado-no-ubuntu-3/

https://testmygeekstuff.com/compressao-de-foto-e-imagem-por-que-isso-e-importante-ferramentas-e-plugins/

https://responsibleradio.com/top-10-mba-faculdades-na-india/

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Leia Também  Acompanhando os avanços na tecnologia de capacitores