ULP (ESP32) : a simple example

The ULP is a low-power coprocessor (Ultra Low Power) integrated into the ESP32 MCU. It’s a very small processor that can run independently from the main cores and that has access to the GPIOs, some peripheral and an I²C controller.

The ULP is also able to run when the ESP32 is is deep-sleep mode. In this mode, nearly the whole MCU is powered-off, except the RTC domain, in which the ULP is built. It is also able to wake the ESP32 up.

A possible application of the ULP is to acquire temperature while the ESP32 is in deep-sleep and to wake it up once it reaches a specified threshold.

Programming the ULP seems very interesting, but even if the documentation from Espressif is very complete, I couldn’t find a simple and easy example to learn how to use it.

Here is then in details an ultra simple exemple : the traditional blink, which blinks 2 LEDs on the WROVER-KIT V3.

Continue reading “ULP (ESP32) : a simple example”

ESP32, ESP-IDF, CMake & CLion

I’ve been working with ESP8266 and ESP32 for some times now. Until now, I used the Arduino framework, mostly because it’s easy : it provides a lot of services and libraries, allowing me to go straight to the point and concentrate on my own code.

But I like to understand what lies underneath the top-layers, get closer to the metal, the transistors, the peripherals and the registers. For that, Espressif provides a well-documented SDK, and for which a lot of resources are available online.

This framework, name ESP-IDF (“Ce framework, nommé ESP-IDF (“Espressif IoT Development Framework”) provides toolchains and tools allowing the development of application for ESP32 MCU. In fact, the Arduino framework integrates this SDK to provide a higher-level API, and compatible with other platforms

When I installed the IDF, I was surprised (in a very good way) to find CMake files! CMake is an open-source tool to manager the build process of a project, especially for C++ projects. And CMake is natively supported by my favorite IDE : CLion.

So, shouldn’t it be possible to create, edit, build and run an ESP-IDF project in CLion ? That’s what we are going to see! (TL;DR : the answer is ‘YES’!).

Continue reading “ESP32, ESP-IDF, CMake & CLion”

Un bot pour Mastodon écrit en Micropython

Il existe déjà sur Mastodon, le réseau social libre et décentralisé dont j’ai déjà parlé à plusieurs reprises, toute une série de bots plus ou moins intéressants. Certains donnent l’évolution du nombre d’utilisateurs et d’instances sur le réseau, d’autres tootent automatiquement un résumé d’articles de blogs quand ils sont publiés, ou publient régulièrement des photos coquines. Bref, il y en a pour tous les goûts.

Moi, j’ai décidé d’écrire un bot… qui ne sert à rien! Non, l’intérêt de mon bot ne se situe pas dans sa fonctionnalité, mais plutôt dans sa conception : il va s’exécuter sur un processeur embarqué.

Dans le but de rendre le travail simple et rapide, j’ai choisis de le développer en Micropython. Et pour l’exécuter, mon choix s’est porté sur la carte Lopy de Pycom, basée sur un processeur ESP32, avec WiFi intégré. Continue reading “Un bot pour Mastodon écrit en Micropython”

Registration to the Mastodon instance is open!

As I had announced in a previous article, I decided to open the registration on my Mastodon instance!

This instance is open to anyone who wishes to register, especially those who want to talk about their software development projects, their discoveries with RaspberryPi, their original ideas to develop on an ESP8266, new technologies, the web, DIY, …

So go ahead, sign up, and come and send me a little toot: https://mastodon.codingfield.com/@JF

Backup d’une instance Mastodon (fonctionnant sous Docker)

Dans l’article précédent, je vous ai parlé de ma découverte de Mastodon et de mon enthousiasme à propos de ce nouveau réseau social.

J’ai donc rapidement mis en place une instance Mastodon. Cette instance me permet de participer à ma façon au réseau Mastodon. Mais surtout, elle me permet de rendre concret ma vision du réseau social idéal, où tout le monde est libre de choisir où il s’héberge: chez lui ou chez quelqu’un d’autre.

Personnellement, j’ai décider d’appliquer l’adage “On est jamais bien servit que par soi-même”. Il s’agit d’une solution qui apporte beaucoup d’avantages, dont le contrôle total sur les données. Mais ce contrôle a un prix : je suis responsable de mes données.

Que se passera-t-il le jours où un problème majeur se produit sur mon serveur? En cas de petite erreur de frappe lors d’une manipulation en console root? Et bien mes données disparaîtront, purement et simplement! Je perdrai mon compte, mes toots, mes followers, je n’existerai plus sur le réseau.

Cela serait bien dommage! Il faut donc mettre au point une stratégie de backup permettant de sauvegarder régulièrement les données du serveur, et de les restaurer en cas de soucis, sur le même serveur, et même sur un autre serveur chez un autre hébergeur.

Continue reading “Backup d’une instance Mastodon (fonctionnant sous Docker)”

A Mastodon instance for Codingfield

You have certainly heard about Mastodon, the new open-source and decentralized social network that appeared at the end of 2016 and which has been growing rapidly in recent weeks.

I am not going to write here a detailed article about Mastodon; many other sites and blogs have already described it broadly but I will rather explain briefly why I am enthusiastic about this social network, and I will also take this opportunity to introduce you to the insance I myself launched two weeks ago.

Continue reading “A Mastodon instance for Codingfield”

ESP8266, la petite star de l’IoT, de la domotique et du DIY

Depuis quelques temps, je remarque que les projets basés sur l’ESP8266 (et sur l’ESP32, maintenant) se multiplient.

Au départ, je n’y ai prêté que très peu d’attention, je pensais qu’il s’agissait d’une plateforme semblable à l’Arduino, avec un framework de très haut niveau qui mâche tout le travail. Enfin, c’étaient là des aprioris d’un développeur habitué à programmer son microcontrôleur registre par registre, et qui peut maîtriser au byte près l’utilisation de sa mémoire.

Mais à force de voir des ESP8266 par-ci, et des ESP32 par-là, j’ai fini par m’y intéresser… Et ce que j’ai découvert m’a fortement intéressé, au point de me procurer un petit kit et de commencer quelques petits développements.

Continue reading “ESP8266, la petite star de l’IoT, de la domotique et du DIY”

Une image Docker pour Web2py

J’ai récemment découvert Docker. Docker permet d’empaqueter une applications et tout son environnement dans un “conteneur” afin de pouvoir le déployer facilement sur une autre machine, serveur,…

Il est par exemple possible de créer une image Docker pour un serveur Web, une autre pour une serveur de base de données et une troisième pour une application spécifique. Ces images pourront servir à développer l’application. Une fois l’application prête à être déployée sur un serveur de test puis sur un serveur de production, il suffira de copier les conteneurs correspondant à ces applications sur le serveur de test et de production. Ainsi, lors de toutes les étapes de développement, le même environnement d’exécution est utilisé.

Il s’agit là d’un exemple assez complexe, mais moi, je commence simple : j’ai mis au point une petite image Docker permettant de créer un conteneur  exécutant Web2Py, le framework Python que j’utilise pour mes développements web. Continue reading “Une image Docker pour Web2py”

Neopixels sur SMT32F4 : pilotage avec un timer et DMA

Dans l’article précédent concernant les Neopixels, je vous ai montré ma solution “quick’n’dirty” pour piloter un anneau de 16 Neopixels. Cette implémentation utilise une boucle vide dont le nombre d’itérations permettra de générer des timings + ou – précis. Cette solution, qui a le mérite d’être simple et fonctionnelle, n’est pas du tout précise, optimisée et évolutive. En effet, même si la boucle de Delay() ne fait rien, elle occupe le processeur pour ne rien faire, justement. De plus, si la fréquence du processeur devait changer dans le future, tous les timings deviendraient invalides.

C’est pour cela que j’ai décidé de réimplémenter le contrôle de mes Neopixels en utilisant un timer du micro-contrôlleur. Ce timer va générer en hardware (sans intervention du programme, à part lors de l’initialisation) des timings très précis. De plus, l’utilisation du DMA va permettre de générer toute une trame de données vers les LEDs en consommant très peu de ressources du processeur. Continue reading “Neopixels sur SMT32F4 : pilotage avec un timer et DMA”

Getting started with Neopixel (on STM32F4)

I recently discovered Neopixels from Adafruit. These are cheap and simple to use little RGB LED modules. Multiple form factors are available : single LED, board with 8 LEDs, rings, strips, matrix,…). They can be driven by a lot of different processors (ranging from little 8-bits microcontroller to the BealgleBone Black, goind through Arduinos, for example.

You can think of lot of applications for this kind of modules. On the net, I found people that use them to create high-tech jewelry, a luminous drum kit, clocks, and a lot of other very funny creations.

I found that so funny that I wanted to buy one of these modules. I chose the 16 LED ring. It is cheap, not too large, not so small, not too power-hungry and… quite cute! Continue reading “Getting started with Neopixel (on STM32F4)”