Python Robot
We have designed a low cost robot which can be easily programmed via Python. Its purpose is to teach kids programming and electronics skill via fun challenges.
The software is based on the MircoPython project. When the robot is plugged into a computer it comes up as a flash storage device. This allows Python scripts to be stored and executed straight from the robot’s memory. In addition a Python command prompt is available via a serial connection for executing commands in real time.
The robot’s hardware includes car like LED lights (headlight, tail light, indicators). In the first lessons these lights will be switched on and off.
The micro controller’s in built analogue to digital converter can be used to measure the battery voltage and the battery current. A battery charger circuit is included and the battery will be charged when the robot is plugged into a USB port.
Currently the robot includes a 3 axis digital accelerometer. For the final version this will be changed to a sensor with an additional 3 axis gyroscope. The sensor can be read and programmed via the SPI bus.
Further lessons will teach handling of hardware and software interrupts. Hardware interrupts are created by pressing buttons or by the accelerometer when new data is available. Software interrupts can be created by CPU timers for example to blink the indicator lights. With pulse width modulation (PWM) it is possible to control the brightness of the tail light to switch from normal to brake lights.
Extension boards make it possible to detect obstacles, control the robot via WiFi and add a camera.
The distance sensor for obstacle detection includes a laser system and is based on the ‘time of flight’ of the laser light. The chip also includes a brightness sensor for switching the robot’s LEDs automatically when it gets dark. The sensor is controlled via the I2C bus.
Detailed tutorials will be provided to make it easier for teachers to prepare for lessons. The resources will also make it possible for motivated kids to learn about programming, micro controllers and Python at their own pace.
Current Prototype
Current hardware of the prototype:
Item | Description | Interface |
CPU | STM32F407VGT6 | |
Micro USB | Charging + Communication | USB FS Device |
Micro SD card slot | Storage of Python scripts and data | SDIO |
Buttons | User and reset button | GPIO |
Switches | DIP switch for DFU mode and to disable reset button | |
LEDs | Head lights, tail lights and blinkers | GPIO (PWM) |
Accelerometer | LIS3DSH from ST | SPI + GPIO |
Charging + Power supply | LTC4081 from Linear | |
Battery | 500mAh LiPo | |
Battery current | MAX4069 from Maxim (bi-directional) | A/D Converter |
Battery voltage | Resistor network | A/D Converter |
Motor drivers | DRV8835 from TI | GPIO (PWM) |
Motors | 2 x Bipolar stepper motors, diameter 15 mm | |
Distance sensor | VL6180 from ST via extension header | I2C + GPIO |
Programming | Via extension header | SWD |
Camera | Via extension header | I2C + DCMI |
WiFi | Via extension header | GPIO + UART + SPI |
A video demonstrating the laser 'time of flight' distance sensor.
Computer rendering of the production concept. Main changes are the addition of an audio amp, digital volume adjustment and speaker to play audio files using the digital to analogue converter of the micro controller.
Testing of the micro controller digital to analogue converter. Sound files are stored in the wave format on the SD card.