Para poder sacar partido a un smartphone android y trabajar con linux con qtcreator podemos instalar la app linux deploy, desde esta app podemos instalar varias distribuciones (debian, ubuntu, arch linux), funcionan con chroot, comparten el kernel linux de android por lo que la ejecución es integra e inmediata.

Las opciones de instalación son, o bien en imagen .img, ram o carpeta, yo lo he usado con imagen .img





Debemos iniciar sesion desde un PC hacia el smartphone con debian linux:
Este es el escritorio LXCE, podemos ejecutar las aplicaciones X11 y shell. Tambien podemos iniciar una sesion de ssh si solo queremos trabajar con la shell

Procedimiento para Instalar Qt Creator (ubuntu - debian)


apt-get install build-essential

apt-get install qtcreator

apt-get install qt5-default

apt-get install qt4-demos qt4-doc qt4-doc-html qt5-doc qt5-doc-html

Esta es la ventana principal, en esta captura de pantalla se ve en negro la pantalla Wellcome (es donde están los acrivhos recientes, ejemplos, etc..) para poder ver el panel completo es necesario iniciar en la shell una nueva sesion con el comando vncserver, nos dara un puerto mas al que debemos conectar y asi veremos esta pantalla correctamente.


Pasamos a configurar el entorno: compilar gcc, debugger gdb y make (qmake)




Creando nuestro primer proyecto ejemplo de manejo de puertos GPIO








Vamos al formulario para agregar los botones :





Qt permite la llamada a comandos del sistema a través de la función system().Por tanto solo hay que incluir esa función con los comandos del sistema que queramos dentro de las funciones de la señales clic de los botones que incluyamos en la interfaz gráfica que diseñemos y que en este ejemplo es la siguiente:
system("echo 1 >/sys/class/gpio/gpio23/value");





Dejo el trabajo completo para activar y desactivar los puertos GPIO y como manejar un switch on/of:
Dejo el codigo en github: 







Este es el código principal:

#include "ui_mainwindow.h"
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
system("echo 0 >/sys/class/gpio/gpio23/value");
}
void MainWindow::on_pushButton_2_clicked()
{
system("echo 1 >/sys/class/gpio/gpio23/value");
}
void MainWindow::on_pushButton_3_clicked()
{
system("echo 23 >/sys/class/gpio/export");
system("chmod 777 -R /sys/class/gpio/gpio23 ");
system("echo out >/sys/class/gpio/gpio23/direction");
}
void MainWindow::on_pushButton_4_clicked()
{
system("echo 23 >/sys/class/gpio/unexport");
exit(0);
}


Comentarios

Entradas populares de este blog

Orange Pi IoT 2G Flashear memoria NAND

Usar datos gratis para proyectos IoT FreedomPop y Orange Pi 2G IoT (también Simyo).

Configurar modem GSM en la Orange Pi 2G IoT (Orange España)