{"id":1649,"date":"2021-07-19T16:00:36","date_gmt":"2021-07-19T14:00:36","guid":{"rendered":"https:\/\/vitocafazzo.it\/site_Wp\/?p=1649"},"modified":"2021-09-29T17:59:55","modified_gmt":"2021-09-29T15:59:55","slug":"rb-mini-guida-pico","status":"publish","type":"post","link":"https:\/\/vitocafazzo.it\/site_Wp\/2021\/07\/19\/rb-mini-guida-pico\/","title":{"rendered":"RB Mini guida &#8211; PICO"},"content":{"rendered":"\n<p class=\"has-text-align-center wp-block-paragraph\"><a href=\"https:\/\/vitocafazzo.it\/site_Wp\/appunti-raspberry\/\" data-type=\"URL\" data-id=\"https:\/\/vitocafazzo.it\/site_Wp\/appunti-raspberry\/\">Torna all&#8217;elenco<strong> Raspberry<\/strong><\/a><\/p>\n\n\n\n<div id=\"block-5361e2c4-5bc4-498c-8304-9c85759acc67\" class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2021\/07\/TT_Raspberry.jpg\" alt=\"Questa immagine ha l'attributo alt vuoto; il nome del file \u00e8 TT_Raspberry.jpg\"\/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Raspberry PI PICO &#8211; Caratteristiche tecniche<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Sistema<\/strong> &#8211; Microcontroller RP2040. Processore dual-core Arm Cortex M0+, velocit\u00e0 di clock flessibile sino a 133MHz, 264KB di SRAM e 2MB di memoria Flash on-board.<\/li><li><strong>GPIO<\/strong> &#8211; 26\u00d7multi-function 3.3V GPIO pin, 2\u00d7SPI, 2\u00d7I2C, 2\u00d7UART, 3\u00d712-bit ADC, 16\u00d7controllable PWM channel, 8\u00d7Programmable I\/O (PIO) state machine per il supporto di periferiche custom.<\/li><\/ul>\n\n\n\n<a target=\"_blank\" href=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2021\/07\/Raspberry_PICO.png\" rel=\"noopener\">\n   <img decoding=\"async\" src=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2021\/07\/Raspberry_PICO.png\" alt=\"Circuito\" width=\"120\"> \n<\/a>\n\n\n\n<h3 class=\"wp-block-heading\">Programmazione &#8211; MicroPython<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>PICO supporta i linguaggi di programmazione <em>C++ <\/em>e <em>Python<\/em>.<\/li><li>Il codice sorgente non deve essere compilato, ma caricato all\u2019interno della memoria FLASH.<\/li><li>La compilazione (<em>C++<\/em>) o l\u2019interpretazione (<em>PICO utilizza l\u2019interprete MicroPython<\/em>) del codice \u00e8 eseguita direttamente all\u2019interno del microcontrollore.<\/li><li><strong>Per poter programmare PICO, il primo passo consiste nel farlo rilevare dal PC come memoria di massa<\/strong>: <em>tenere premuto il pulsante BOOTSEL e collegare il microcontrollore ad una porta USB<\/em>. Questa passo \u00e8 necessario sia che si lavori in <em>C++<\/em> che in <em>MicroPython<\/em>.<\/li><li><strong>Affinch\u00e8 PICO interpreti gli script realizzati in MicroPython bisogna caricargli l\u2019interprete<\/strong>. L\u2019interprete \u00e8 un file con estensione <em>.uf2 <\/em>che, con un semplice <em>drag and drop<\/em>, deve essere copiato sulla memoria di massa. Al termine della copia, PICO verr\u00e0 <em>disconnesso<\/em> come memoria di massa e verr\u00e0 <em>generata una porta COM<\/em> sulla quale  rester\u00e0 in ascolto. Da questo momento in poi, ogni volta che PICO verr\u00e0 riconnesso al PC senza premere il pulsante BOOTSEL verr\u00e0 riconosciuto come porta COM.<\/li><li>L&#8217;editor che permette di programmare in Micropython e comunicare con PICO \u00e8 <strong>Thonny<\/strong> (<a rel=\"noreferrer noopener\" href=\"https:\/\/thonny.org\/\" data-type=\"URL\" data-id=\"https:\/\/thonny.org\/\" target=\"_blank\">Pagina ufficiale<\/a>).<\/li><\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>La guida completa per configurare l&#8217;ambiente l&#8217;ho trovata su questo sito: <a rel=\"noreferrer noopener\" href=\"https:\/\/www.maffucci.it\/2021\/02\/14\/raspberry-pi-pico-conosciamo-la-scheda-ed-installiamo-micropython\/\" data-type=\"URL\" data-id=\"https:\/\/www.maffucci.it\/2021\/02\/14\/raspberry-pi-pico-conosciamo-la-scheda-ed-installiamo-micropython\/\" target=\"_blank\">www.maffucci.it<\/a>, seguendola ho avuto qualche problema perch\u00e9  nella lista degli interpreti non ho trovato <em>MicroPython(Raspberry PI Pico)<\/em>, inoltre ho dovuto scaricare un secondo file<em> .uf2<\/em> perch\u00e9 con il primo, scaricato da <a rel=\"noreferrer noopener\" href=\"https:\/\/www.raspberrypi.org\/documentation\/rp2040\/getting-started\/\" data-type=\"URL\" data-id=\"https:\/\/www.raspberrypi.org\/documentation\/rp2040\/getting-started\/\" target=\"_blank\">raspberrypi.org<\/a> (Download <a href=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2021\/07\/picoprobe.zip\" data-type=\"URL\" data-id=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2021\/07\/picoprobe.zip\" target=\"_blank\" rel=\"noreferrer noopener\">diretto<\/a>), non ci si riusciva a collegare alla porta in ascolto.<\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><span class=\"has-inline-color has-vivid-red-color\">Procedura configurazione ambiente<\/span><\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Scaricare il file<em> .uf2 <\/em>da <a rel=\"noreferrer noopener\" href=\"https:\/\/micropython.org\/download\/rp2-pico\/\" data-type=\"URL\" data-id=\"https:\/\/micropython.org\/download\/rp2-pico\/\" target=\"_blank\">micropython.org<\/a> (Download <a href=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2021\/07\/rp2-pico-20210618-v1.16.zip\" data-type=\"URL\" data-id=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2021\/07\/rp2-pico-20210618-v1.16.zip\" target=\"_blank\" rel=\"noreferrer noopener\">diretto<\/a>). La versione che ho utilizzato \u00e8 la seguente: <em>rp2-pico-20210618-v1.16.uf2<\/em>.<\/li><li><em>Drag and drop<\/em> del file<em> .uf2<\/em> su PICO riconosciuto come memoria di massa. Il comando <em>lsusb<\/em>, prima del caricamento del file <em>.uf2 <\/em>riconosce PICO come <em>Raspberry Pi RP2 Boot<\/em>, dopo il caricamento come <em>MicroPython Board in FS mode<\/em> e gli assegna: <em>Board CDC (\/dev\/ttyACM0)<\/em>.<\/li><li>Selezionare da <em>Thonny<\/em>, alla voce <em>Esegui-&gt;Interprete<\/em>, l&#8217;opzione <em>MicroPython(generic)<\/em> e come porta quella riconosciuta:<em> Board in FS mode &#8211; Board CDC (\/dev\/ttyACM0)<\/em>.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Il seguente script \u00e8 stato realizzato per verificarne il funzionamento:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:python decode:true \" title=\"Verifica.py\">from machine import Pin\nled=Pin(25, Pin.OUT)\n\nselezione = 0\nacceso=False\nled.value(0)\nwhile True:\n    print (\"\\n\")\n    print (\"-----------------------------------\")\n    print (\" OPERAZIONI\")\n    print (\"-----------------------------------\")\n    print (\" 0. Spegnimento LED\")\n    print (\" 1. Accensione LED\")\n    print (\" x. Uscita\")\n    print (\"-----------------------------------\")\n    selezione = input(\"Opzione: \")\n    \n    #***********************************\n    if selezione==\"0\":      \n        if acceso:\n            led.value(0)\n            acceso=False\n        else:\n            print(\"Il led \u00e8 gi\u00e0 spento\")\n    #**********************************            \n    elif selezione==\"1\":      \n        if acceso:\n            print(\"Il led \u00e8 gi\u00e0 acceso\")\n        else:\n            led.value(1)\n            acceso=True\n    #***********************************\n    elif selezione in [\"x\",\"X\"]:\n        print (\"&gt;&gt;&gt; CIAO!\")\n        break\n    #***********************************\n    else:\n        print (\" &gt;&gt;&gt; OPZIONE NON VALIDA\")\n    #***********************************<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;editor <em>Thonny<\/em> permette di salvare gli script creati, sia in locale (pulsante <em>Questo computer<\/em>) che su PICO (pulsante <em>MicroPython device<\/em>). Il nome del file deve avere estensione<em> .py<\/em>, ma se deve essere salvato su device bisogna ricordarsi che i nomi <em>boot.py<\/em> e <em>main.py<\/em> sono <em>riservati<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Esecuzione automatica: main.py<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Per far eseguire automaticamente lo script da <em>PICO<\/em>, dopo averlo creato con <em>Thonny<\/em>, bisogna salvarlo sul device con nome <strong>main.py<\/strong>, questo perch\u00e8, all&#8217;avvio, <em>MicroPython<\/em> esegue due script per impostazione predefinita: <em>boot.py<\/em> e <em>main.py<\/em>, in quest&#8217;ordine. Per testare &#8216;<em>la cosa<\/em>&#8216; \u00e8 stato realizzato il seguente script che accende\/spegne il led on board ogni 3 secondi.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \" title=\"main.py\">from machine import Pin\nfrom time import sleep\nled=Pin(25, Pin.OUT)\n\nwhile True:\n    led.value(1)\n    sleep(3)\n    led.value(0)\n    sleep(3)<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>NOTA<\/strong> &#8211; Se all&#8217;interno del file <em>main.py<\/em> inserisco delle funzioni <code>print(\"qualcosa\")<\/code>, quando collego PICO al PC tutto funziona perfettamente ma l&#8217;output non viene visualizzato in console. Non so se \u00e8 un <em>problema<\/em> o la cosa <em>deve andare cos\u00ec<\/em>. Per visualizzare l&#8217;output in console c&#8217;\u00e8 bisogno di un riavvio software da Thonny: <em>Esegui -&gt; Invia un EOF<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Link utili<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" href=\"https:\/\/makersportal.com\/blog\/raspberry-pi-pico-tests-with-micropython\" data-type=\"URL\" data-id=\"https:\/\/makersportal.com\/blog\/raspberry-pi-pico-tests-with-micropython\" target=\"_blank\">An Introduction to the Raspberry Pi Pico with MicroPython<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.settorezero.com\/wordpress\/raspberry-pi-pico-come-iniziare\/#Alimentazione\" data-type=\"URL\" data-id=\"https:\/\/www.settorezero.com\/wordpress\/raspberry-pi-pico-come-iniziare\/#Alimentazione\" target=\"_blank\">Raspberry Pi Pico \u2013 Come iniziare<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.maffucci.it\/2021\/02\/14\/raspberry-pi-pico-conosciamo-la-scheda-ed-installiamo-micropython\/\" data-type=\"URL\" data-id=\"https:\/\/www.maffucci.it\/2021\/02\/14\/raspberry-pi-pico-conosciamo-la-scheda-ed-installiamo-micropython\/\" target=\"_blank\">Raspberry Pi Pico \u2013 Conosciamo la scheda ed installiamo MicroPython<\/a><\/li><li><a href=\"https:\/\/www.mfitzp.com\/tutorials\/using-micropython-raspberry-pico\/\" data-type=\"URL\" data-id=\"https:\/\/www.mfitzp.com\/tutorials\/using-micropython-raspberry-pico\/\" target=\"_blank\" rel=\"noreferrer noopener\">Using MicroPython and uploading libraries on Raspberry Pi Pico<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Torna all&#8217;elenco Raspberry Raspberry PI PICO &#8211; Caratteristiche tecniche Sistema &#8211; Microcontroller RP2040. Processore dual-core Arm Cortex M0+, velocit\u00e0 di clock flessibile sino a 133MHz, 264KB di SRAM e 2MB di memoria Flash on-board. GPIO &#8211; 26\u00d7multi-function 3.3V GPIO pin, 2\u00d7SPI, 2\u00d7I2C, 2\u00d7UART, 3\u00d712-bit ADC, 16\u00d7controllable PWM channel, 8\u00d7Programmable I\/O (PIO) state machine per il [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-1649","post","type-post","status-publish","format-standard","hentry","category-raspberry"],"_links":{"self":[{"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/posts\/1649","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/comments?post=1649"}],"version-history":[{"count":5,"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/posts\/1649\/revisions"}],"predecessor-version":[{"id":1790,"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/posts\/1649\/revisions\/1790"}],"wp:attachment":[{"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/media?parent=1649"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/categories?post=1649"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/tags?post=1649"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}