Taula de continguts:

CleanBot de Guillaume Meurillon: 8 passos
CleanBot de Guillaume Meurillon: 8 passos

Vídeo: CleanBot de Guillaume Meurillon: 8 passos

Vídeo: CleanBot de Guillaume Meurillon: 8 passos
Vídeo: Presentation of NXTSpaceApps 2024, Juliol
Anonim
CleanBot de Guillaume Meurillon
CleanBot de Guillaume Meurillon
CleanBot de Guillaume Meurillon
CleanBot de Guillaume Meurillon

Aquesta és una guia d’un projecte que vaig fer per a l’escola. L’objectiu era crear un dispositiu amb el Raspberry Pi que estigués connectat a Internet, mentre es recopilaven dades dels sensors. Aquestes dades s’havien d’emmagatzemar en una base de dades (MySQL). Les dades s’havien de visualitzar amb un lloc web, codificat en Python amb el paquet Flask webapp i la plantilla Jinja2.

La meva idea era crear un robot aspirador "piratat", amb un Raspberry Pi, un Arduino, un robot aspirador ja trencat i un munt de sensors.

Pas 1: recollida de les peces

Recollida de les peces
Recollida de les peces
Recollida de les peces
Recollida de les peces
Recollida de les peces
Recollida de les peces
Recollida de les peces
Recollida de les peces

Abans de crear res, vaig fer moltes investigacions sobre quines parts utilitzar, com connectar-les, escrivint classes de programari a Python, etc.

La llista de peces s'inclourà com a fitxer, de manera que pugueu cercar fàcilment les peces que necessiteu.

Vaig decidir utilitzar un Arduino Uno al costat del Raspberry Pi, de manera que pogués llegir els meus sensors de manera eficient sense estressar el meu Raspberry Pi. També vaig escollir per l’Uno perquè té una bona velocitat de rellotge i pels pins analògics. Podria haver utilitzat un ADC (per exemple, MCP3008) per al meu Raspberry Pi, però hauria necessitat molts més cables, hauria estat més car i el meu Pi hauria de treballar molt més.

Llavors vaig començar a inspeccionar les peces que es podien utilitzar del buit del robot trencat. L’electrònica interna es va malmetre, però això no va suposar cap problema, perquè de totes maneres les substituiria totalment. Per sort, els motors de corrent continu continuaven funcionant, de manera que no s’havia de substituir cap d’aquests.

Llista de peces:

  • Raspberry Pi 3 amb almenys 8 GB MicroSD classe 10 i una funda;
  • Sabateria i taulers de pa Raspberry Pi;
  • Arduino Uno o similar (preferiblement una versió no xinesa amb un ADC decent, alguns xinesos tenen problemes AREF) amb algun cas;
  • Un cable ethernet;
  • Un robot (trencat) de buit;
  • 3x mòduls d'ultrasons HC-SR04;
  • 1x mòdul de sensor de sala;
  • Diverses resistències en valors diferents;
  • Un LDR;
  • 6x 18650 bateries de ions de Li + portadors de 3 cel·les per a 12V (preferiblement, heu d’utilitzar bateries noves o, fins i tot, fer servir millor bateries LiPo, aquestes duraran molt més);
  • 18650 (o qualsevol tipus de bateria que utilitzeu) PCB de càrrega de 3 cèl·lules de 12v;
  • Algunes taules de bricolatge de PCB per soldar els vostres components;
  • Una làmina de plàstic de poliuretà;
  • Un ordinador portàtil / d’escriptori.

Llista d'eines:

  • Un trepant amb diverses broques;
  • Un molinet d’angle (no l’utilitzeu si no teniu experiència) o alguna cosa així com un Dremel;
  • Un tros de paper de polir;
  • Diversos tornavisos;
  • Superglue, cola de muntatge, …;
  • Un soldador (utilitzeu greix per soldar els cables més fàcilment);
  • Un parell de talladores de filferro i una eina de despullar.

Llista de programari (opcional):

  • Adobe XD: emmarcar i crear un prototip;
  • Fritzing: crear un esquema elèctric;
  • PyCharm Professional: IDE de Python amb possibilitats d’utilitzar desplegament i intèrpret remot;
  • Massilla: connexió ssh ràpida i senzilla amb Pi;
  • Etcher.io: eina senzilla per fer passar una imatge Raspbian a una targeta SD;
  • Win32DiskImager: eina senzilla per crear una imatge a partir d'una configuració existent de Raspbian;
  • Bloc de notes Programadors: eina senzilla que podeu utilitzar per editar de manera segura el fitxer /boot/cmdline.txt.

Pas 2: Pintar en aerosol i dissenyar la interfície

Pintura en aerosol i disseny de la interfície
Pintura en aerosol i disseny de la interfície
Pintura en aerosol i disseny de la interfície
Pintura en aerosol i disseny de la interfície
Pintura en aerosol i disseny de la interfície
Pintura en aerosol i disseny de la interfície
Pintura en aerosol i disseny de la interfície
Pintura en aerosol i disseny de la interfície

Abans de començar a crear el disseny, vaig pintar amb aerosol l’exterior perquè no m’agradaven gens els colors. Vaig anar a la botiga i vaig agafar una imprimació de plàstic, una llauna de color blanc i una llauna de color turquesa per pintar la caixa superior.

Després de deixar assecar la pintura en aerosol, vaig buscar el codi de color hexadecimal exacte de la pintura que vaig utilitzar, de manera que pogués coincidir perfectament amb la meva interfície web amb el meu dispositiu. Trobar aquest codi hexadecimal va ser bastant fàcil, ja que vaig fer servir pintades de Montana 94 i els codis hexadecimal i RGB eren al seu lloc web.

Vaig crear filferros d'alta fidelitat per a cada pàgina del meu lloc web, de manera que sabia perfectament com anava a crear aquesta interfície. Després de mostrar la meva interfície als meus professors, vaig rebre el consell de fer el fons una mica més gris i els botons blancs, i el meu resultat va ser bo.

Pas 3: creació de la base de dades

Creació de la base de dades
Creació de la base de dades

El següent pas lògic era començar a pensar quines dades volia emmagatzemar a la base de dades MySQL. No hi ha tanta gent que vulgui saber sobre el seu buit, així que vaig anar amb taules per a usuaris i les seves dades d’inici de sessió, així com taules per a sensors (bateria, distància i contenidor de pols).

La imatge mostra el disseny de les meves taules, dibuixades a MySQL Workbench, amb totes les relacions entre les taules.

Per als meus usuaris, volia fer un seguiment del seu nom i cognoms per personalitzar la interfície i els correus electrònics. Per descomptat, per enviar correus electrònics, també necessitava la seva adreça de correu electrònic. També he afegit una taula per fer un seguiment de les preferències de correu electrònic dels meus usuaris (si volen rebre correus electrònics o no). L’últim que volia emmagatzemar sobre els usuaris és el seu paper per al dispositiu. Divido els usuaris com a administradors i usuaris normals. Els administradors tenen dret a afegir, eliminar i gestionar usuaris del sistema, mentre que els usuaris normals no poden accedir a aquestes eines.

La taula següent conté "deviceruns", que són les execucions reals que ha fet el dispositiu. Els deviceruns són propietat d'un determinat usuari (la persona que va iniciar l'execució) i tenen una hora d'inici i finalització per calcular el temps d'execució.

S’utilitza una altra taula per enllaçar sensordata a cada devicerun. Els mateixos sensors s’emmagatzemen en una altra taula, que conté el seu identificador, nom i descripció.

Pas 4: connectar les peces juntes

Connectar les peces juntes
Connectar les peces juntes
Connectar les peces juntes
Connectar les peces juntes

Després de crear l’esquema de base de dades, vaig començar a utilitzar taulers de connexió i cablejat per connectar totes les parts juntes en un prototip de treball.

Pas 5: Configuració del Raspberry Pi

Configuració del Raspberry Pi
Configuració del Raspberry Pi

Per baixar la imatge més recent de Raspbian, aneu al lloc web de Raspbian. Aquí podeu triar la distribució que voleu descarregar. Per a una operació més ràpida, podeu descarregar la distribució sense cap, per a un menor ús de RAM o descarregar l’escriptori amb GUI si preferiu una interfície gràfica d’usuari.

Per instal·lar el sistema operatiu, només heu de descarregar Etcher, és una eina GUI per escriure la imatge a la vostra targeta micro SD de forma ràpida i senzilla.

Per habilitar el mode sense cap, de manera que pugueu accedir al pi, haureu d’instal·lar Putty al vostre ordinador. El següent pas és anar a la carpeta d'arrencada creada per Etcher i obrir el fitxer cmdline.txt amb el vostre editor de text preferit, ex Programmers Bloc de notes. Afegiu aquest text al final del fitxer:

ip = 169.254.10.1

Assegureu-vos que no creeu cap línia nova, afegiu-la al final de la línia.

A continuació, torneu a l'arrel de la carpeta d'arrencada i creeu un fitxer anomenat ssh. No afegiu cap extensió, cosa que us garantirà que el servidor SSH s'iniciï cada vegada que s'iniciï el vostre Pi. Ara simplement poseu la targeta SD al vostre Pi, connecteu una font d’alimentació suficient al vostre Pi i afegiu un cable Ethernet entre el Pi i l’ordinador.

Obriu massilla i escriviu l'adreça IP: 169.254.10.1. Ara feu clic a SÍ i inicieu sessió, el nom d'usuari per defecte és pi i la contrasenya és raspberry.

A continuació, executeu l'ordre següent per estar actualitzat:

sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y

L'últim pas és crear un intèrpret virtual de Python al vostre Raspberry Pi, que executarà el vostre codi. Per fer-ho, només cal obrir massilla i escriure el següent:

sudo mkdir project1

cd project1 python3 -m pip install --actualitzar pip setuptools wheel virtualenv python3 -m venv --system-site-packages venv

Pas 6: escriure l'aplicació web

Redacció de l’aplicació web
Redacció de l’aplicació web

Després de connectar totes les parts i configurar el Raspberry Pi, vaig començar a escriure la meva aplicació web principal mitjançant Flask i Jinja2. Flask és un framework de backend fàcil d'utilitzar per a Python, i Jinja2 és el llenguatge de plantilles que he utilitzat. Amb Jinja, podeu crear fitxers HTML normals amb bucles for, si són estructures, etc.

Mentre codificava el dorsal, també vaig escriure la portada de l’aplicació, inclosos l’HTML, CSS i JavaScript per a alguns elements. He utilitzat el mètode ITCSS i la notació BEM per als meus fulls d’estil.

A més de l’aplicació web principal, també he creat 2 programes principals. Un està escrit per enviar l'adreça IP del dispositiu als usuaris de la llista. Tots els usuaris registrats que hagin acceptat rebre correus electrònics rebran un correu amb un enllaç per iniciar la interfície web. Aquest programa s’executa com un servei systemd.

L'altre fitxer principal és per al dispositiu real. Aquesta pàgina principal es pot trucar a través de la meva aplicació Flask per iniciar i aturar el dispositiu i recollir dades. Les dades recollides també es carreguen a la base de dades del dispositiu mitjançant aquesta pàgina principal. Aquestes dades es poden visualitzar a l'aplicació web.

L'aplicació web està connectada al dispositiu principal amb Python Threading. Quan un usuari fa clic al botó d'inici, es genera un fil per executar el dispositiu en segon pla. Mentrestant, l'usuari pot navegar perfectament per l'aplicació. En fer clic a Atura, aquest fil s’atura i el dispositiu s’atura.

Pas 7: Creació de peces per acabar la carcassa

Creació de peces per acabar la carcassa
Creació de peces per acabar la carcassa
Creació de peces per acabar la carcassa
Creació de peces per acabar la carcassa
Creació de peces per acabar la carcassa
Creació de peces per acabar la carcassa
Creació de peces per acabar la carcassa
Creació de peces per acabar la carcassa

Després d’escriure la part més gran de l’aplicació, vaig començar a modificar la carcassa del dispositiu, de manera que els meus sensors i altres components encaixessin realment. Per fer-ho, vaig comprar un full de poliuretà en una botiga de bricolatge local i vaig començar a tallar 2 mènsules. He utilitzat aquesta làmina de poliuretà, ja que és probable que no es trenqui en trossos durant el tall i perquè és bastant flexible, cosa perfecta ja que el meu robot té una forma circular.

El primer suport està fet per omplir un forat a la part superior, on hi havia una pantalla. Vaig substituir la pantalla per un interruptor d’encesa / apagada perquè les bateries es poguessin apagar.

L’altre suport és un suport per als meus sensors d’ultrasons HC-SR04 que es situen a la part frontal del dispositiu.

L’últim que quedava per fer era retallar un forat als reforços d’una de les rodes i introduir un imant per poder controlar les rotacions de la roda.

Després d’acabar aquests suports, també els he pintat amb esprai amb la pintura que em quedava, perquè s’ajustés al disseny.

Pas 8: el codi

Per instal·lar el programa, descarregueu el fitxer code.zip i descomprimiu-lo al directori project1.

A continuació, realitzeu aquesta ordre en un terminal de Raspbian o Putty:

sudo cp project1 / conf / project-1 * / etc / systemd / system /

sudo cp project1 / conf / project1- * / etc / systemd / system / sudo systemctl daemon-recoad sudo systemctl enable project-1 * sudo systemctl enable project1 * sudo systemctl reinicia nginx

A continuació, obriu la base de dades que heu generat i creeu un usuari nou amb una contrasenya resumida Argon2. Ara podeu utilitzar el programa.

Gaudeix-ne!

Recomanat: