+ <a href="https://people.skolelinux.org/pere/blog/LinuxCNC_MQTT_publisher_component.html">LinuxCNC MQTT publisher component</a>
+ </div>
+ <div class="date">
+ 8th January 2023
+ </div>
+ <div class="body">
+ <p>I watched <a href="https://yewtu.be/watch?v=jmKUV3aNLjk">a 2015
+video from Andreas Schiffler</a> the other day, where he set up
+<a href="https://linuxcnc.org/">LinuxCNC</a> to send status
+information to the MQTT broker IBM Bluemix. As I also use MQTT for
+graphing, it occured to me that a generic MQTT LinuxCNC component
+would be useful and I set out to implement it. Today I got the first
+draft limping along and submitted as
+<a href="https://github.com/LinuxCNC/linuxcnc/pull/2253">a patch to the
+LinuxCNC project</a>.</p>
+
+<p>The simple part was setting up the MQTT publishing code in Python.
+I already have set up other parts submitting data to my Mosquito MQTT
+broker, so I could reuse that code. Writing a LinuxCNC component in
+Python as new to me, but using existing examples in the code
+repository and the extensive documentation, this was fairly straight
+forward. The hardest part was creating a automated test for the
+component to ensure it was working. Testing it in a simulated
+LinuxCNC machine proved very useful, as I discovered features I needed
+that I had not thought of yet, and adjusted the code quite a bit to
+make it easier to test without a operational MQTT broker
+available.</p>
+
+<p>The draft is ready and working, but I am unsure which LinuxCNC HAL
+pins I should collect and publish by default (in other words, the
+default set of information pieces published), and how to get the
+machine name from the LinuxCNC INI file. The latter is a minor
+detail, but I expect it would be useful in a setup with several
+machines available. I am hoping for feedback from the experienced
+LinuxCNC developers and users, to make the component even better
+before it can go into the mainland LinuxCNC code base.</p>
+
+<p>Since I started on the MQTT component, I came across
+<a href="https://yewtu.be/watch?v=Bqa2grG0XtA">another video from Kent
+VanderVelden</a> where he combine LinuxCNC with a set of screen glasses
+controlled by a Raspberry Pi, and it occured to me that it would
+be useful for such use cases if LinuxCNC also provided a REST API for
+querying its status. I hope to start on such component once the MQTT
+component is working well.</p>
+
+<p>As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
+
+ </div>
+ <div class="tags">
+
+
+ Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
+
+
+ </div>
+ </div>
+ <div class="padding"></div>
+
+ <div class="entry">
+ <div class="title">
+ <a href="https://people.skolelinux.org/pere/blog/Automatic_LinuxCNC_servo_PID_tuning_.html">Automatic LinuxCNC servo PID tuning?</a>
+ </div>
+ <div class="date">
+ 16th July 2022
+ </div>
+ <div class="body">
+ <p>While working on a CNC with servo motors controlled by the
+<a href="https://en.wikipedia.org/wiki/LinuxCNC">LinuxCNC</a>
+<a href="https://en.wikipedia.org/wiki/PID_controller">PID
+controller</a>, I recently had to learn how to tune the collection of values
+that control such mathematical machinery that a PID controller is. It
+proved to be a lot harder than I hoped, and I still have not succeeded
+in getting the Z PID controller to successfully defy gravity, nor X
+and Y to move accurately and reliably. But while climbing up this
+rather steep learning curve, I discovered that some motor control
+systems are able to tune their PID controllers. I got the impression
+from the documentation that LinuxCNC were not. This proved to be not
+true.</p>
+
+<p>The LinuxCNC
+<a href="http://linuxcnc.org/docs/html/man/man9/pid.9.html">pid
+component</a> is the recommended PID controller to use. It uses eight
+constants <tt>Pgain</tt>, <tt>Igain</tt>, <tt>Dgain</tt>,
+<tt>bias</tt>, <tt>FF0</tt>, <tt>FF1</tt>, <tt>FF2</tt> and
+<tt>FF3</tt> to calculate the output value based on current and wanted
+state, and all of these need to have a sensible value for the
+controller to behave properly. Note, there are even more values
+involved, theser are just the most important ones. In my case I need
+the X, Y and Z axes to follow the requested path with little error.
+This has proved quite a challenge for someone who have never tuned a
+PID controller before, but there is at least some help to be found.
+
+<p>I discovered that included in LinuxCNC was this old PID component
+at_pid claiming to have auto tuning capabilities. Sadly it had been
+neglected since 2011, and could not be used as a plug in replacement
+for the default pid component. One would have to rewriting the
+LinuxCNC HAL setup to test at_pid. This was rather sad, when I wanted
+to quickly test auto tuning to see if it did a better job than me at
+figuring out good P, I and D values to use.</p>
+
+<p>I decided to have a look if the situation could be improved. This
+involved trying to understand the code and history of the pid and
+at_pid components. Apparently they had a common ancestor, as code
+structure, comments and variable names were quite close to each other.
+Sadly this was not reflected in the git history, making it hard to
+figure out what really happened. My guess is that the author of
+<a href="https://github.com/LinuxCNC/linuxcnc/blob/master/src/hal/components/at_pid.c">at_pid.c</a>
+took a version of
+<a href="https://github.com/LinuxCNC/linuxcnc/blob/master/src/hal/components/pid.c">pid.c</a>,
+rewrote it to follow the structure he wished pid.c to have, then added
+support for auto tuning and finally got it included into the LinuxCNC
+repository. The restructuring and lack of early history made it
+harder to figure out which part of the code were relevant to the auto
+tuning, and which part of the code needed to be updated to work the
+same way as the current pid.c implementation. I started by trying to
+isolate relevant changes in pid.c, and applying them to at_pid.c. My
+aim was to make sure the at_pid component could replace the pid
+component with a simple change in the HAL setup loadrt line, without
+having to "rewire" the rest of the HAL configuration. After a few
+hours following this approach, I had learned quite a lot about the
+code structure of both components, while concluding I was heading down
+the wrong rabbit hole, and should get back to the surface and find a
+different path.</p>
+
+<p>For the second attempt, I decided to throw away all the PID control
+related part of the original at_pid.c, and instead isolate and lift
+the auto tuning part of the code and inject it into a copy of pid.c.
+This ensured compatibility with the current pid component, while
+adding auto tuning as a run time option. To make it easier to identify
+the relevant parts in the future, I wrapped all the auto tuning code
+with '#ifdef AUTO_TUNER'. The end result behave just like the current
+pid component by default, as that part of the code is identical. The
+<a href="https://github.com/LinuxCNC/linuxcnc/pull/1820">end result
+entered the LinuxCNC master branch</a> a few days ago.</p>
+
+<p>To enable auto tuning, one need to set a few HAL pins in the PID
+component. The most important ones are <tt>tune-effort</tt>,
+<tt>tune-mode</tt> and <tt>tune-start</tt>. But lets take a step
+back, and see what the auto tuning code will do. I do not know the
+mathematical foundation of the at_pid algorithm, but from observation
+I can tell that the algorithm will, when enabled, produce a square
+wave pattern centered around the <tt>bias</tt> value on the output pin
+of the PID controller. This can be seen using the HAL Scope provided
+by LinuxCNC. In my case, this is translated into voltage (+-10V) sent
+to the motor controller, which in turn is translated into motor speed.
+So at_pid will ask the motor to move the axis back and forth. The
+number of cycles in the pattern is controlled by the
+<tt>tune-cycles</tt> pin, and the extremes of the wave pattern is
+controlled by the <tt>tune-effort</tt> pin. Of course, trying to
+change the direction of a physical object instantly (as in going
+directly from a positive voltage to the equivalent negative voltage)
+do not change velocity instantly, and it take some time for the object
+to slow down and move in the opposite direction. This result in a
+more smooth movement wave form, as the axis in question were vibrating
+back and forth. When the axis reached the target speed in the
+opposing direction, the auto tuner change direction again. After
+several of these changes, the average time delay between the 'peaks'
+and 'valleys' of this movement graph is then used to calculate
+proposed values for Pgain, Igain and Dgain, and insert them into the
+HAL model to use by the pid controller. The auto tuned settings are
+not great, but htye work a lot better than the values I had been able
+to cook up on my own, at least for the horizontal X and Y axis. But I
+had to use very small <tt>tune-effort<tt> values, as my motor
+controllers error out if the voltage change too quickly. I've been
+less lucky with the Z axis, which is moving a heavy object up and
+down, and seem to confuse the algorithm. The Z axis movement became a
+lot better when I introduced a <tt>bias</tt> value to counter the
+gravitational drag, but I will have to work a lot more on the Z axis
+PID values.</p>
+
+<p>Armed with this knowledge, it is time to look at how to do the
+tuning. Lets say the HAL configuration in question load the PID
+component for X, Y and Z like this:</p>
+
+<blockquote><pre>
+loadrt pid names=pid.x,pid.y,pid.z
+</pre></blockquote>
+
+<p>Armed with the new and improved at_pid component, the new line will
+look like this:</p>
+
+<blockquote><pre>
+loadrt at_pid names=pid.x,pid.y,pid.z
+</pre></blockquote>
+
+<p>The rest of the HAL setup can stay the same. This work because the
+components are referenced by name. If the component had used count=3
+instead, all use of pid.# had to be changed to at_pid.#.</p>
+
+<p>To start tuning the X axis, move the axis to the middle of its
+range, to make sure it do not hit anything when it start moving back
+and forth. Next, set the <tt>tune-effort</tt> to a low number in the
+output range. I used 0.1 as my initial value. Next, assign 1 to the
+<tt>tune-mode</tt> value. Note, this will disable the pid controlling
+part and feed 0 to the output pin, which in my case initially caused a
+lot of drift. In my case it proved to be a good idea with X and Y to
+tune the motor driver to make sure 0 voltage stopped the motor
+rotation. On the other hand, for the Z axis this proved to be a bad
+idea, so it will depend on your setup. It might help to set the
+<tt>bias</tt> value to a output value that reduce or eliminate the
+axis drift. Finally, after setting <tt>tune-mode</tt>, set
+<tt>tune-start</tt> to 1 to activate the auto tuning. If all go well,
+your axis will vibrate for a few seconds and when it is done, new
+values for Pgain, Igain and Dgain will be active. To test them,
+change <tt>tune-mode</tt> back to 0. Note that this might cause the
+machine to suddenly jerk as it bring the axis back to its commanded
+position, which it might have drifted away from during tuning. To
+summarize with some halcmd lines:</p>
+
+<blockquote><pre>
+setp pid.x.tune-effort 0.1
+setp pid.x.tune-mode 1
+setp pid.x.tune-start 1
+# wait for the tuning to complete
+setp pid.x.tune-mode 0
+</pre></blockquote>
+
+<p>After doing this task quite a few times while trying to figure out
+how to properly tune the PID controllers on the machine in, I decided
+to figure out if this process could be automated, and wrote a script
+to do the entire tuning process from power on. The end result will
+ensure the machine is powered on and ready to run, home all axis if it
+is not already done, check that the extra tuning pins are available,
+move the axis to its mid point, run the auto tuning and re-enable the
+pid controller when it is done. It can be run several times. Check
+out the
+<a href="https://github.com/SebKuzminsky/MazakVQC1540/blob/bon-dev/scripts/run-auto-pid-tuner">run-auto-pid-tuner</a>
+script on github if you want to learn how it is done.</p>
+
+<p>My hope is that this little adventure can inspire someone who know
+more about motor PID controller tuning can implement even better
+algorithms for automatic PID tuning in LinuxCNC, making life easier
+for both me and all the others that want to use LinuxCNC but lack the
+in depth knowledge needed to tune PID controllers well.</p>
+
+<p>As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
+
+ </div>
+ <div class="tags">
+
+
+ Tags: <a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer</a>, <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
+
+
+ </div>
+ </div>
+ <div class="padding"></div>
+
+ <div class="entry">
+ <div class="title">
+ <a href="https://people.skolelinux.org/pere/blog/LinuxCNC_translators_life_just_got_a_bit_easier.html">LinuxCNC translators life just got a bit easier</a>
+ </div>
+ <div class="date">
+ 3rd June 2022
+ </div>
+ <div class="body">
+ <p>Back in oktober last year, when I started looking at the
+<a href="https://en.wikipedia.org/wiki/LinuxCNC">LinuxCNC</a> system, I
+proposed to change the documentation build system make life easier for
+translators. The original system consisted of independently written
+documentation files for each language, with no automated way to track
+changes done in other translations and no help for the translators to
+know how much was left to translated. By using
+<a href="https://po4a.org/">the po4a system</a> to generate POT and PO
+files from the English documentation, this can be improved. A small
+team of LinuxCNC contributors got together and today our labour
+finally payed off. Since a few hours ago, it is now possible to
+translate <a href="https://hosted.weblate.org/projects/linuxcnc/">the
+LinuxCNC documentation on Weblate</a>, alongside the program itself.</p>
+
+<p>The effort to migrate the documentation to use po4a has been both
+slow and frustrating. I am very happy we finally made it.</p>
+
+<p>As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
+
+ </div>
+ <div class="tags">
+
+
+ Tags: <a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer</a>, <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
+
+
+ </div>
+ </div>
+ <div class="padding"></div>
+
+ <div class="entry">
+ <div class="title">
+ <a href="https://people.skolelinux.org/pere/blog/Run_your_industrial_metal_working_machine_using_Debian_.html">Run your industrial metal working machine using Debian?</a>
+ </div>
+ <div class="date">
+ 2nd March 2022
+ </div>
+ <div class="body">
+ <p>After many months of hard work by the good people involved in
+<a href="https://en.wikipedia.org/wiki/LinuxCNC">LinuxCNC</a>, the
+system was accepted Sunday
+<a href="https://tracker.debian.org/pkg/linuxcnc">into Debian</a>.
+Once it was available from Debian, I was surprised to discover from
+<a href="https://qa.debian.org/popcon.php?package=linuxcnc">its
+popularity-contest numbers</a> that people have been reporting its use
+since 2012. <a href="http://linuxcnc.org/">Its project site</a> might
+be a good place to check out, but sadly is not working when visiting
+via Tor.</p>
+
+<p>But what is LinuxCNC, you are probably wondering? Perhaps a
+Wikipedia quote is in place?</p>
+
+<blockquote>
+"LinuxCNC is a software system for numerical control of
+machines such as milling machines, lathes, plasma cutters, routers,
+cutting machines, robots and hexapods. It can control up to 9 axes or
+joints of a CNC machine using G-code (RS-274NGC) as input. It has
+several GUIs suited to specific kinds of usage (touch screen,
+interactive development)."
+</blockquote>
+
+<p>It can even control 3D printers. And even though the Wikipedia
+page indicate that it can only work with hard real time kernel
+features, it can also work with the user space soft real time features
+provided by the Debian kernel.
+<a href="https://github.com/linuxcnc/linuxcnc">The source code</a> is
+available from Github. The last few months I've been involved in the
+translation setup for the program and documentation. Translators are
+most welcome to
+<a href="https://hosted.weblate.org/engage/linuxcnc/">join the
+effort</a> using Weblate.</p>
+
+<p>As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
+
+ </div>
+ <div class="tags">
+
+
+ Tags: <a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer</a>, <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
+
+
+ </div>
+ </div>
+ <div class="padding"></div>
+
+ <div class="entry">
+ <div class="title">
+ <a href="https://people.skolelinux.org/pere/blog/Debian_still_an_excellent_choice_for_Lego_builders.html">Debian still an excellent choice for Lego builders</a>
+ </div>
+ <div class="date">
+ 24th October 2021
+ </div>
+ <div class="body">
+ <p>The Debian Lego team saw a lot of activity the last few weeks. All
+the packages under the team umbrella has been updated to fix
+packaging, lintian issues and BTS reports. In addition, a new and
+inspiring team member appeared on both the
+<a href="https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/debian-lego-team">debian-lego-team
+Team mailing list</a> and
+<a href="irc://irc.debian.org/%23debian-lego">IRC channel
+#debian-lego</a>. If you are interested in Lego CAD design and LEGO
+Mindstorms programming, check out the
+<a href="http://wiki.debian.org/LegoDesigners">team wiki page</a> to
+see what Debian can offer the Lego enthusiast.</p>
+
+<p>Patches has been sent upstream, causing new upstream releases, one
+even the first one in more than ten years, and old upstreams was
+released with new ones. There are still a lot of work left, and the
+team welcome more members to help us make sure Debian is the Linux
+distribution of choice for Lego builders. If you want to contribute,
+join us in the IRC channel and become part of
+<a href="https://salsa.debian.org/debian-lego-team/">the team on
+Salsa</a>.</p>
+
+<p>As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
+
+ </div>
+ <div class="tags">
+
+
+ Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/lego">lego</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
+
+
+ </div>
+ </div>
+ <div class="padding"></div>
+
+ <div class="entry">
+ <div class="title">
+ <a href="https://people.skolelinux.org/pere/blog/The_space_rover_coquine__or_how_I_ended_up_on_the_dark_side_of_the_moon.html">The space rover coquine, or how I ended up on the dark side of the moon</a>
+ </div>
+ <div class="date">
+ 2nd June 2019
+ </div>
+ <div class="body">
+ <p>A while back a college and friend from Debian and the Skolelinux /
+Debian Edu project approached me, asking if I knew someone that might
+be interested in helping out with a technology project he was running
+as a teacher at <a href="https://www.ecolefrancodanoise.dk/">L'école
+franco-danoise</a> - the Danish-French school and kindergarden. The
+kids were building robots, rovers. The story behind it is to build a
+rover for use
+<a href="http://blog.ecolefrancodanoise.dk/first-week-on-the-dark-side">on
+the dark side of the moon</a>, and remote control it. As travel cost
+was a bit high for the final destination, and they wanted to test the
+concept first, he was looking for volunteers to host a rover for the
+kids to control in a foreign country. I ended up volunteering as a
+host, and last week the rover arrived. It took a while to arrive
+after <a href="http://blog.ecolefrancodanoise.dk/model-moms">it was
+built and shipped</a>, because of customs confusion. Luckily we were
+able fix it quickly with help from my colleges at work.</p>
+
+<p>This is what it looked like when the rover arrived. Note the cute
+eyes looking up on me from the wrapping</p>
+
+<img src="http://people.skolelinux.org/pere/blog/images/2019-06-02-robot-dark-side-of-moon-esken-med-det-rare-i.jpeg" width="32%" style="clear:left"/>
+<img src="http://people.skolelinux.org/pere/blog/images/2019-06-02-robot-dark-side-of-moon-den-ser-meg.jpeg" width="32%" style="clear:left"/>
+<img src="http://people.skolelinux.org/pere/blog/images/2019-06-02-robot-dark-side-of-moon-en-skrue-loes.jpeg" width="32%" style="clear:left"/>
+
+<p style="text-align:left">Once the robot arrived, we needed to track
+down batteries and figure out how to build custom firmware for it with
+the appropriate wifi settings. I asked a friend if I could get two
+18650 batteries from his pile of Tesla batteries (he had them from the
+wrack of a crashed Tesla), so now the rover is running on Tesla
+batteries.</p>
+
+<p>Building
+<a href="https://gitlab.com/ecolefrancodanoise/arduino-efd/">the rover
+firmware</a> proved a bit harder, as the code did not work out of the
+box with the Arduino IDE package in Debian Buster. I suspect this is
+due to a unsolved
+<a href="https://github.com/arduino/Arduino/pull/2703"> license problem
+with arduino</a> blocking Debian from upgrading to the latest version.
+In the end we gave up debugging why the IDE failed to find the
+required libraries, and ended up using the Arduino Makefile from the
+<a href="https://tracker.debian.org/pkg/arduino-mk">arduino-mk Debian
+package</a> instead. Unfortunately the camera library is missing from
+the Arduino environment in Debian, so we disabled the camera support
+for the first firmware build, to get something up and running. With
+this reduced firmware, the robot could be controlled via the
+controller server, driving around and measuring distance using its
+internal acoustic sensor.</p>
+
+<p>Next, With some help from my friend in Denmark, which checked in the
+camera library into the gitlab repository for me to use, we were able
+to build a new and more complete version of the firmware, and the
+robot is now up and running. This is what the "commander" web page
+look like after taking a measurement and a snapshot:</p>
+
+<img src="http://people.skolelinux.org/pere/blog/images/2019-06-02-robot-dark-side-of-moon-commander.png" width="40%" border="1" align="center"/>
+
+<p>If you want to learn more about this project, you can check out the
+<a href="https://hackaday.io/project/164082-the-dark-side-challenge">The
+Dark Side Challenge</a> Hackaday web pages.</p>
+
+<p>As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
+
+ </div>
+ <div class="tags">
+
+
+ Tags: <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
+
+
+ </div>
+ </div>
+ <div class="padding"></div>
+
+ <div class="entry">
+ <div class="title">
+ <a href="https://people.skolelinux.org/pere/blog/Debian_now_got_everything_you_need_to_program_Micro_bit.html">Debian now got everything you need to program Micro:bit</a>
+ </div>
+ <div class="date">
+ 22nd January 2019
+ </div>
+ <div class="body">
+ <p>I am amazed and very pleased to discover that since a few days ago,
+everything you need to program the <a href="https://microbit.org/">BBC
+micro:bit</a> is available from the Debian archive. All this is
+thanks to the hard work of Nick Morrott and the Debian python
+packaging team. The micro:bit project recommend the mu-editor to
+program the microcomputer, as this editor will take care of all the
+machinery required to injekt/flash micropython alongside the program
+into the micro:bit, as long as the pieces are available.</p>
+
+<p>There are three main pieces involved. The first to enter Debian
+was
+<a href="https://tracker.debian.org/pkg/python-uflash">python-uflash</a>,
+which was accepted into the archive 2019-01-12. The next one was
+<a href="https://tracker.debian.org/pkg/mu-editor">mu-editor</a>, which
+showed up 2019-01-13. The final and hardest part to to into the
+archive was
+<a href="https://tracker.debian.org/pkg/firmware-microbit-micropython">firmware-microbit-micropython</a>,
+which needed to get its build system and dependencies into Debian
+before it was accepted 2019-01-20. The last one is already in Debian
+Unstable and should enter Debian Testing / Buster in three days. This
+all allow any user of the micro:bit to get going by simply running
+'apt install mu-editor' when using Testing or Unstable, and once
+Buster is released as stable, all the users of Debian stable will be
+catered for.</p>
+
+<p>As a minor final touch, I added rules to
+<a href="https://tracker.debian.org/pkg/isenkram">the isenkram
+package</a> for recognizing micro:bit and recommend the mu-editor
+package. This make sure any user of the isenkram desktop daemon will
+get a popup suggesting to install mu-editor then the USB cable from
+the micro:bit is inserted for the first time.</p>
+
+<p>This should make it easier to have fun.</p>
+
+<p>As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
+
+ </div>
+ <div class="tags">
+
+
+ Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
+
+
+ </div>
+ </div>
+ <div class="padding"></div>
+
+ <div class="entry">
+ <div class="title">
+ <a href="https://people.skolelinux.org/pere/blog/My_own_self_balancing_Lego_Segway.html">My own self balancing Lego Segway</a>