Tecnologia vestible

Per començar Elements d'entrada Programació CircuitPython   Recursos CITCEA
Elements no electrònics Elements de sortida Programació Arduino    
Projectes Elements de control Dades pràctiques   Inici

Sensor de so

En realitat es tracta d'un micròfon i un petit amplificador muntat en una placa. En aquest cas, no hem trobat cap model dissenyat per a tecnologia vestible però sí que hem trobat unes plaques prou petites als webs d'Sparkfun i Adafruit. Aquest darrer permet ajustar l'amplificació del senyal.

Sensor de so  [SF]             Sensor de so  [AF]

El sensor es connecta amb tres fils: els d'alimentació (positiu i negatiu) i el de senyal que connectarem a una entrada analògica, com a la imatge següent.

Connexió del sensor de so

El sensor ens dóna una lectura proporcional al senyal de so, que és una ona. Atès que les entrades analògiques només admeten tensions positives, el sensor suma la meitat de la tensió d'alimentació al senyal de sortida. Això vol dir que en silenci llegirem un valor de 511 i quan hi ha so tindrem valors que oscil·laran al voltant d'aquest nombre. Si volem conèixer el nivell de so actual caldrà tractar els valors llegits per trobar l'amplitud del so. Una forma senzilla és llegir el senyal durant un cert temps (per exemple 0,1 s) i guardar-se el valor més gran i el més petit. Acabat aquest temps, l'amplitud serà la resta dels dos; llavors podrem tornar a mirar l'evolució del senyal.

En molts casos, però, en tindrem prou amb un programa més senzill. Per exemple, quan volem que una acció es faci quan el nivell de so supera un determinat llindar el programa serà tan senzill com una comparació. El programa següent (per a l'entron Arduino) activa el LED de la placa quan sent un so prou fort (un xiulet o picar de mans) i el desactiva quan torna a sentir un altre so fort.

int lectura = 0;
int estatLED = LOW;
void setup() {
	Serial.begin(9600);
	pinMode(7, OUTPUT);   // LED de la placa
}
void loop() {
	lectura = analogRead(A9);  // Correspon a la pota D9   
	if (lectura >= 700) {   // El 700 es pot variar per ajustar la sensibilitat
		estatLED = !estatLED;   // Invertim l'estat del LED
		digitalWrite(7, estatLED);
	}
	Serial.println(lectura); 
	delay(200);  // Espera 0,2 s
}

Aquest altre programa fa una cosa similar en CircuitPython comptant que el sensor està a A0.

import board
import digitalio
import analogio
import time
sensor = analogio.AnalogIn(board.A0)
led = digitalio.DigitalInOut(board.D13)
led.direction = digitalio.Direction.OUTPUT
while True:
    lect = sensor.value
    if lect > 45000:  # El valor es pot variar per ajustar la sensibilitat
        led.value = not led.value  # Invertim l'estat del LED
    time.sleep(0.5)

Atenció: Tingueu present que en molts casos les entrades binàries i analògiques corresponents a la mateixa pota no tenen el mateix número.

 

 

 

En aquest web, les fotografies marcades amb [AF] són del web d'Adafruit, les marcades amb [SF] del web d'Sparkfun i les marcades amb [AU] del web d'Arduino.

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.