以前チラッと試用しましたが、RaspberryPiにプリインストールされているThonny + MicroPython環境を使うと、めちゃくちゃ簡単にRaspberryPi Picoの開発ができます。
LEDを点滅させる: pico-led.py
from machine import Pin, Timer
led = Pin("LED", Pin.OUT)
timer = Timer()
def blink(timer):
led.toggle()
print("toggle!")
timer.init(freq=2, mode=Timer.PERIODIC, callback=blink)
サーボモータを動かす: pico-servo.py
from machine import Pin, PWM
import time
servo = PWM(Pin(0))
servo.freq(50)
max_duty = 65025
for i in range(10):
servo.duty_u16(int(max_duty*0.0725))
time.sleep(1)
servo.duty_u16(int(max_duty*0.12))
time.sleep(1)
アナログ値を読み取る: pico-adc.py
from machine import ADC
import time
adc = ADC(2)
while True:
v = adc.read_u16()
print(v)
time.sleep(0.2)
これらは、Picoを接続したRaspberryPi上のThonnyで実行ボタンを押すだけで実行が可能です(スクリプトの保存先としてPicoを選ぶことができます)。保存する際にファイル名を main.py
とすれば、電源投入後に自動的に実行されるようになります。
ここで調子に乗って、PicoRuby(R2P2)に乗り換えよう!と思って、インストールを試みてみたのですが、ドキュメントの手順ではどうしてもうまく行きませんでした(ターミナルで接続は出来るのですが、PicoRubyのタイトルも出ないしどのコマンドも応答せず)。
uf2も書き込んじゃったし、困ったな…と悩んでいたところ、ThonnyからMicroPythonの再インストールができることが分かり結局元に戻ってきました。やりたいことは大体こっちで出来そうなので、しばらくはPythonのお世話になることにします…。
同一Wifi内のRaspberryPiとTCP通信する例: pico-tcp-client.py
import network, socket, time
SSID = "your-ssid"
PW = "your-password"
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID,PW)
while wlan.isconnected() == False:
print("connecting to %s.." % (SSID))
time.sleep(1)
wlan_status = wlan.ifconfig()
print("connected! as %s" % (wlan_status[0]))
addr = socket.getaddrinfo('raspberrypi.local', 2000)[0][-1]
s = socket.socket()
s.connect(addr)
data = s.recv(255)
while len(data) != 0:
print(data.decode('utf-8').strip())
data = s.recv(255)
s.close()
(参考)TCPサーバ側: tcp-server.rb
(上記のクライアントをテストするためにRaspberryPi側で実行しておきます)
require 'socket'
server = TCPServer.new 2000 # Server bind to port 2000
loop do
client = server.accept # Wait for a client to connect
client.puts "Hello !"
client.puts "Time is #{Time.now}"
client.close
end