Monthly Archives: June 2021

HTML Splash Screen with “don’t show again” option

BIPES project needed a splash screen, so I adapted the code from a W3C tutorial and added cookies so that the user can click on the select box “Do not show this screen anymore” and a cookie is set. When this cookie is set, the next access to the webpage will not show the splash screen. Simple, but useful 🙂

Source code:

https://github.com/rafaelaroca/SimpleHtmlSplashScreen

Demo:

http://bipes.net.br/beta2/ui/modal.html

Automatic WebREPL / WebSocket network scanner

MicroPython has this great feature: WebREPL. It uses WebSockets to allow interactive Python shell sessions to the device running MicroPython, and also allows files to be uploaded and downloaded – all over the network, so we can easily program, debug and interact with ESP32, ESP8266 and other MicroPython enabled boards over Wifi! CircuitPython still does not have WebREPL, but I am looking forward to it (https://github.com/adafruit/circuitpython/issues/4050)!

However, sometimes is hard to discover which IP is assigned to a specific board, especially if the board is connected to a USB power bank or a power supply and has no display/interface to show the IP. Sometimes I use the the Wifi Access Point configuration page to see the DHCP client list and try to guess which one is leased to the board I am working with.

In that way, we decided to add a “WebREPL device scanner” feature on BIPES. You can use this feature to discover/identify all IP addresses associated with WebREPL ports using WebSocket (on port 8266). The feature is presented as a button next to the Connect button and opens a new page. It is useful even if you don’t use BIPES, but need to find the IP address of a board on the same network your computer is.

On the “Scan Board” page, select your network prefix and click “Start Scan”. A JavaScript will try to connect to all IPs in that subnet and handle connection errors/successes, showing boards found and ready to connect. The “Select” button will close the scanner page and fill the Address input box of BIPES Console tab with the selected board URL.

It is a quick and simple solution, which can save time and make activities more practical. Hope it helps you!

BIPES and Raspberry Pi Pico

A list of some interesting posts / examples using BIPES and Raspberry Pi Pico! 🙂

Create Mood Lighting with Block-Based Coding on Raspberry Pi Pico
https://www.makeuseof.com/create-mood-lighting-with-block-based-coding-on-raspberry-pi-pico/

Block Based Coding Comes To the Raspberry Pi Pico
https://www.tomshardware.com/news/raspberry-pi-pico-bipes

BIPES Brings Block-Based Visual MicroPython Programming to the Raspberry Pi Pico, RP2040
https://www.hackster.io/news/bipes-brings-block-based-visual-micropython-programming-to-the-raspberry-pi-pico-rp2040-59754e9c9d82

Remote hands-on CubeSat / remote embedded programming workshop

Just presented a remote hands-on workshop on the 1st International Seminar on Astronomy and Astronautics – MCTI (DAY 5). Recording is available here (https://www.youtube.com/watch?v=Sj8oWiK2N3U). Remote participants were able to use BIPES to remotely program, monitor and control ESP8266 boards to read sensors and print messages to LED Matrix displays and see all happening online using a web camera.

Workshop details:

https://obsat.org.br/OficinaCubeSat/

Photos above show 5 ESP8266 boards remotely programmed using BIPES. Five different remote participants were able to control the LED Matrices and the setup with a camera pointing to the boards:

d

Thank for the invitation and opportunity, minister of science, technology and innovation!

Reset trouble with ESP8266 and MicroPython

While preparing boards for a workshop, I got some WeMos D1 mini (ESP8266) modules that continuously reset just after MicroPython boot. Here’s how I flashed them and how I fixed:

To flash MicroPython:
esptool.py –port /dev/ttyUSB0 erase_flash

esptool.py –port /dev/ttyUSB0 –baud 115200 write_flash –flash_size=detect -fm dio 0 esp8266-20210418-v1.15.bin

After resetting, the board continuously resets. The problem is a power issue related to MicroPython when it started its default Access Point.

To fix the problem, simple disable the AP mode just after the board boots:

minicom -b 115200 -D /dev/ttyUSB0

import network; network.WLAN(network.AP_IF).active(False)

The commands above should fix the issue. Then you can connect to an existing Access Point:
import network
sta_if = network.WLAN(network.STA_IF); sta_if.active(True)
sta_if.connect("<**>", "<**>")
print(sta_if.isconnected())

Helpful link:
https://forum.micropython.org/viewtopic.php?f=16&t=9046