tag:blogger.com,1999:blog-84859472056563637702024-03-19T06:21:00.516-07:00SETA43seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.comBlogger400125tag:blogger.com,1999:blog-8485947205656363770.post-79398755191826943982024-03-19T06:20:00.000-07:002024-03-19T06:20:25.106-07:00Coche remoto por Infrarrojos. Seguir línea negra.<p>
</p><h2><b><a href="http://seta43.duckdns.org/electro.html">Página
principal</a></b><b><br />
</b><b> </b> </h2>
<div align="center"><span><b><span style="color: #990000;">Coche
remoto por<br />
Infrarrojos<br />
Guía por línea negra automático<br />
<br />
</span></b></span></div>
<hr size="2" width="100%" />Siguiendo el anterior montaje, <a href="http://seta43.duckdns.org/car_a/car_a.html">http://seta43.duckdns.org/car_a/car_a.html</a>
, añadí sensores de infrarrojos para seguir una línea negra.<br />
<br />
<img alt="" height="360" src="http://seta43.duckdns.org/car_c/car_c1.jpg" width="400" /><br />
<img alt="" height="400" src="http://seta43.duckdns.org/car_c/car_c2.jpg" width="238" /><br />
<i><b>Sensores</b></i><br />
<br />
<img alt="" height="334" src="http://seta43.duckdns.org/car_c/car_c3.png" width="400" /><br />
<br />
El mayor problema que he tenido, son las librerías.<br />
Unas son incompatibles con otras, otras funcionan en algunas
versiones de arduino y otras no.<br />
<b><i>/*</i></b><b><i><br />
</i></b><b><i> You have to go into the .h and .cpp files and
change "WProgram.h" to Arduino.h</i></b><b><i><br />
</i></b><b><i> WProgram.h: No such file or directory</i></b><b><i><br />
</i></b><b><i> */</i></b><b><i><br />
</i></b><b><i> /*</i></b><b><i><br />
</i></b><b><i> Las librerías "IRremote" y "RobotIRremote"
son incompatibles</i></b><b><i><br />
</i></b><b><i> Tu tienes que instalar "IRremote" y desinstalar
"RobotIRremote".</i></b><b><i><br />
</i></b><b><i> */</i></b><br />
La solución es incluir las librerías modificadas que utilizo yo.<br />
<br />
Con un poco de código, añado el seguimiento de líneas.<br />
No he depurado mucho el código, solo es una prueba que funciona
razonablemente bien.<br />
La cinta negra es del tipo adhesiva eléctrica, alrededor de 9 a 10
mm.<br />
Es muy entretenido ver como sigue la línea.<br />
He utilizado un PowerBank , la pilas se habían agotado, <br />
<br />
<a href="http://seta43.duckdns.org/car_c/car_c.zip">Programa Arduino.</a><br />
<a href="http://seta43.duckdns.org/car_c/car_al.zip">Librerías utilizadas.</a><br />
<br />
<a href="http://seta43.duckdns.org/car_c/car_c2.mp4"><b><span>Video</span></b></a><br />
<br />
<b><span class="st"><span class="st"><br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<span style="color: #663366;"><b>Bibliografía:</b></span></b><b> </b><b><br />
</b><b> </b><br />
<a href="https://www.youtube.com/watch?app=desktop&v=Ux1nzNDKxoA">
https://www.youtube.com/watch?app=desktop&v=Ux1nzNDKxoA</a><br />
<a href="https://www.youtube.com/watch?v=4C8Y3caU4y0">https://www.youtube.com/watch?v=4C8Y3caU4y0</a><br />
<br />
<h2><span></span></h2>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-3542361861684664032024-03-17T05:44:00.000-07:002024-03-17T05:44:12.668-07:00Coche remoto por Módulo 433MHz<p>
</p><h2><b><a href="http://seta43.duckdns.org/electro.html">Página
principal</a></b><b><br />
</b><b> </b> </h2>
<div align="center"><span><b><span style="color: #990000;"><span style="font-family: Amiga;">Coche remoto por<br />
Módulo 433MHz</span><br />
</span></b></span></div>
<hr size="2" width="100%" />Continuando con mi anterior montaje, me dí
cuenta que en algunas ocasiones cuando perdía contacto visual con el
vehículo, también se perdía el contron.<br />
Esto era normal al ser mediante IR, por lo que me puse a
solucionarlo mediante módulos de RF de 433MHz.<br />
<img alt="" height="387" src="http://seta43.duckdns.org/car_b/car_b5.jpg" width="411" /><br />
Módulos RF<br />
<br />
<img alt="" height="203" src="http://seta43.duckdns.org/car_b/car_b2.png" width="400" /><br />
<img alt="" height="364" src="http://seta43.duckdns.org/car_b/car_b4.jpg" width="400" /><br />
<i><b>Emisor.</b></i><br />
<br />
<img alt="" height="329" src="http://seta43.duckdns.org/car_b/car_b1.png" width="400" /><br />
<img alt="" height="299" src="http://seta43.duckdns.org/car_b/car_b3.jpg" width="400" /><br />
<i><b>Receptor.</b></i><br />
<br />
Al contrario que con los IR , la señal de RF llega bastante más
lejos, traspasando paredes.<br />
El utilizar RF , se producen interferencia entre los motores de los
servos y la señal de RF, y lo mejor es utilizar diferente
alimentación, pero eso sería estudio de otro artículo.<br />
El mayor problema que he tenido, son las librerías.<br />
Unas son incompatibles con otras, otras funcionan en algunas
versiones de arduino y otras no.<br />
Como ejemplo, la librería Servo es incompatible con la librería
VirtualWire.<br />
La solución es incluir las librerías modificadas que utilizo yo.
<br />
<br />
<a href="http://seta43.duckdns.org/car_b/car_b.zip">Programa Arduino.</a><br />
<a href="http://seta43.duckdns.org/car_b/car_bl.zip">Librerías utilizadas.</a><br />
<br />
<a href="http://seta43.duckdns.org/car_b/car_b.mp4"><b><span>Video</span></b></a><br />
<br />
En un artículo anterior había probado la cámara <b>
<a href="http://seta43.duckdns.org/esp32b.html"><span class="st"><span class="st"><b>ESP-CAM</b></span></span></a></b><span class="st"><span class="st"> , y se me ocurrió colocársela al
vehículo para manejarlo a distancia.<br />
Vuelve a ocurrir lo mismo con las interferencia de la
alimentación, si la conecto directamente a los 5V del
arduino, algunas veces funciona y otras no.<br />
Para eliminar problemas en las pruebas, la alimento mediante una
Power-BANK.<b><br />
<br />
</b><img alt="" height="464" src="http://seta43.duckdns.org/car_b/car_b6.jpg" width="640" /><br />
<br />
<a href="http://seta43.duckdns.org/car_b/car_b2.mp4"><span><b>Video
cámara vehículo</b></span></a><br />
</span></span><br />
<br />
<b><span class="st"><span class="st"><br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<span style="color: #663366;"><b>Bibliografía:</b></span></b><b> </b><b><br />
</b><b> </b>
<p style="margin-bottom: 0cm;">
14/05/2014 - Arduino - Reloj con medidor de temperatura y humedad
externa.433MHz - MX-05V. <a href="http://seta43.duckdns.org/arnote.html">arnote</a><br />
07/05/2014 - Arduino - Receptor temperatura y
humedad-433MHz-MX-05V. <a href="http://seta43.duckdns.org/ardurx.html">ardurx</a><br />
06/05/2014 - Arduino-Transmisor temperatura y
humedad-433MHz-MX-FS-03V. <a href="http://seta43.duckdns.org/ar433.html">ar433</a></p>
<br />
<br />
<h2><span></span></h2>
<p> </p>seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-70844852674058534132024-03-16T03:34:00.000-07:002024-03-16T03:35:58.726-07:00Coche remoto por Infrarrojos<p>
</p><h2><b><a href="http://seta43.duckdns.org/electro.html">Página
principal</a></b><b><br />
</b><b> </b> </h2>
<div align="center"><span><b><span style="color: #990000;">Coche
remoto por<br />
Infrarrojos<br />
<br />
</span></b></span></div>
<hr size="2" width="100%" />El otro día me encontré en el Rastro un
Freaduino . Es un arduino UNO con algunas buena modificaciones,
junto con varios accesorios, un vehículo movido por servos
modificados, y un conjunto de sensores.<br />
<a href="https://forum.arduino.cc/t/review-de-freaduino-uno-placa-compatible-con-el-arduino-uno/168846">https://forum.arduino.cc/t/review-de-freaduino-uno-placa-compatible-con-el-arduino-uno/168846</a><br />
<br />
<span class="st"><span class="st">Si tienes un servo y quieres
utilizarlo para giro continuo, existe numerosos tutoriales que
te explican como hacerlo.<br />
El resumen de la modificación que debes hacer es: <br />
-Quitar el potenciómetro y sustituirlo por dos resistencias
iguales (10K).<br />
-Eliminar el tope que existe en uno de los rodamientos para que
gire 360 º.<br />
La prueba sencilla que se me ocurrió fue hacer un coche
teledirigido mediante un mando a distancia de televisión, en mi
caso LG.<br />
<br />
Lo primero es tener el receptor de IR, yo tengo muchos de
reciclaje. <br />
<img alt="" height="128" src="http://seta43.duckdns.org/car_a/car_a.jpg" width="320" /><br />
<br />
<img alt="" height="400" src="http://seta43.duckdns.org/car_a/car_a2.png" width="397" /><br />
Las pruebas se hicieron en el nano, y como todo funcionaba bien
lo pase al Freaduino.<br />
<br />
</span></span><b><span class="st"><span class="st"><img alt="" height="400" src="http://seta43.duckdns.org/car_a/car_a1.jpg" width="330" /><br />
</span></span></b>El montaje en Freaduino.<br />
<br />
El mayor problema que he tenido, son las librerías.<br />
Unas son incompatibles con otras, otras funcionan en algunas
versiones de arduino y otras no.<br />
<span><i><b>/*</b></i><i><b><br />
</b></i><i><b> You have to go into the .h and .cpp files and
change "WProgram.h" to Arduino.h</b></i><i><b><br />
</b></i><i><b> WProgram.h: No such file or directory</b></i><i><b><br />
</b></i><i><b> */</b></i><i><b><br />
</b></i><i><b> /*</b></i><i><b><br />
</b></i><i><b> Las librerías "IRremote" y "RobotIRremote"
son incompatibles</b></i><i><b><br />
</b></i><i><b> Tu tienes que instalar "IRremote" y desinstalar
"RobotIRremote".</b></i><i><b><br />
</b></i><i><b> */</b></i></span><br />
La solución es incluir las librerías modificadas que utilizo yo.<br />
<br />
<a href="http://seta43.duckdns.org/car_a/car_a.zip">Programa Arduino.</a><br />
<a href="http://seta43.duckdns.org/car_a/car_al.zip">Librerías utilizadas.</a><br />
<br />
<a href="http://seta43.duckdns.org/car_a/car_a.mp4"><b><span>Video</span></b></a><br />
<br />
<b><span class="st"><span class="st"><br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<span style="color: #663366;"><b>Bibliografía:</b></span></b><b> </b><b><br />
</b><b> </b><br />
<a href="https://www.youtube.com/watch?app=desktop&v=Ux1nzNDKxoA">
https://www.youtube.com/watch?app=desktop&v=Ux1nzNDKxoA</a><br />
<a href="https://www.youtube.com/watch?v=4C8Y3caU4y0">https://www.youtube.com/watch?v=4C8Y3caU4y0</a><br />
<a href="http://seta43.duckdns.org/artren.html">Tren IR</a><br />
<a href="http://seta43.duckdns.org/armiko.html">Coche RC</a><br />
<a href="http://seta43.duckdns.org/miservo.html">SERVO</a><br />
<h2><span></span></h2>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-41348854036660376602024-03-12T12:10:00.000-07:002024-03-12T12:10:59.026-07:00Corte Láser en Linux<p></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/NZZfhhzZmEI" width="320" youtube-src-id="NZZfhhzZmEI"></iframe></div><br /> <p></p><p> <b><a href="http://seta43.duckdns.org/informa.html">Página
principal</a></b><b>
</b><b> </b> </p>
<div align="center"><span><b><span style="color: #990000;">Corte Láser<br />
en<br />
Linux<br />
</span></b></span></div>
<hr size="2" width="100%" />Después de algún tiempo de hacer montajes
con el cortador láser:<br />
28/11/2018 - Arduino - Inkscape Laser Tool Plug-in, GRBL, Universal
GcodeSender, PARTE 5. <a href="http://seta43.duckdns.org/cnce.html">CNCE</a>
<br />
12/06/2020 - ARDUINO - CNC Láser y dibujado con Ender 3. <a href="http://seta43.duckdns.org/cncen.html">ENDER 3</a>
<br />
10/06/2022 - Crear circuitos impresos (PCB) con KICAD, FlatCAM,
Candle, y CNC 3018. <a href="http://seta43.duckdns.org/circnc.html"> PCB_CNC_II</a><b><span class="st"><span class="st">
<br />
</span></span></b><span class="st"><span class="st">Vuelvo a
utilizar el láser que viene con la </span></span><b><span class="st"><span class="st">CNC 3018 </span></span></b>, no es
muy potente 2.5W, apenas corta papel, y en varias pasadas cartón de
1 mm.<br />
Para marcar (quemar) madera funciona bien, pero no se le puede pedir
mucho con esta potencia.<br />
<img alt="" height="284" src="http://seta43.duckdns.org/claser/claser1.jpg" width="387" /><br />
<br />
En Linux, el intentar hacer funcionar un programa de hace 4
años, en muchos casos se hace imposible.<br />
Lo que te funcionaba en Debian 10, no te funciona en Debian 12. Esto
es debido al cambio de librerías. <br />
En muchos casos suele se el cambio desde Python 2 a python 3, los
programados con uno no funcionan en el otro, se debe hacer una
pequeña modificación de código, y en muchos casos no se hace. Los
complementos de FreeCAD y InkScape en bastantes casos dejan de
funcionar bien al estar programados en Python.<br />
También ocurre con con el paso de QT4 a QT5, o en WX con sus
diferentes versiones.<br />
Se suele solucionar haciendo programas portables que incorporan sus
librerías de trabajo, pero entonces el tamaño de un pequeño programa
es de 100Mbytes.<br />
Al final la mejor solución es utilizar las versiones de Windows, que
en la mayoría de los casos, los programas de hace 15 años funcionan
en las versiones nuevas de Windows. Esto es lo que tiene perdido
Linux frente a Windows, y es una de las cosas pendientes que
tiene Linux.<br />
Otra solución que empleo muchas veces, es utilizar maquinas
virtuales con distribuciones Debian antiguas, funciona muy bien.<br />
<br />
Para el corte con láser la mejor opción es buscar gráficos
vectorizados de siluetas, búscalos en esta web:<br />
<a href="https://openclipart.org/search/?p=2&query=silueta">https://openclipart.org/search/?p=2&query=silueta</a><br />
Para las fuentes se suelen utilizar las que no cortan completamente
las fuentes, y de esta forma no se pierde el circulo de por ejemplo
la O, búscalos en esta web:<br />
<a href="https://www.1001fonts.com/search.html?search=stenciled">https://www.1001fonts.com/search.html?search=stenciled</a><br />
<br />
El programa que utilizo es InkScape para generar los Gcode mediante
sus complementos.<br />
Si no se pueden añadir automáticamente desde el propio programa,
deberás copiarlos manualmente en:<br />
<b>/home/usuario/.config/inkscape/extensions</b><br />
<br />
Las fuentes las tienes que copiar a:<br />
<b>/home/usuario/.local/share/fonts</b><br />
<br />
<span style="color: #660000;"><u><span><b>DEBIAN 10</b></span></u></span><br />
En las primeras pruebas descubrí que muchos complementos que se
utilizan para el láser, solo funcionaban en Debian 10, hay hice mi
primera prueba.<br />
Para generar el código Gcode utilizo el complemento <b>LaserTools</b>
en InkScape 9.2 .<br />
Debemos ajustar las opciones del complemento para que funcione en
nuestra máquina láser.<br />
En el video adjunto se muestra como pruebo los cortes de papel con
láser.<br />
<img alt="" height="285" src="http://seta43.duckdns.org/claser/claser3.jpg" width="370" /><br />
<img alt="" height="196" src="http://seta43.duckdns.org/claser/claser2.jpg" width="640" /><br />
<br />
<span style="color: #660000;"><u><span><b>DEBIAN 12</b></span></u></span><br />
La siguiente prueba es en Debian 12, también utilizo el programa
InkScape 1.2 , pero como explicamos anteriormente, muchos
complementos dejan de funcionar bien, y hay que utilizar otros. <br />
El complemento utilizado es<b> J-Tech-Photonics-Laser-Tool </b>y se
puede bajar de:<br />
<a href="https://github.com/JTechPhotonics/J-Tech-Photonics-Laser-Tool/releases/tag/v2.5.1">https://github.com/JTechPhotonics/J-Tech-Photonics-Laser-Tool/releases/tag/v2.5.1</a><br />
Como en el anterior complemento debemos retocar todas las opciones.<br />
<img alt="" height="433" src="http://seta43.duckdns.org/claser/claser5.jpg" width="800" /><br />
<img alt="" height="332" src="http://seta43.duckdns.org/claser/claser4.jpg" width="640" /><br />
<br />
Para lanzar el código Gcode a la máquina láser, en ambos casos,
tanto en Debian 10 como en Debian 12, utilizo Universal Gcode Sender
, y se baja de:<br />
<a href="https://winder.github.io/ugs_website/">https://winder.github.io/ugs_website/</a><br />
Aquí debemos buscar la versión que funciona en nuestra distribución.<br />
<u><br />
</u><u><span style="color: #660000;"><b>Lightburn</b></span></u><br />
Este programa es comercial y se puede comprar por 60€, pero si
queremos usarlo en modo TRIAL, se puede utilizar durante 30 días<br />
Es un programa muy fácil de utilizar, y tiene versiones tanto para
Windows como para Linux, esto es un lujo. <br />
<a href="https://lightburnsoftware.com/">https://lightburnsoftware.com/</a><br />
<img alt="" height="435" src="http://seta43.duckdns.org/claser/claser6.jpg" width="800" /><br />
<br />
<u><span style="color: #660000;"><b>LaserGRBL</b></span></u><br />
Este es un programa sencillo y fácil de utilizar, pero solo funciona
en Windows. <br />
Yo lo he ejecutado en una máquina virtual bajo Debian, y funciona
perfectamente.<br />
Puede grabar imágenes, generar gráficos vectorizados, lanzar código
Gcode, pero no tiene ninguna utilidad para editar.<br />
<a href="https://lasergrbl.com/">https://lasergrbl.com/</a><br />
<img alt="" height="747" src="http://seta43.duckdns.org/claser/claser7.jpg" width="795" /><br />
<br />
<b><span class="st"><span class="st"><a href="https://youtu.be/NZZfhhzZmEI"><span>VIDEO</span></a><br />
<br />
</span></span></b><span class="st"><span class="st"><span style="color: red;"><b>Ante todo debéis utilizar gafas
para no quedaros ciegos, es muy peligroso.</b></span><br />
</span></span><b><span class="st"><span class="st"><br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<span style="color: #663366;"><b>Bibliografía:</b></span></b><b> </b><a href="https://openclipart.org/search/?p=2&query=silueta"><b><br />
</b><b> </b>https://openclipart.org/search/?p=2&query=silueta</a><br />
<a href="https://www.1001fonts.com/search.html?search=stenciled">https://www.1001fonts.com/search.html?search=stenciled</a><br />
<a href="https://github.com/JTechPhotonics/J-Tech-Photonics-Laser-Tool/releases/tag/v2.5.1">https://github.com/JTechPhotonics/J-Tech-Photonics-Laser-Tool/releases/tag/v2.5.1</a><br />
<a href="https://winder.github.io/ugs_website/">https://winder.github.io/ugs_website/</a><br />
<a href="https://lasergrbl.com/">https://lasergrbl.com/</a><br />
<a href="https://lightburnsoftware.com/">https://lightburnsoftware.com/</a><br />
<br />
28/11/2018 - Arduino - Inkscape Laser Tool Plug-in, GRBL, Universal
GcodeSender, PARTE 5. <a href="http://seta43.duckdns.org/cnce.html">CNCE</a><br />
12/06/2020 - ARDUINO - CNC Láser y dibujado con Ender 3. <a href="http://seta43.duckdns.org/cncen.html">ENDER 3</a> <br />
10/06/2022 - Crear circuitos impresos (PCB) con KICAD, FlatCAM,
Candle, y CNC 3018. <a href="http://seta43.duckdns.org/circnc.html"> PCB_CNC_II</a><b><span class="st"><span class="st"> </span></span></b><br />
<b><span class="st"><span class="st"> </span></span></b><br />
<h2><span></span></h2>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-34364973928934071512024-02-26T12:10:00.000-08:002024-02-26T12:10:16.539-08:00Crear mando cadena musical con FreeCAD<p> El otro día encontré un amplificador de cadena de música tirado en la basura.</p><p>Además de que le faltaban los cables de alimentación, también le habían quitado el mando del volumen.</p><p>Me puse a trabajar para crear un mando en freeCAD e imprimirlo en 3D con mi Ender 3</p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="321" src="https://www.youtube.com/embed/SO5LEuWOt60" width="386" youtube-src-id="SO5LEuWOt60"></iframe></div><br /><p><br /></p>seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-19591712239619356902024-02-26T04:55:00.000-08:002024-02-26T04:56:54.247-08:00Gráficas de datos metereológicos. Python. Generar página web. II<p>
</p><h2><b><a href="http://seta43.duckdns.org/electro.html">Página
principal</a></b><b><br />
</b><b> </b> </h2>
<div align="center"><span><span style="color: #cc0000;"><b>Gráficas
de datos metereológicos.</b><b><br />
</b><b> Python.</b><b><br />
</b><b> Generar página web.</b><b><br />
</b><b>II</b></span><b><span style="color: #990000;"><big><big><big><br />
</big></big></big> </span></b></span></div>
<hr size="2" width="100%" />Buscando chip para hacer un control
remoto, encontré este par de chip TX2 y RX2.<br />
Hace unos años hice <b><span><a>webgra.html</a></span></b>
para generador de gráficos con datos de un sensor, funcionaba bien,
hasta que el sensor dejo de funcionar.<br />
No tenía un sensor comercial exterior con detección de humedad, por
lo que lo he modificado para que solo funcione con el sensor de
temperatura. Utilizo este sensor que ya tengo funcionando mas de 19
años sin problemas.<br />
<img alt="" height="640" src="http://seta43.duckdns.org/webgrax/rec4330.jpg" width="450" /><br />
El desarrollo de la comunicación con el arduino está explicado en: <b><a href="http://seta43.duckdns.org/ard433.html">ard433.html</a></b><b> </b>
y <b><span><a href="http://seta43.duckdns.org/rec433.html">rec433.html </a></span></b><br />
La conexión con el servidor se hace mediante un puerto USB, por
donde se recibe los datos del sensor.<br />
<img alt="" height="640" src="http://seta43.duckdns.org/webgrax/webgrax2.jpg" width="477" /><br />
<br />
<img alt="" height="400" src="http://seta43.duckdns.org/webgrax/webgrax3.png" width="354" /><br />
<br />
<img alt="" height="640" src="http://seta43.duckdns.org/webgrax/webgrax4.png" width="347" /><br />
<br />
<a href="http://seta43.duckdns.org/ztempera/index.html">Visor en
tiempo real.</a><br />
<br />
<a href="http://seta43.duckdns.org/webgrax/webgrax.zip"><b>ARCHIVOS</b></a><br />
<b><span class="st"><span class="st"> <br />
<br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<span style="color: #663366;"><b>Bibliografía:</b></span></b><b> </b><b><br />
</b><b> <span><a href="http://seta43.duckdns.org/webgra.html">webgra.html</a><br />
<a href="http://seta43.duckdns.org/camtem.html">camtem.html</a></span></b><br />
<b><span><a href="http://seta43.duckdns.org/ard433.html">ard433.html</a></span></b><br />
<br />
<br />
<br />
<h2><span></span></h2>
<p> </p>seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-79017656113764956462024-02-25T05:04:00.000-08:002024-02-25T05:09:21.012-08:00TX2/RX2 remote controler<p>
</p><h2><b><a href="http://seta43.duckdns.org/electro.html">Página
principal</a></b><b><br />
</b><b> </b> </h2>
<div align="center"><span><b><span style="color: #990000;">TX2/RX2
remote controler<br />
<br />
</span></b></span></div>
<hr size="2" width="100%" />Buscando chip para hacer un control
remoto, encontré este par de chip TX2 y RX2.<br />
Este par de chip vienen en la mayoría de los juguetes baratos
(coches), que llevan mandos a distancia.<br />
Son baratos y además su tensión de trabajo va desde los 2.2V a los
5V, por lo cual se pueden alimentar con dos baterías de 1.5V.<br />
El montaje mas sencillo es la conexión directa entre ambos chip.<br />
<img alt="" height="201" src="http://seta43.duckdns.org/tx2/tx2_1.png" width="400" /><br />
Este montaje no tiene ninguna complicación, lo único que debemos es
ajustar los potenciómetros para que tengan la misma frecuencia,
alrededor de los 128KHz, no hace falta que sea muy precisa.<br />
<br />
<hr size="2" width="100%" /><br />
El segundo montaje es que la conexión sea mediante rayos
infrarrojos.<br />
<img alt="" height="190" src="http://seta43.duckdns.org/tx2/tx2_2.png" width="400" /><br />
<img alt="" height="227" src="http://seta43.duckdns.org/tx2/tx2_6.jpg" width="400" /><br />
<i><b>Emisor.</b></i><br />
<br />
<img alt="" height="155" src="http://seta43.duckdns.org/tx2/tx2_3.png" width="400" /><br />
<img alt="" height="289" src="http://seta43.duckdns.org/tx2/tx2_7.jpg" width="400" /><br />
<b><i>Receptor.</i></b><br />
<br />
Aquí debemos ajustar un poco mas. Debemos saber la frecuencia de
nuestro receptor de IR. Lo normal es que sea de 38KHz.<br />
Entonces debemos ajustar el potenciómetro ajustable (500K)
para que la frecuencia de oscilación sea de 76KHz, el doble de la
frecuencia a que funciona el diodo IR.<br />
Aún así como tenía varios diodos de IR, me encontré que algunos no
reciben continuamente y a los 2 segundos dejan de recibir señal.<br />
<br />
<hr size="2" width="100%" /><br />
El tercer método de conexión entre el emisor y el receptor es con
módulos de RF de 433MHz o 315MHz.<br />
<img alt="" height="318" src="http://seta43.duckdns.org/tx2/tx2_10.jpg" width="411" /><br />
<img alt="" height="188" src="http://seta43.duckdns.org/tx2/tx2_4.png" width="400" /><br />
<img alt="" height="186" src="http://seta43.duckdns.org/tx2/tx2_8.jpg" width="400" /><br />
<b><i>Emisor.</i></b><br />
<br />
<img alt="" height="152" src="http://seta43.duckdns.org/tx2/tx2_5.png" width="400" /><br />
<img alt="" height="198" src="http://seta43.duckdns.org/tx2/tx2_9.jpg" width="400" /><br />
<i><b>Receptor.</b></i><br />
<br />
Lo mejor de este caso es que la señal llega por toda la casa , o más
lejos si es campo abierto<br />
<br />
Al estar este par de Chip dedicados al manejo de juguetes tipo
coche, los mandos no son independientes, no podemos pulsar al mismo
tiempo izquierda y derecha, en este caso solo ira hacia un lado.
Esto mismo caso paso al pulsar adelante y atrás, solo irá en una
sola dirección.<br />
En al página: <a href="https://github.com/dimircea/RX2-TX2-RC">https://github.com/dimircea/RX2-TX2-RC</a>
se muestra el código en arduino para sustituir el chip transmisor
por un arduino.<br />
<b><span class="st"><span class="st"><br />
<img alt="" height="117" src="http://seta43.duckdns.org/tx2/tx2_11.png" width="640" /><br />
<br />
<img alt="" height="129" src="http://seta43.duckdns.org/tx2/tx2_12.png" width="640" /><br />
</span></span></b><span class="st"><span class="st"><i><b>Gráfica
de señal correspondiente a un pulsador. </b></i><br />
</span></span><b><span class="st"><span class="st"><br />
<br />
<br />
<br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<span style="color: #663366;"><b>Bibliografía:</b></span></b><b> </b><b><br />
</b><b> </b><br />
<a href="https://github.com/dimircea/RX2-TX2-RC">https://github.com/dimircea/RX2-TX2-RC</a><br />
<h2><span></span></h2>
<p> </p>seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-37298236348270978872023-11-03T03:48:00.002-07:002023-11-03T03:48:12.927-07:00HY300 Transpeed-proyector inside - interior Opinión<p>
<b> </b>
<b><a href="http://seta43.duckdns.org/informa.html">Página principal</a></b><br />
</p><div align="center"><span> <b><span style="color: #990000;">
</span></b></span><span><b><span style="color: #990000;">HY300<br />
Transpeed-proyector<br />
inside - interior<br />
Opinión<br />
</span></b><b> </b></span></div>
<span> </span> <b> </b>
<hr size="2" width="100%" />Mirando en Aliexpress encontre un
proyector , HY300 , que por 55€ prometía mucho.<br />
Estos chinos fabrican de todo, bueno, malo, y me arriesgue a
comprarlo.<br />
Sus características son:<br />
<b>Transpeed-proyector portátil 4K para cine al aire libre,
dispositivo con Android 11, HY300, Dual, Wifi6, 200ANSI, Allwinner
H713, BT5.0, 1080P, 1280x720P</b><br />
<img alt="" height="400" src="http://seta43.duckdns.org/hy300/hy3007.jpg" width="396" /><br />
<br />
Es como una mini copia barata (externamente) del proyector Samsung
The Freestyle.<br />
<br />
Lo curioso del caso, suele pasar mucho en Aliexpress, el mismo
proyector lo puedes comprar desde los 52€ hasta los 80€.<br />
Todos tienen las mismas características, en teoría, y no distingues
a uno de otro, yo me decidí por el de 55€.<br />
<br />
Opinión:<br />
<br />
Cosas que hay que tener en cuenta antes de comprarlo. -No funcionan
lo discos duros portátiles, he probado varios, solo funcionan las
memorias USB externas, he probado hasta 128G.<br />
<br />
-La corrección trapezoidal y el zoom no son ópticos, lo hace
mediante software, por lo que si reduces el zoom pierde calidad. Y
si corriges el trapezoide y está la pantalla cerca, el enfoque no
será del todo correcto. <br />
-Si actualizas el android que lleva de serie, perderás muchos
ajustes, que aunque no son necesarios para el buen funcionamiento me
gustaría poder tenerlos.<br />
-Existen muchas aplicaciones que vienen de serie, no puedes
desinstalar.<br />
-El android va fluido y tiene suficiente potencia para la mayoría de
las aplicaciones.<br />
-El almacenamiento interno es básico 8G.<br />
-Se ven bien los partidos a través de internet.<br />
<br />
En teoría según el angulo de inclinación se debería corregir el
defecto del trapezoide en la imagen. <br />
Alguna veces funciona y otras no, mejor ponerlo en manual.<br />
<br />
A algunos les resulta extraño, pero me gusta desarmar los productos
que compro.<br />
<br />
Memoria: 4 x H5TQ2G43CFR Total 1Gbyte de memoria RAM<br />
Procesador-Gráfica: H713<br />
Memoria almacenamiento : 8G<br />
<br />
<img alt="" height="223" src="http://seta43.duckdns.org/hy300/hy3002.jpg" width="400" /><br />
<br />
<img alt="" height="238" src="http://seta43.duckdns.org/hy300/hy3004.jpg" width="400" /><br />
<br />
<img alt="" height="225" src="http://seta43.duckdns.org/hy300/hy3006.jpg" width="400" /> <br />
<img alt="" height="339" src="http://seta43.duckdns.org/hy300/hy3001.jpg" width="400" /><br />
<br />
<img alt="" height="400" src="http://seta43.duckdns.org/hy300/hy3003.jpg" width="278" /><br />
<br />
<span class="st"><span class="st"><img alt="" height="400" src="http://seta43.duckdns.org/hy300/hy3005.jpg" width="225" /><br />
<b><span class="st"></span></b><br />
Conclusión:<br />
</span></span><br />
<span class="st"><span class="st">Por el precio 52€ no se puede
pedir un proyector mejor.<br />
<br />
Mejoras que debería tener:<br />
-En la base debería tener un tornillo para colocarlo a un
trípode.<br />
-Un pequeño ajuste manual del efecto trapezoidal.<br />
-La lente debería tener más profundidad, con esta lente debes
tener el proyector cerca de la pantalla para que la imagen no
sea muy grande.<br />
-La colocación de los conectores USB , AC, deberían estar en
otro lado.<br />
<br />
</span></span><b><span class="st"><span class="st"><br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<span style="color: #663366;"><b><br />
</b></span></b><b><br />
<br />
</b> <b><tt> </tt></b><b> </b>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-88731921919972987762023-11-02T04:39:00.005-07:002023-11-02T04:39:32.480-07:00FreeCAD - Diseño antena 1090Mhz<p>
<b> </b>
<b><a href="http://seta43.duckdns.org/electro.html">Página principal</a></b><b><br />
</b><b> </b>
</p><div align="center"><span><b><span style="color: #990000;">FreeCAD<br />
Diseño antena 1090Mhz<br />
</span></b></span></div>
<hr size="2" width="100%" />Después de utilizar el programa dump1090 ,
decidí realizar una antena de 1/4 de onda para la frecuencia de 1090
MHz.<br />
Haciendo algunos cálculos:<br />
<br />
<img alt="" height="195" src="http://seta43.duckdns.org/a1090/a1090g.png" width="400" /><br />
<br />
<br />
Hacía tiempo que no realizaba nada con FreeCAD<span class="st"><span class="st">, y antes de que se me olvide, me puse manos a la
obra e hice una pieza en 3D y lo imprimí PLA.<br />
<img alt="" height="277" src="http://seta43.duckdns.org/a1090/a1090a.png" width="400" /><br />
<br />
<img alt="" height="274" src="http://seta43.duckdns.org/a1090/a1090b.png" width="400" /><br />
<br />
<img alt="" height="297" src="http://seta43.duckdns.org/a1090/a1090c.jpg" width="400" /><br />
<br />
<img alt="" height="293" src="http://seta43.duckdns.org/a1090/a1090d.jpg" width="400" /><br />
<br />
<img alt="" height="400" src="http://seta43.duckdns.org/a1090/a1090e.jpg" width="225" /><br />
<br />
<img alt="" height="368" src="http://seta43.duckdns.org/a1090/a1090f.jpg" width="400" /><br />
<br />
El diseño de antenas es de lo mas difícil, por lo que no estoy
seguro de su buen diseño.<br />
</span></span><span class="st"><span class="st">Hace unos años
realicé</span></span><span class="st"><span class="st"> una
antena para FM (<a href="http://seta43.duckdns.org/antefm.html">antefm.html</a>)
y el ajuste lo hice con el medidor de ondas estacionarias</span></span><span class="st"><span class="st"> pero para esta frecuencia no puedo.</span></span><b><span class="st"><span class="st"> <br />
<br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<span style="color: #663366;"><b>Bibliografía:</b></span></b><b> </b><b><br />
</b><b> </b><b><tt><br />
</tt></b><span><br />
</span><b><tt><span class="st"><span class="st"><span><a href="http://seta43.duckdns.org/antefm.html">ANTENA FM</a></span><br />
<br />
</span></span> </tt></b><b> </b>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-40028216276149856682023-10-29T13:09:00.006-07:002023-11-01T11:22:52.916-07:00dump1090 en Linux - ADS-B Debian 12 y MX23<p>
<b> </b>
<b><a href="http://seta43.duckdns.org/electro.html">Página principal</a></b><b><br />
</b><b> </b>
</p><div align="center"><span><b><span style="color: #990000;">LINUX<br />
dump1090 - ADS-B<br />
Debian 12 y MX23</span></b></span></div>
<hr size="2" width="100%" />Las siglas ADS-B (<span style="font-style: italic;">Automatic dependent surveillance-broadcast</span>)
significan Vigilancia dependiente automática.<br />
Después de 10 años he vuelto a probar el dump1090. <a href="http://seta43.duckdns.org/raspavi.html">raspavi.html </a>y
<a href="http://seta43.duckdns.org/ra_rtl1.html">ra_rtl1.html</a> <br />
Dump1090 es un programa que utilizando el receptor de TDT que emplea
el chip RTL2832U+R820T (7€ - 20€) recibe las señales que emiten los
aviones para indicar su posicionamiento.<br />
Los mensajes ADS-B, son transmitidos por el equipo a bordo de los
aviones de manera periódica, y utilizan la banda de 1090 MHz, tanto
a otras aeronaves como a las estaciones de control en tierra.<br />
El dump1090-mutability es un fork de dump1090 , es el que viene con
las distribuciones.<br />
Al intentar instalarlo en una distribución de Linux, me surgieron
bastantes problemas, por lo que decidí hacer un video-tutorial.<br />
Después de muchas pruebas he tenido que borrar la configuración que
viene por defecto en nginx, de otra forma no me funciona.<br />
<br />
Los dos programas que tenemos que instalar son:<br />
<span style="color: #993300;">nginx</span> - servidor web<br />
<span style="color: #993300;">dump1090-mutability</span> - el programa
receptor de señales ADS-B<br />
<br />
Serie de comandos para la instalación:<br />
<br />
<span style="color: #003300;"><b>/etc/init.d/dump1090-mutability stop</b><b><br />
</b><b>sudo dpkg-reconfigure dump1090-mutability</b><b><br />
</b><b>/etc/init.d/dump1090-mutability start</b><b><br />
</b><b><br />
</b><b>ln -s /etc/nginx/sites-available/dump1090-mutability
/etc/nginx/sites-enabled/dump1090.conf</b><b><br />
</b><b>rm /etc/nginx/sites-enabled/default</b><b><br />
</b><b>ls /etc/nginx/sites-enabled/</b><b><br />
</b><b>/etc/init.d/nginx restart</b><b><br />
</b><b>nginx -T</b></span><br />
<br />
<br />
<br />
En algún caso no funciona debido a que no reconoce la tarjeta
receptora usb.<br />
<br />
Lo podemos ver con la orden:<br />
<i><b><br />
more /var/log/dump1090-mutability.log</b></i><br />
<br />
Wed Nov 1 18:40:23 2023 CET EB_SOURCE EB_VERSION
starting up.<br />
Using sample converter: UC8, integer/table path<br />
No supported RTLSDR devices found.<br />
<br />
Editamos el fichero con la orden:<br />
<br />
<i><b>nano /etc/udev/rules.d/rtl-sdr.rules</b></i><br />
<br />
Copia lo siguiente:<br />
<br />
<span style="color: #003300;"><b>SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda",
ATTRS{idProduct}=="2838", MODE:="0666"</b></span><br />
<br />
Para ver que ID del USB tiene tu tarjeta ejecuta la orden <i><b>lsusb
.</b></i> En mi caso es:<br />
<span style="color: #006600;"><i> Bus 002
Device 002: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838
DVB-T</i></span><br />
Modifica para tu receptor 0bda and 2838 para que coincida con
el tuyo.<br />
<br />
Guarda el fichero.<br />
<br />
<br />
Editamos con la orden:<br />
<br />
<i><b>sudo nano /etc/modprobe.d/no-rtl.conf</b></i><br />
<br />
Añade las lineas:<br />
<br />
<span style="color: #003300;"><b>blacklist dvb_usb_rtl28xxu</b><b><br />
</b><b> blacklist rtl2832</b><b><br />
</b><b> blacklist rtl2830</b></span><br />
<br />
Guarda el fichero y reinicia el ordenador.<br />
<br />
Después tecleamos:<br />
<br />
<i><b>more /var/log/dump1090-mutability.log</b></i><br />
<br />
Wed Nov 1 18:40:23 2023 CET EB_SOURCE EB_VERSION
starting up.<br />
Using sample converter: UC8, integer/table path<br />
No supported RTLSDR devices found.<br />
Wed Nov 1 18:48:32 2023 CET EB_SOURCE EB_VERSION
starting up.<br />
Using sample converter: UC8, integer/table path<br />
Found 1 device(s):<br />
0: Realtek, RTL2838UHIDIR, SN: 00000001 (currently selected)<br />
Found Rafael Micro R820T tuner<br />
Max available gain is: 49.60 dB<br />
Setting gain to: 49.60 dB<br />
Gain reported by device: 49.60 dB<br />
Allocating 15 zero-copy buffers<br />
<b><span class="st"><span class="st"> <br />
</span></span></b><span class="st"><span class="st">La tarjeta
receptora ha sido detectada y ya podemos ver los aviones en el
navegador en la dirección:<br />
<br />
<span style="color: #006600;"><b>localhost/dump1090</b></span><br />
</span></span><br />
<br />
<br />
<img alt="" height="422" src="http://seta43.duckdns.org/dump/dump.jpg" width="794" /><br />
<br />
<a href="https://www.youtube.com/watch?v=gYvWcT5MfH4"><span><b>VIDEO</b></span></a><br />
<br />
<span class="st"><span class="st"><br />
</span></span><b><span class="st"><span class="st"><br />
<br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<span style="color: #663366;"><b>Bibliografía:</b></span></b><b> </b><b><br />
</b><b> </b><b><tt><br />
<br />
<a href="https://github.com/adsb-related-code/dump1090-mutability">https://github.com/adsb-related-code/dump1090-mutability</a><br />
</tt></b><b> </b>
<p><br /><b><tt>
</tt></b><b> </b>
</p>seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-46740942850868897502023-10-03T09:34:00.002-07:002023-10-03T09:34:22.709-07:00Linux - Test de velocidad de discos duros.<p>
</p><div align="center">
<div align="left">
<b><a href="http://seta43.duckdns.org/informa.html">Página
principal</a></b><br />
<span> <b><span style="color: #990000;"> </span></b><span style="color: #990000;"><b><br />
</b></span></span>
</div>
<span style="color: #006600;"><u><b>Linux</b></u></span><br />
</div>
<br />
<div align="center"><span style="color: #990000;"><b>Test de
velocidad de discos duros.</b></span><br />
</div>
<br />
<hr size="2" width="100%" /><span style="color: #006600;"><span><span style="color: black;">Mirando como podía hacer más rápido
el trabajo con ficheros, y la compilación de programas, decidí
hacer una prueba con diferente tipo de discos, HDD, SSD, RAM.<br />
El resultado es muy revelador, el disco RAM es el mejor método
de trabajar con ficheros.<br />
Solo debemos acordarnos de que al reiniciar el ordenador, el
disco RAM se borra, y todos los ficheros desaparecen.</span><br />
</span><b><span><br />
Método 1.</span></b></span><br />
<br />
<b>apt-get install hdparm<br />
hdparm -tT /dev/sda</b><br />
<br />
Disco HDD<br />
---------<br />
/dev/sda:<br />
Timing cached reads: 22794 MB in 1.99
seconds = 11431.63 MB/sec<br />
Timing buffered disk reads: 466 MB in 3.01 seconds = <span style="color: #990000;"><b>155.03 MB/sec</b></span><br />
<br />
Disco SSD<br />
---------<br />
/dev/sdb:<br />
Timing cached reads: 22918 MB in 1.99
seconds = 11493.75 MB/sec<br />
Timing buffered disk reads: 1538 MB in 3.00 seconds = <span style="color: #990000;"><b>512.05 MB/sec</b></span><br />
<br />
<br />
<img alt="" height="340" src="http://seta43.duckdns.org/testdisk/testdisk2.png" width="371" /><br />
<hr size="2" width="100%" /><br />
<span style="color: #006600;"><b><span>Método 2.</span></b></span><br />
<br />
<b>apt-get install ioping</b><br />
<br />
<br />
Disco HDD<br />
--------- WRITE<br />
root@debian11:/mnt/DATOS2# ioping -S64M -L -s4k -W -c 10 .<br />
......<br />
--- . (fuseblk /dev/sda6 300.0 GiB) ioping statistics ---<br />
9 requests completed in 301.1 ms, 36 KiB written, 29 iops, <b><span style="color: #990000;">119.6 KiB/s</span></b><br />
generated 10 requests in 9.03 s, 40 KiB, 1 iops, 4.43 KiB/s<br />
min/avg/max/mdev = 27.4 ms / 33.5 ms / 38.7 ms / 5.04 ms<br />
<br />
Disco HDD<br />
--------- READ<br />
root@debian11:/mnt/DATOS2# ioping -A -D -s16k -c 10 .<br />
.....<br />
--- . (fuseblk /dev/sda6 300.0 GiB) ioping statistics ---<br />
9 requests completed in 1.47 ms, 144 KiB read, 6.12 k iops, <span style="color: #990000;"><b>95.6 MiB/s</b></span><br />
generated 10 requests in 9.00 s, 160 KiB, 1 iops, 17.8 KiB/s<br />
min/avg/max/mdev = 158.0 us / 163.4 us / 170.0 us / 3.92 us<br />
<br />
Disco SSD<br />
--------- WRITE<br />
root@debian11:/mnt/DATOS2# cd ~<br />
root@debian11:~# ioping -S64M -L -s4k -W -c 10 .<br />
....<br />
--- . (ext4 /dev/sdb7 39.1 GiB) ioping statistics ---<br />
9 requests completed in 6.78 ms, 36 KiB written, 1.33 k iops, <span style="color: #990000;"><b>5.18 MiB/s</b></span><br />
generated 10 requests in 9.00 s, 40 KiB, 1 iops, 4.44 KiB/s<br />
min/avg/max/mdev = 417.0 us / 753.8 us / 892.0 us / 178.5 us<br />
<br />
<br />
Disco SSD<br />
--------- READ<br />
root@debian11:~# ioping -A -D -s16k -c 10 .<br />
.....<br />
<br />
--- . (ext4 /dev/sdb7 39.1 GiB) ioping statistics ---<br />
9 requests completed in 3.06 ms, 144 KiB read, 2.94 k iops, <span style="color: #990000;"><b>46.0 MiB/s</b></span><br />
generated 10 requests in 9.00 s, 160 KiB, 1 iops, 17.8 KiB/s<br />
min/avg/max/mdev = 324.2 us / 339.6 us / 351.9 us / 10.4 us<br />
<br />
<img alt="" height="352" src="http://seta43.duckdns.org/testdisk/testdisk1.png" width="396" /><br />
<hr size="2" width="100%" /><span style="color: #006600;"><b><span>Método
3.</span></b></span><br />
<br />
<b>dd if=/dev/zero of=speed_test bs=64k count=16k conv=fdatasync</b><br />
<br />
<span style="color: #006600;"><u>Escribir 1Gb fichero grande.</u></span><br />
<br />
Disco SSD<br />
--------- WRITE<br />
root@debian11:/home/seta# dd if=/dev/zero of=speed_test bs=64k
count=16k conv=fdatasync<br />
16384+0 registros leídos<br />
16384+0 registros escritos<br />
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 3,79558 s, <span style="color: #990000;"><b>283 MB/s</b></span><br />
<br />
Disco HDD<br />
--------- WRITE<br />
root@debian11:/mnt/DATOS1# dd if=/dev/zero of=speed_test bs=64k
count=16k conv=fdatasync<br />
16384+0 registros leídos<br />
16384+0 registros escritos<br />
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 13,2229 s, <span style="color: #990000;"><b>81,2 MB/s</b></span><br />
<br />
Disco RAM<br />
--------- WRITE<br />
root@debian11:/mnt/ramdisk# dd if=/dev/zero of=speed_test bs=64k
count=16k conv=fdatasync<br />
16384+0 registros leídos<br />
16384+0 registros escritos<br />
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 0,274335 s, <span style="color: #990000;"><b>3,9 GB/s</b></span><br />
<br />
<img alt="" height="340" src="http://seta43.duckdns.org/testdisk/testdisk4.png" width="417" /><br />
<br />
<br />
<span style="color: #006600;"><u>Escribir 839MG en ficheros
pequeños de 1K</u></span><br />
<br />
Disco SSD ficheros pequeños<br />
--------- WRITE<br />
root@debian11:~# dd if=/dev/zero of=speed_test bs=1k count=800k
conv=fdatasync<br />
819200+0 registros leídos<br />
819200+0 registros escritos<br />
838860800 bytes (839 MB, 800 MiB) copied, 3,66511 s, <span style="color: #990000;"><b>229 MB/s</b></span><br />
<br />
Disco HDD ficheros pequeños<br />
--------- WRITE<br />
root@debian11:/mnt/DATOS1# dd if=/dev/zero of=speed_test bs=1k
count=800k conv=fdatasync<br />
819200+0 registros leídos<br />
819200+0 registros escritos<br />
838860800 bytes (839 MB, 800 MiB) copied, 30,8502 s, <span style="color: #990000;"><b>27,2 MB/s</b></span><br />
<br />
<br />
Disco RAM ficheros pequeños<br />
--------- WRITE -pru3<br />
root@debian11:/mnt/ramdisk# dd if=/dev/zero of=speed_test bs=1k
count=800k conv=fdatasync<br />
819200+0 registros leídos<br />
819200+0 registros escritos<br />
838860800 bytes (839 MB, 800 MiB) copied, 1,02066 s, <span style="color: #990000;"><b>822 MB/s</b></span><br />
<br />
<img alt="" height="340" src="http://seta43.duckdns.org/testdisk/testdisk3.png" width="407" /><br />
<br />
<br />
<b>
<b><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz<br />
<br />
</b></span></b></b><br />
<b><b><span style="color: #003300;"><b><span style="color: #cc0000;">
<b><span style="color: #663366;"><b><span style="color: #cc0000;">Bibliografía:<br />
<br />
<span style="color: black;"><a href="https://www.analyticslane.com/2023/01/25/medir-la-velocidad-de-escritura-del-disco-en-linux/">https://www.analyticslane.com/2023/01/25/medir-la-velocidad-de-escritura-del-disco-en-linux/</a><br />
<a href="https://blog.webuphosting.com/medir-la-velocidad-del-disco-duro-en-linux/">https://blog.webuphosting.com/medir-la-velocidad-del-disco-duro-en-linux/</a></span><br />
</span></b></span></b></span></b></span></b></b><br />
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-62838105007118857012023-06-22T04:23:00.005-07:002023-07-01T09:52:02.677-07:00SDL - Penetrator <p>
<b> </b>
<b><a href="http://seta43.duckdns.org/informa.html">Página principal</a></b><br />
</p><div align="center"><span> <b><span style="color: #990000;">
</span></b><span style="color: #990000;"><b>SDL<br />
<span>Penetrator</span></b></span></span><span><b><span style="color: #990000;"><br />
</span></b><b> </b></span></div>
<span> </span> <b> </b>
<hr size="2" width="100%" /><p>Uno de los primeros juegos que tuve para
el Spectrum fue Penetrator.<br />
Penetrator es un videojuego de ZX Spectrum de 1982 creado por los
programadores de Melbourne House Philip Mitchell y Veronika Megler.
<br />
El juego es un clon del juego de arcade Scramble de Konami de 1981.
Penetrator fue portado al TRS-80 y al Commodore <br />
Aún algunas veces utilizo un emulador para jugar a Penetrator, y
sigo pasándomelo bien.<br />
<br />
<img alt="" height="351" src="http://seta43.duckdns.org/penetra/penetra0.png" width="400" /><br />
Un día me propuse hacer el juego con la librería SDL.<br />
Aunque no debía ser perfecto, el laberinto de las cuevas debería ser
el mismo.<br />
Lo primero era sacar del código original la forma de la cueva, y lo
hice, no fue difícil.<br />
Después de un par de días conseguí esto:</p><p>_______________________________________________________ <br /></p><p><span style="color: #cc0000;"><b>Versión 2 -30/07/2023<br />
</b><span style="color: black;">He realizado unas cuantas mejoras, como
la destrucción de las bombas y los misiles cuando tocan la
cueva.<br />
Mejorado el chequeo de colisión. <br />
También los misiles salen antes y son más peligrosos.<br />
He animado las explosiones, además de animar los radares.</span><b><span style="color: black;"><br />
</span></b></span><img alt="" height="329" src="http://seta43.duckdns.org/penetra/penetra2.png" width="400" /><br />
<a href="http://seta43.duckdns.org/penetra/peneV2.7z"><b>Penetrator V2</b></a><br />
<br />
<a href="http://seta43.duckdns.org/dll_sdl2.7z"><b>DLL necesarias
para Windows</b></a><br />
</p><hr size="2" width="100%" /><p><br />
<img alt="" height="331" src="http://seta43.duckdns.org/penetra/penetra1.png" width="400" /><br />
No es del todo perfecto, pero es pasable y muy mejorable. <br />
Está programado para configuraciones gráficas de 32bits.<br />
Con la librería SDL2 funciona tanto en Linux como en Windows, con
SDL1 solo funciona en Linux.<br />
<br />
<a href="http://seta43.duckdns.org/dll_sdl2.7z"><span class="st"><span class="st"><b>Librerías DLL_SDL Windows</b></span></span></a><br />
<br />
<a href="http://seta43.duckdns.org/penetra/penetra1.7z"><b>Penetrator
SDL1_Linux.</b></a><br />
<br />
<a href="http://seta43.duckdns.org/penetra/penetra2.7z"><b>Penetrator
SDL2_Linux y Windows.</b></a><br />
<span class="st"><span class="st"><br />
<b><span class="st"></span></b><br />
</span></span><b><span class="st"><span class="st"><br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<br />
<span style="color: #663366;"><b><span style="color: #cc0000;">Bibliografía:</span><br />
<br />
</b></span></b>Música: <a href="https://iconos8.es/music/track/fighting-hells-warriors--1">https://iconos8.es/music/track/fighting-hells-warriors--1</a><br />
<b><br />
<a href="https://motionarray.com/royalty-free-music/cowardly-harry-1573176/">
</a></b><a href="https://motionarray.com/royalty-free-music/cowardly-harry-1573176/">https://motionarray.com/royalty-free-music/cowardly-harry-1573176/</a><b><br />
<br />
</b> <b><tt> </tt></b><b> </b>
</p>seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-45511873116894630902023-06-15T01:55:00.001-07:002023-06-15T01:55:10.689-07:00MiniWin <p>
<b> </b>
<b><a href="http://seta43.duckdns.org/informa.html">Página principal</a></b><br />
</p><div align="center"><span> <b><span style="color: #990000;">
</span></b><span style="color: #990000;"><b>MiniWin</b></span></span><span><b><span style="color: #990000;"><br />
</span></b><b> </b></span></div>
<span> </span> <b> </b>
<hr size="2" width="100%" />Me gusta navegar por internet buscando
cosas curiosas, y en esta búsqueda encontré <b>MiniWin</b>.<br />
Su presentación es:<br />
<br />
" <b><span style="color: #006600;">MiniWin es una mini-librería (para ser
justos, no llega ni a eso) para
poder abrir una ventana, pintar en ella, detectar la presión de
las
teclas y el movimiento y los botones del ratón. Tiene un
objetivo
<em>pedagógico</em>, sirve esencialmente para poder implementar
programas muy
simples (como pequeños juegos) que dibujen cosas por la pantalla
y con
los que se pueda interaccionar mínimamente.</span></b>
<div class="section" id="documentacion-de-miniwin"><b><span style="color: #006600;">
</span></b>
<p><b><span style="color: #006600;">Actualmente funciona en Windows y
Linux (si álguien se ofrece a
subvencionar un MacBook, quizás entonces me plantee hacer la
versión Mac OS X...).</span></b> "<br />
</p>
<p>La explicación es lo mas fiel a lo que se puede esperar.<br />
</p>
<p>Como curiosidad las funciones están en español, por lo cual los
programadores de lengua inglesa deberían aprender algo de
español, de la misma manera que los españoles hemos tenido que
aprender palabras en ingles para poder programar <span><tt><b>;)</b></tt></span>.<br />
</p>
<p>Un programa simple es:<br />
</p>
<pre><pre><b><span style="color: #990000;"><span class="c1">#include "miniwin.h"</span>
<span class="n">using</span> <span class="n">namespace</span> <span class="n">miniwin</span><span class="p">;</span>
<span class="nb">int</span> <span class="n">main</span><span class="p">()</span> <span class="p">{</span>
<span class="n">vredimensiona</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">200</span><span class="p">);</span>
<span class="n">linea</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">);</span>
<span class="n">color</span><span class="p">(</span><span class="n">AZUL</span><span class="p">);</span>
<span class="n">rectangulo</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">50</span><span class="p">);</span>
<span class="n">color</span><span class="p">(</span><span class="n">ROJO</span><span class="p">);</span>
<span class="n">circulo</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">20</span><span class="p">);</span>
<span class="n">color</span><span class="p">(</span><span class="n">AZUL</span><span class="p">);</span>
<span class="n">circulo_lleno</span><span class="p">(</span><span class="mi">50</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">20</span><span class="p">);</span>
<span class="n">color</span><span class="p">(</span><span class="n">VERDE</span><span class="p">);</span>
<span class="n">rectangulo_lleno</span><span class="p">(</span><span class="mi">50</span><span class="p">,</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">);</span>
<span class="n">refresca</span><span class="p">();</span>
<span class="p">}</span></span></b></pre></pre>
</div>
<br />
<span class="st"><span class="st">Para empezar lo mas rápido, es
instalar <b>Code::Blocks</b> y seguir las
instrucciones de MiniWin que son sencillas.<br />
Funciona bien en windows y en Linux, y la librería es
simplemente sencilla.<br />
<br />
Algunos ejemplos:<br />
<img alt="" height="351" src="http://seta43.duckdns.org/miniwin/miniwin0.jpg" width="396" /><br />
<b><i>El ejemplo de reloj retocado por mi.</i></b><br />
<br />
<img alt="" height="392" src="http://seta43.duckdns.org/miniwin/miniwin1.jpg" width="464" /><br />
<br />
<img alt="" height="650" src="http://seta43.duckdns.org/miniwin/miniwin3.png" width="488" /><br />
<br />
<img alt="" height="530" src="http://seta43.duckdns.org/miniwin/miniwin2.png" width="658" /><br />
<img alt="" height="412" src="http://seta43.duckdns.org/miniwin/miniwin5.png" width="520" /><br />
<br />
Para los que empiezan a programar y los que les gusta
experimentar es una muy buena mini-librería.<br />
<br />
<b><a href="http://seta43.duckdns.org/miniwin/miniwin.zip">Ejemplo
compilados por mi en Linux.</a></b><br />
<b><a href="http://seta43.duckdns.org/miniwin/miniwin2.zip">Librerías
originales.</a></b><br />
<br />
</span></span><a href="http://seta43.duckdns.org/miniwin/Saludos. Juan Galaz Bibliografía: https://miniwin.readthedocs.io/en/latest/Instalacion.html"><b><span class="st"><span class="st"><br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<br />
<span style="color: #663366;"><b>Bibliografía:<br />
<br />
</b></span></b></a><b><a href="https://miniwin.readthedocs.io/en/latest/Instalacion.html">https://miniwin.readthedocs.io/en/latest/Instalacion.html</a><br />
<a href="https://github.com/pauek/MiniWin">https://github.com/pauek/MiniWin</a><br />
<a href="https://www.youtube.com/watch?v=FHFz83xXyps">https://www.youtube.com/watch?v=FHFz83xXyps</a><br />
<br />
</b> <b><tt> </tt></b><b> </b>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-461959650086282802023-06-07T10:51:00.007-07:002023-06-07T10:53:12.627-07:00NAVE (mata-mata) SDL<p>
<b> </b>
<b><a href="http://seta43.duckdns.org/informa.html">Página principal</a></b><br />
</p><div align="center"><span> <b><span style="color: #990000;">
</span></b><span style="color: #990000;"><b>SDL<br />
<span>NAVE</span></b></span></span><span><b><span style="color: #990000;"><br />
</span></b></span>
<hr size="2" width="100%" /></div>
Un simple mata mata que aumenta la velocidad en cada nivel.<br />
<img alt="" height="315" src="http://seta43.duckdns.org/snake/nave.jpg" width="400" /><br />
<br />
<br />
Está compilado tanto para Windows como para Linux.<br />
<br />
<a href="http://seta43.duckdns.org/snake/naveSDL1.zip"><b>Programa SDL</b></a><br />
<span class="st"><span class="st"><a href="http://seta43.duckdns.org/snake/naveSDL2.zip"><b>Programa SDL2</b></a><br />
<b><span class="st"></span></b><br />
<a href="http://seta43.duckdns.org/dll_sdl2.7z"><b>Librerías
DLL_SDL2 Windows</b></a><br />
</span></span><b><span class="st"><span class="st"><a href="http://seta43.duckdns.org/libSDL.zip">Librerías DLL
SDL1 Windows </a><br />
<br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<br />
<span style="color: #663366;"><b>Bibliografía:<br />
</b></span></b><b><br />
<br />
</b> <b><tt> </tt></b><b> </b>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-32502522660046097622023-05-29T10:49:00.004-07:002023-05-29T10:50:09.654-07:00SDL - culebra (SNAKE) Versión 2<p>
<b> </b>
<b><a href="http://seta43.duckdns.org/informa.html">Página principal</a></b><br />
</p><div align="center"><span> <b><span style="color: #990000;">
</span></b><span style="color: #990000;"><b>SDL<br />
culebra (SNAKE)</b></span></span><span><b><span style="color: #990000;"><br />
Versión 2<br />
</span></b><b> </b></span></div>
<span> </span> <b> </b>
<hr size="2" width="100%" />Vuelvo a programar SNAKE, méjoro los
gráficos, cambio los vectores por matrices de estructuras el estilo
de C.<br />
<img alt="" height="316" src="http://seta43.duckdns.org/snake/snakex.jpg" width="400" /><br />
<br />
<br />
<br />
Ahora es muy vistoso, la música de fondo, y el aumento de velocidad
según pasa el tiempo lo hace adictivo.<br />
Con F1 se pasa de modeo pantalla completa a modo ventana.<br />
También está compilado para Windows.<br />
<br />
<a href="http://seta43.duckdns.org/snake/snakex.7z"><b>Programa SDL</b></a><br />
<span class="st"><span class="st"><a href="http://seta43.duckdns.org/snake/snakex_sdl2.7z"><b>Programa SDL2</b></a><br />
<b><span class="st"></span></b><br />
<a href="http://seta43.duckdns.org/dll_sdl2.7z"><b>Librerías
DLL_SDL Windows</b></a><br />
</span></span><b><span class="st"><span class="st"><br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<br />
<span style="color: #663366;"><b>Bibliografía:<br />
</b></span></b><b><br />
<br />
</b> <b><tt> </tt></b><b> </b>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-49730781375909467802023-05-23T03:53:00.002-07:002023-05-23T03:53:18.541-07:00SDL culebra (SNAKE) <p>
<b> </b>
<b><a href="http://seta43.duckdns.org/electro.html">Página principal</a></b><br />
</p><div align="center"><span> <b><span style="color: #990000;">
</span></b><span style="color: #990000;"><b>SDL<br />
culebra (SNAKE)</b></span></span><span><b><span style="color: #990000;"><br />
</span></b><b> </b></span></div>
<span> </span> <b> </b>
<hr size="2" width="100%" />Navegando por la RED recale en un foro de
SDL, y encontre el famoso programa SNAKE escrito en C y utilizando
la biblioteca SDL.<br />
<br />
<a href="https://foro.elhacker.net/programacion_cc/tutorial_snake_en_csdl-t396746.0.html;msg1878499">https://foro.elhacker.net/programacion_cc/tutorial_snake_en_csdl-t396746.0.html;msg1878499</a><br />
<br />
<img alt="" height="315" src="http://seta43.duckdns.org/snake/culebrao.png" width="400" /><br />
Es bastante simple, pero funciona bien.<br />
<br />
Como yo no puedo estarme quieto, me dispuse a mejorarlo un poco.<br />
Le añadí sonidos y algún gráfico, no demasiados, y quedo como sigue:<br />
<img alt="" height="313" src="http://seta43.duckdns.org/snake/culebra.png" width="400" /><br />
<br />
No es demasiado vistoso, pero la música de fondo, y el aumento de
velocidad según pasa el tiempo lo hace adictivo.<br />
Con F1 se pasa de modeo pantalla completa a modo ventana.<br />
También está compilado para Windows.<br />
<br />
<a href="http://seta43.duckdns.org/snake/culebrao.zip"><b>Programa original.</b></a><br />
<br />
<a href="http://seta43.duckdns.org/snake/culebra3.7z"><b>Programa modificado</b></a><br />
<span class="st"><span class="st"><br />
<b><span class="st"></span></b><br />
</span></span><b><span class="st"><span class="st"><br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<br />
<span style="color: #663366;"><b>Bibliografía:<br />
</b></span></b><br />
<a href="https://foro.elhacker.net/programacion_cc/tutorial_snake_en_csdl-t396746.0.html;msg1878499">https://foro.elhacker.net/programacion_cc/tutorial_snake_en_csdl-t396746.0.html;msg1878499</a><br />
<b><br />
<a href="https://motionarray.com/royalty-free-music/cowardly-harry-1573176/">
</a></b><a href="https://motionarray.com/royalty-free-music/cowardly-harry-1573176/">https://motionarray.com/royalty-free-music/cowardly-harry-1573176/</a><b><br />
<br />
</b> <b><tt> </tt></b><b> </b>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-31316116100842103602023-05-12T00:27:00.006-07:002023-05-12T00:28:09.761-07:00Instalar Windows 7, Windows 10, Debian11, Mint 21, MX 21, en el mismo ordenador.<p> Instalar Windows 7,
Windows 10, Debian11, Mint 21, MX 21, en el mismo ordenador. <a href="https://youtu.be/VWyTWxXIAZk"><b>VIDEO</b></a></p><p><b></b></p><div class="separator" style="clear: both; text-align: center;"><b><iframe allowfullscreen="" class="BLOG_video_class" height="357" src="https://www.youtube.com/embed/VWyTWxXIAZk" width="430" youtube-src-id="VWyTWxXIAZk"></iframe></b></div><b><br /> </b><p></p>seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-87241580433941539512023-04-20T01:28:00.001-07:002023-04-20T01:29:00.878-07:00Tira de LEDS elk-bledom. Bluetooth Control desde Debian 11<p>
<b> </b>
<b><a href="http://seta43.duckdns.org/electro.html">Página principal</a></b><br />
</p><div align="center"><span> <b><span style="color: #990000;">
</span></b><span style="color: #990000;"><b>Tira de LEDS<br />
elk-bledom bluetooth<br />
Control desde Debian 11</b></span></span><span><b><span style="color: #990000;"></span></b></span></div><div align="center"><span><b><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/-v6AiqUUGDc" width="320" youtube-src-id="-v6AiqUUGDc"></iframe></div><br /><span style="color: #990000;"><br />
</span></b><b> </b></span></div>
<span> </span> <b> </b>
<hr size="2" width="100%" />El otro día me compré una tira de LEDS por
2€, no esperaba mucho.<br />
<img alt="" height="480" src="http://seta43.duckdns.org/tiraled/tiraled1.jpg" width="480" /><br />
Para hacerla funcionar debías instalar una aplicación en el
teléfono. <br />
Instalada la aplicación y alimentada la tira a un cargador,
funcionaba bien.<br />
Lo que más me sorprende en estas aplicaciones es que des permisos de
ubicación. <br />
Y esto fue lo que me indujo a crear una aplicación en Linux.<br />
<br />
Buscando por internet encontré esta página:<br />
<a href="https://linuxthings.co.uk/blog/control-an-elk-bledom-bluetooth-led-strip">https://linuxthings.co.uk/blog/control-an-elk-bledom-bluetooth-led-strip</a><br />
<br />
<span class="st"><span class="st">Explicaba como funcionaba la
comunicación entre el ordenador y la tira de LEDS mediante el
bluetooth.<br />
Probando todas la instrucciones conseguí manejar la tira de
LEDS.<br />
<br />
Como quería automatizar un poco el encendido y apagado de los
LEDS me dispuse hacer una aplicación mediante comandos <b>bash</b>
.<br />
El primer problema es que debemos ser roor para mandar los datos
mediante bluetooth.<br />
Para arreglar esto hago lo siguiente:<br />
<br />
<span style="color: #660000;"><b>chown root:root luces5</b><b><br />
</b><b>chown root:root bscan</b><b><br />
</b><b><br />
</b><b>chmod u+rwx,g+rx,o+rx bscan</b><b><br />
</b><b>chmod u+rwx,g+rx,o+rx luces5</b><b><br />
</b><b>chmod u+rwx,g+rwx tiraLed.py</b></span><br />
<br />
</span></span><span class="st"><span class="st"> <b><span class="st"></span></b>Lo que hago es dar permisos de
ejecución, pero no de escritura, de esta forma queda seguro el
sistema, y podemos manejar los LEDS.<br />
<br />
En realidad son 2 aplicaciones:<br />
La primera es <b>bscan,</b> que se encarga de scanear los
dispositivos bluetooth existentes, para luego almacenar la
dirección de <i>ELK-BLEDOM</i> en un fichero llamado <b>blue.dat
</b>.<br />
<b> </b>La segunda es <b>luces5</b>, que se encarga de
mandar los valores RGB a la tira con la dirección almacenada en
</span></span><span class="st"><span class="st"><span class="st"><span class="st"><b>blue.dat</b> .<br />
Ejemplo:<br />
<b><span style="color: #660000;">./luces 255 0 0</span></b>
Enciende luz roja</span></span></span></span><br />
<span class="st"><span class="st"><span class="st"><span class="st"><span class="st"><span class="st"><span class="st"><span class="st"> <span style="color: #660000;"><b>./luces
0 0 255 </b></span>
Enciende luz azul</span></span></span></span><br />
<br />
Como me parecía poco interactivo, he realizado un pequeño
programa en python para manejar los colores.<br />
<img alt="" src="http://seta43.duckdns.org/tiraled/tiraled2.png" /><br />
<br />
Espero que os sirva este artículo para vuestros proyectos.<br />
<br />
<a href="https://youtu.be/-v6AiqUUGDc"><span><b>VIDEO</b></span></a><br />
<br />
<br />
<a href="http://seta43.duckdns.org/tiraled/tiraLed.zip"><span><b>PROGRAMA</b></span></a><br />
<br />
<br />
</span></span></span></span><b><span class="st"><span class="st"> </span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<br />
<span style="color: #663366;"><b>Bibliografía:<br />
<br />
</b></span><a href="https://linuxthings.co.uk/blog/control-an-elk-bledom-bluetooth-led-strip">https://linuxthings.co.uk/blog/control-an-elk-bledom-bluetooth-led-strip</a><br />
</b> <b><tt> </tt></b><b> </b>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-85951269998513608492023-04-06T11:20:00.001-07:002023-04-06T11:20:13.448-07:00ESP32 Emulador ZX SPECTRUM - Vídeo PAL <p>
<b> </b>
<b><a href="http://seta43.duckdns.org/electro.html">Página principal</a></b><br />
</p><div align="center"><span> <b><span style="color: #990000;">
</span></b><span style="color: #990000;"><b>ESP32<br />
Emulador <br />
ZX SPECTRUM - PAL</b></span></span><span><b><span style="color: #990000;"><br />
</span></b><b> </b></span></div>
<span> </span> <b> </b>
<hr size="2" width="100%" />Cada uno tiene mitificado el ordenador en
el cual empezó, y el mio es el ZX SPECTRUM.<br />
Otro circuito que encontré para hacer con el ESP32 es un emulador de
Spectrum.<br />
<a href="https://github.com/sdima1357/spectrum128_esp32_usb_host_pal_tv">https://github.com/sdima1357/spectrum128_esp32_usb_host_pal_tv</a><br />
Existe otro emulador pero la salida es por VGA, es mucha de mejor su
calidad de video, pero no se podría conectar a televisiones
antiguas.<br />
El entorno de desarrollo es MX21, es una distribución basada en
Debian, pero bastante mas actualizada, recomiendo que la probéis.<br />
<br />
<tt><b>$ python3 --version</b></tt><tt><b><br />
</b></tt><tt><b>Python 3.9.2</b></tt><tt><b><br />
</b></tt><tt><b><br />
</b></tt><tt><b>$ uname -a</b></tt><tt><b><br />
</b></tt><tt><b>Linux mx21 6.0.0-6mx-amd64 #1 SMP PREEMPT_DYNAMIC
Debian 6.0.12-1~mx21+1 (2022-12-15) x86_64 GNU/Linux</b></tt><br />
<br />
El primer paso es instalar el entorno de desarrollo ESP, esto me dio
mucho trabajo, hasta que descubrí que con la última versión la 5,
producía errores en la compilación, por lo que tuve que instalar la
versión 4.4.4<br />
<br />
<tt><b>mkdir -p ~/esp</b></tt><tt><b><br />
</b></tt><tt><b>cd ~/esp</b></tt><tt><b><br />
</b></tt><tt><b>git clone -b v4.4.4 --recursive
https://github.com/espressif/esp-idf.git</b></tt><tt><b><br />
</b></tt><tt><b>cd ~/esp/esp-idf</b></tt><tt><b><br />
</b></tt><tt><b>./install.sh esp32</b></tt><tt><b><br />
</b></tt><tt><b><br />
</b></tt><tt><b>cd esp-idf/</b></tt><tt><b><br />
</b></tt><tt><b>. ./export.sh</b></tt><br />
<br />
Este último paso <b>./export.sh</b> configura el entorno del
terminal, si se cierra el terminal deberemos volver a ejecutarlo.<br />
<br />
Ahora nos toca bajar el emulador desde la página del proyecto.<br />
<br />
<tt><b>cd ..</b></tt><tt><b><br />
</b></tt><tt><b>git clone
https://github.com/sdima1357/spectrum128_esp32_usb_host_pal_tv</b></tt><tt><b><br />
</b></tt><br />
No metemos en el directorio del proyecto y lo compilamos y grabamos
el ejecutable en la ESP32 .<br />
<br />
<tt><b>cd spectrum128_esp32_usb_host_pal_tv-main/</b></tt><tt><b><br />
</b></tt><tt><b>idf.py -p /dev/ttyUSB0 flash</b></tt><br />
<br />
<span class="st"><span class="st">Si todo fue bien, después de un
rato de compilación, grabará los ficheros *.bin en el ESP32,
para luego reiniciarse.</span></span><b><span class="st"><span class="st"><br />
....<br />
....<br />
<tt>Writing at 0x000665df... (100 %)</tt><tt><br />
</tt><tt>Wrote 368880 bytes (223758 compressed) at 0x00010000
in 5.2 seconds (effective 567.4 kbit/s)...</tt><tt><br />
</tt><tt>Hash of data verified.</tt><tt><br />
</tt><tt>Compressed 3072 bytes to 103...</tt><tt><br />
</tt><tt>Writing at 0x00008000... (100 %)</tt><tt><br />
</tt><tt>Wrote 3072 bytes (103 compressed) at 0x00008000 in
0.1 seconds (effective 377.3 kbit/s)...</tt><tt><br />
</tt><tt>Hash of data verified.</tt><tt><br />
</tt><tt><br />
</tt><tt>Leaving...</tt><tt><br />
</tt><tt>Hard resetting via RTS pin...</tt><tt><br />
</tt><tt>Done</tt><tt><br />
</tt><br />
</span></span></b><span class="st"><span class="st">Si tenemos
conectado la salida de vídeo a un televisor, veremos que arranca
el emulador de el Spectrum.<br />
Aconsejo que no conectéis la tarjeta SD la primera vez, de esta
forma entraremos en el menú de selección de tipo 48K/128K<br />
Tal y como compilamos las fuentes originales, el brillo es muy
bajo, por lo que decidí estudiar el código.<br />
En el fichero <i><b>smain.c</b></i> debemos retocar un poco el
código para aumentar los niveles de salida de video.<br />
Existen 2 líneas una comentada y otra descomentada, cambiarlas
de forma que queden así.<br />
<br />
<tt><b>//#define
IRE(_x)
((uint32_t)(((_x)+40)*255/3.3/147.5) << 8)
// 3.3V DAC</b></tt><tt><b><br />
</b></tt><tt><b>#define
IRE(_x)
((uint32_t)(((_x)+40)*255*2/3.3/147.5) <<
8) // 3.3V DAC</b></tt><br />
<br />
Esto lo que hace es cambiar los niveles iniciales de la señal de
vídeo.<br />
Ahora el nivel de brillo es bastante mejor, y aún se podría
poner mejor, pero no he querido retocar el código original.<br />
<br />
Las ROMS de programas del Spectrum deberán grabarse dentro de un
directorio <b>z48</b> si son del modelo 48K y en un directorio
<b>z12</b>8 si son del modelo de 128K.<br />
Todo esto está documentado en el fichero <b>README.md</b> que
se encuentra en las fuentes. <br />
En este mismo fichero se explica la conexiones del ESP32 al
teclado y a la SD.<br />
<br />
<tt><b>1 Analog color PAL-TV 50 Hz output: (GPIO25)</b></tt><tt><b><br />
</b></tt><tt><b>2 Two (bitband) USB-HID controllers
(DP/DM) GPIO16/ GPIO17 - USB 1 GPIO18/ GPIO19 - USB 2</b></tt><tt><b><br />
</b></tt><tt><b>3 Emulation AY-3-8910 (GPIO27)</b></tt><tt><b><br />
</b></tt><tt><b>4 SDCard control (.tap .z80 .sna) read pins:</b></tt><tt><b><br />
</b></tt><tt><b> </b></tt><tt><b>PIN_NUM_MISO
2</b></tt><tt><b><br />
</b></tt><tt><b> PIN_NUM_MOSI 15</b></tt><tt><b><br />
</b></tt><tt><b> PIN_NUM_CLK 14</b></tt><br />
<tt><b> </b></tt><tt><b>PIN_NUM_CS 13</b></tt><tt><b><br />
</b></tt><tt><b>5 Screen width F4/F5</b></tt><tt><b><br />
</b></tt><tt><b>6 Tape speed normal/fast F11/F12<br />
<br />
</b></tt><img alt="" height="450" src="http://seta43.duckdns.org/espzx/espzx1.png" width="640" /><br />
<i><b>Esquema de conexión.</b></i><br />
<br />
<img alt="" height="552" src="http://seta43.duckdns.org/espzx/espzx4.jpg" width="640" /><br />
<i><b>He utilizado la placa de mi anterior montaje.</b></i><br />
<br />
<img alt="" height="615" src="http://seta43.duckdns.org/espzx/espzx2.jpg" width="640" /><br />
<i><b>Menú de selección de ROMS</b></i><br />
<br />
<img alt="" height="640" src="http://seta43.duckdns.org/espzx/espzx3.jpg" width="637" /> <br />
<i><b>Jugando al JET PAC.</b></i><br />
<br />
<img alt="" height="384" src="http://seta43.duckdns.org/espzx/espzx5.png" width="640" /><br />
<i><b>Muestra de una línea de la señal PAL.</b></i><br />
<br />
Ya puedo jugar a mi juego preferido en el ZX
Spectrum <span style="color: #003300;"><b>PENETRATOR</b></span><br />
Como podemos observar, la calidad del video compuesto no es el
mejor, y sobre todo si utilizamos las pantalla planas, pero se
puede jugar perfectamente.<br />
</span></span><br />
<span class="st"><span class="st">
Gracias <span style="color: #990000;"><b>Samsonov Dima</b></span><br />
<b><span class="st"></span></b><br />
</span></span><b><span class="st"><span class="st"><br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<br />
<span style="color: #663366;"><b>Bibliografía:<br />
</b></span></b><br />
<a href="https://github.com/sdima1357">https://github.com/sdima1357</a><br />
<a href="https://github.com/sdima1357/spectrum128_esp32_usb_host_pal_tv">https://github.com/sdima1357/spectrum128_esp32_usb_host_pal_tv</a><br />
<br />
<b><br />
<br />
<br />
</b> <b><tt> </tt></b><b> </b>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-24878125786023434022023-03-28T03:53:00.005-07:002023-04-25T08:51:19.682-07:00ESP32 emulador de consolas<p>
<b> </b>
<b><a href="http://seta43.duckdns.org/electro.html">Página principal</a></b><br />
</p><div align="center"><span> <b><span style="color: #990000;">
</span></b><span style="color: #990000;"><b>ESP32<br />
Emulador <br />
esp_8_bit</b></span></span><span><b><span style="color: #990000;"></span></b></span></div><div align="center"><span><b><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/6unufo88zhc" width="320" youtube-src-id="6unufo88zhc"></iframe></div><br /><span style="color: #990000;"><br />
</span></b><b> </b></span></div>
<span> </span> <b> </b>
<hr size="2" width="100%" />Buscando montajes curiosos con la ESP32
encontré <a href="https://github.com/rossumur/esp_8_bit"><b>esp_8_bit</b></a>
,un emulador de:<br />
<br />
<span style="color: #006600;"><b>Atari 400/800, XL, XEGS, 5200</b><b><br />
</b><b>Sega Master System, Game Gear</b><b><br />
</b><b>Nintendo Entertainment System</b></span><br />
<br />
y los mas interesante es que genera video compuesto, tanto PAL o
NTSC.<br />
Generar video compuesto(color) con arduino era realmente difícil,
pero con el ESP32 de doble núcleo es posible.<br />
<br />
<b><tt> -----------</tt></b><b><tt><br />
</tt></b><b><tt>
| |</tt></b><b><tt><br />
</tt></b><b><tt> |
25 |------------------> video out</tt></b><b><tt><br />
</tt></b><b><tt>
| |</tt></b><b><tt><br />
</tt></b><b><tt> |
18 |---/\/\/\/----|---> audio out</tt></b><b><tt><br />
</tt></b><b><tt>
|
| 1k
|</tt></b><b><tt><br />
</tt></b><b><tt>
|
|
---</tt></b><b><tt><br />
</tt></b><b><tt> | ESP32
|
--- 10nf</tt></b><b><tt><br />
</tt></b><b><tt>
|
|
|</tt></b><b><tt><br />
</tt></b><b><tt>
|
|
v gnd</tt></b><b><tt><br />
</tt></b><b><tt>
| |</tt></b><b><tt><br />
</tt></b><b><tt>
|
| 3.3v <--+-+ IR Receiver</tt></b><b><tt><br />
</tt></b><b><tt>
|
| gnd <--| )
TSOP4838 etc.</tt></b><b><tt><br />
</tt></b><b><tt>
| 0
|-------------+-+ (Optional)</tt></b><b><tt><br />
</tt></b><b><tt> -----------</tt></b><tt><br />
</tt><br />
Al disponer el ESP32 de conexión bluetooth, he utilizado un viejo
mando de la consola wii, que funciona perfectamente.<br />
<br />
El entorno de trabajo y compilación fué Debian 11 y el IDE de
arduino VER. 1.9.19 .<br />
Una de las cosas que me llevo mas tiempo fue un error en la
compilación bajo Debian 11, decía que no tenia instalado la librería
serial de python.<br />
Para instalar la librería serie para python se puede hacer de dos
métodos:<br />
<tt><b>sudo pip3 install pyserial</b></tt><tt><b><br />
</b></tt><tt><b> python3 -m pip install pyserial</b></tt><br />
y la respuesta era : <i>Requirement already satisfied: pyserial in
/usr/lib/python3/dist-packages (3.5b0)</i><br />
En teoría ya las tenía instalada.<br />
Después de muchas pruebas descubrí que en Debian 11 el enlace
directo de python apunta al python2, y debía apuntar a
python3.<br />
Muchas de estas cosas pasan con Debian, al ser en muchos casos
demasiado conservador.<br />
Para cambiar el enlace directo tecleamos desde root:<br />
<tt><b>rm /usr/bin/python</b></tt><tt><b><br />
</b></tt><tt><b> ln -s /usr/bin/python3 /usr/bin/python</b></tt><br />
<br />
Para compilar nuestro emulador, debemos bajar las fuentes de: <a href="https://github.com/rossumur/esp_8_bit"><b>esp_8_bit</b></a>
<br />
Descomprimimos en el directorio de compilación, en mi caso es
Arduino.<br />
Arrancamos la IDE de arduino y configuramos el tipo de emulador y el
sistema de televisión (PAL o NTSC) en el fichero <i>config.h</i>.<br />
Si todo fue bien nos saldrán el video compuesto por el pin25 y el
audio por el pin18.<br />
<br />
Existen unos cuantos incluidos en el emulador, pero si queremos
incluir otros juegos debemos instalar una utilidad en la IDE de
arduino, <a href="https://github.com/me-no-dev/arduino-esp32fs-plugin/releases/"><b>ESP32FS</b></a>.<br />
El ESP32 normal tiene 4Mbytes de memoria, de los cuales para nuestro
proyecto utilizamos la mitad para el programa, y la otra mitad para
una especie de disco con el formato SPIFSS.<br />
Las ROMS de los juegos se almacenan en el disco SPIFF, y para subir
ficheros a este disco utilizamos ESP32FS.<br />
Para instalar la utilidad ESP32FS la descargamos y la descomprimimos
en:<br />
<b>~/Arduino/tools/</b> quedando como
<b>~/Arduino/tools/ESP32FS/tool/esp32fs.jar</b> .<br />
<br />
Cuando reiniciamos la IDE de arduino nos aparecerá en el menu de <b>Herramientas/ESP32_Sketch_Data_Upload</b><b><br />
</b>Si ejecutamos esta opción del menú, los ficheros (ROMS) que se
encuentran en el directorio de <b>esp_8_bit/data</b> se subirán a
la memoria del ESP32.<br />
<img alt="" height="267" src="http://seta43.duckdns.org/espemu/espemu1.jpg" width="400" /><br />
<br />
En algún caso algunas entradas de video compuesto la impedancia es
bastante baja y la salida del ESP32 no alcanza a dar la señal
correcta.<br />
Para estos casos he creado un pequeño circuito:<br />
<img alt="" height="270" src="http://seta43.duckdns.org/espemu/espemu2.png" width="400" /><br />
<br />
Como me funcionaba en la protoboard , lo he pasado a circuito
impreso.<br />
<img alt="" height="300" src="http://seta43.duckdns.org/espemu/espemu3.jpg" width="400" /><br />
<br />
Como podemos observar, la calidad del video compuesto no es el
mejor, y sobre todo si utilizamos las pantalla planas, pero se puede
jugar perfectamente.<br />
También he observado que con algunas ROMS se bloquea el emulador en
algún momento.<br />
<br />
Gracias <span style="color: #990000;"><b>Peter Barrett</b></span><br />
<br />
<b><span class="st"><span class="st"><br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<br />
<span style="color: #663366;"><b>Bibliografía:<br />
</b></span></b><br />
<b><a href="https://github.com/rossumur/esp_8_bit">https://github.com/rossumur/esp_8_bit</a></b><br />
<a href="https://github.com/me-no-dev/arduino-esp32fs-plugin/releases/"><b>
https://github.com/me-no-dev/arduino-esp32fs-plugin/releases/</b></a><br />
<b><br />
<br />
<br />
</b> <b><tt> </tt></b><b> </b>
<p> </p>seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-53343230442758514192023-02-23T11:18:00.007-08:002023-03-17T01:55:02.242-07:00Raspberry Pi Pico Interprete BASIC con VGA <p>
<b> </b>
<b><a href="http://seta43.duckdns.org/electro.html">Página principal</a></b><br />
</p><div align="center"><span> <b><span style="color: #990000;">
</span></b><span style="color: #990000;"><b>Raspberry Pi
Pico<br />
Interprete BASIC<br /> con VGA</b></span></span><span><b><span style="color: #990000;"></span></b></span></div><div align="center"><span><b><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/HIuKh0DK1nE" width="320" youtube-src-id="HIuKh0DK1nE"></iframe></div><br /><span style="color: #990000;"><br />
</span></b><b> </b></span></div>
<span> </span> <b> </b>
<hr size="2" width="100%" />Buscando montaje curiosos con la Raspberry
Pi Pico encontré la página <a href="https://geoffg.net/picomitevga.html">https://geoffg.net/picomitevga.html</a>.<br />
En esta página habían instalado un interprete de Basic, mmBasic, en
la Raspberry Pi Pico, y además habían programado una salida de VGA.<br />
El MMBasic es un intérprete Basic libre para microcontroladores de
32 bits. <a href="https://mmbasic.com/">https://mmbasic.com/</a><br />
Existen intérpretes MMBasic para DOS, Linux y PIC32.<br />
<img alt="" height="454" src="http://seta43.duckdns.org/picobas/picobas3.png" width="640" /><br />
<br />
En el montaje original tiene una SD para almacenar diferentes
programas, en mi caso solo quiero que exista un programa, por lo que
se la he quitado. <br />
<br />
Para la conexión del teclado el montaje original coloca una serie de
transistores, yo los he eliminado conectando 4 resistencias.<br />
Como dice el montaje original se puede eliminar la conexión del
teclado a 5V y conectarlo a los 3.3V, la mayoría de los teclados
funciona lo he probado personalmente.<br />
<br />
En el montaje original de la segunda línea del color verde se
conectan varias resistencias junto con una resistencia variable. <br />
En mi montaje coloco 2 resistencias junto con un diodo. El ajuste
fino del color blanco se ha eliminado.<br />
<br />
He añadido dos diodos led, el primero a modo de test de
alimentación, y otro de test colocado a GP5.<br />
<br />
También he colocado un pulsador para la programación inicial de la
Raspberry pi pico.<br />
<br />
Se puede añadir una salida de audio, podéis ver la forma en la buena
documentación proporcionada en la página web.<br />
<br />
<img alt="" height="475" src="http://seta43.duckdns.org/picobas/picobas1.png" width="640" /><br />
<i><b>Esquema modificado.</b></i><br />
<br />
<img alt="" height="624" src="http://seta43.duckdns.org/picobas/picobas2.png" width="640" /><br />
<br />
<img alt="" height="287" src="http://seta43.duckdns.org/picobas/picobas4.jpg" width="640" /><br />
<i><b>Primer montaje.<br />
<br />
</b></i><img alt="" height="612" src="http://seta43.duckdns.org/picobas/picobas5.jpg" width="640" /><br />
<i><b>Circuito montado.</b></i><br />
<br />
<table border="1" cellpadding="2" cellspacing="2" style="height: 31px; width: 668px;">
<tbody>
<tr>
<td bgcolor="#333333" valign="top"><span style="color: white;"><b><tt>'
Colour Bars</tt></b><b><tt><br />
</tt></b><b><tt><br />
</tt></b><b><tt>Mode 2</tt></b><b><tt><br />
</tt></b><b><tt>CLS</tt></b><b><tt><br />
</tt></b><b><tt>Font 7</tt></b><b><tt><br />
</tt></b><b><tt>For y = 0 To 240 - 240/15 Step 240/16</tt></b><b><tt><br />
</tt></b><b><tt> Read s$, c</tt></b><b><tt><br />
</tt></b><b><tt> Text 0, y + 4, s$ + " = RGB(" +
Str$(c>>16) + "," + Str$((c>>8) And
&B11111111) + "," + Str$(c And &B11111111) +
")"</tt></b><b><tt><br />
</tt></b><b><tt> Box 155, y, 320 - 155, 240/16, 1,
c, c</tt></b><b><tt><br />
</tt></b><b><tt>Next y</tt></b><b><tt><br />
</tt></b><b><tt><br />
</tt></b><b><tt>Data "white", RGB(white)</tt></b><b><tt><br />
</tt></b><b><tt>Data "yellow", RGB(yellow)</tt></b><b><tt><br />
</tt></b><b><tt>Data "lilac", RGB(lilac)</tt></b><b><tt><br />
</tt></b><b><tt>Data "brown", RGB(brown)</tt></b><b><tt><br />
</tt></b><b><tt>Data "fuchsia", RGB(fuchsia)</tt></b><b><tt><br />
</tt></b><b><tt>Data "rust", RGB(rust)</tt></b><b><tt><br />
</tt></b><b><tt>Data "magenta", RGB(magenta)</tt></b><b><tt><br />
</tt></b><b><tt>Data "red", RGB(red)</tt></b><b><tt><br />
</tt></b><b><tt>Data "cyan", RGB(cyan)</tt></b><b><tt><br />
</tt></b><b><tt>Data "green", RGB(green)</tt></b><b><tt><br />
</tt></b><b><tt>Data "cerulean", RGB(cerulean)</tt></b><b><tt><br />
</tt></b><b><tt>Data "midgreen", RGB(midgreen)</tt></b><b><tt><br />
</tt></b><b><tt>Data "cobalt", RGB(cobalt)</tt></b><b><tt><br />
</tt></b><b><tt>Data "myrtle", RGB(myrtle)</tt></b><b><tt><br />
</tt></b><b><tt>Data "blue", RGB(blue)</tt></b><b><tt><br />
</tt></b><b><tt>Print @(0,y);</tt></b><b><tt><br />
</tt></b><b><tt><br />
</tt></b><b><tt>PLAY TONE 500, 500</tt></b><b><tt><br />
</tt></b><b><tt>PAUSE 2000</tt></b><b><tt><br />
</tt></b><b><tt>PLAY TONE 300, 300</tt></b><b><tt><br />
</tt></b><b><tt>PAUSE 5000</tt></b><b><tt><br />
</tt></b><b><tt>PLAY STOP</tt></b></span><br />
</td>
</tr>
</tbody>
</table><p>
<br />
<img alt="" height="375" src="http://seta43.duckdns.org/picobas/picobas6.jpg" width="640" /><br />
<i><b>Visión en un televisor con entrada VGA.</b></i><br />
<br />
Para subir los programas desde el PC a la placa Raspberry pi pico
utilizo un par de programas: <b>MMCC</b> y <b>MMEdit</b>.<br />
<img alt="" height="550" src="http://seta43.duckdns.org/picobas/picobas7.png" width="640" /><br />
<i><b>Terminal serie de programación y ejecución.<br />
<br />
</b></i><img alt="" height="622" src="http://seta43.duckdns.org/picobas/picobas8.png" width="640" /><br />
<i><b>Programa de edición y subida a la placa.</b></i><br />
<br />
El numero de colores máximos representados en la resolución de
320x240 es de 16 colores. En modo de 640x480 es monocromo.<br />
En una de las pruebas he añadido un sensor de temperatura 18B20,
para representar en pantalla la temperatura.<br />
Recomiendo este montaje por su sencillez, y por la sensación de
estar en los ordenadores de los años 80.<br />
<br />
<b><span class="st"><span class="st"><a href="https://youtu.be/HIuKh0DK1nE">VIDEO</a><br />
</span></span></b></p><p><b><span class="st"><span class="st"></span></span></b></p><p><b><span class="st"><span class="st"></span></span></b></p><p><b><span class="st"><span class="st"></span></span></b></p><p><b><span class="st"><span class="st">________________________________________________________</span></span></b></p><p><b><span class="st"><span class="st"></span></span></b></p><p><b><span class="st"><span class="st"></span></span></b></p><p><br /><b><span class="st"><span class="st"><b><span class="st"><span class="st"><br />
</span></span></b>
</span></span></b></p><hr size="2" width="100%" /><b>16/03/2023<br />
</b>Después de unos días probando la placa, descubrí que los módulos
clónicos de esta tarjeta, no son iguales que la original.<br />
Para que funcionase debía cambiar la toma de 5V para el teclado,
desde el pin VSYS al pin VBUS.<br />
También decidí colocar una tarjeta SD y el conector de audio.<br />
<img alt="" height="364" src="http://seta43.duckdns.org/picobas/picobes1.png" width="640" /><br />
<img alt="" height="491" src="http://seta43.duckdns.org/picobas/picobes2.jpg" width="640" /><br />
<img alt="" height="550" src="http://seta43.duckdns.org/picobas/picobes3.jpg" width="640" /><br />
Para configurar los pins donde esta conectada la tarjeta SD debemos
ejecutar la siguiente orden:<br />
<b>OPTION SDCARD GP13, GP10, GP11, GP12</b><br />
La tarjeta SD esta en el disco B: por lo que si queremos trabajar en
este disco deberemos ejecutar la orden:<br />
<b>DRIVE "B:"</b><br />
Para ver los fichero de este disco se teclea :<br />
<b>FILES</b><br />
Si queremos cargar un programa tecleamos:<br />
<b>LOAD programa.bas</b><br />
Si queremos cargar el programa tecleamos:<br />
<b> LOAD programa.bas</b><br />
o<br />
<b>RUN programa.bas<br />
</b>Existen muchas mas ordenes que vienen muy bien documentadas en
el manual como:<b><br />
</b><br />
<i><b><tt>MKDIR dname$</tt></b></i><i><b><tt><br />
</tt></b></i><i><b><tt>Creates a sub directory in the current
directory on the current drive.</tt></b></i><i><b><tt><br />
</tt></b></i><i><b><tt> CHDIR dname$</tt></b></i><i><b><tt><br />
</tt></b></i><i><b><tt>Change into to the directory $dname.
$dname can also be "." (dot dot) for up one directory or "\"
for the</tt></b></i><i><b><tt><br />
</tt></b></i><i><b><tt>root directory. The starting point is the
current directory on the current drive.</tt></b></i><i><b><tt><br />
</tt></b></i><i><b><tt>RMDIR dir$</tt></b></i><i><b><tt><br />
</tt></b></i><i><b><tt>Remove, or delete, the directory ‘dir$’
in the current directory on the current drive.</tt></b></i><i><b><tt><br />
</tt></b></i><i><b><tt> SEEK #fnbr, pos</tt></b></i><i><b><tt><br />
</tt></b></i><i><b><tt>Will position the read/write pointer in a
file that has been opened for RANDOM access to the 'pos' byte.</tt></b></i><i><b><tt><br />
</tt></b></i><i><b><tt> RENAME fromname$ AS toname$</tt></b></i><i><b><tt><br />
</tt></b></i><i><b><tt>Will rename the file fromname$ to have
the name toname$ in the current directory on the current drive</tt></b></i><i><b><tt><br />
</tt></b></i><i><b><tt> COPY [mode] fromname$ TO toname$</tt></b></i><i><b><tt><br />
</tt></b></i><i><b><tt>Will copy the file fromname$ to have the
file toname$. See the command reference for more details on
the</tt></b></i><i><b><tt><br />
</tt></b></i><i><b><tt>optional mode.</tt></b></i><br />
<br />
<br />
<br />
En cuando a reproducir sonidos, lo primero es configurar los pin de
salida:<br />
<b> OPTION AUDIO GP6, GP7</b><br />
y luego reproducir un fichero WAV con la orden.<br />
<b> PLAY WAV demo.wav</b><br />
Me sorprendió para bien la calidad del sonido reproducido, y probé
con diferente tipos de muestreo.<br />
Además se puede generar tonos con la orden:<br />
<b> PLAY TONE left, right, duration, interrupt</b><b><br />
</b><b> PLAY TONE 500, 500, 2000</b><br />
<p><b><span class="st"><span class="st">
</span> </span><span style="color: #003300;"><b> </b></span></b></p><p><b><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<br />
<span style="color: #663366;"><b>Bibliografía:</b></span></b><b> </b><br />
<a href="https://geoffg.net/picomitevga.html">https://geoffg.net/picomitevga.html</a><br />
<a href="https://mmbasic.com/">https://mmbasic.com/</a><br />
<br />
<b><tt> </tt></b><b> </b>
</p>seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-37197612055202507872023-02-13T12:00:00.009-08:002023-02-13T12:00:43.856-08:00Arduino - LORA (LoRaWAN) SX1278 - Emisor GPS<p>
<b> </b>
<b><a href="http://seta43.duckdns.org/electro.html">Página principal</a></b><br />
</p><div align="center"><span> <b><span style="color: #990000;">
</span></b><span style="color: #990000;"><b>Arduino<br />
LORA (</b></span></span><span style="color: #990000;"><b>LoRaWAN</b></span><span><span style="color: #990000;"><b>) </b></span></span><span><span style="color: #990000;"><b>SX1278 <br />
Emisor GPS</b></span><b><span style="color: #990000;"><br />
</span></b><b> </b></span></div>
<span> </span> <b> </b>
<hr size="2" width="100%" />En este montaje conecto un receptor GPS
que emite su posición a través del módulo LORA al receptor.<br />
<br />
<br />
<span style="color: #990000;"><u><b><span>EMISOR GPS</span></b></u></span><br />
<img alt="" height="785" src="http://seta43.duckdns.org/loragps/loragps1.png" width="672" /><br />
<br />
<img alt="" height="474" src="http://seta43.duckdns.org/loragps/loragps6.png" width="393" /><br />
<img alt="" height="667" src="http://seta43.duckdns.org/loragps/loragps7.jpg" width="480" /><br />
Emisor GPS con OLED. No es obligatorio.<br />
<br />
<img alt="" height="601" src="http://seta43.duckdns.org/loragps/loragps4.jpg" width="720" /><br />
<br />
<span style="color: #990000;"><u><b><span>RECEPTOR GPS</span></b></u></span><br />
<b><span><tt><span class="st"><span class="st"><img alt="" height="630" src="http://seta43.duckdns.org/loragps/loragps2.png" width="669" /><br />
<img alt="" height="733" src="http://seta43.duckdns.org/loragps/loragps3.jpg" width="600" /><br />
</span></span></tt></span></b><br />
<b><span><tt><span class="st"><span class="st">Debido a
que los 3.3V que proporciona el arduino </span></span></tt></span></b><b><span><tt><span class="st"><span class="st"><b><span><tt><span class="st"><span class="st">nano</span></span></tt></span></b>
tiene poca potencia, debemos colocar un condensador, en mi
caso he colocado 330uF.<br />
<br />
<img alt="" height="360" src="http://seta43.duckdns.org/loragps/loragps5.png" width="683" /><br />
</span></span></tt></span></b>El formato de salida se puede
copiar y pegar en Google Maps.<br />
<br />
<b><span><tt><span class="st"><span class="st"><a href="http://seta43.duckdns.org/loragps/loragps.mp4">VIDEO</a><br />
<br />
<a href="http://seta43.duckdns.org/loragps/loragps.zip">PROGRAMA Y
LIBRERÍAS</a></span></span></tt></span></b><b><span class="st"><span class="st"><br />
<br />
<br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<br />
<span style="color: #663366;"><b>Bibliografía:</b></span></b><b> </b><b><br />
</b><b> </b>
<a href="https://how2electronics.com/interfacing-sx1278-lora-module-with-arduino/">https://how2electronics.com/interfacing-sx1278-lora-module-with-arduino/</a><br />
<a href="https://www.electroschematics.com/rf-radio-frequency/">https://www.electroschematics.com/rf-radio-frequency/</a><br />
<a href="https://electronoobs.com/eng_arduino_tut97.php">
https://electronoobs.com/eng_arduino_tut97.php</a><br />
<a href="https://cdn-shop.adafruit.com/product-files/3179/sx1276_77_78_79.pdf">https://cdn-shop.adafruit.com/product-files/3179/sx1276_77_78_79.pdf</a><br />
<a href="https://www.semtech.com/products/wireless-rf/lora-connect/sx1278">https://www.semtech.com/products/wireless-rf/lora-connect/sx1278</a><br />
<a href="https://oa.upm.es/44890/1/TFM_JOSE_DANIEL_RODRIGUEZ_MUNCA.pdf">
https://oa.upm.es/44890/1/TFM_JOSE_DANIEL_RODRIGUEZ_MUNCA.pdf</a><br />
<br />
<a href="https://github.com/adafruit/Adafruit_AHTX0">https://github.com/adafruit/Adafruit_AHTX0</a><br />
<a href="https://github.com/Longan-Labs/GROVE-ATH-RESOURCES">https://github.com/Longan-Labs/GROVE-ATH-RESOURCES</a><br />
<b><tt><br />
</tt></b><b> </b>
<div class="simple-translate-system-theme" id="simple-translate"><div><div class="simple-translate-button isShow" style="background-image: url("moz-extension://83c0eef7-88b6-4223-a58b-334470854b9d/icons/512.png"); height: 22px; left: 487px; top: 106px; width: 22px;"></div><div class="simple-translate-panel " style="font-size: 13px; height: 200px; left: 0px; top: 0px; width: 300px;"><div class="simple-translate-result-wrapper" style="overflow: hidden;"><div class="simple-translate-move" draggable="true"></div><div class="simple-translate-result-contents"><p class="simple-translate-result" dir="auto"></p><p class="simple-translate-candidate" dir="auto"></p></div></div></div></div></div>seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-27911955078828633802023-01-30T09:17:00.000-08:002023-01-30T09:17:12.104-08:00Arduino - LORA (LoRaWAN) SX1278 - Comunicación bidireccional<p>
<b> </b>
<b><a href="http://seta43.duckdns.org/electro.html">Página principal</a></b><br />
</p><div align="center"><span> <b><span style="color: #990000;">
</span></b><span style="color: #990000;"><b>Arduino<br />
LORA (</b></span></span><span style="color: #990000;"><b>LoRaWAN</b></span><span><span style="color: #990000;"><b>) </b></span></span><span><span style="color: #990000;"><b>SX1278 <br />
Comunicación bidireccional</b></span><b><span style="color: #990000;"><br />
</span></b><b> </b></span></div>
<span> </span> <b> </b>
<hr size="2" width="100%" />Todos los montajes realizados hasta ahora
eran comunicaciones en un solo sentido.<br />
En este sentido la comunicación es bidireccional entre los dos
módulos LORA.<br />
En un módulo receptor existe un pulsado que manda una orden al
módulo sensor pidiendo la temperatura.<br />
<br />
*MODULO RECEPTOR manda orden "<b>PeticionNUM=</b>" junto con
un numero aleatorio. Ejemplo: <b>PeticionNUM=437</b> .<br />
<br />
*MODULO SENSOR, que siempre está escuchando, recibe la orden <b>PeticionNUM=437</b>
.<br />
Almacena el número <b>437</b>.<br />
Lee del sensor la humedad y la temperatura.<br />
Reenvía <b>Num=437 Temperatura=20.35 Humedad=50.34</b> .<br />
<br />
*MODULO RECEPTOR recibe los datos mandados. <br />
Muestra en el OLED el valor de Temperatura y Humedad.<br />
Comprueba que el numero de petición es el mismo al numero recibido.
Si no hay error muestra un <b>OK</b>, de otra forma muestra <b>ERROR</b>.<br />
También muestra el nivel de señal.<br />
<br />
<br />
<span style="color: #990000;"><u><b>SENSOR TEMPERATURA<br />
</b></u></span><br />
<img alt="" height="640" src="http://seta43.duckdns.org/arducom/arducom1.png" width="563" /><br />
<br />
<img alt="" height="640" src="http://seta43.duckdns.org/arducom/arducom5.jpg" width="506" /><br />
<br />
<br />
<span style="color: #990000;"><u><b><span>RECEPTOR TEMPERATURA</span></b></u></span><br />
<b><span><tt><span class="st"><span class="st"><img alt="" height="640" src="http://seta43.duckdns.org/arducom/arducom2.png" width="559" /><br />
<br />
<img alt="" height="640" src="http://seta43.duckdns.org/arducom/arducom4.jpg" width="412" /><br />
</span></span></tt></span></b><br />
Debido a que los 3.3V que proporciona la placa nano del arduino
tiene poca potencia, debemos colocar un condensador, en mi caso he
colocado 330uF.<br />
<br />
También he colocado una antena nueva, mejorando la señal.<br />
Dependiendo del diámetro del hilo, puede variar la longitud de la
antena.<br />
Yo fui cortando poco a poco el hilo hasta conseguir la mayor señal.<br />
<img alt="" height="170" src="http://seta43.duckdns.org/arducom/arducom6.jpg" width="640" /><br />
<span><tt><span class="st"><span class="st"><br />
</span></span></tt></span><b><span><tt><span class="st"><span class="st"><br />
<br />
<a href="http://seta43.duckdns.org/arducom/arducom.mp4"> VIDEO DEL
FUNCIONAMIENTO</a><br />
<br />
<a href="http://seta43.duckdns.org/arducom/arducom.zip">PROGRAMA Y
LIBRERÍAS</a></span></span></tt></span></b><b><span class="st"><span class="st"><br />
<br />
<br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<br />
<span style="color: #663366;"><b>Bibliografía:</b></span></b><b> </b><b><br />
</b><b> </b>
<a href="https://how2electronics.com/interfacing-sx1278-lora-module-with-arduino/">https://how2electronics.com/interfacing-sx1278-lora-module-with-arduino/</a><br />
<a href="https://www.electroschematics.com/rf-radio-frequency/">https://www.electroschematics.com/rf-radio-frequency/</a><br />
<a href="https://electronoobs.com/eng_arduino_tut97.php">
https://electronoobs.com/eng_arduino_tut97.php</a><br />
<a href="https://cdn-shop.adafruit.com/product-files/3179/sx1276_77_78_79.pdf">https://cdn-shop.adafruit.com/product-files/3179/sx1276_77_78_79.pdf</a><br />
<a href="https://www.semtech.com/products/wireless-rf/lora-connect/sx1278">https://www.semtech.com/products/wireless-rf/lora-connect/sx1278</a><br />
<a href="https://oa.upm.es/44890/1/TFM_JOSE_DANIEL_RODRIGUEZ_MUNCA.pdf">
https://oa.upm.es/44890/1/TFM_JOSE_DANIEL_RODRIGUEZ_MUNCA.pdf</a><br />
<br />
<a href="https://github.com/adafruit/Adafruit_AHTX0">https://github.com/adafruit/Adafruit_AHTX0</a><br />
<a href="https://github.com/Longan-Labs/GROVE-ATH-RESOURCES">https://github.com/Longan-Labs/GROVE-ATH-RESOURCES</a><br />
<b><tt><br />
</tt></b><b> </b>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-44525134404494771582023-01-27T22:34:00.000-08:002023-01-27T22:34:03.098-08:00Comunicación entre arduino y Raspberry pi pico con LORA<p>
<b> </b>
<b><a href="http://seta43.duckdns.org/electro.html">Página principal</a></b><br />
</p><div align="center"><span> <b><span style="color: #990000;">
</span></b><span style="color: #990000;"><b>LORA (</b></span></span><span style="color: #990000;"><b>LoRaWAN</b></span><span><span style="color: #990000;"><b>) </b></span></span><span><span style="color: #990000;"><b>SX1278 <br />
Raspberry pi pico</b><br />
<b>IDE Arduino<br />
Transmision temperatura desde ATMEGA a Raspberry pi pico<br />
</b> <b> Módulo AHT20 - OLED</b></span><b><span style="color: #990000;"><br />
</span></b><b> </b></span></div>
<span> </span> <b> </b>
<hr size="2" width="100%" />Tenía una raspberry pi pico, y mi idea era
comunicar el arduino con la raspberry pi pico a través de LORA
(LoRaWAN).<br />
En primer lugar monto el transmisor con un arduino junto con el
sensor de temperatura y humedad (AHT20).<br />
En anteriores montajes ya había realizado varios montajes, en este
lo junto todo.<br />
<br />
<span style="color: #990000;"><u><b>EMISOR<br />
<br />
</b></u></span><img alt="" height="400" src="http://seta43.duckdns.org/picoate/picoate2.png" width="354" /><br />
<br />
<img alt="" height="400" src="http://seta43.duckdns.org/picoate/picoate3.jpg" width="305" /><br />
El sensor AHT20 se comunica mediante el bus I2C, funciona a 5V.<br />
<tt><b>Module AHT20 // Arduino UNO/NANO </b></tt><br />
<span><tt><b> A4->SDA</b></tt><tt><b><br />
</b></tt><tt><b> A5->SDL</b></tt><tt><b><br />
</b></tt><tt><b> GND->GND</b></tt><tt><b><br />
</b></tt><tt><b> 5V->VIN<br />
<br />
</b></tt></span>El transmisor LORA SX1278 se comunica mediante
el bus SPI, funciona a 3.3V .<br />
<tt><b>Module SX1278 // Arduino UNO/NANO </b></tt><tt><b><br />
</b></tt><tt><b>
GND
-> GND</b></tt><tt><b><br />
</b></tt><tt><b>
Vcc
-> 3.3V</b></tt><tt><b><br />
</b></tt><tt><b>
MISO ->
D12</b></tt><tt><b><br />
</b></tt><tt><b>
MOSI ->
D11 </b></tt><tt><b><br />
</b></tt><tt><b>
SLCK ->
D13</b></tt><tt><b><br />
</b></tt><tt><b>
Nss
-> D10</b></tt><tt><b><br />
</b></tt><tt><b>
Di00 ->
D2</b></tt><tt><b><br />
</b></tt><tt><b>
RST
-> D9 </b></tt> <br />
<br />
Los datos de temperatura y humedad se envían cada 1500 mS.<br />
El formato es:<br />
<tt><b>Num=23 Temperatura=20.34 Humedad=50.34</b></tt><br />
<br />
<br />
<span style="color: #990000;"><u><b><span>RECEPTOR<br />
<br />
</span></b></u></span><img alt="" height="400" src="http://seta43.duckdns.org/picoate/picoate1.png" width="225" /><br />
<br />
<img alt="" height="245" src="http://seta43.duckdns.org/picoate/picoate4.jpg" width="400" /><br />
<br />
El OLED se comunica mediante el bus I2C.<br />
<tt><b>OLED -> PICO<br />
SLC->1<br />
SDA->0<br />
VCC->3V3<br />
GND->GND</b></tt><br />
Como en la Raspberry pi pico se pueden utilizar diferentes PINS para
el bus I2C, debemos indicar que PINS se deben utilizar.<br />
Esto se realiza en la configuración con:<br />
<tt><b> Wire.setSDA(0);</b></tt><tt><b><br />
</b></tt><tt><b> Wire.setSCL(1);</b></tt><tt><b><br />
</b></tt><tt><b> Wire.begin(); <br />
</b></tt><b><span><tt><span class="st"><span class="st">
<br />
</span></span></tt></span></b> Nos falta conectar el
receptor LORA SX1278 al raspberry mediante el bus SPI.<br />
<tt><b>Module SX1278 // Raspberry pico pi</b></tt><tt><b><br />
</b></tt><tt><b>
GND
-> GND</b></tt><tt><b><br />
</b></tt><tt><b>
Vcc
-> 3.3V</b></tt><tt><b><br />
</b></tt><tt><b>
MISO ->
16</b></tt><tt><b><br />
</b></tt><tt><b>
MOSI ->
19</b></tt><tt><b><br />
</b></tt><tt><b>
SLCK ->
18</b></tt><tt><b><br />
</b></tt><tt><b>
Nss
-> 17</b></tt><br />
La configuración en la parte del programa fue difícil, es lo que mas
me costó.<br />
<tt><b>#define M_MISO 16</b></tt><tt><b><br />
</b></tt><tt><b>#define M_CS 17</b></tt><tt><b><br />
</b></tt><tt><b>#define M_SCK 18</b></tt><tt><b><br />
</b></tt><tt><b>#define M_MOSI 19</b></tt><tt><b><br />
</b></tt><tt><b><br />
</b></tt><tt><b>const uint8_t SPI_MISO = M_MISO;</b></tt><tt><b><br />
</b></tt><tt><b>const uint8_t SPI_CS = M_CS;</b></tt><tt><b><br />
</b></tt><tt><b>const uint8_t SPI_SCK = M_SCK;</b></tt><tt><b><br />
</b></tt><tt><b>const uint8_t SPI_MOSI = M_MOSI;</b></tt><tt><b><br />
</b></tt><tt><b><br />
</b></tt><tt><b> LoRa.setPins(M_CS);</b></tt><br />
<br />
La conexión del pin de interrupción DIO0 no se hace debido a que no
está implementada en la librería, además tampoco se utiliza el pin
de RESET.<br />
<br />
He creado una función que lee la cadena recibida y extrae el valor
de una cadena pedida.<br />
Esta función es muy útil para cualquier otro montaje.<tt><span><br />
</span><b>/* busca en una cadena (*in), una cadena (*busqueda), y
devuelve el valor en (*valor) */</b><b><br />
</b><b>int busqueda(char* in, char* busqueda, char* valor)<br />
<br />
</b></tt>Ejemplo:<br />
<b><tt> if (1 == busqueda(buffer, (char*)"Num=",
bufferS))</tt></b><b><tt><br />
</tt></b><b><tt> {</tt></b><b><tt><br />
</tt></b><b><tt>
Serial.print(" valorNum=");</tt></b><b><tt><br />
</tt></b><b><tt>
Serial.println(bufferS);</tt></b><b><tt><br />
</tt></b><b><tt>
nums=atoi(bufferS);</tt></b><b><tt><br />
</tt></b><b><tt> }</tt></b><br />
<b><span><tt><span class="st"><span class="st"><br />
<br />
<a href="http://seta43.duckdns.org/picoate/picoate.mp4"> VIDEO DEL
FUNCIONAMIENTO</a><br />
<br />
<a href="http://seta43.duckdns.org/picoate/ardupit.zip">PROGRAMA Y
LIBRERÍAS</a></span></span></tt></span></b><b><span class="st"><span class="st"><br />
<br />
<br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<br />
<span style="color: #663366;"><b>Bibliografía:</b></span></b><b> </b><b><br />
</b><b> </b>
<a href="https://how2electronics.com/interfacing-sx1278-lora-module-with-arduino/">https://how2electronics.com/interfacing-sx1278-lora-module-with-arduino/</a><br />
<a href="https://www.electroschematics.com/rf-radio-frequency/">https://www.electroschematics.com/rf-radio-frequency/</a><br />
<a href="https://electronoobs.com/eng_arduino_tut97.php">
https://electronoobs.com/eng_arduino_tut97.php</a><br />
<a href="https://cdn-shop.adafruit.com/product-files/3179/sx1276_77_78_79.pdf">https://cdn-shop.adafruit.com/product-files/3179/sx1276_77_78_79.pdf</a><br />
<a href="https://www.semtech.com/products/wireless-rf/lora-connect/sx1278">https://www.semtech.com/products/wireless-rf/lora-connect/sx1278</a><br />
<a href="https://oa.upm.es/44890/1/TFM_JOSE_DANIEL_RODRIGUEZ_MUNCA.pdf">
https://oa.upm.es/44890/1/TFM_JOSE_DANIEL_RODRIGUEZ_MUNCA.pdf</a><br />
<a href="https://www.2cigroup.com/es/conceptos-de-actualidad-lora-y-lorawan/">https://www.2cigroup.com/es/conceptos-de-actualidad-lora-y-lorawan/</a><br />
<br />
<br />
<a href="https://github.com/adafruit/Adafruit_AHTX0">https://github.com/adafruit/Adafruit_AHTX0</a><br />
<a href="https://github.com/Longan-Labs/GROVE-ATH-RESOURCES">https://github.com/Longan-Labs/GROVE-ATH-RESOURCES</a><br />
<b><tt><br />
</tt></b><b> </b>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0tag:blogger.com,1999:blog-8485947205656363770.post-54632421362279086062023-01-20T09:12:00.008-08:002023-01-20T09:13:54.144-08:00Raspberry pi pico - IDE Arduino - Módulo AHT20<p>
<b> </b>
<b><a href="http://seta43.duckdns.org/electro.html">Página principal</a></b><b><br />
</b><b> </b>
</p><div align="center"><span><br />
<b><span style="color: #990000;">
</span></b><b><span style="color: #990000;">Raspberry pi pico</span></b><br />
<b><span style="color: #990000;">IDE Arduino</span></b><br />
<b><span style="color: #990000;"> Módulo AHT20</span></b><b><span style="color: #990000;"><br />
</span></b><b> </b></span></div>
<span> </span> <b> </b>
<hr size="2" width="100%" />Había realizado algunos proyectos con la
Raspberry pi pico programando en C, ahora lo realizo con la IDE de
Arduino.<br />
En un <b><a href="http://seta43.duckdns.org/pib.html">anterior
artículo</a></b> explico como configurar la IDE de arduino para
programar la Raspberry pi pico.<br />
<br />
En este montaje utilizo el sensor de temperatura y humedad AHT20,
para luego representarlo en el OLED
<span class="st"><span class="st">SSD1306Z</span></span><span class="st"><span class="st">.<br />
Al utilizar la comunicación en ambos casos el bus I2C , el
montaje es muy sencillo.<br />
<br />
<img alt="" height="400" src="http://seta43.duckdns.org/ardupit/ardupit2.png" width="391" /><br />
<br />
<img alt="" height="242" src="http://seta43.duckdns.org/ardupit/ardupit.jpg" width="400" /><br />
</span></span> <b><span><tt><span class="st"><span class="st"><br />
</span></span></tt></span></b>El código utilizado es el
mismo utilizado para la versión de ATMEGA salvo la configuración de
los PINS utilizados para el bus I2C.<br />
Como en la Raspberry pi pico se pueden utilizar diferentes PINS para
el bus I2C, debemos indicar que PINS se deben utilizar.<br />
Esto se realiza en la configuración con:<br />
<br />
<tt><b> </b></tt><span><tt><b>Wire.setSDA(0);</b></tt><tt><b><br />
</b></tt><tt><b> Wire.setSCL(1);</b></tt><tt><b><br />
</b></tt><tt><b> Wire.begin(); // Wire
communication begin</b></tt></span><br />
<b><span><tt><span class="st"><span class="st"><br />
</span></span></tt></span></b> Este montaje es fácil y
rápido de hacer, manos a la obra.<b><span><tt><span class="st"><span class="st"><br />
<br />
<a href="http://seta43.duckdns.org/ardupit/ardupit.zip">PROGRAMA Y
LIBRERÍAS</a></span></span></tt></span></b><b><span class="st"><span class="st"><br />
<br />
</span> </span><span style="color: #003300;"><b>Saludos.</b><b><br />
</b><b> Juan Galaz</b></span><br />
<br />
<span style="color: #663366;"><b>Bibliografía:</b></span></b><b> </b><b><br />
</b><b> </b><br />
<b><tt><br />
</tt></b><b> </b>
seta43http://www.blogger.com/profile/14524556896284204048noreply@blogger.com0