Robot Zowi de BQ

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Introducció

http://zowi.bq.com

Programació

Per restaurar les funcions originals es pot fer des de la App del Play Store, o des de l'arduino IDE. El codi original està al GitHub:

En el Github, a part del codi original, també es troben les llibreries que es necessiten.

NOTA: el codi original que ve de fàbrica no l'he trobat, però amb l'aplicació mòbil del Play Store sí que funciona.

Arduino IDE

En el GitHub hi ha exemples.

factoryZowi.ino (aquest no és el codi que ve de fàbrica)

Per compilar el projecte he hagut de fer dos canvis:

Afegir les llibreries:

#include <BatReader.h>
#include <US.h>

Un altres canvi: el mètode zowi.moveServos() en realitat és "zowi._moveServos(), segons està definit a la llibreria zowi.cpp. Potser és un problema de versió de llibreries, però ara ja compila.

Per pujar el codi al zowi (Arduino) he d'escollir: Arduino Uno.

El codi ja funciona. Però factoryZowi.ino no és el programa que ve de fàbrica. Per restaurar les funcions de fàbrica es pot fer amb l'aplicació mòbil.

Un altre exemple: ZOWI_BASE_v2.ino. He d'actualitzar la llibreria EEPROM, doncs en la que tenia no hi havia els mètodes put() i get()

És curiós, però aquest sketch és massa gran i llença l'excepció: (TBD)

processing.app.debug.RunnerException: Sketch massa gran; visita http://www.arduino.cc/en/Guide/Troubleshooting#size per consells per reduir-ne la mida.

Un altre exemple: ZOWI_Alarm_v2.ino. Aquest sí que funciona.

Bitbloq

Instal.lació del Bitbloq

Bitbloq no s'ha d'instal.lar. Funciona des del navegador, però ha de ser Google Chrome:

Ens registrem amb Google +, i ja podem començar.

NO escollim una placa, sinó que escollim el robot Zowi. Fem un petit bucle canviant de cares, força intuïtiu. (És el mateix si tenim una placa Zum Core disponible).

Per sort, podem exportar el codi a arduino/processing:

Però si volem treballar sense veure codi en tot el flux de treball, des del navegador haurem de programar el robot:

Sol.licitud de protocol extern
Google Chrome ha d'iniciar una aplicació externa per gestionar els enllaços web2board
Descarrega Web2Board per poder programar la teva placa.

És a dir, es tracta de què des del navegador web puguem programar directament el robot Zowi. (El robot ha d'estar connectat i encès)

Ens hem descarregat el fitxer Web2Board.tar.gz per a Ubuntu 32 bits.

L'executable Web2Board.desktop conté les següents instruccions:

[Desktop Entry]
Encoding=UTF-8
Comment=Install
Exec=bash -c 'echo $ "-------------------------------------------------- " && echo  "  INSTALANDO WEB2BOARD PARA BITBLOQ. NO CERRAR " && echo  "  INSTALLING BITBLOQS WEB2BOARD. DO NOT CLOSE" && echo $ "--------------------------------------------------\n\n\n " && echo  "Instalando... " && echo  "Installing... " && userName=$( who | head -1| cut -d  " " -f 1) && sudo adduser $userName dialout && sudo apt-get -y install gdebi && sudo apt-get install xterm && sudo apt-get install wget && wget http://bitbloq.com.s3.amazonaws.com/dev/qa/linux/64bit/web2board.deb && sudo gdebi --non-interactive web2board.deb && rm web2board.deb && echo $ "\n\n\n-------------------------------------------------- " && echo  "INSTALACIÓN TERMINADA. PUEDE CERRAR LA VENTANA " && echo  "INSTALLATION FINISHED. YOU MAY CLOSE THE WINDOW " && echo  "REINICIE EL ORDENADOR " && echo  "REBOOT THE COMPUTER " && echo $ "--------------------------------------------------\n\n\n " && sudo chown -R $userName ~/Arduino'
Terminal=true
Type=Application

Per tant, el que fa és:

sudo apt-get -y install gdebi
wget http://bitbloq.com.s3.amazonaws.com/dev/qa/linux/64bit/web2board.deb
sudo gdebi --non-interactive web2board.deb
rm web2board.deb

i diu que hem de reiniciar l'ordinador

jo el que faig és:

wget http://bitbloq.com.s3.amazonaws.com/dev/qa/linux/64bit/web2board.deb
sudo dpkg -i web2board.deb

i el problema és que em vol descarregar la llibreria de 64bits quan el meu sistema és de 32 bits. Envio un mail al suport a veure si tenen registrada aquesta incidència.

A l'endemà ja han ficat l'enllaç correcte perquè la gent es pugui descarregar Linux 32 bits. És el fitxer Web2Board32bit-desktop.tar.gz, i les instruccions que conté: (on es veu les llibreries que s'instal.len, concretament avr-libc i avrdude per programar els xips AVR).

userName=$( who | head -1| cut -d  " " -f 1)
sudo apt-get -y install gdebi xterm 
sudo apt-get install gcc-avr 
sudo apt-get install avr-libc 
sudo apt-get install avrdude 
sudo apt-get install python-wxgtk2.8
wget -r http://bitbloq.com.s3.amazonaws.com/dev/qa/linux/32bit/web2board32bit.tar.gz -O /tmp/web2board32bit.tar.gz
sudo mkdir -p /tmp/web2board32bit
sudo tar -zxvf /tmp/web2board32bit.tar.gz -C /tmp/
sudo mkdir -p /usr/lib/python2.7/dist-packages/web2board
sudo cp -R /tmp/web2board32bit/src/* /usr/lib/python2.7/dist-packages/web2board/
sudo cp /tmp/web2board32bit/web2board /usr/bin/
sudo mkdir -p ~/.web2board
sudo chown -R $userName:$userName ~/.web2board
sudo rm -irf /tmp/Stino_build
cat /tmp/web2board32bit/web2board-handler.desktop > ~/.local/share/applications/web2board-handler.desktop
printf "\n#custom handler for bitbloqs web2board: \n[Default Applications] \nx-scheme-handler/web2board=web2board-handler.desktop" >> ~/.local/share/applications/mimeapps.list

En aquest punt important reiniciar el Chrome.

Ara ja puc continuar el meu projecte. Quan faig Mostra > Mostra la Consola, apareix el missatge Obrint la consola que sembla que estigui penjat. És correcte, en realitat està descarregant les llibreries de Bitbloq, com es pot veure en la finestra xterm que ha quedat oberta.

Quan finalitza la instal.lació de les llibreries, protesta si no troba el Zowi encès i connectat per USB (que fa de port sèrie). Mostra la consola significa mostra el xterm amb possibles imatges, i també el port sèrie per comunicar-nos amb el Zowi.

Igual que en el Arduino IDE, trobem el botó de compilar i pujar el codi a l'Arduino, però ara tot en format web. Al cap i a la fi, tota la funcionalitat que tenim en l'Arduino IDE la trobem aquí.

Hem aconseguit programar el Zowi sense tocar ni una línia de codi. I té avantatges, com poder gestionar els projectes (renombrar-los, ficar comentaris i etiquetes). I també important, pujar-los al núvol i compartir-los.

BitBloq -> Arduino IDE

Intentaré programar el projecte directament amb el IDE d'Arduino. El meu petit projecte necessita aquestes llibreries del BitBloq:

#include <BitbloqZowi.h>
#include <BitbloqUS.h>
#include <BitbloqBatteryReader.h>
#include <BitbloqLedMatrix.h>
#include <BitbloqOscillator.h>

Estan totes aquí (n'hi ha més que aquestes, no només són pel Zowi, sinó pels projectes que es poden fer amb la placa):

I funciona. Però hem de tenir en compte dues qüestions que m'he trobat:

La prova que he fet (l'he generat amb Bitbloq i l'he exportat a codi Processing):

#include <BitbloqZowi.h>
#include <BitbloqUS.h>
#include <BitbloqBatteryReader.h>
#include <BitbloqLedMatrix.h>
#include <Servo.h>
#include <BitbloqOscillator.h>
#include <EEPROM.h>

/***   Global variables and function definition  ***/
Zowi zowi;

/***   Setup  ***/
void setup(){
  zowi.init();
  zowi.playGesture(ZowiHappy);
}

/***   Loop  ***/
void loop(){
	//zowi.playGesture(ZowiHappy);
	if(zowi.getNoise() >= 650) {
		zowi.playGesture(ZowiLove);
		zowi.walk(4);
	}

	if(zowi.getDistance() < 15) {
		zowi.playGesture(ZowiFail);
		zowi.jitter(4);
	}
}

creat per Joan Quintana Compte, febrer 2016

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines