¿Quieres aprender a programar el BeagleBone Black de forma sencilla y eficiente? ¡Entonces estás en el lugar adecuado! En este artículo te introduciremos a BoneScript, una herramienta poderosa que te permitirá sacar el máximo provecho de tu dispositivo. ¡Prepárate para sumergirte en el emocionante mundo de la programación con el BeagleBone Black!
Esta parte presenta BoneScript, una biblioteca Node.js con funciones creadas específicamente para Hueso Beagle Negro *. Esta biblioteca simplifica el acceso y la configuración de los pines de su BeagleBone Black.
Controlar una salida, leer un botón/sensor y controlar un motor son fáciles con BoneScript. Si ha utilizado un Arduino antes, encontrará que la mayoría de las funciones son muy similares.
introducción
BeagleBone es una herramienta de automatización del hogar bastante poderosa, ya que ofrece fácil acceso a Internet y muchos GPIO.
En este proyecto, creará un servidor web que controla las salidas y al que se puede acceder de forma remota mediante su teléfono inteligente, tableta o computadora portátil.
El marco
Su BeagleBone aloja un servidor web y establece comunicación entre el navegador web de su dispositivo y sus GPIO BeagleBone.
Su servidor web se crea con algún código Node.js, y cuando accede a la dirección IP http://192.168.7.2:8888su navegador web le indicará índice.html Archivo almacenado en su BeagleBone.
192.168.7.2 es la dirección USB local de su BeagleBone y 8888 es el puerto que utilizará.
Cuando hace clic en uno de los botones de su página web, se activa un evento y se comunica con su código Node.js, donde el paquete socket.io espera a que ocurra un evento. Según este mensaje de evento, su código Node.js interactuará con los pines de su BeagleBone.
Piezas requeridas
Para este proyecto necesitarás:
- 1x BeagleBone Negro (Haz clic aquí para verlo en Amazon *)
- 1x placa de pruebas
- 1xLED
- 1x resistencia de 220Ω o 1x 470Ω
- 2x cables de puente
- cable mini USB
- Cable de ethernet
Cableando tu circuito
Encender y apagar un LED es lo primero que se hace cuando se experimenta con una nueva tecnología. Después de completar este proyecto, controlarás cada componente electrónico, como un relé, a través de un sitio web al que podrás acceder desde la comodidad de tu sofá con tu teléfono inteligente.
Instalar socket.io
Necesita instalar un paquete Node.js llamado socket.io. Después de que su BBB esté conectado a Internet, ingrese los siguientes comandos en su terminal:
sudo npm install update sudo npm install -g socket.io
El primer comando actualiza la lista de todos los paquetes disponibles a la última versión y el segundo instala socket.io globalmente.
Este paquete permite la comunicación en tiempo real entre los eventos de su navegador web y su BeagleBone. En otras palabras, tan pronto como hagas clic en un botón de tu página web, tu código Node.js que estaba escuchando responderá inmediatamente de acuerdo con el mensaje enviado en ese evento.
Creando una carpeta y sus archivos
Le recomendamos que utilice el IDE de Cloud9 para programar su BeagleBone con la mayor frecuencia posible. Primero lea la parte anterior: Cloud 9 IDE en BeagleBone Black.
Con el IDE de Cloud9 abierto, puede crear una carpeta y un archivo en su espacio de trabajo. Sigue estos pasos:
- Botón derecho del ratón Nube 9 carpeta y seleccione Nueva carpeta desde el menú contextual.
- Nombra la nueva carpeta Proyectos.
- Botón derecho del ratón Proyectos y elige archivo nuevo desde el menú contextual.
- Nombra tu archivo Pagina principal.
- Repita el paso 3 y asigne un nombre a su nuevo archivo. servidor.js.
Así es como debería verse al final:
Escribiendo tu sitio web
Su índice.html El archivo es muy simple. Contiene: un encabezado 2, un párrafo para mostrar el estado actual del LED y dos botones. Luego carga su módulo socket.io y escribe un script JavaScript simple para enviarle un mensaje. servidor.js. El código está bien comentado a continuación:
<!DOCTYPE html>
<html>
<head>
<title>Home Automation Web Server with BeagleBone</title>
<script src = "/socket.io/socket.io.js" ></script>
<script>
// Establishing connection with server
var socket = io.connect();
// Changes the led state
function changeState(state){
if (state==1){
// Emit message changing the state to 1
socket.emit('changeState', '{"state":1}');
// Change led status on web page to ON
document.getElementById("outputStatus").innerHTML = "Status: ON";
}
else if (state==0){
// Emit message changing the state to 0
socket.emit('changeState', '{"state":0}');
// Change led status on web page to OFF
document.getElementById("outputStatus").innerHTML = "Status: OFF";
}
}
</script>
</head>
<h2>LED</h2>
<p id="outputStatus">Status</p>
<button type="button" onclick="changeState(1);">ON</button>
<button type="button" onclick="changeState(0);">OFF</button>
</div>
</body>
</html>
Crea tu servidor web
Su servidor.js El archivo es la última pieza del rompecabezas. Primero necesitas cargar todos los módulos necesarios y configurar el pin de tu BeagleBone Black. También inicializa un servidor web en el puerto 8888. Luego establece comunicación entre servidor.js Y Pagina principal Archivos con socket.io.
La función llamada handleChangeState() encenderá o apagará su LED según el mensaje que recibió Pagina principal. El código también está comentado para que puedas entender exactamente qué hace cada línea:
//Loading modules
var http = require('http');
var fs = require('fs');
var path = require('path');
var b = require('bonescript');
// Create a variable called led, which refers to P9_14
var led = "P9_14";
// Initialize the led as an OUTPUT
b.pinMode(led, b.OUTPUT);
// Initialize the server on port 8888
var server = http.createServer(function (req, res) {
// requesting files
var file="."+((req.url=='/')?'/index.html':req.url);
var fileExtension = path.extname(file);
var contentType="text/html";
// Uncoment if you want to add css to your web page
/*
if(fileExtension == '.css'){
contentType="text/css";
}*/
fs.exists(file, function(exists){
if(exists){
fs.readFile(file, function(error, content){
if(!error){
// Page found, write content
res.writeHead(200,{'content-type':contentType});
res.end(content);
}
})
}
else{
// Page not found
res.writeHead(404);
res.end('Page not found');
}
})
}).listen(8888);
// Loading socket io module
var io = require('socket.io').listen(server);
// When communication is established
io.on('connection', function (socket) {
socket.on('changeState', handleChangeState);
});
// Change led state when a button is pressed
function handleChangeState(data) {
var newData = JSON.parse(data);
console.log("LED = " + newData.state);
// turns the LED ON or OFF
b.digitalWrite(led, newData.state);
}
// Displaying a console message for user feedback
server.listen(console.log("Server Running ..."));
Descargar todo el código
En lugar de copiar y pegar, puede hacer clic aquí para descargar todo el código utilizado en este proyecto. Luego descomprime la carpeta y sube el código a tu BeagleBone Black.
Inicie su servidor web
Iniciar su servidor web es fácil. Simplemente guarda los dos archivos. Haga clic en el botón verde “Correr» en el IDE de Cloud9, y debería ver un mensaje en la ventana de salida que dice: «El servidor está funcionando. . . “.
Eso es todo, ¡su servidor web está listo para usar! Abra una pestaña en su navegador web y escriba lo siguiente http://192.178.7.2:8888. Verá una página web similar a la siguiente imagen.
Este sitio web solo se abrirá si su computadora está conectada directamente al BeagleBone Black mediante USB. De lo contrario, consulte la siguiente sección para aprender cómo acceder a BeagleBone desde un dispositivo conectado a su red de trabajo.
Accediendo a su servidor web desde otro dispositivo
Para acceder a su sitio web desde cualquier dispositivo de su red, necesitará la dirección IP Ethernet de su BeagleBone Black. Abra su terminal e ingrese el siguiente comando:
ifconfig
Nuestra dirección IP Ethernet está resaltada en la imagen a continuación.
Ahora puede ingresar su dirección IP Ethernet seguida del número de puerto (ejemplo http://192.168.1.80:8888) en un navegador web en cualquier dispositivo.
¡Ahora puedes controlar todas las salidas de forma remota!
Diploma
¡Eso es todo por ahora! En la siguiente parte aprenderás cómo programar el Beaglebone Black con Python. Si te gusta esta serie, asegúrate de suscribirte aquí para no perderte nuestras próximas publicaciones de blog sobre este foro.
¡Un agradecimiento especial a Luís Perestrelo por ayudar a Rui Santos a armar esta serie!
Esta es la parte 3, ¡ahora lee la parte 4! ->
*Participamos en el Programa de Asociados de Amazon Services LLC, un programa de publicidad para afiliados diseñado para proporcionarnos un medio para ganar tarifas al vincularnos a Amazon.com y sitios afiliados..
Programando el BeagleBone Black con BoneScript
Este es el tercer artículo de una serie de 4 sobre cómo empezar con el BeagleBone Black. En esta ocasión, nos enfocaremos en utilizar BoneScript, una librería Node.js que contiene funciones especialmente creadas para el BeagleBone Black. Esta librería simplifica el proceso de acceso y configuración de los pines de tu BeagleBone Black.
Introducción
El BeagleBone es una herramienta bastante poderosa cuando se trata de automatización del hogar, ya que brinda un fácil acceso a la web y tiene numerosos GPIOs. En este proyecto, crearás un servidor web que controla salidas y puede ser accesado de forma remota con tu smartphone, tableta o computadora portátil.
El Marco de Trabajo
Tu BeagleBone alojará un servidor web, estableciendo una comunicación entre el navegador web de tu dispositivo y los GPIOs de tu BeagleBone. Cuando accedes a la dirección IP http://192.168.7.2:8888, tu navegador web solicita el archivo index.html que está almacenado en tu BeagleBone.
Partes necesarias
Para este proyecto necesitarás:
- 1x BeagleBone Black
- 1x Protoboard
- 1x LED
- 1x Resistor de 220Ω o 470Ω
- 2x cables puente
- Cable Mini USB
- Cable Ethernet
Conexión de tu circuito
La primera actividad que realizarás al experimentar con una nueva tecnología es encender o apagar un LED. Después de completar este proyecto, podrás controlar cualquier componente electrónico, como un relé, a través de una página web a la que puedes acceder desde tu smartphone directamente desde tu sofá.
Instalando socket.io
Debes instalar un paquete Node.js llamado socket.io. Conectado tu BeagleBone Black a Internet, escribe los siguientes comandos en tu terminal:
- sudo npm install update
- sudo npm install -g socket.io
El paquete socket.io permite la comunicación en tiempo real entre los eventos de tu navegador web y tu BeagleBone. Es decir, tan pronto como haces clic en un botón en tu página web, tu código Node.js que estaba escuchando actúa inmediatamente según el mensaje enviado en ese evento.
Creando una carpeta y tus archivos
Te recomendamos usar el IDE Cloud9 para programar tu BeagleBone. Primero, lee la parte anterior: Cloud 9 IDE en el BeagleBone Black. Con Cloud9 IDE abierto, puedes crear una carpeta y un archivo en tu espacio de trabajo siguiendo estos pasos:
- Haz clic derecho en la carpeta cloud9 y elige Nueva Carpeta en el menú emergente.
- Nombre la nueva carpeta Proyectos.
- Haz clic derecho en la carpeta Proyectos y elige Nuevo Archivo en el menú emergente.
- Nombra tu archivo index.html.
- Repite el paso 3. y nombra tu nuevo archivo server.js.
De esta manera, tendrás tu espacio de trabajo organizado para comenzar a programar.
Escribiendo tu página web
El archivo index.html es muy sencillo. Contiene un encabezado 2, un párrafo para mostrar el estado actual del LED y dos botones. Luego cargas tu módulo socket.io y escribes un simple script JavaScript para enviar un mensaje a tu server.js.
Creando tu servidor web
El archivo server.js es la pieza final del rompecabezas. Primero tienes que cargar todos los módulos necesarios y configurar el pin de tu BeagleBone Black. Luego inicializas un servidor web en el puerto 8888 y estableces la comunicación entre server.js e index.html utilizando socket.io.
La función handleChangeState() enciende o apaga tu LED según el mensaje recibido desde tu index.html.
Descargando el código
En lugar de copiar y pegar, puedes hacer clic aquí para descargar todo el código utilizado en este proyecto. Luego, descomprimes esa carpeta y subes el código a tu BeagleBone Black.
Lanzando tu servidor web
Lanzar tu servidor web es sencillo. Simplemente guarda los dos archivos, haz clic en el botón verde «Run» en Cloud9 IDE y deberías ver un mensaje en tu ventana de salida que dice «Servidor funcionando…». ¡Listo, tu servidor web está en funcionamiento!
Abre una pestaña en tu navegador web y escribe http://192.178.7.2:8888. Verás una página similar a la que se muestra en la figura.
Accediendo a tu servidor web con otro dispositivo
Para acceder a tu página web en cualquier dispositivo dentro de tu red, necesitas la dirección IP Ethernet de tu BeagleBone Black. Abre tu terminal y escribe el siguiente comando:
Luego puedes ingresar la dirección IP Ethernet de tu BeagleBone seguido del número de puerto (por ejemplo http://192.168.1.80:8888) en el navegador web de cualquier dispositivo.
Ahora puedes controlar cualquier salida de forma remota.
¡Eso es todo por ahora! En el siguiente artículo, aprenderás sobre cómo programar el Beaglebone Black con Python. Si disfrutas esta serie, asegúrate de suscribirte aquí para no perderte nuestras futuras publicaciones usando esta placa.
Agradecimientos especiales a Luís Perestrelo por ayudar a Rui Santos en la creación de esta serie.
No tenía idea de que se podía programar el BeagleBone Black con BoneScript. Definitivamente voy a investigar más sobre este tema. ¡Gracias por la información!
¡Qué chido! No sabía que se podía programar el BeagleBone Black así. Voy a intentarlo, a ver qué tal me va. ¡Gracias por el tutorial!
¡Interesante tutorial! Me encanta la programación con BoneScript, definitivamente lo voy a probar en mi BeagleBone Black. ¡Gracias por compartir!