Init
Recovered code from robot 277044
This commit is contained in:
		
							
								
								
									
										10
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										10
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Executable file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
# ignore code file
 | 
			
		||||
code.py
 | 
			
		||||
# ignore backup files
 | 
			
		||||
._*
 | 
			
		||||
# Mac OS stuff
 | 
			
		||||
.DS_Store
 | 
			
		||||
# ignore the ESP32 MicroPython binary
 | 
			
		||||
esp32*.bin
 | 
			
		||||
# ignore the development config file
 | 
			
		||||
config-dev.json
 | 
			
		||||
							
								
								
									
										2
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
# Special SumoRobot firmware for usage with the remote
 | 
			
		||||
Uses UDP packets from remote to the robot instead of BLE or WebSocket
 | 
			
		||||
							
								
								
									
										101
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
			
		||||
import ubinascii
 | 
			
		||||
import _thread
 | 
			
		||||
import os
 | 
			
		||||
import network
 | 
			
		||||
from utime import sleep_ms
 | 
			
		||||
from machine import Timer, Pin, PWM
 | 
			
		||||
 | 
			
		||||
print("Press Ctrl-C to stop boot script...")
 | 
			
		||||
sleep_ms(200)
 | 
			
		||||
 | 
			
		||||
led_power = Pin(25, Pin.OUT)
 | 
			
		||||
led_power.value(1)
 | 
			
		||||
 | 
			
		||||
pwm_left = PWM(Pin(15), freq=50, duty=0)
 | 
			
		||||
pwm_right = PWM(Pin(13), freq=50, duty=0)
 | 
			
		||||
 | 
			
		||||
HOSTNAME = "sumo-%s" % \
 | 
			
		||||
  ubinascii.hexlify(network.WLAN().config('mac'),':').decode().replace(":","")[6:]
 | 
			
		||||
 | 
			
		||||
url = "ws://sumo.koodur.com:80/p2p/%s/browser/" % HOSTNAME
 | 
			
		||||
 | 
			
		||||
ap_if = network.WLAN(network.AP_IF)
 | 
			
		||||
ap_if.active(False)
 | 
			
		||||
 | 
			
		||||
wlan = network.WLAN(network.STA_IF)
 | 
			
		||||
wlan.active(True)
 | 
			
		||||
wlan.config(dhcp_hostname=HOSTNAME)
 | 
			
		||||
#wlan.connect("sumo", "salakala")
 | 
			
		||||
wlan.connect("sumo","salakala")
 | 
			
		||||
 | 
			
		||||
while not wlan.isconnected():
 | 
			
		||||
    print("Connecting to wifi...")
 | 
			
		||||
    sleep_ms(100)
 | 
			
		||||
 | 
			
		||||
print("Connected to wifi!", wlan.ifconfig())
 | 
			
		||||
print("Hi my name is:")
 | 
			
		||||
print(HOSTNAME)
 | 
			
		||||
def map_vals(value, leftMin, leftMax, rightMin, rightMax):
 | 
			
		||||
	#http://stackoverflow.com/questions/1969240/mapping-a-range-of-values-to-another
 | 
			
		||||
	# Figure out how 'wide' each range is
 | 
			
		||||
	leftSpan = leftMax - leftMin
 | 
			
		||||
	rightSpan = rightMax - rightMin
 | 
			
		||||
 | 
			
		||||
	# Convert the left range into a 0-1 range (float)
 | 
			
		||||
	valueScaled = float(value - leftMin) / float(leftSpan)
 | 
			
		||||
 | 
			
		||||
	# Convert the 0-1 range into a value in the right range.
 | 
			
		||||
	return int(rightMin + (valueScaled * rightSpan))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import socket
 | 
			
		||||
import time
 | 
			
		||||
from time import sleep_ms
 | 
			
		||||
 | 
			
		||||
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
 | 
			
		||||
sock.settimeout(0.3)
 | 
			
		||||
sock.bind(("", 44444))
 | 
			
		||||
while True:
 | 
			
		||||
    try:
 | 
			
		||||
        buf = sock.recv(20)
 | 
			
		||||
    except OSError: # timed out
 | 
			
		||||
        pwm_left.duty(0)
 | 
			
		||||
        pwm_right.duty(0)
 | 
			
		||||
        continue
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        value, forward, backward = buf.decode("ascii").split(":")
 | 
			
		||||
    except ValueError:
 | 
			
		||||
        continue
 | 
			
		||||
    forward, backward = int(forward), int(backward)
 | 
			
		||||
 | 
			
		||||
    if forward:
 | 
			
		||||
        left, right = 10, -10
 | 
			
		||||
    elif backward:
 | 
			
		||||
        left, right = -10, 10
 | 
			
		||||
    else:
 | 
			
		||||
        left, right = 0, 0
 | 
			
		||||
 | 
			
		||||
    mapped = map_vals(int(value),-400,400,-10,10)
 | 
			
		||||
    if abs(mapped) > 5:
 | 
			
		||||
        left -= mapped
 | 
			
		||||
        right -= mapped
 | 
			
		||||
 | 
			
		||||
    if left < -10:
 | 
			
		||||
        left = -10
 | 
			
		||||
    if left > 10:
 | 
			
		||||
        left = 10
 | 
			
		||||
    if right < -10:
 | 
			
		||||
        right = -10
 | 
			
		||||
    if right > 10:
 | 
			
		||||
        right = 10
 | 
			
		||||
    if abs(left) > 2:
 | 
			
		||||
        pwm_left.duty(78 + left)
 | 
			
		||||
    else:
 | 
			
		||||
        pwm_left.duty(0)
 | 
			
		||||
    if abs(right) > 2:
 | 
			
		||||
        pwm_right.duty(78 + right)
 | 
			
		||||
    else:
 | 
			
		||||
        pwm_right.duty(0)
 | 
			
		||||
    sleep_ms(20)
 | 
			
		||||
		Reference in New Issue
	
	Block a user