Modifications

Sauter à la navigation Sauter à la recherche
10 417 octets ajoutés ,  19 février 2022 à 21:27
Ligne 13 : Ligne 13 :  
[[Fichier:ENG-CANSAT-PICO-THONNY-00.png|480px]]
 
[[Fichier:ENG-CANSAT-PICO-THONNY-00.png|480px]]
   −
[https://thonny.org/ Thonny IDE] is a great python script editor also featuring advanced features to test/store/run script against MicroPython boards like Raspberry-Pi Pico, RP2040 based boards, ESP32, ESP8266.
+
Thonny is multi-plateform editor running on Linux, Windows, Mac.  
    
The beauty about Thonny Python Script editor is that Thonny is written in Python.
 
The beauty about Thonny Python Script editor is that Thonny is written in Python.
    +
[https://thonny.org/ Thonny IDE] is a great python script editor can also be used with MicroPython Microcontrolers:
 +
* Raspberry-Pi Pico
 +
* RP2040 base MicroPython board (like PYBStick RP2040 or MicroMod-RP2040, etc)
 +
* ESP32 under MicroPython
 +
* ESP8266 under MicroPython
 +
* etc
 +
 +
Thonny offers great features for MicroPython microconroler:
 +
* transfer script to MicroPython microcontroler.
 +
* manage files on the MicroPython microcontroler.
 +
* run script against MicroPython microcontroler.
 +
* using the micropython interactive command line (named REPL)
 +
* generating graphical data (an awesome feature)
 +
 +
== Install Thonny IDE ==
 +
 +
{{ambox|text=It is important to have a recent version of thonny and plug-ins to use it with MicroPython boards.}}
 +
 +
[https://thonny.org/ Thonny website] contains the required instruction to install Thonny IDE.
 +
 +
=== On Raspberry-Pi ===
 +
Just open a terminal and execute the following command line:
 +
 +
<nowiki>$ sudo apt update && sudo apt upgrade -y</nowiki>
 +
 +
This will upgrade the operating system and install the latest version of Thonny IDE.
 +
 +
=== On Linux ===
 +
Python3 is available on almost every Linux operating system. So Thonny (which is written in Python) is installed with the {{fname|pip3}} ''Python Install Package'' software.
 +
 +
<nowiki>$ pip3 install thonny</nowiki>
 +
 +
=== Windows & Mac ===
 +
Refer to the official [https://thonny.org/ Thonny.org] documentation.
 +
 +
== Working with Thonny ==
 +
 +
The Thonny environment look very sober at first sight.
 +
 +
Don't be fooled by this simplicity, Thonny do have everything you need under the hood.
 +
 +
[[Fichier:ENG-CANSAT-PICO-THONNY-00.png|480px]]
 +
 +
From top to bottom:
 +
* The Menubar,
 +
* The Toolbar (with icones),
 +
* Text/code editor is the main part
 +
* A Shell interface (at the bottom) used to quickly test Python code.
 +
 +
=== Thonny and MicroPython ===
 +
 +
By default, Thonny use the computer's Python interpreter in the "Shell" section.
 +
 +
So to work with a MicroPython board, the user must inform Thonny to use the appropriate shell.
 +
 +
For instance the REPL shell exposed by the MicroPython microcontroler on its serial interface.
 +
 +
Just click and the "shell selection" popup at the bottom-right corner of the screen. In the popup menu selects the "MicroPython" entry attached to the MicroPython board.
 +
 +
[[Fichier:ENG-CANSAT-PICO-THONNY-01.png|480px]]
 +
 +
Once the entry selected, Thonny does establish a connection with the MicroPython command line interpreter (REPL) running on the MicroPython board.
 +
 +
If the connection fails then you can press the "stop" button on the toolbar to make a new connection attempt.
 +
 +
The image here below MicroPython shell (REPL, as it is executed on the microcontroler). This would work the same for any of the RP2040 based microcontroler (like the MicroMod-RP2040, PYBStick RP2040, etc). 
 +
 
 +
[[Fichier:ENG-CANSAT-PICO-THONNY-02.png|480px]]
 +
 +
=== LED Blinking ===
 +
Now that we have selected the MicroPython REPL as interactive shell, can use it to control the Pico onboard LED.
 +
 +
The Pico onboard LED is attached to the pin GP25.
 +
 +
[[Fichier:ENG-CANSAT-PICO-THONNY-03.png|640px]]
 +
 +
It can be controled with few lines of codes, just key-in them directly in the REPL session
 +
 +
<syntaxhighlight lang="python">
 +
from machine import Pin
 +
led = Pin(25, Pin.OUT)
 +
led.value(1) # allume la LED
 +
led.value(0) # éteint la LED
 +
</syntaxhighlight>
 +
 +
The following screen capture just show the results of entering the command lines.
 +
 +
[[Fichier:ENG-CANSAT-PICO-THONNY-04.png|480px]]
 +
 +
by entering {{fname|led.value()}} without parameter, you can query the current pin state (1 for High level, 0 for Low level).
 +
 +
=== Run & Stop a file ===
 +
With Thonny you can also write Python code inside a file and execute it at once on the target MicroPython board.
 +
 +
In the following example, the status LED (GP25) is pulsed by controling the output pin with PWM signal.
 +
 +
PWM stand for ''Pulse Width Modulation'', see this [https://www.electronicwings.com/pic/pic18f4550-pwm animation on ElectronicWings clearly show a PWM signal with its duty cycle and results on a LED].
 +
 +
Under MicroPython, the duty cycle is set with {{fname|duty_16( value )}} where value is a number from 0 to 65534 (for duty cycle from 0 to 100% .
 +
 +
 +
Key-in the following code into the main's Thonny section (the code editor):
 +
 +
<syntaxhighlight lang="python">
 +
import time
 +
led = PWM( Pin(25 ))
 +
counter = 0
 +
while True:
 +
    print( counter )
 +
    counter += 1
 +
    for i in range( 0, 100, 5 ):
 +
        led.duty_u16( int(65534*i/100) )
 +
        time.sleep_ms( 50 )
 +
    for i in range( 0, 100, 5 ):
 +
        led.duty_u16( int(65534*(100-i)/100) )
 +
        time.sleep_ms( 50 )
 +
</syntaxhighlight>
 +
 +
Then save the file under the name "demo.py" either on the computer, either on the microcontroler board.
 +
 +
No matter where it is saved (computer or microcontroler), it can be executed against the microcontroler and shows the results into the REPL/shell session.
 +
 +
To execute the script, you can either:
 +
* Press the "Start" button [[Fichier:ENG-CANSAT-PICO-THONNY-05.png]] of the toolbar
 +
* Select the menu "'''Run | Run current script'''"
 +
* Press the "F5" key
 +
 +
[[Fichier:ENG-CANSAT-PICO-THONNY-06.png|480px]]
 +
 +
The script execution will displays the {{fname|print()}} messages into the Shell section of Thonny.
 +
 +
As you may guess, the onboard status LED is also pulsing.
 +
 +
To stop the script (since it run infinitly),  you can either:
 +
* press the "Stop" button on the toolbar
 +
* Press the "Ctrl+C" combination into the shell section
 +
 +
=== Use the plotter ===
 +
The plotter is a graphical tool displaying script outputs generated with {{fname|print()}} as graphics.
 +
 +
The graphics is updated each time a new information appears in the output.
 +
 +
The Plotter can be activated with the "'''View |  Plotter'''" menu.
 +
 +
That action displays a graphical tool aside the shell section.
 +
 +
[[Fichier:ENG-CANSAT-PICO-THONNY-10.png|480px]]
 +
 +
The Plotter catch the numeric values sends/print in the REPL/Shell and displays it in the chart.
 +
 +
Only lines containing numeric values are used by the plotter.
 +
 +
On the following example, named {{fname|demo2.py}}, we do use the gamma function to make the LED pulsing in a more natural way. Indeed, a progressive PWM signal increase would not offers a proportional luminosity increase on the LED (voir livre [https://www.editions-eni.fr/livre/micropython-et-pyboard-python-sur-microcontroleur-de-la-prise-en-main-a-l-utilisation-avancee-9782409022906 MicroPython et Pyboard, Edition ENI], in French).
 +
 +
We do use the {{fname|gamma()}} function to rectify the apparent proportionality between the PWM and emitted light.
 +
 +
<syntaxhighlight lang="python">
 +
from machine import Pin, PWM
 +
import time
 +
led = PWM( Pin(25 ))
 +
 +
def gamma( pc ):
 +
    return pow(pc/100,2.2)*100
 +
 +
while True:
 +
    for i in range( 0, 100, 5 ):
 +
        pwm_val = int(gamma(i)*65534/100)
 +
        led.duty_u16( pwm_val )
 +
        print( pwm_val )
 +
        time.sleep_ms( 20 )
 +
    for i in range( 0, 100, 5 ):
 +
        pwm_val = int(gamma(100-i)*65534/100)
 +
        led.duty_u16( pwm_val )
 +
        print( pwm_val )
 +
        time.sleep_ms( 20 )</nowiki>
 +
</syntaxhighlight>
 +
 +
Which produce the following results in Thonny and activated Plotter.
 +
 +
[[Fichier:ENG-CANSAT-PICO-THONNY-11.png|480px]]
 +
 +
'''{{underline|Drawing several curves}}'''
 +
 +
By modifying the script, we can return the PWM value and the gamma corrected value by using a [https://www.w3schools.com/python/python_tuples.asp Python tuple]. Then the plotter will draw several curves.
 +
 +
<syntaxhighlight lang="python">
 +
from machine import Pin, PWM
 +
import time
 +
led = PWM( Pin(25 ))
 +
 +
def gamma( pc ):
 +
    return pow(pc/100,2.2)*100
 +
 +
while True:
 +
    for i in range( 0, 100, 5 ):
 +
        pwm      = int( i*65534/100 )
 +
        pwm_gamma = int(gamma(i)*65534/100)
 +
        led.duty_u16( pwm_gamma )
 +
        print( (pwm, pwm_gamma) )
 +
        time.sleep_ms( 20 )
 +
    for i in range( 0, 100, 5 ):
 +
        pwm      = int((100-i)*65534/100)
 +
        pwm_gamma = int(gamma(100-i)*65534/100)
 +
        led.duty_u16( pwm_gamma )
 +
        print( (pwm, pwm_gamma) )
 +
        time.sleep_ms( 20 )
 +
</syntaxhighlight>
 +
 +
Which produce the following results in Thonny.
 +
 +
[[Fichier:ENG-CANSAT-PICO-THONNY-12.png|480px]]
 +
 +
As seen in the REPL/Shell output, the data are return under the format (pwm, pwm_gamma) . The first value is the proportional curve and the second value the gamma fixed value.
 +
 +
The plotter does show the curve correspondence between tuple value position and drawed curve (see to bottom right corner).
 +
 +
== System Shell - Pure REPL ==
 +
It is also possible to start a Pure REPL session inside an external terminal. By using a external terminal, the user escape from the Thonny shell panel and being directly connected to the microcontroler via an USB serial connection.
 +
 +
The "'''Tools | Open System Shell..'''" menu will open the terminal Window.
 +
 +
[[Fichier:ENG-CANSAT-PICO-THONNY-20.png|640px]]
 +
 +
{{underline|Notes:}}
 +
* Thonny must be connected to the target plateform to be able to open the External Terminal.
 +
* The file manager can helps to check, whether or not, when Thonny is connected to the MicroPython board.
 +
* It is not possible to open two terminal session (at the same time) to the MicroPython microcontroler.
 +
 +
== File manager ==
 +
 +
It is common to copy library/libraries on the board.
 +
 +
This will requires to '''transfer one (or several) files to the MicroPython board'''.
 +
 +
Such '''libraries''' are usually python scripts (eg: ce [https://raw.githubusercontent.com/mchobby/esp8266-upy/master/bme280-bmp280/bme280.py bme280.py file]) coded for target sensors (eg: [https://github.com/mchobby/esp8266-upy/tree/master/bme280-bmp280 BME280 atmospheric & temperature I2C sensor]).
 +
 +
Thank to Thonny you also have a dedicated "file manager" tool used to transfert files between the computer and the MicroPython board.
 +
 +
The file manager is available via the "'''View | Files'''" menu.
 +
 +
[[Fichier:ENG-CANSAT-PICO-THONNY-30.png|480px]]
 +
 +
Which would display the Thonny file manager.
 +
 +
[[Fichier:ENG-CANSAT-PICO-THONNY-31.png|480px]]
 +
 +
To transfer a file from the computer to the MicroPython board, you will need to :
 +
* Select the file into the "Computer" pane
 +
* Activate the contextual menu (mouse right click)
 +
* Select the option "Upload to" in the menu
 +
 +
{{ambox|text=The "/" drawed into the menu match the root folder on the target (the microcontroler in this case).}}
 +
 +
[[Fichier:ENG-CANSAT-PICO-THONNY-32.png|480px]]
 +
 +
It would be easy to identify the features and behavior of the file manager by exploring and testing the various entries in the contextual menu. Please note that contectual menu are different in the board pane and computer pane.
    
{{ENG-CANSAT-PICO-TRAILER}}
 
{{ENG-CANSAT-PICO-TRAILER}}
29 917

modifications

Menu de navigation