Skip to main content

Posts

Showing posts with the label micropython

From Code to Cables: Building a Physical Neural Network with micro:bits

Artificial Intelligence often feels like "magic" happening inside a powerful computer. But at its core, a neural network is just a series of mathematical decisions. In my previous posts, we looked at how to simulate these decisions in Python. Today, we are taking that "brain" out of the computer and building it in the real world using three BBC micro:bits . In this project, each micro:bit acts as a single neuron . By wiring them together, we create a physical network capable of logic and decision-making. The Math: How a Neuron "Thinks" Every neuron in our network follows a simple linear formula to decide whether or not to "fire" (send a signal): Figure 1 - the maths If the result Net  >=0  the neuron fires (Output = 1). If it’s less than 0, it stays at Output = 0. Step 1: The Logic Gate "Cheat Sheet" Before we flash the code, we need to decide what we want our neurons to do. By changing the weights and bias , we can turn a micro:bit...

Hug Avoider 4 - micropython, Eggbot and speech

The last of the posts on the Hug avoider and the 4Tronix's Eggbit 4Tronix's Eggbit (in fact I bought three of them  https://shop.4tronix.co.uk/collections/bbc-micro-bit/products/eggbit-three-pack-special   :-) recently) is a cute add-on for the microbit. In three previous posts I looked at eggbit using microcode to  produce a hug avoider - warns when people at too close. - https://robotsandphysicalcomputing.blogspot.com/2021/12/hug-avoider-2-4tronix-eggbit.html -  4tronix Eggbit - cute and wearable - hug avoider Hug Avoider 3 - experiments with Python and 4Tronix Eggbit In this post using the buttons and adding (via Microbit V2 with its speaker) simple speech 1. Buttons Pins for the buttons pin8 - Green button pin12 - Red button pin14 - Yellow button pin`6 - Blue button     if pin12.read_digital()==1:         #Red Button         blank_it()     if pin8.read_digital()==1:         #Green but...

Dancing Kitronik's Game Zap - reacts to music

You will glad to hear this is only a short post.   In an earlier post, Build a Disco Cube:bit that reacts to music ; the vibrations of music, makes the cube sitting on a speaker with the volume pushed to 11 (just to test it of course) react to the music. The accelerometers values in the micro:bit, in the three axis, are feedback to change the neopixels colour. Simple but good fun. With some very minor (and I do mean minor) changes it works on the Kitronik's Game Zap - eight pixels are altered at a time instead of five but apart from that nothing more. The code in python is shown below: from microbit import * import neopixel, random np = neopixel.NeoPixel(pin0, 64) while True:     for pxl in range (3,64, 8):         rd=int(abs(accelerometer.get_x())/20)         gr=int(abs(accelerometer.get_y())/20)         bl=int(abs(accelerometer.get_z())/20)         np[pxl] = (rd, gr, 0)   ...

Speech with EduBlocks on BBC microbit

The microbit is a great piece of kit, not least of which because of the range of programming languages and tools that can be used with it - officially JavaScript and Python and but there is also a range of third-party ones. A useful place to look for what languages/tools  are available is  http://microbit.org/code-alternative-editors/ ; listing both official and third-party tools (there was a few I wasn't aware of ). One I was aware and meaning to play with, is the brilliant Edublocks by Josh Lowe ( @ all_about_code ) or more   specifically in this post Edublocks for BBC Micro:bit  ( https://microbit.edublocks.org/ ). Edublocks for the microbit (and Edublocks in general) allows graphical blocks of code, in a similar way to languages such as Scratch, to be dragged and dropped into places. That in itself would be great, but the really useful thing here is though, whilst doing it you are actually producing a Python program (technically in th...

Radio controlled microbit Robot Unicorn

In a previous post a robot unicorn was built from a kit ( Do it Kits  https://doitkits.com/product/robot-unicorn/ ) and controlled to do a fixed sequence of actions. In this post a similar thing will be done, but this time the actions are not fixed within the robot itself, but in response to messages sent from another microbit via the radio module. Sending Sends out messages via the microbit's radio module, e.g. fwd for forward or tr for turn right; as well the name of the actions scrolls across the microbit. On the Unicorn Revieves messages via the microbits radio module, e.g. bwd for backward or tl for turn left; then carries out the action for 500ms. The time was selected to give the system enough time to finish the action before the next message is expected. All the code available at  Turner, S., 2017.  Robo_unicorn_python . Available at: <Robo_unicorn_python>  https://doi.org/10.6084/m9.figshare.5729583.v7 All opinions in this bl...

Micro:bit Robot Arm

In this post, I am discussing using a recently bought   CBIS BBC micro:bit RobotArm , but play with it using Python (or rather micropython). Set Up Not a lot to set up really. The base and the arm are separate and are attached with four screws (so you will need a screwdriver).  The most difficult bit is the wiring the arm to the circuit/breakout board on the base, but instructions are available through CBiS Resource portal  http://portal.cbis.education/teacher/hardware . You will need a log-in for this. Also on that site, there is an example Microsoft Blocks code which includes some instructions on inserting the microbit as well - the micro:bit goes in buttons side facing upwards. Code Taking the values from the instruction sheet for setting it - the micro:bit key bit - the following pins were selected. Base                     Pins 0 and 1 Shoulder    ...

kitronik :Move mini buggy (Python control of LEDs)

In two previous posts I looked at control the :Move buggy using JavaScript Blocks or Python . In this post we are going to look at controlling the LEDs using Python (or more accurately micropython). Pin 0 controls the LEDs, they are based on 5   NeoPixel compatible,  RGB, addressable LEDs; so the Neopixel protocols (and library for Neopixels) can be used.  Code First five colours of the rainbow. The array lig  holds the RGB settings for the rainbow colours (more details on the RGB colours can be found at  Lorraine Underwood 's Halloween Cloud project ). In the code below, the five LEDs have a different colour allocated to them. from microbit import * import neopixel np = neopixel.NeoPixel(pin0, 5) lig=[[255,0,0],[255,127,0],[255,255,0],[0,255,0],[0,0,255],[75,0,136],[139,0,255]] while True:     np[0] = lig[0]     np[1] = lig[1]     np[2] = lig[2]     np[3] = lig[3] ...

kitronik :Move buggy (Python controlled servos)

In a previous post I looked at controlling the Kitronik :Move buggy using Javascript based blocks . In this short post I will show  controlling the servos of the micro:bit based :Move buggy with Python. Control is via pin1(left motor) and pin2 (right motor) and the motors have to be driven in opposite directions to move forward or backwards. The direction of the motors is controlled by the analogue value written to the pins;   pinX.write_analog(180) - anticlockwise or  pinX.write_analog(1) - clockwise ( pinX.write_analog(0) - stops the motor). Setting the analog_period seems to work at 20ms; this was found by experiment, discussed in a previous post . So the initial code below sets up the moves for forward, backward, turn left, turn right all controlled with a move for so many milliseconds. Code  from microbit import * pin1.set_analog_period(20) pin2.set_analog_period(20) def forward(N):     pin1.write_analog(180...

CBiS Education Micro:Bit based Robot Car

At PiWars 2017 (1st-2nd April 2017), thanks to the generosity of CBiS Education , I now have one of their  BBC micro:bit RobotCar ™  . It is a sturdy bit of kit, encased in an aluminum chassis with a clear acrylic screen - it feels substantial when you pick it up.  It is based around fours motors, control by a Micro:Bit, via L298N based motor controller/shield. Batteries power, 8 AAs, the motors and a Lithium powerbank to power the Micro:Bit - all included.  More information about the technical details and example software can be found on their site  https://www.cbis.education/robotic-car-kit#  including further details on the  L298N based motor controller/shield, which I found useful for programming it.   I have experimented briefly with programming it in Python (micropython), getting it to it move forward, backward; to the right and left, using the Mu editor.  The code is shown below for those who want to try i...