Difference between revisions of "Arduino Nano RP2040 Connect"
Jump to navigation
Jump to search
m |
|||
Line 159: | Line 159: | ||
* https://github.com/openmv/openmv/blob/918ccb937730cc759ee5709df089d9de516dc7bf/scripts/libraries/lsm6dsox.py | * https://github.com/openmv/openmv/blob/918ccb937730cc759ee5709df089d9de516dc7bf/scripts/libraries/lsm6dsox.py | ||
− | + | [[Category:Microcontroller]] | |
[[Category:Arduino Nano RP2040 Connect]] | [[Category:Arduino Nano RP2040 Connect]] |
Revision as of 14:03, 12 June 2024
Contents
Upgrade the Arduino Firmware
- Reinstall the MicroPython Firmware (version 1.22.2 tested)
- Install Arduino IDE from https://www.arduino.cc/en/software
- Start Arduino IDE and select the Arduino RP2040 board
- Go to Tools -> Firmware Update -> Check updates and select version 1.5.0 and press Install
Install the MicroPython Firmware
Note: Before installing MicroPython ensure you have the latest Arduino Firmware, see Upgrade the Arduino Firmware.
- Download the firmware for the Arduino Nano RP2040 Connect from https://micropython.org/download/ARDUINO_NANO_RP2040_CONNECT/
- Unplug the board from the computer.
- Force the board in bootloader mode by connecting GND and REC pin with a wire: https://docs.arduino.cc/tutorials/nano-rp2040-connect/rp2040-openmv-setup/
- Plug the board into the USB port on your computer, it appears as a drive in your filesystem
- Remove the wire between the GND and REC pin (before you copy the file onto the device)
- Copy the firmware you downloaded on the drive that showed up in your file system
- Once it is completely copied to the device, unplug the board and plug in again
- Now you should be able to use Arduino Lab for the Micropython development environment: https://labs.arduino.cc/en/labs/micropython
Pinout
How to control the Builtin LED MicroPython
this is GPIO6 (D13 in Arduino)
1 from machine import Pin
2 from time import sleep
3
4 # using the internal LED on the Pico - pin 25
5 myLED = Pin(6, Pin.OUT)
6
7 while True:
8 # this switches the LED on for 1 second
9 myLED.on()
10 sleep(0.1)
11 # this switches the LED off for 500 ms
12 myLED.off()
13 sleep(0.5)
Example: Read Accelerometer and Gyro
1 import time
2 from lsm6dsox import LSM6DSOX
3
4 from machine import Pin, I2C
5 lsm = LSM6DSOX(I2C(0, scl=Pin(13), sda=Pin(12)))
6
7 while (True):
8 accel_data = lsm.accel()
9 print('Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*accel_data))
10 gyro_data = lsm.gyro()
11 print('Gyroscope: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*gyro_data))
12 print("")
13 time.sleep_ms(100)
Example of a WIFI-Access Point and Webserver to control the LED
1 # Wi-Fi AP Mode Example
2 #
3 # This example shows how to use Wi-Fi in Access Point mode.
4 # this version by Albrecht Schmidt, https://www.sketching-with-hardware.org/wiki/
5 # based on the following examples:
6 # https://randomnerdtutorials.com/esp32-esp8266-micropython-web-server/
7 # https://docs.arduino.cc/tutorials/nano-rp2040-connect/rp2040-python-api
8
9
10 import network, socket, time
11 from machine import Pin
12
13 led = Pin(6, Pin.OUT) #on board LED
14
15 SSID ='Nano_RP2040_Connect_test' # Network SSID
16 KEY ='12345678' # Network key (should be 8 chars) - for real use, choose a safe one
17 HOST = ''
18 PORT = 80 # 80 ist the http standard port, can also use non-privileged port e.g. 8080
19
20 # Init wlan module and connect to network
21 wlan = network.WLAN(network.AP_IF)
22 wlan.active(True)
23 # it seems in this version the AP mode only supports WEP
24 wlan.config(essid=SSID, key=KEY, security=wlan.WEP, channel=2)
25
26 print("AP mode started. SSID: {} IP: {}".format(SSID, wlan.ifconfig()[0]))
27
28
29 # create the webpage with a button to toggle the LED
30 def web_page():
31 if led.value() == 1:
32 led_state="ON"
33 else:
34 led_state="OFF"
35
36 html ="""<html><head>
37 <title>Nano RP2040 Connnect Web Server</title>
38 <meta name="viewport" content="width=device-width, initial-scale=1">
39 <link rel="icon" href="data:,">
40 </head>
41 <body>
42 <h1>Nano RP2040 Connnect </1>
43 <h2>Web Server Test</h2>
44 <p>LED state: <strong>""" + led_state + """</strong></p><p><a href="/?led=on"><button class="button">ON</button></a></p>
45 <p><a href="/?led=off"><button class="button button2">OFF</button></a></p>
46 </body>
47 </html>"""
48 return html
49
50 # get started with setting up the sever sockedt
51 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
52 # Bind and listen
53 server.bind([HOST, PORT])
54 server.listen(5)
55
56 # loop to deal with http requests
57 while True:
58 conn, addr = server.accept()
59 print('Connection from %s' % str(addr))
60 request = conn.recv(1024)
61 request = str(request)
62 print('Request Content = %s' % request)
63 # check if the request includes led=on or off
64 led_on = request.find('/?led=on')
65 led_off = request.find('/?led=off')
66 # request is 'GET /?led=on' or 'GET /?led=off' - the string starts at position 6 (counting starts at 0)
67 if led_on == 6:
68 print('LED ON')
69 led.value(1)
70 if led_off == 6:
71 print('LED OFF')
72 led.value(0)
73 response = web_page()
74 conn.send('HTTP/1.1 200 OK\n')
75 conn.send('Content-Type: text/html\n')
76 conn.send('Connection: close\n\n')
77 conn.send(response)
78 conn.close()
External links
- https://docs.arduino.cc/learn/programming/arduino-and-python
- https://docs.arduino.cc/hardware/nano-rp2040-connect
- https://docs.arduino.cc/tutorials/nano-rp2040-connect/rp2040-python-api#imu-lsm6dsox
- https://github.com/openmv/openmv/blob/918ccb937730cc759ee5709df089d9de516dc7bf/scripts/libraries/lsm6dsox.py