diff --git a/docs/getting-started.md b/docs/getting-started.md index a022e81b..a7512dc5 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -87,7 +87,10 @@ if you do not want to lose them! Now it's time to write the image to the card. -1. Download and install Etcher from [their website](https://etcher.io). +1. Download and install [Etcher v17](https://github.com/balena-io/etcher/releases/tag/v1.17.0) + + **Newer versions are broken and don't work with the ev3dev image!** + 2. Launch Etcher after it has finished installing. {% include /util/screenshot.html source="/images/etcher/home.png" caption="Etcher home screen" width="600px" %} @@ -244,6 +247,7 @@ available hardware. {% include /style/begin-section.html %} + ## Step 6: Connect to the EV3 via SSH Now that you have a network connection, you should connect to your EV3 with SSH. @@ -272,6 +276,18 @@ you're good to go! {% include /style/begin-section.html bg="dark" %} +## Step 6.1: Optional: Update `apt` + +Currently, the image file downloaded from step 1 was built in 2020. +`apt` does not work out of the box. + +To fix `apt` in general, `/etc/apt/sources.list` needs to be changed to match [this file][SourcesList] + +Specifically, you can run `sudo nano /etc/apt/sources.list`, +delete the old content from that file, +and replace them with the content from the link above. + + ## Step 7: Choose a programming language and write some code {% include /style/icon.html type="info" %} @@ -290,5 +306,5 @@ favorite language is probably supported. Pick your language and write some code! [microSD]: https://en.wikipedia.org/wiki/Secure_Digital#SD [microSDHC]: https://en.wikipedia.org/wiki/Secure_Digital#SDHC [microSDXC]: https://en.wikipedia.org/wiki/Secure_Digital#SDXC +[SourcesList]: https://github.com/ev3dev/docker-library/blob/master/ev3dev-stretch/layers/debian/etc/apt/sources.list [releases]:https://github.com/ev3dev/ev3dev/releases -[nightly]:https://ev3dev.jfrog.io/artifactory/snapshots/ diff --git a/docs/kernel-hackers-notebook/ev3-eeprom.md b/docs/kernel-hackers-notebook/ev3-eeprom.md index e96b0977..7ea5acb5 100644 --- a/docs/kernel-hackers-notebook/ev3-eeprom.md +++ b/docs/kernel-hackers-notebook/ev3-eeprom.md @@ -48,7 +48,7 @@ If you have a serial terminal connected to Input Port 1, you will see the follow Jumping to entry point at: 0xC1080000 -NOTE: You can enter firmware update mode by writing 0x5555AAAA to memory address 0xFFFF1FFA (part of the 128K on-chip ram of the AM1808 processor) and then rebooting with `reboot -d -f -i`. This reboots without properly shutting down (see `reboot --help`), so we don't want to do this in ev3dev. On the official LEGO firmware, the firmware update writes over everything so it doesn't matter if it does not shut down properly. +NOTE: You can enter firmware update mode by writing 0x5555AAAA to memory address 0xFFFF1FFC (part of the 128K on-chip ram of the AM1808 processor) and then rebooting with `reboot -d -f -i`. This reboots without properly shutting down (see `reboot --help`), so we don't want to do this in ev3dev. On the official LEGO firmware, the firmware update writes over everything so it doesn't matter if it does not shut down properly. ## Hardware Version diff --git a/docs/programming-languages.md b/docs/programming-languages.md index c46bdd8a..1d38837a 100644 --- a/docs/programming-languages.md +++ b/docs/programming-languages.md @@ -50,12 +50,28 @@ This brings some advantages, like programs starting significantly faster than regular Python, but comes at the cost at not being fully compatible with code written for regular Python. +MicroPython works as a different Python interpreter, rather than as a library. +It can be invoked by running it from the command line, for example: +`micropython -c "import sys; print(sys.version)"` or +`micropython -c "from ev3dev2.sound import Sound; Sound().speak('hello world')"`. +You may add this as the first line of your Python script to run it with MicroPython: +`#!/usr/bin/env micropython`. + +**TIP:** `ev3dev-lang-python` is also partially compatible with MicroPython. + [Pybricks] is a specialized version of MicroPython for LEGO MINDSTORMS and LEGO Powered Up smart hubs. Pybricks v2.0 is used by LEGO Education as their [Python for EV3](https://education.lego.com/en-us/product-resources/mindstorms-ev3/teacher-resources/python-for-ev3) solution and is the same version that is available in ev3dev-stretch. -**TIP:** `ev3dev-lang-python` is also partially compatible with MicroPython. +You may run Pybricks from command line like this: +`brickrun -r -- pybricks-micropython -c "from pybricks.hubs import EV3Brick; EV3Brick().speaker.beep()"`. +You may add this as the first line of your Python script, +`#!/usr/bin/env pybricks-micropython`, +and then run it from the brick's file browser to run it with Pybricks. + +**TIP:** If you are into using Python's interactive mode when trying Pybricks, +you can use `brickrun -r -- pybricks-micropython`, or its shortcut `pybricks-repl`. [Get started with MicroPython](https://pybricks.github.io/ev3-micropython/){: .btn .btn-default } diff --git a/downloads.md b/downloads.md index 2f1d28c3..e4a88695 100644 --- a/downloads.md +++ b/downloads.md @@ -142,21 +142,6 @@ redirect_from: /download/

Other Images

-
-

Snapshot Releases

-

- We occasionally build images for testing purposes. These images - are published without any prior testing and there are no release - notes. However, you might be interested in these images if you - want to try out the latest new features and bug fixes. -

- -

Previous Releases

diff --git a/index.md b/index.md index 0c822cd7..218a2e5e 100644 --- a/index.md +++ b/index.md @@ -34,7 +34,7 @@ jumbotron-content: |

ev3dev is a Debian Linux-based operating system that runs on several LEGO® MINDSTORMS compatible - platforms including the LEGO® MINDSTORMS EV3 + platforms including the LEGO® MINDSTORMS EV3 and Raspberry Pi-powered BrickPi.

diff --git a/projects/_posts/2016-08-07-Mapping.md b/projects/_posts/2016-08-07-Mapping.md index 865762a1..765a55b4 100644 --- a/projects/_posts/2016-08-07-Mapping.md +++ b/projects/_posts/2016-08-07-Mapping.md @@ -38,6 +38,10 @@ The meta-repository of the project is [ev3dev-mapping]. This is my personal project. While I am quite happy to share the results, please keep in mind that I am pursuing my own goals here.
+
+{% include /style/icon.html type="info" %} +Some of the generic [libraries](https://github.com/bmegli/wifi-scan) written for this project [ended up](https://github.com/nasa/isaac/blob/3a7bdcae46e255cb9060a80f1a6e70af187f631c/astrobee/hardware/wifi/include/wifi/wifi.h#L2) in NASA ISAAC flight [software](https://nasa.github.io/isaac/html/wifi_driver.html) for Astrobee robot operating inside the International Space Station. That's some open source in the wild! +
## Examples @@ -157,7 +161,9 @@ The position and heading data is interpolated individually for each laser readin The `drive component` translates input from the user (keyboard, pad, numerical, ...) using the motion model and sends it to the `drive module`. The `drive module` controls the motors. -The `control component` and the `control module` are not in the scheme for clarity. The `control component` sends to `control module` requests to enable/disable modules. +The `wifi component` and the `wifi module` are not in the scheme for clarity. The `wifi module` sends wireless signal strength information to the `wifi component`. The data is reflected in the UI. + +The `control component` and the `control module` are not in the scheme for clarity. The `control component` sends to the `control module` requests to enable/disable modules. The `control module` replies with module states. ## Building Instructions @@ -212,6 +218,8 @@ If you have some question or problem open an issue in one of the [ev3dev-mapping [mi-xg1300l] - CruizCore XG1300L driver documentation +[wifi-scan] - C/C++ library for monitoring signal strength of WiFi networks + [X3DOM] - open-source framework for declarative 3D graphics on the Web ### tutorials and learning @@ -265,6 +273,7 @@ If you have some question or problem open an issue in one of the [ev3dev-mapping [xv11lidar]: https://github.com/bmegli/xv11lidar [mi-xg1300l]: https://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-jessie/sensor_data.html#mi-xg1300l +[wifi-scan]: https://github.com/bmegli/wifi-scan [How to interface XV11 LIDAR to EV3 using ev3dev]: https://www.youtube.com/watch?v=G6uVg34VzHw [EV3 Gyro vs CruizCore XG1300L vs Odometry - Position Estimation]: https://www.youtube.com/watch?v=vzND_ISdhEs diff --git a/projects/_posts/2023-11-16-Ev3-Doom-port.md b/projects/_posts/2023-11-16-Ev3-Doom-port.md new file mode 100644 index 00000000..e52b2276 --- /dev/null +++ b/projects/_posts/2023-11-16-Ev3-Doom-port.md @@ -0,0 +1,35 @@ +--- +# Fill out as many of these as you can, and delete the rest. +# Text on a line after a "#" is a comment and is ignored for the published page. + +author: [ "@Seva167" ] # your GitHub user name + +programming_language: "C" # The programming language used in this project + +youtube_video_id: 34S983xN5W8 # The video ID of the YouTube video to be displayed with this post +# thumbnail_override: "/images/projects/my-project/my-image.png" # If you don't have a YouTube video (or the video thumbnail isn't good) you can uncomment this line to set your own image for the project. + +# project_homepage_url: "http://example.com/my-super-cool-project" # Homepage for this project +source_code_url: "https://github.com/Seva167/ev3doom" # Provide a link to your code +# building_instructions_url: "http://example.com/building-instructions.pdf" # how to build the model out of LEGO (*not* how to build the source code) + +excerpt: "A 1993 game classic powered by your robots." +--- + +**A complete port of Doom engine for EV3. Works very well for this hardware.** + +Code on [Github](https://github.com/Seva167/ev3doom) + +![screenshot](https://raw.githubusercontent.com/Seva167/ev3doom/main/images/screenshot.png) + +- Fully compatible with the original Doom +- Uses dithering for better graphics +- Music and sound are working (if you compile it with sound support) + +You can download precompiled binary on [releases](https://github.com/Seva167/ev3doom/releases/latest) page + +Port is based on [Doomgeneric](https://github.com/ozkl/doomgeneric) + +For help create an issue on [github](https://github.com/Seva167/ev3doom/issues) + +Enjoy! diff --git a/projects/_posts/2024-02-20-evdrive.md b/projects/_posts/2024-02-20-evdrive.md new file mode 100644 index 00000000..7eaee7f5 --- /dev/null +++ b/projects/_posts/2024-02-20-evdrive.md @@ -0,0 +1,26 @@ +--- +# Fill out as many of these as you can, and delete the rest. +# Text on a line after a "#" is a comment and is ignored for the published page. + +author: [ "@xgames123" ] # your GitHub user name +# or make a list if there is more than one author +# author: [ "@person1", "@person2", "person without GitHub account" ] + +programming_language: "python" # The programming language used in this project + +youtube_video_id: g0dI3Tlzhqg # The video ID of the YouTube video to be displayed with this post +# thumbnail_override: "/images/projects/my-project/my-image.png" # If you don't have a YouTube video (or the video thumbnail isn't good) you can uncomment this line to set your own image for the project. + +# project_homepage_url: "https://github.com/Xgames123/evdrive" # Homepage for this project +source_code_url: "https://github.com/Xgames123/evdrive" # Provide a link to your code +# building_instructions_url: "http://example.com/building-instructions.pdf" # how to build the model out of LEGO (*not* how to build the source code) + +excerpt: "steering wheel + pedals made with lego ev3" # A short summary of your project. This can be a sentence or a paragraph, but it's recommended to keep it under 3 sentences. +--- +**Steering wheel + pedals made with lego ev3.** + +Code and build instructions on [github](https://github.com/Xgames123/evdrive) + +## Known Issues +- It simulates an xbox controller so It probably won't work on some driving games that don't support controllers +- Force feedback doesn't work yet diff --git a/projects/_posts/2024-11-15-EV3-Segway-NodeRED-Beacon.md b/projects/_posts/2024-11-15-EV3-Segway-NodeRED-Beacon.md new file mode 100644 index 00000000..670cb238 --- /dev/null +++ b/projects/_posts/2024-11-15-EV3-Segway-NodeRED-Beacon.md @@ -0,0 +1,23 @@ +--- +# Fill out as many of these as you can, and delete the rest. +# Text on a line after a "#" is a comment and is ignored for the published page. + +author: [ "@TheNoobInventor" ] # your GitHub user name +# or make a list if there is more than one author +# author: [ "@person1", "@person2", "person without GitHub account" ] + +programming_language: "MicroPython" # The programming language used in this project + +youtube_video_id: rd8de9ClbUM # The video ID of the YouTube video to be displayed with this post +# thumbnail_override: "/images/projects/my-project/my-image.png" # If you don't have a YouTube video (or the video thumbnail isn't good) you can uncomment this line to set your own image for the project. + +source_code_url: "https://github.com/TheNoobInventor/lego-ev3-segway" # Provide a link to your code +building_instructions_url: "https://robotsquare.com/2014/06/23/tutorial-building-balanc3r/" # how to build the model out of LEGO (*not* how to build the source code) + +excerpt: "A segway robot is built with the LEGO MINDSTORMS EV3 robot kit and the EV3 Gyro sensor. " # A short summary of your project. This can be a sentence or a paragraph, but it's recommended to keep it under 3 sentences. +--- +The self-balancing code is written in MicroPython using EV3 MicroPython which runs on top of the ev3dev Operating System (OS). The robot can be controlled using Node-RED through MQTT or with the EV3 infrared beacon. + +- **Name:** Chinedu Amadi +- **Location:** Nigeria +- **Feedback:** You can create an [issue](https://github.com/TheNoobInventor/lego-ev3-segway/issues) in the project repository. diff --git a/projects/_posts/2025-05-26-EV3Aero.md b/projects/_posts/2025-05-26-EV3Aero.md new file mode 100644 index 00000000..2d071129 --- /dev/null +++ b/projects/_posts/2025-05-26-EV3Aero.md @@ -0,0 +1,27 @@ +--- +title: EV3Aero +author: ["@Slashingbee"] +programming_language: Python +project_homepage_url: https://github.com/Slashingbee/EV3Aero +source_code_url: https://github.com/Slashingbee/EV3Aero +building_instructions_url: https://github.com/Slashingbee/EV3Aero#installation +youtube_video_id: 6nR1NGUVFuk +excerpt: Modular flight controller for LEGO Mindstorms EV3 running ev3dev. Build custom flight simulator controllers using LEGO motors and sensors. +--- + +EV3Aero is an open-source project that allows you to build a modular flight controller using LEGO Mindstorms EV3 running ev3dev. The system enables creating joysticks, throttles, and other flight controls compatible with flight simulators. + +## Features + +- Modular design allowing flexible hardware customization. +- Uses LEGO motors and sensors for unique, customizable controllers. +- Compatible with various flight simulators. +- Open source under the Apache-2.0 license. + +## Installation and Usage + +Detailed installation and setup instructions are available in the [README](https://github.com/Slashingbee/EV3Aero#installation). + +--- + +Feel free to contribute, test, and develop new features for the project! diff --git a/projects/_posts/2025-08-11-ev3-MQTT-ROS.md b/projects/_posts/2025-08-11-ev3-MQTT-ROS.md new file mode 100644 index 00000000..a9cbc0a8 --- /dev/null +++ b/projects/_posts/2025-08-11-ev3-MQTT-ROS.md @@ -0,0 +1,48 @@ +--- +title: "ev3 mqtt ROS" +author: ["@JSDaleman"] +programming_language: Python +project_homepage_url: https://github.com/JSDaleman/ev3_mqtt_ros/blob/main/README_EN.md +source_code_url: https://github.com/JSDaleman/ev3_mqtt_ros +building_instructions_url: https://github.com/JSDaleman/ev3_mqtt_ros/blob/main/README_EN.md#%EF%B8%8F-lego-ev3-connection-with-ros +youtube_video_id: NIEbXVXS-eo +excerpt: This project controls a LEGO EV3 gyro-sensor driving base via ROS and MQTT, enabling remote teleoperation and simulation in RViz/Gazebo. +--- + +# 🤖 ev3_mqtt_ros + +[![Python](https://img.shields.io/badge/Python-3.8+-3776AB?logo=python&logoColor=white)](https://www.python.org/) +[![ROS](https://img.shields.io/badge/ROS-Noetic-blue?logo=ros&logoColor=white)](https://www.ros.org/) +[![MQTT](https://img.shields.io/badge/MQTT-v3.1.1-660066?logo=eclipse-mosquitto&logoColor=white)](https://mqtt.org/) +[![LEGO EV3](https://img.shields.io/badge/LEGO-EV3-E2231A?logo=lego&logoColor=white)](https://www.lego.com/en-us/themes/mindstorms) +[![License](https://img.shields.io/badge/License-MIT-green)](LICENSE) + +🚀 **Learn, build, and control!** +This project is designed for students, researchers, and robotics enthusiasts who want to explore mobile robot teleoperation using real hardware and industry-standard tools. By combining **ROS**, **MQTT**, and **LEGO EV3**, it offers a practical way to understand robotics concepts, sensor integration, and simulation—all in one package. + +--- + +## 📚 About the Project + +Hi, my name is **Juan Sebastián Daleman**. I am a graduate student at **Universidad Nacional de Colombia**, based in Bogotá D.C., Colombia. +This project was developed as part of the *Fundamentals of Mobile Robotics* postgraduate course, within the [Labsir](https://github.com/labsir-un) research group. It is an open-source initiative aimed at exploring mobile robotics using professional tools such as **ROS** to control and process various sensors, while also simulating robot behavior in a virtual environment. + +--- + +## ✨ Features + +- 💻 **Cross-platform compatibility**: Works on Linux (native), Windows via WSL, or Raspberry Pi. +- 📡 **Sensor integration**: Supports the LEGO EV3 gyro sensor, with potential for ultrasonic, color, and touch sensors. +- 🎮 **Custom teleoperation interface**: Control the robot using a keyboard, joystick, or GUI via rqt plugin. +- 🔗 **MQTT broker flexibility**: Compatible with HiveMQ, Mosquitto, or local MQTT brokers. +- 🖥 **Simulation and visualization**: Full support for RViz and Gazebo with 3D robot models. +- ⚡ **QoS and latency optimization**: Adjustable MQTT Quality of Service and network tuning for low-latency control. +- 🛠 **Extensibility**: Modular ROS node structure to easily add new sensors, actuators, or behaviors. +- 🎓 **Educational focus**: Designed for learning ROS, MQTT, and robotics in academic or hobbyist contexts. +- 📊 **Logging and monitoring**: Record and review robot data using rosbag or MQTT logs. +- 🌐 **Remote deployment**: Send and run code on the EV3 over SSH without a physical connection. + + +## 📬 Contact +If you would like to contact me, please email **juan@sebastiandaleman.com**. +For comments or questions, feel free to create an [issue](https://github.com/JSDaleman/ev3_mqtt_ros/issues) in the repository.