Construya su propio cargador casero para su Pebble Classic


Pebble Classic  es uno de los  modelos mas vendidos  SmartWatch con pantalla monocroma de 1,26″  basado en tecnologia e-ink (tinta electronica) que permite  leerlo incluso con luz solar directa . Gracias al bajo consumo de la pantalla le permite estar  siempre encendido    y ademas con una duración de batería  que sobrepasa con creces la semana de uso.

Como cualquier smartwatchse conecta a su smartphone Android o Ios  a través de Bluetooth para proporcionar notificaciones personalizadas y aplicaciones descargables. Ademas también lo puede personalizar con watchfaces y aplicaciones para adaptarlo a su estilo y sus intereses personales.

Otras de las posibilidades que ofreces es controlar sus aplicaciones musicales favoritos, incluyendo iTunes, Spotify y Pandora de su Pebble mientras realizas deporte (se puede realizar un seguimiento del rendimiento con la popular aplicación de fitness RunKeeper)  y por supuesto saber quien nos llama colgando o descolgando desde el propio Pebble.

Con las notificaciones, puede obtener actualizaciones discretos sobre la información que es más importante para usted. Además de identificador de llamadas, correo electrónico, mensaje de texto y alertas de calendario, puede elegir recibir notificaciones de Facebook, Twitter, Instagram y mil cosas mas,   todo ello  con un precio muy contenido  pues cuesta en Amazon menos de 50€.

Cargador casero  autoconstruido.

¿Perdió su cable cargador original de Pebble Classic  o quiere un cargador extra, para llevarlo siempre   consigo ?

Pues la buena noticia  es  que puede tener el suyo en menos de 1 hora  gracias a una impresora 3D  y un poco de cable

En  efecto realmente  nunca ha sido tan fácil construir un cargador  pues únicamente tiene que ir al repositorio  de Thingiverse,  en https://www.thingiverse.com/thing:295226    y  descargar el  directorio del proyecto

Una vez descompimido el fichoer , en el directorio creaado vera  que hay dos ficheros stl   , el primero para  la version classic  pebblecharger.stl  y el segundo  pebblesteelcharger_test.stl para la version Steel .   Este  segundo diseño es bastante diferente al original y necesita ser probado por lo que el autor lo considera aun en progreso.

pebble

Una vez  imprima en una impresora 3d  el fichero pebblecharger.stl   ( personalmente lo he hecho con PLA a 220º y la cama caliente a 70º)   solo necesitará dos piezas de alambre de metal  para hacer los contactos , tal  y como puede  ver  en el video , donde la clave es pinchar estos justo en los orificios que hay preparados en el diseño.

pebbleplastcio.png

No es necesaria una estructura de soporte a la hora de imprimirlo , pues justo empieza a imprimirse sobre uno de los   bordes ayudando así a evitar el combado.

Para los conectores  necesitará un alambre de metal que sea lo suficientemente flexible como para darle forma, pero lo suficientemente rígido como para mantener su forma al final. Para poner los cables en su lugar, es probable que necesite algunas pinzas.

Antes de usarlo, verifique que la impresión no tenga bordes filosos, especialmente en el lado opuesto al enchufe USB. Las rebabas o los bordes afilados pueden rayar ligeramente la carcasa de plástico en el lado derecho de su Pebble
En el siguiente vídeo  se puede apreciar todo el proceso  donde la originalidad  es ,en lugar de usar imanes,  gracias al diseño muy concienzudo,  encaja perfectamente  cumpliendo su misión sin estos.

 

 

 

 

NOTA : Como con cualquier enchufe no certificado, siempre existe el riesgo de dañar su equipo. Tenga cuidado y uselo bajo su propio riesgo!

Anuncios

Android wear para usar con un Pebble


En 2012, Pebble  irrumpió en la escena en  Kickstarter ganando por encima de $10 million . El concepto evidentemente fue un gran éxito durante la noche. Para muchas personas, de hecho el Pebble original fue el primer SmartWatch  útil  gracias  a que su  batería podía durar una semana ,estaba la información siempre visible  y ademas era compatible  con casi cualquier teléfono inteligente, lo cual a día de hoy siguen, siendo sus grandes bazas.

 

pebble

 Algunos dirán que Pebble se está quedando atrás y no puede competir con las características de Android, pero realmente el Pebble solo ofrece una perspectiva diferente y desde luego continua con aun mucha mas adopción que otros smartwatches .  Además ,  tanto en la ultima versión Pebble ,como en todas las actualizaciones del Fw de las versiones anteriores ,ya soporta Android  Wear,pues precisamente recientemente ha  actualizado su aplicación para Android a la versión 2.3 que junto al último firmware (v2.9) consigue que los usuarios podrán recibir y contestar las notificaciones de Android Wear en su Pebble, convirtiendo a  Pebble en una de las mejores opciones de reloj inteligente  con mucha más batería ,y que encima es compatible con los elementos interesantes que sí ofrece el sistema de Google.

Ahora  conAndroid Wear instalado en nuestro smartphone que se comunica con nuestro Pebble ,podremos contestar rápidamente con 5 respuestas predefinidas a los mensajes recibidos en la mayoría de aplicaciones de mensajería (Hangouts, WhatsApp…), ya que cada vez más empresas añaden soporte a Pebble gracias a la naturaleza abierta de la API de Android Wear.

En el siguiente  vídeo se aprecia esta nueva compatibilidad.

Por si fuera poco, también se ha actualizado PlexFit, la cual es la primera app en integrar la plataforma Google Fit en el Pebble.

Si juntamos los casi seis días de batería con el potencial de la plataforma de salud de Google tenemos un motivo más para apostar por este peculiar smartwatch antes que por cualquiera de los Android Wear actuales: no importa cuántas veces lo intentemos con  terminales con  Android Wear basados en pantallas lcd, siempre terminamos de vuelta con Pebble. 

Resumidamente  destacan  siete  poderosas razones   por las que  Pebble aun no tiene rival frente a sus homólogos con pantalla lcd :

 

  • Más útil como un reloj real: Como mínimo, un SmartWatch debería al menos ser bueno para mostrar la hora de una forma sencilla, cosa que no sucede con sus homólogos ,pues cada vez que se usa dispositivos Android Wear el usuario se  ve obligado a mantener la pantalla apagada para ahorrar batería lo cual requiere  pulsar una tecla , girar la muñeca ,etc   y algunas veces se necesitan  varios intentos. El pebble  gracias a  su pantalla e-ink ( “papel electrónico”), le permite estar todo el tiempo visible y utilizar muy poca batería. En mi opinión, así es como un reloj debería funcionar:echar un vistazo en el momento debe ser exactamente eso: un vistazo sin mas gimnasia de  muñeca involucrada.  Ademas  otro de los beneficios de la pantalla de papel electrónico es la visibilidad. las LCD y las pantallas AMOLED no son los mejores para facilitar la lectura al aire libre. Smartwatches como el Sport Moto 360 intento de resolver este problema, pero todavía no pueden competir con el papel electrónico pues la pantalla del Pebble es muy visible incluso a pleno sol como cada reloj debe ser.
  • Los botones físicos son mejores que las diminutas pantallas táctiles:Un elemento básico de dispositivos Pebble desde el primer día han sido los botones físicos. Cada reloj Pebble cuenta con cuatro botones: Atrás, Arriba, Abajo y Seleccionar siendo esta es una de las mayores diferencias entre las dos plataformas. Android Wear se basa en las pantallas táctiles de entrada,lo cual  permite una mayor flexibilidad pero una pequeña pantalla puede ser una experiencia frustrante pues no hay una gran cantidad de espacio para deslizar y el desplazamiento, y, a veces simplemente no son muy precisos. Google ha admitido básicamente esto añadiendo ” gestos de muñeca ” para la navegación. Los botones de un Pebble permiten la interacción muy deliberada, y todavía funciona si usted está usando guantes en el invierno.
  • Las notificaciones son igual de  buenasUna gran cosa de los  dispositivos Android Wear son las notificaciones sobresaliendo en esta área, aunque o Pebble no ha estado  tan lejos como se podría pensar. Pebble funciona especialmente bien con los teléfonos Android  e incluso utiliza la aplicación para teléfonos Android Wear para permitir una mayor interacción con las notificaciones.La mayoría de las notificaciones en Pebble ofrecen algunas opciones de responder a los mensajes, al igual que en Android Wear. Se puede elegir entre las respuestas pre-escritos, emoji, o responder con su voz seindo los mensajes  las notificaciones  ,No obstante las notificaciones en Android Wear definitivamente se ven mucho mejor, pero en Pebble  también. Las últimas versiones del sistema operativo de Pebble incluyen iconos de colores y animaciones fresca de mostrar nuevas notificaciones.  Otra gran parte de las notificaciones es de la forma que se siente en su muñeca. Pebble le permite personalizar el patrón de vibración para las notificaciones, llamadas entrantes, alarmas, y el sistema.

la notificación de guijarros

 

  • El control por voz en todos los lugares correctos: Los comandos de voz han sido una parte muy importante de Android Wear desde el comienzo. Durante mucho tiempo, esto era algo que los relojes Pebble no podían hacer  pero los modelos más nuevos, finalmente añaden micrófonos y controles básicos de voz. La funcionalidad de voz Pebble es ni mucho menos tan robusto como Android Wear, pero es útil . Los desarrolladores también han comenzado a aprovechar el micrófono. Un ejemplo de  aplicaciones permite agregar un elemento a la lista de la compra en Wunderlist. Todo lo que hay que hacer es mantener presionado el botón de abajo para iniciar la aplicación e inmediatamente empieza a escuchar
  • Duración de la batería : Esta es la zona en la que muy pocos pueden competir con smartwatches Pebble. La mayoría de las personas tienen múltiples dispositivos que necesitan ser cargados cada noche.siendo cualquier smartwatches  sólo una cosa extra mas para enchufar. En el Pebble cuando la batería necesita ser recargada, da indicadores útiles tanto que incluso  la batería se pone muy baja se apagará todo y sólo mostrar la hora.
  • Relación calidad /precio: en efecto hay smartwatches lcd por menos de 100€ ,pero de una cierta marca,  que ofrezcan una mínima calidad , con garantía , un servicio técnico excelente ,etc  y las características mencionadas anteriormente  todo a un precio según versiones incluso inferior a los 80€  es  difícil de encontrar.
  • Potente entorno de desarrollo;  lo hemos tratado en este blog, gracias a la gran cantidad de unidades en funcioamiento ;Pebble cuenta con un excelente ecosistema gratuito para crear  y añadir nuevo software para desplegarlo en el propio relol

 

Como nota importante ,en la nueva aplicación de Pebble recomiendan instalar Android Wear para mejorar el funcionamiento de nuestro pebble.,Ahora bien, hay dos cuestiones al respecto:

  • ¿Que mejora el tenerlo instalado sin ejecutarlo ni una sola vez?
  • ¿Porque no se consigue sincronizar pebble con la aplicación android Wear?

Sabemos que los usuarios entusiasmados con la nueva actualización de Pebble se descargabn incluso  la versión beta de la aplicación y actualización del Pebble  que condiciona a instalar  la aplicación Android Wear ,pero  al  instalar esta , se detecta, parece que se emparejan, pero nunca conecta con esa aplicación..

El problema pues  es que Android wear detecta el Peble , incluso se enumera el  Pebble como reloj, pero cuando intentan sincronizarlo esto  conduce a un bucle sin fin de “conectar”  sin éxito (y esto da ciertamente una sensación de frustración porque no parece ser operativo)

Pues bien el truco esta en  que cuando se instale en un smartphone  Android Wear en el  teléfono   no debemos  vincular el dispositivo Pebble, pues  en nuestro caso el software de Pebble hará esa función  de modo que solo necesitamos tenerlo  instalado  y así la función  “Responder” estaría realmente disponible y funcionara ( si se desistalase Android Wear, la función “Responder” desaparecería en las opciones de notificación) 

Tal vez no sea intuitivo que  nos inciten a instalar Android Wear  y no haya que configurar nada solo dejarla ahí como una app más , pero lo cierto es que al necesitar también   la app de Pebble en nuestro smartphone para ajustar el Pebble ,es evidente que  los creadores han decidido   simplificarlo así: es decir instalamos Android wear  y  no necesitamos configurar nada mas..

 

 

Mas información  aqui  

 

Diseñe su propia esfera para Pebble ( parte 1de 2)


En post  anteriores hemos hablado  que hoy en día  no  existe  ningún smartwatch  con la autonomía  que  goza un Pebble( normalmente una semana pero puede alargarse hasta 9 dias según el uso que se le haga),  pues ademas ese fue precisamente fue uno de los principios de su diseño  basado por cierto en sustituir la clásica pantalla oled por una de tinta electrónica.

Por si fuera poco,  tambien es factible personalizarlo fácilmente  usando c,  js ,java   y otros lenguajes.

En este post vamos  a ver como usando el lenguaje C  , y un entorno en nube  gratuito  podemos diseñar una nueva esfera básica buscando algo como esto:

final result

Primeros pasos

 

Ir a CloudPebble y haga clic en “Comenzar” para iniciar sesión con tu cuenta de Pebble, o crear uno nuevo si usted no tiene ya uno. A continuación, haga clic en “Crear” para crear un nuevo proyecto. Dele a su proyecto un nombre adecuado, tal como “Tutorial 1” y dejar el “Tipo de proyecto” como “Pebble C SDK ‘, con una’ plantilla ‘de« proyecto vacío “, ya que estaremos empezando desde cero para ayudar a maximizar su comprensión a medida que avanzamos.

Haz clic en “Crear” y verá la pantalla principal CloudPebble proyecto. El menú de la izquierda muestra todos los enlaces pertinentes que se necesitan para crear su su esfera. Haz clic en “Configuración” y verá el nombre que acaba de suministrar, junto con varias otras opciones. Como estamos creando un su esfera, cambie el ‘App Kind’ a ‘su esfera’.

La principal diferencia entre los dos tipos son que watchfaces son seleccionadas usando los botones Arriba y Abajo y sirven como la pantalla por defecto en el reloj. Esto también significa que estos botones no están disponibles para el comportamiento personalizado (Volver y Select también no están disponibles para watchfaces). Por el contrario, watchapps son lanzados desde el menú del sistema Pebble. Estos tienen más capacidades, tales como los clics de los botones y elementos de menú, pero vamos a llegar a los que más tarde.

Por último, establezca su “Nombre de la empresa ‘y podemos empezar a escribir algo de código!

Conceptos básicos de su esfera

Crear el primer archivo de origen haciendo clic en “Agregar nuevo” en el menú de la izquierda, seleccionando ‘archivo C’ como el tipo y la elección de un nombre adecuado, tal como main.c. Haz clic en “Crear” y se le mostrará la pantalla principal del editor.

Vamos a añadir los segmentos de código básicas que son requeridos por cada watchapp. La primera de ellas es la directiva principal para usar el SDK de Pebble en la parte superior del archivo, así:

  #include <pebble.h>

 

Después de esta primera línea, tenemos que empezar con la estructura de aplicación recomendado, específicamente un C estándar main() la función y otras dos funciones para ayudar a organizar la creación y destrucción de todos los elementos Pebble SDK. Esto ayuda a hacer la tarea de gestionar la asignación de memoria y desasignación tan simple como sea posible. Además, main() pide también app_event_loop()que permite a la espera watchapp de eventos del sistema hasta que sale.

La estructura recomendada se muestra a continuación, y se puede utilizar como base para su propio archivo de su esfera copiándolo en CloudPebble:

  #include <pebble.h>

 static void init () {

 }

 estática deinit void () {

 }

 int main (void) {
   init ();
   app_event_loop ();
   deinit ();
 }

 

Para añadir la primera Window primero declaramos un puntero estática a una Window variable, de modo que podamos acceder a él siempre que lo necesitamos, sobre todo en el init() y deinit() funciones. Añadir esta declaración a continuación #include con el prefijo s_ para denotar su static naturaleza static aquí significa que es accesible sólo dentro de este archivo):

  estática s_main_window Ventana *;

 

El siguiente paso es crear una instancia de Window para asignar a este puntero, lo que vamos a hacer eninit() utilizando las funciones de Pebble SDK apropiados. En este proceso también se le asigna dos funciones de controlador que proporcionan una capa adicional de abstracción para gestionar la posterior creación de la Window sub-elementos ‘s, de una manera similar a como init() y deinit() realizan esta tarea para el watchapp como entero. Estas dos funciones se deben crear por encima de init() y deben coincidir con las siguientes firmas (los nombres pueden variar, sin embargo):

  static void main_window_load (Ventana * ventana) {

 }

 static void main_window_unload (Ventana * ventana) {

 }

 

Con este hecho, podemos completar la creación de la Window elemento, haciendo referencia a estas dos nuevas funciones de controlador que se llaman por el sistema cada vez que la Window se está construyendo. Este proceso se muestra a continuación, y tiene lugar en init()

  static void init () {
   // Crear principal elemento ventana y asignar al puntero
   s_main_window window_create = ();

   // Manipuladores Set para gestionar los elementos dentro de la Ventana
   window_set_window_handlers (s_main_window, (WindowHandlers) {
     . Load = main_window_load,
     . Unload = main_window_unload
   });

   // Mostrar la ventana en el reloj, con animada = true
   window_stack_push (s_main_window, true);
 }

 

Un buen mejores prácticas para aprender en esta primera etapa es para que coincida con todos los SDK de Pebble _create() llamada a la función con el equivalente _destroy() función para asegurarse de que toda la memoria utilizada se devuelve al sistema cuando la aplicación se cierra. Vamos a hacer esto ahora endeinit() para nuestro principal Window elemento:

  estática deinit void () {
     // Destruye Ventana
     WINDOW_DESTROY (s_main_window);
 }

 

Ahora podemos compilar y ejecutar este su esfera, pero no vamos a mostrar algo interesante todavía.También es una buena práctica para comprobar que nuestro código sigue siendo válido después de cada cambio iterativo, así que vamos a hacer esto ahora.

Primero Compilación e instalación

Para compilar el su esfera, asegúrese de que ha guardado el archivo C haciendo clic en el icono ‘Guardar’ en la derecha de la pantalla del editor y luego proceder a la pantalla ‘Compilación’ haciendo clic en el enlace correspondiente en la parte izquierda de la pantalla. Haga clic en “Build Ejecutar” para iniciar el proceso de compilación y esperar el resultado. Esperemos que el estado debe convertirse en “correcta”, es decir, el código es válido y se puede ejecutar en el reloj.

Con el fin de instalar su su esfera en el Callao, primera instalación del Developer Connection Pebble.Asegúrese de que está utilizando la última versión de la aplicación de Pebble.

Haga clic en “Instalar y Ejecutar” y esperar a que la aplicación para instalar.

¡Felicidades! Usted debe ver que usted tiene un nuevo elemento en el carrusel de su esfera, pero es totalmente en blanco!

 

Vamos a cambiar eso con la siguiente etapa hacia una su esfera básica – la TextLayer elemento.

Mostrando Algunos de texto

Vaya de nuevo al editor de código CloudPebble y abrir su archivo principal C para continuar añadiendo código.

La mejor manera de mostrar un poco de texto en un su esfera o watchapp es utilizar un TextLayerelemento. El primer paso al hacer esto es seguir un procedimiento similar al utilizado para la creación de laWindow con un puntero, idealmente añadido a continuación s_main_window

  estática s_time_layer TextLayer *;

 

Este será el primer elemento añadido a nuestra Window por lo que hará la función de Pebble SDK llama a crearlo en main_window_load() Después de llamar text_layer_create() llamamos a otras funciones con nombres ingleses de civil que describen exactamente lo que hacen, lo que es para ayudar a propiedades de diseño de instalación para el texto mostrado en la TextLayer incluyendo colores, alineación y tamaño de fuente. También incluimos una llamada a text_layer_set_text() con “00:00” para que podamos verificar que el TextLayer está configurado correctamente. Por lo tanto main_window_load() se convierte en:

  static void main_window_load (Ventana * ventana) {
   // Crear TextLayer tiempo
   s_time_layer = text_layer_create (GRect (0, 55, 144, 50));
   text_layer_set_background_color (s_time_layer, GColorClear);
   text_layer_set_text_color (s_time_layer, GColorBlack);
   text_layer_set_text (s_time_layer, "00:00");

   // Mejorar el diseño para ser más como un su esfera
   text_layer_set_font (s_time_layer, fonts_get_system_font 
   text_layer_set_text_alignment (s_time_layer, GTextAlignmentCenter);

   // Añadir como una capa secundaria a la capa de la raíz de la Ventana
   layer_add_child (window_get_root_layer (ventana), text_layer_get_layer (s_time_layer));
 }

 

Tenga en cuenta el uso de los valores de SDK como GColorBlack y FONT_KEY_BITHAM_42_BOLDque permiten el uso de características y comportamientos incorporados. Estos ejemplos son el color negro y un sistema incorporado en la fuente del sistema. Más adelante hablaremos de la carga de un archivo fuente personalizada, que se puede utilizar para sustituir este valor.

Al igual que con Window debemos estar seguros de destruir cada elemento que creamos. Haremos esto enmain_window_unload() para mantener la gestión del TextLayer completamente dentro de la carga y descarga de la Window que está asociado. Esta función ahora debería tener este aspecto:

  static void main_window_unload (Ventana * ventana) {
     // Destruye TextLayer
     text_layer_destroy (s_time_layer);
 }

 

Esto completa la configuración del diseño básico su esfera. Si regresa a ‘Compilación’ e instalar una nueva construcción, ahora debería ver lo siguiente:

TextLayer

El paso final es conseguir la hora actual y mostrarlo usando el TextLayer Esto se hace con elTickTimerService

Decir la hora

El TickTimerService es un servicio de eventos que permite el acceso a la hora actual mediante la suscripción de una función que se ejecute siempre que cambie el tiempo. Normalmente esto puede ser cada minuto, pero también puede ser cada hora, o cada segundo. Sin embargo, este último incurrirá en costos de baterías adicionales, por lo que usarlo con moderación. Podemos hacer esto llamandotick_timer_service_subscribe() pero primero tenemos que crear una función para dar el servicio de llamar siempre que cambie el tiempo, y debe coincidir con esta firma:

  estática tick_handler void (struct tm * tick_time, TimeUnits units_changed) {

 }

 

Esto significa que cada vez que el tiempo cambia, contamos con una estructura de datos de tipo struct tmcontiene la hora actual en varias formas, así como constantes TimeUnits valor que nos dice que la unidad ha cambiado, para permitir el filtrado de la conducta. Con nuestra TickHandler creado, podemos registrarlo con el servicio de sucesos en init() así:

  // Regístrate con TickTimerService
 tick_timer_service_subscribe (MINUTE_UNIT, tick_handler);

 

La lógica para actualizar el tiempo TextLayer se creará en una llamada de función update_time() lo que nos permite llamar tanto desde el TickHandler así como main_window_load() para asegurarse de que está mostrando la vez desde el principio.

Esta función utilizará strftime() (Ver aquí para el formato) para extraer las horas y los minutos de la struct tm estructura de datos y escribir en un búfer de caracteres. Este tampón es requerido por TextLayer ser de larga vida, siempre y cuando el texto se va a mostrar, ya que no se copia en la TextLayer sino que simplemente hace referencia. Logramos esto haciendo el buffer static por lo que persiste a través de múltiples llamadas a update_time() Por lo tanto, esta función debe ser creado antes demain_window_load() y el siguiente aspecto:

  estática update_time void () {
   // Obtener una estructura tm
   temp time_t = tiempo (NULL); 
   struct tm * tick_time = localtime (y temporal);

   // Crear un buffer de larga duración
   char buffer estático [] = "00:00";

   // Escribir las horas actuales y minutos en el búfer
   si (clock_is_24h_style () == true) {
     // Usar el formato de 24 horas
     strftime (tampón, sizeof ("00:00"), "% H:% M", tick_time);
   } Else {
     // Usar formato de 12 horas
     strftime (tampón, sizeof ("00:00"), "% I:% M", tick_time);
   }

   // Muestra este tiempo en el TextLayer
   text_layer_set_text (s_time_layer, tampón);
 }

 

Nuestra TickHandler sigue a la firma de la función correcta y contiene sólo una sola llamada aupdate_time() para hacer precisamente eso:

  estática tick_handler void (struct tm * tick_time, TimeUnits units_changed) {
   update_time ();
 }

 

Por último, init() debe ser modificada incluyen una llamada a update_time() despuéswindow_stack_push() para garantizar el tiempo se muestra correctamente cuando se carga su esfera:

  // Asegúrese de que el tiempo se muestra desde el principio
 update_time ();

 

Desde ahora podemos mostrar el tiempo que puede quitar la llamada a text_layer_set_text() enmain_window_load() ya que ya no es necesario para poner a prueba la disposición.

Vuelva a compilar y volver a instalar el su esfera en el Callao, y debería tener este aspecto:

final result

 

Fuente aqui