Introduction: Trick or Treat! -MoonMakers

About: MoonMakers is a community, Makerspace and YouTube channel, which was created by Camila and Diego Luna, inspired by creating social impact projects, experimenting and sharing their experiences, for example in S…

Español:
Usando leds, pantallas y mucho papel haremos algo gigantesco, ¡una calabaza! Para el especial de Halloween 👻 y Día de Muertos 💀 de Maker Camp, creamos este gigante y espectacular proyecto! Que combina elementos de Halloween y Día de muertos, con estilo spooky a la vez que es interactivo y muy divertido. Y queremos compartirles como lo hicimos.✂️🛠. El proyecto lo dividimos en 2 partes, en la electronica y la estructura.

English:

Using LEDs, screens and a lot of paper we will make something gigantic, a pumpkin! For Maker Camp's Halloween 👻 and Day of the Dead 💀 special, we created this giant and spectacular project! That combines elements of Halloween and Day of the Dead, with a spooky style while being interactive and very fun. And we want to share with you how we did it.✂️🛠. The project is divided into 2 parts, the electronics and the structure.

Step 1: What You Will Need

Español:

Lo que necesitarás para la electrónica

  • 2 x pantallas 240x240 Wide Angle TFT LCD, de adafruit
  • 2 x lente de vidrio convexo con borde - 40 mm de diámetro, de adafruit
  • 1 x gorro de ojos animados Adafruit para Raspberry Pi, de adafruit
  • Se puede usar una Raspberry Pi 3 o Pi 2. también en la Pi Zero y Zero W u otras placas Raspberry Pi de un solo núcleo, pero el rendimiento es menor.
  • 22 cables h x h.
  • (Opcional) una memorias micro SD de 16gb.

Lo que necesitarás para la estructura

  • Barra de pegamento
  • cartulinas de color naranja, verde, negro y blanca
  • tijeras

Nota: nosotros usamos un plotter de corte, llamado silhouette cameo.

English:

What you will need for electronics

  • 2 x 240x240 Wide Angle TFT LCD screens, by adafruit
  • 2 x convex rim glass lens - 40mm diameter, by adafruit
  • 1 x Adafruit Animated Eye Cap for Raspberry Pi, by adafruit
  • A Raspberry Pi 3 or Pi 2 can also be used in the Pi Zero and Zero W or other Raspberry Pi single core boards, but the performance is lower.
  • 22 cables h x h.
  • (Optional) a 16gb micro SD memory.

What you will need for the structure

  • Glue stick
  • orange, green, black and white card stock
  • scissors

Note: we use a cutting plotter, called a silhouette cameo

Step 2: Electrónica

Español:
Empezamos la electrónica, para conectar nuestras pantallas a nuestra placa, van a ser en la sección de TFT. Asegúrese absolutamente de que los cables estén en el mismo orden. "Vin" y "Lite" en el tablero de la pantalla deben ir a "Vin" y "Lite" en el capó, y ningún cable debe cruzarse. El TFT de 1.54 "tiene un pin 12 etiquetado como" TE ". NO CONECTE ESE PIN AL BONNET. Solo conecte los otros 11 pines de" Vin "a" Lite "

Ya teniendo nuestras pantallas, es momento de incluirles un efecto óptico, le agregaremos unos lentes convexos, para darle un efecto de un ojo real. Para unir estas dos piezas, vamos a ocupar una herramienta muy especial en el makerspace, la impresión 3d para crear un objeto que nos permite unirlo y después a la estructura de papel., puedes descargar los archivos e imprimirlos.

English:

We started the electronics, to connect our screens to our board, they will be in the TFT section. Make absolutely sure that the cables are in the same order. "Vin" and "Lite" on the display board should go to "Vin" and "Lite" on the hood, and no wires should be crossed. The 1.54 "TFT has a 12 pin labeled" TE ". DO NOT CONNECT THAT PIN TO THE BONNET. Just connect the other 11 pins from" Vin "to" Lite "

Once we have our screens, it is time to include an optical effect, we will add convex lenses, to give it an effect of a real eye. To join these two pieces, we are going to use a very special tool in the makerspace, 3d printing to create an object that allows us to join it and then to the paper structure. You can download the files and print them.

Step 3: Preparations

Español:
Uno de los requisitos para este proyecto es tener Raspberry Pi OS (32-bit) Lite o Raspbian Lite, que se puede obtener en la página de oficial.

Vamos a manejar a nuestras raspberry pi con SSH, para mayor comodidad, hay que tener nuestra Raspberry conectada a internet, luego en la consola de la pi "sudo raspi - config", vamos a la sección de colecciones y activamos SSH, y en la terminal ponemos "ifconfig wlan0", anotamos nuestras dirección ip.

En nuestra computadora abrimos nuestra terminal, ponemos "ssh pi@RaspberryIP" , ponemos nuestra contraseña y aceptamos el mensaje que nos sale. A hora hay que instalar Node.js el proceso de es diferente para cada placa placas:

English:

One of the requirements for this project is to have Raspberry Pi OS (32-bit) Lite or Raspbian Lite, which can be obtained from the official page.

We are going to manage our raspberry pi with SSH, for greater comfort, we must have our Raspberry connected to the internet, then in the console of the pi "sudo raspi - config", we go to the collections section and activate SSH, and in the terminal we put "ifconfig wlan0", we write down our ip address.

In our computer we open our terminal, we put "ssh pi @ RaspberryIP", we put our password and we accept the message that comes out. Now you have to install Node.js, the process is different for each board:

  • Raspberry pi 2,3

En la terminal de Raspberry pi ponemos:
In the Raspberry pi terminal we put:

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -<br>
sudo apt-get install -y nodejs

Para checar que se hayan instalado:
To check that they have been installed:

node -v
npm -v
  • Raspberry pi Zero, Zero W.

En la terminal de Raspberry pi ponemos:
In the Raspberry pi terminal we put:

wget https://nodejs.org/dist/v10.21.0/node-v10.21.0-linux-armv6l.tar.xz
tar -xJf node-v10.21.0-linux-armv6l.tar.xz

Lo llevamos a la local para que este disponible de manera global:
We take it to the local so that it is available globally:

cd node-v10.21.0-linux-armv6l/
sudo cp -R * /usr/local/

Para checar que se hayan instalado:
To check that they have been installed:

node -v
npm -v

Y vamos a descargar git:
And we are going to download git:

sudo apt install git

Verificamos la instalación:
We verify the installation:

git --version

Con esto listo hay que hacer que tengamos una ip estática en nuestra raspi para que este siempre disponible nuestro servidor más adelante.
With this ready, we have to make sure that we have a static IP in our raspi so that our server is always available later.

sudo nano /etc/dhcpcd.conf

nos va abrir un fichero que se debe ver algo así.
We will open a file that should look something like this.

# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

Lo cambiamos por:

We change it for:

interface wlan0  

static ip_address=192.168.1.200/24  
static routers=192.168.1.1  
static domain_name_servers=192.168.1.1
  • interface = Nombre del interface que queremos configurar Wifi.
  • static ip_address = Dirección fija que queremos (dejar el /24 al final).
  • static routers = Dirección del gateweay (del router).
  • static domain_name_servers = Dirección del servidor DND (normalmente la del router).

A continuación guardamos los cambios pulsando 'Ctrl+X' y después confirmando con 'Y' y 'Enter'. Ahora reiniciamos la Raspberry Pi con el comando:


English


  • interface = Name of the interface that we want to configure Wifi
  • static ip_address = Fixed address we want (leave / 24 at the end)
  • static routers = Gateweay address (of the router)
  • static domain_name_servers = Address of the DND server (usually that of the router).

Then we save the changes by pressing 'Ctrl + X' and then confirming with 'Y' and 'Enter'. Now we restart the Raspberry Pi with the command:

sudo Reboot

Step 4: Eyes and Node.js Server

Español
Para descargar el código de los ojos ponemos en la terminal:

curl https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/pi-eyes.sh >pi-eyes.sh
sudo bash pi-eyes.sh

Esto descarga y ejecuta un script qué instala todo el software prerrequisito y realiza alguna configuración del sistema. Hará algunas preguntas:


English

To download the code of the eyes we put in the terminal:

curl https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/pi-eyes.sh >pi-eyes.sh
sudo bash pi-eyes.sh

This downloads and runs a script that installs all the prerequisite software and performs some system configuration. You will ask some questions:

Español

  • ¿Conectará pantallas OLED (128x128), TFT (128x128) o IPS (240x240)? No se pueden mezclar y combinar; debe ser uno u otro. En nuestro caso seleccionamos IPS.
  • En las siguientes opciones ponemos No.

Esto tardara unos minutos en instalarse, al final nos va a pedir que reiniciemos nuestra Raspberry.

Si conectamos nuestra Raspberry a la placa vamos a ver nuestros ojos, si algo falla podemos volver a reiniciar o cambiar el refresco de las pantallas con el comando.

sudo nano /etc/rc.local

English

  • Connect OLED (128x128), TFT (128x128) or IPS (240x240) displays? They cannot be mixed and matched; it must be one or the other. In our case we select IPS.
  • In the following options we put No.

This will take a few minutes to install, in the end it will ask us to restart our Raspberry.

If we connect our Raspberry to the board we will see our eyes, if something fails we can restart or change the refresh of the screens with the command.

sudo nano /etc/rc.local

devemos ver algo como esto:

we should see something like this:

/boot/Pi_Eyes/fbx2 -i &

La i la podemos cambiar por "-t" o "-o" dependiendo la pantalla.

The i can be changed to "-t" or "-o" depending on the screen.


Insertamos el adicional "-b" y valor de tasa de bits antes del caracter "&":

We insert the additional "-b" and bitrate value before the "&" character:

/boot/Pi_Eyes/fbx2 -i -b 8000000 &

Para el Servidor con Node JS. clonamos el repositorio de GitHub.

For the Server with Node JS, we cloned the GitHub repository:

git clone https://github.com/Diego-Luna/google_home_starter.git

Primero, crearemos un fichero .env

First, we will create an .env file

cd google_home_starter<br>
sudo nano .env

y vamos a poner:

and we are going to put:

DEV = FALSE<br>PORT = 80 
PASS = Contraseña

Traemos nuestros componentes de npm:

We bring our npm components:

npm install

Y corremos nuestro código con:

And we run our code with:

npm start

Español

Y para ver que todo esta funcionando podemos usar Postman, hay que hacer una petición POST, con la URL: http://ipaddresshere/API/switches/sw1?password=yourpasswordhere

Asemos la petición y nos regresara un valor de True o Off y vemos que con cada petición se activan o desactivan nuestros ojos.

English

And to see that everything is working we can use Postman, you have to make a POST request, with the URL:http://ipaddresshere/API/switches/sw1?password=yourpasswordhere

Let's grab the request and it will return a value of True or Off and we see that with each request our eyes are activated or deactivated.

Step 5: No-ip

Español

Para usar nuestro comando de voz necesitamos tener un DDNS, o en otras palabras que podamos acceder desde internet a nuestra Raspberry, yo use no-ip que es gratuito y funciona muy bien.

Lo primero que debemos registrarnos en no-ip, una Una vez registrados tendremos un menú de la izquierda hacemos click Dynamic DNS, vamos a crear uno nuevo Hostname, ponemos el nombre que queremos y le damos en crear.

English

To use our voice command we need to have a DDNS, or in other words we can access our Raspberry from the internet, I use no-ip which is free and works very well.

The first thing we must register in no-ip, once registered we will have a menu on the left we click Dynamic DNS, we are going to create a new Hostname, we put the name we want and we give it to create

Es momento de configurar nuestra Raspberry:

It is time to configure our Raspberry:

wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

Extraemos el archivo con:

We extract the file with:

tar -zxvf noip-duc-linux.tar.gz

Y accedemos a la carpeta usando:

And we access the folder using:

cd noip-2.1.9-1

Imagino que no han cambiado la versión, pero en caso de que sí, tecleáis «ls» para ver el nombre de los archivos y carpetas que tenéis, y sustituís noip-2.1.9-1 por la que corresponda. Una vez dentro, hacemos la instalación:

I imagine they have not changed the version, but if they have, type "ls" to see the name of the files and folders you have, and replace noip-2.1.9-1 with the corresponding one. Once inside, we do the installation:

sudo make 

sudo make install<br>

Español

Ahora nos va a preguntar el nombre de usuario y contraseña de no-ip y, una vez introducido, ya cogerá automáticamente en dominio que hemos creado antes (supongo que solo habéis creado uno). Luego nos quedará elegir el tiempo de refresco, que lo podemos dejar por defecto, y a la siguiente pregunta respondemos «NO» (n). Ya tenemos no-ip configurado.

English
Now it will ask us for the username and password of no-ip and, once entered, it will automatically take the domain that we created before (taking into account that you have only created one). Then we will have to choose the refresh time, which we can leave by default, and to the next question we answer "NO" (n). We already have no-ip configured.

Now we have a few small steps to start automatically when you turn on the Raspberry. For this we create a new file:

Ahora nos quedan unos pequeños pasos para que arranque automáticamente al encender la Raspberry. Para ello creamos un nuevo archivo:

sudo nano /etc/init.d/noip2

Y copiamos dentro lo siguiente:

And we copy the following inside:

sudo /usr/local/bin/noip2

Ahora añadimos permisos de ejecución con:

Now we add execution permissions with:

sudo chmod +x /etc/init.d/noip2

Modificamos el fichero update-rc:

We modify the update-rc file:

sudo update-rc.d noip2 defaults<br>

Y lo ponemos en marcha:

And we start it up:

sudo /usr/local/bin/noip2


Español

Ahora nos toca Abrir los puertos del router: Para ello accedemos desde el navegador a 192.168.1.254, que suele ser la dirección por defecto de la mayoría de routers. En caso de que el vuestro no lo sea, tendréis que averiguar cuál es (Google es tu amigo). Introducir la contraseña que encontramos debajo del router.

En mi caso hay que ir a Internet -> Reenvío de puertos, agregamos uno nuevo, ponemos la dirección ip de nuestra Raspberry, le ponemos el protocolo TCP, en las puertas publicas 80 y en la puesta LAN 80, para que todo nuestro trafico se direccioné a nuestro servidor en la Raspberry.

Como se muestra en las imágenes.

English
Now we have to Open the router ports:

To do this, we access 192.168.1.254 from the browser, which is usually the default address of most routers. In case yours is not, you will have to find out which one it is (Google is your friend). Enter the password that we find under the router.

In my case you have to go to the Internet -> Port forwarding, we add a new one, we put the IP address of our Raspberry, we put the TCP protocol, in the public doors 80 and in the LAN 80 setting, so that all our traffic is address to our server on the Raspberry. As the pictures show.

Step 6: IFTT

Español:

El ultimo paso en conectarnos con Google Asistente y para este paso vamos a usar ifttt, nos registramos en su plataforma. Nos vamos a Create, en "If this" vamos a seleccionar a Google Asistente, con una frase simple. Nos va a poner un apartado para poner nuestro comando e Voz junto con más opciones y una posible respuesta que nos dará Google Asistent y la ultima opción en el lenguaje en que se ara todo el procesó, le damos en crear trigger.

En "Then That", hay que seleccionar Webhooks junto con su única opción, nos van a poner un apartado de cómo se ara la petición, en la URL ponemos nuestro url de raspberry pi en método el POST y hacemos click en "Create action". Le damos en Continue -> Finish. Felicidades ya terminamos, al decir tu frase con el asisten, se activaran o desactivarán los ojos.

English:

The last step in connecting with Google Assistant and for this step we are going to use ifttt, we register on its platform. We are going to Create, in "If this" we are going to select Google Assistant, with a simple phrase. He is going to put a section for us to put our command and Voice along with more options and a possible answer that Google Assistant will give us and the last option in the language in which all the processing is done, we give it to create trigger.

In "Then That", you have to select Webhooks along with its only option, they are going to put a section on how the request is plowed, in the URL we put our raspberry pi url in the POST method and click on "Create action" . We give it in Continue -> Finish. Congratulations we are done, when you say your phrase with the assist, the eyes will be activated or deactivated.

Step 7: Estructura

Español:

Ya terminada la electrónica, empezamos a crear la estructura en papel de nuestra calabaza y calavera, empezamos diseñando un objeto en 3d en fusion 360, este sera el resultado final que queremos para nuestra estructura. Después lo pasamos a slicer for fusion, una potente herramienta para segmentar los modelos 3D en piezas listas para cortar y ensamblar. El diseño de la calavera y la calabaza, estarán pronto actualizadas, ya que haremos algunos cambios en el diseño, para que sea más fácil hacerlos. Así que con el diseño terminado, enviamos a cortar todo nuestro papel, de distintos colores de naranja, blanco, verde y negro, para darle estilo y hacer distinguir todas la piezas de nuestro diseño, todas las cartulinas las cortamos en la silhouette cameo, teniendo más de 90 piezas listas para ensamblar.

English:

Once the electronics were finished, we started to create the paper structure of our pumpkin and skull, we started designing a 3d object in fusion 360, this will be the final result we want for our structure. Then we move on to slicer for fusion, a powerful tool to segment 3D models into pieces ready to cut and assemble. The design of the skull and pumpkin will be updated soon, as we will make some changes to the design, to make them easier to do. So with the finished design, we send all our paper to be cut, in different colors of orange, white, green and black, to give it style and distinguish all the pieces of our design, all the cardboard we cut in the silhouette cameo, having more than 90 pieces ready to assemble.

Step 8:

Español:

Empezamos a doblar nuestras piezas, notaremos que haremos distintos dobleces, el instructivos para pegar todas las piezas, estará junto con los planos. Esto es muy importante ya que conforme unes la piezas los dobleces, crean volumen, y conforme avanzas distinguir la figura final. Es genial! lo que empezó como hojas planas, terminando como una estructura circular y divertida.

Después de mucho pegamento logramos una estructura increíble, y junto con los ojos saliendo por la calavera y nuestra raspberry pi montados dentro de nuestra nariz. Empezamos a sellar nuestra calabaza, aquí empezamos a tener dificultades, fue más difícil de lo pensábamos, pero después de un poco de ayuda de la cinta quedo lista!!

English:

We begin to fold our pieces, we will notice that we will make different folds, the instructions to glue all the pieces, will be together with the plans. This is very important since as you join the pieces, the folds create volume, and as you go along distinguish the final figure. It's great! what started as flat sheets, ending as a circular and fun structure.

After a lot of glue we achieved an incredible structure, and together with the eyes coming out of the skull and our raspberry pi mounted inside our nose. We started to seal our pumpkin, here we began to have difficulties, it was more difficult than we thought, but after a little help from the tape it was ready !!

Step 9:

Español:

Te invitamos a ver el Maker Camp especial de halloween y de dia de muertos, en donde mostramos el proceso de este increíble proyecto! Y tambien a que si quieres crear tus propia versión de la ilusión óptica, experimentar con más dobleces o si tienes una pregunta puedas compartirlo. Si compartes tu creación por redes sociales, no olvides etiquetarnos como MoonMakers y agregar los hashtags #MakeTogether #MakerCamp

Gracias : )

English:

We invite you to see the special Halloween and Day of the Dead Maker Camp, where we show the process of this incredible project! And also that if you want to create your own version of the optical illusion, experiment with more folds or if you have a question you can share it. If you share your creation on social networks, don't forget to tag us as MoonMakers and add the hashtags #MakeTogether #MakerCamp

Halloween Contest

Participated in the
Halloween Contest