
{"id":7599,"date":"2024-06-26T07:50:05","date_gmt":"2024-06-26T07:50:05","guid":{"rendered":"https:\/\/dyor.webs.upv.es\/?p=7599"},"modified":"2024-06-26T07:50:05","modified_gmt":"2024-06-26T07:50:05","slug":"dyor-senorita-cafe-con-leche","status":"publish","type":"post","link":"https:\/\/dyor.webs.upv.es\/en\/dyor-senorita-cafe-con-leche\/","title":{"rendered":"DYOR: Ms Cafe con Leche"},"content":{"rendered":"<p><\/p>\n<h4><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-7947\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/profile-pic-square-300x300.jpg\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/profile-pic-square-300x300.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/profile-pic-square-1024x1024.jpg 1024w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/profile-pic-square-150x150.jpg 150w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/profile-pic-square-768x768.jpg 768w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/profile-pic-square.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/h4>\n<h4>Made by:<\/h4>\n<h4>CTO (Chief Technical Officer) : Anja V\u00e5ge Burtonwood<\/h4>\n<h4>CHO (Chief Hardware Officer) : Linn H\u00e5berg Dimmen<\/h4>\n<h2>Design<\/h2>\n<p>Components:<\/p>\n<ul>\n<li>Arduino nano<\/li>\n<li>I\/O Extension Shield para Arduino Nano<\/li>\n<li>SPP-C Bluetooth (compatible HC-06)<\/li>\n<li>Caster wheel<\/li>\n<li>9V battery<\/li>\n<li>8&#215;8 LED Matrix, max7219<\/li>\n<li>Two FS90R servos 360\u00b0<\/li>\n<li>Two 60mm wheels for the FS90R servos<\/li>\n<li>Linefollower module, TCRT500+<\/li>\n<li>Ultrasound distance sensor module, HC-SR04<\/li>\n<li>Passive buzzer module<\/li>\n<\/ul>\n<p>We assembled the robot on a metal base provided by our professor. For assembling we used both a glue gun and plastic spacers. We connected everything with cables to the extension shield. We used Facilino as a basis for our code, but to achieve the desired custom functionality we ended up writing most of the code ourselves. Facilino was very helpful for modulizing and understanding the functions for each hardware component. We chose the name &#8220;Cafe con Leche&#8221; due to our high consumption of this beverage during class, it has nothing to do with the robot&#8217;s functionality.<\/p>\n<h2>Functions<\/h2>\n<p>The robot has three main modes; Manual, Linefollowing and Music mode.<\/p>\n<h3>Manual mode<\/h3>\n<p>In manual mode we are using bluetooth to connect with the robot and send instructions. Since we both have iPhones, we have not made an app, but instead we are running a python script. The python script connects to the bluetooth module of the robot which is instructed to receive messages. For sending commands we used the &#8220;pybluez&#8221; library, which can be found online. There were some bugs when first testing out this functionality. Originally the plan was to only send integers as commands, but this lead to weird behaviour as the robot was not only receiving the commands that we sent, but also some garbage from the pybluez library (such as &#8220;CONNECTED&#8221; etc.). Therefore, we had to send commands as strings using an ID and decode them in the Arduino code. This ensures that the robot does not act on received strings unless it is a valid command. The python script also automatically reconnects if the robot is lost, as long as the user closes the bluetooth socket first (by pressing &#8220;esc&#8221;).<\/p>\n<p>When pressing different buttons on the keyboard of the computer, the commands show up in the terminal of the python script, functioning as a sort of low level interface for the commands. As long as the robot is connected, it will receive the messages sent and decode them. While responding to these commands, the robot will also display arrows on the LED matrix which indicate the current direction. We have chosen to steer the robot using the &#8216;wasd&#8217; keys, which is common in computer games. Each key incrementally increases the speed in its corresponding direction. This makes steering both flexible and intuitive. The space bar immediately stops the robot, resetting all speed and turn values.<\/p>\n<p>The instructions<\/p>\n<ul>\n<li>&#8216;w&#8217; = increase speed in the forward direction<\/li>\n<li>&#8216;s&#8217; = increase speed in the backwards direction<\/li>\n<li>&#8216;a&#8217; = increase turning in the left direction<\/li>\n<li>&#8216;d&#8217; = increase turning in the right direction<\/li>\n<li>&#8216;*space bar*&#8217; = stop the motors<\/li>\n<li>&#8216;m&#8217; = change mode<\/li>\n<\/ul>\n<div style=\"width: 480px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-7599-1\" width=\"480\" height=\"848\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/manual-mode.mp4?_=1\" \/><a href=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/manual-mode.mp4\">https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/manual-mode.mp4<\/a><\/video><\/div>\n<h3>Linefollowing<\/h3>\n<p>When the robot is in linefollowing mode, it will follow a line on the floor. It does this using the IR sensor and its analog output values. The robot can still receive messages through bluetooth, but will only react to the &#8216;m&#8217; button, which is to switch modes. While in Linefollowing mode, the LED matrix will display a big L. In this mode, we also look for objects in front of the robot. If the ultrasound sensor detects an object less than 10cm away, the robot will reverse and turn for a few seconds. While it is reversing, the LED matrix will show a big X, and the robot will be making a low beeping sound. After this it will continue to linefollow once it finds the line again.<\/p>\n<div style=\"width: 480px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-7599-2\" width=\"480\" height=\"848\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/linefollowing-1.mp4?_=2\" \/><a href=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/linefollowing-1.mp4\">https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/linefollowing-1.mp4<\/a><\/video><\/div>\n<div style=\"width: 480px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-7599-3\" width=\"480\" height=\"848\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/linefollowing_obstacle.mp4?_=3\" \/><a href=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/linefollowing_obstacle.mp4\">https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/linefollowing_obstacle.mp4<\/a><\/video><\/div>\n<h3>Music mode<\/h3>\n<p>In music mode, the robot stands still and plays music from the video console WII. While in this mode, the LED matrix will display a heart. If connected to bluetooth, you can still change modes with the &#8216;m&#8217; button, but the other commands will have no effect.<\/p>\n<div style=\"width: 480px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-7599-4\" width=\"480\" height=\"848\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/music-mode.mp4?_=4\" \/><a href=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/music-mode.mp4\">https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/music-mode.mp4<\/a><\/video><\/div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Made by: CTO (Chief Technical Officer) : Anja V\u00e5ge Burtonwood CHO (Chief Hardware Officer) : Linn H\u00e5berg Dimmen Design Components: Arduino nano I\/O Extension Shield para Arduino Nano SPP-C Bluetooth (compatible HC-06) Caster wheel 9V battery 8&#215;8 LED Matrix, max7219 Two FS90R servos 360\u00b0 Two 60mm wheels for the FS90R servos Linefollower module, TCRT500+ Ultrasound [&hellip;]<\/p>\n","protected":false},"author":963,"featured_media":7947,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[81],"tags":[15,16,14,21,122,27,18,23],"class_list":["post-7599","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-arduino","tag-bluetooth","tag-dyor","tag-matriz-leds","tag-mobile-robotics","tag-robot","tag-ultrasonido","tag-zumbador"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/profile-pic-square.jpg","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":7349,"url":"https:\/\/dyor.webs.upv.es\/en\/english-frogbot3000\/","url_meta":{"origin":7599,"position":0},"title":"FrogBot3000","author":"leoharling","date":"Friday June 30th, 2023","format":false,"excerpt":"This post presents FrogBot 3000 a low-cost Arduino-based mobile robot DYOR: FrogBot3000 mobile robot build GOAL The goal is to build a mobile robot based on a frog. It will be able to raise and lower its arms, move in any direction, display a plethora of emotions, follow a black\u2026","rel":"","context":"In &quot;Blog&quot;","block_context":{"text":"Blog","link":"https:\/\/dyor.webs.upv.es\/en\/category\/blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2023\/06\/IMG_0431-scaled.jpeg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2023\/06\/IMG_0431-scaled.jpeg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2023\/06\/IMG_0431-scaled.jpeg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2023\/06\/IMG_0431-scaled.jpeg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2023\/06\/IMG_0431-scaled.jpeg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2023\/06\/IMG_0431-scaled.jpeg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":2886,"url":"https:\/\/dyor.webs.upv.es\/en\/ensamblaje-dyor-pikabot\/","url_meta":{"origin":7599,"position":1},"title":"Assembly of DYOR PikaBot","author":"soporte","date":"Wednesday April  4th, 2018","format":false,"excerpt":"In this entry, we show the assembly of DYOR PikaBot with TinkerCAD and make with laser cutting \u00a0 Components: Arduino Nano + Shield Arduino Nano I\/O (red) Powerbank (blue) Ultrasound HC-SR04 (grey) Buzzer (black) Servos SG90 (blue) in the frontal face Servos FS90R (blue) in the base Bluetooth (dark blue)\u2026","rel":"","context":"In &quot;ensamblaje&quot;","block_context":{"text":"ensamblaje","link":"https:\/\/dyor.webs.upv.es\/en\/category\/fabricacion\/ensamblaje\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2018\/04\/DYOR_Pikachu_assembly10.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2018\/04\/DYOR_Pikachu_assembly10.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2018\/04\/DYOR_Pikachu_assembly10.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":7676,"url":"https:\/\/dyor.webs.upv.es\/en\/english-dyor-mobile-robotics-report-colorbot\/","url_meta":{"origin":7599,"position":2},"title":"DYOR: Mobile Robotics Report &#8211; ColorBot","author":"JosefKhedri","date":"Wednesday June 26th, 2024","format":false,"excerpt":"This report presents our work behind the ColorBot, made for the main assignment in the course Mobile Robotics at the UPV. Design of the Robot: Parts: Arduino Nano with Extension Shield Color Sensor (TCS3200) Bluetooth Module (HC-06) 8x8 LED-matrix Infrared Sensor (TCRT5000) 2x FS90R servos with 60mm wheels Castor Wheel\u2026","rel":"","context":"In &quot;Blog&quot;","block_context":{"text":"Blog","link":"https:\/\/dyor.webs.upv.es\/en\/category\/blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/WhatsApp-Bild-2024-06-15-kl.-12.49.27_386e7423-225x300.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2794,"url":"https:\/\/dyor.webs.upv.es\/en\/ensamblaje-dyor-spiderbot\/","url_meta":{"origin":7599,"position":3},"title":"Assembly of DYOR SpiderBot","author":"soporte","date":"Monday March 26th, 2018","format":false,"excerpt":"In this entry, we show the assembly of DYOR SpiderBot with TinkerCAD and make with laser cutting \u00a0 Components: Arduino Nano + Shield Arduino Nano I\/O (red) Powerbank (yellow) Ultrasound HC-SR04 (light grey) Buzzer (black) Servos SG90 (dark blue) in the frontal face Servos FS90R (dark blue) in the base\u2026","rel":"","context":"In &quot;ensamblaje&quot;","block_context":{"text":"ensamblaje","link":"https:\/\/dyor.webs.upv.es\/en\/category\/fabricacion\/ensamblaje\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2018\/03\/spider_assembly9.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2813,"url":"https:\/\/dyor.webs.upv.es\/en\/ensamblaje-dyor-gokubot\/","url_meta":{"origin":7599,"position":4},"title":"Assembly of DYOR GokuBot","author":"soporte","date":"Friday March 30th, 2018","format":false,"excerpt":"In this entry, we show the assembly of DYOR GokuBot with TinkerCAD and make with laser cutting \u00a0 Components: Arduino Nano + Shield Arduino Nano I\/O (red) Powerbank (brown) Ultrasound HC-SR04 (light blue) Buzzer (black) Servos SG90 (dark blue) in the frontal face Servos FS90R (dark blue) in the base\u2026","rel":"","context":"In &quot;DYOR GokuBot&quot;","block_context":{"text":"DYOR GokuBot","link":"https:\/\/dyor.webs.upv.es\/en\/category\/robots\/dyor-gokubot\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2018\/03\/goku_assembly8.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":7882,"url":"https:\/\/dyor.webs.upv.es\/en\/english-dyor-tobias\/","url_meta":{"origin":7599,"position":5},"title":"DYOR: Tobias","author":"DasAas","date":"Wednesday June 26th, 2024","format":false,"excerpt":"The objective of this post is to provide an overview of the assignment to build a robot in the Mobile Robotics course during the spring semester of 2024. The robot is built with lowcost components and should have some functionalities like line tracking, obstacle avoidance, moving its arms, and making\u2026","rel":"","context":"In &quot;Blog&quot;","block_context":{"text":"Blog","link":"https:\/\/dyor.webs.upv.es\/en\/category\/blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/profil.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/profil.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/profil.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/profil.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/profil.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/profil.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/posts\/7599","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/users\/963"}],"replies":[{"embeddable":true,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/comments?post=7599"}],"version-history":[{"count":13,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/posts\/7599\/revisions"}],"predecessor-version":[{"id":8108,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/posts\/7599\/revisions\/8108"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/media\/7947"}],"wp:attachment":[{"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/media?parent=7599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/categories?post=7599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/tags?post=7599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}