Since I put the 18650 battery in the reverse side of the charger unit twice, I started thinking about how to prevent this. I found a tutorial on the web, where a development is presented, with step by step improvements. The address is:
From this I have only picked out the last protection circuit:
I made myself an isometric picture of this, because I have no idea about the placement of the MOSFET transistor pins.
Here is a photo of the circuit, you can see what kind of leads I have used and how I have soldered the components to the board.
Another photo of the same circuit. I did indeed connect the 18650 correctly first. No fume rose from that. I was quite relieved. I had to gather all my courage before I put the 18650 battery in the wrong way round. Now I have a new multimeter, which also has a current measurement feature. The right way up the charging current was about 14.3 mA, the wrong way up there was no current at all. So it works now. I soldered another copy of this wiring tonight, so if I have two compass belts, I could protect both from inserting the battery the wrong way into the case!
Many migratory animals, such as birds and fish, are said to know the compass directions when migrating, sometimes over very long distances, night or day, and often in very bad weather.
For humans, this kind of knowledge may be needed, for example, when picking berries in an unfamiliar place or simply when losing one's sense of direction.
A compass belt is a belt that helps you know where north is without looking at a compass. It has small vibration motors and a sensor that detects the Earth's magnetic field. When you wear it, the motor facing north vibrates slightly, giving the wearer an "intuitive" sense of direction.
Why is this cool? Imagine you are in the forest picking mushrooms at dusk and you lose your bearings. With this belt, you will always feel the "tingle" of the North Pole, which helps you stay on track without maps or compasses.
I ordered the electronic parts online for about $60.
Then I sewed and soldered the vibration motors onto a stretchy fabric belt.
I added a plastic buckle and used a textile tube to protect it.
As an orienteering enthusiast with a basic knowledge of electronics, I found this project both fun and useful. Whether you're exploring new trails or just love cool gadgets, the Compass Belt can be a great companion!
Direction adjustment
Adjustment knob to adjust the direction 0... 360 degrees
vibration modes
Double-click to switch between continuous and intermittent vibration. Single-click to switch between 1, 2, 3, or 4 seconds. Long press to quickly test that all vibrators are working.
Smart sensor
A self-calibrating magnetometer that recognizes whether you are walking, cycling, or standing still.
Battery-powered for hours of navigation.
Two batteries provide approximately 3 hours of use.
This circuit is designed to interface an Arduino Mega 2560 or Arduino Due with various components, including a Bi-Directional Logic Level Converter, a Trimmer Potentiometer, multiple Vibration Motors, an Adafruit BNO085 9-DOF Orientation IMU Fusion, and other components. The circuit is powered by 18650 batteries and includes a toggle switch for power control. The Arduino Mega 2560 or Arduino Due is programmed to control the vibration motors based on input from the IMU and other sensors, providing haptic feedback about north direction.
A microcontroller board based on the Atmel SAM3X8E ARM Cortex-M3 CPU.
Features multiple I/O pins, PWM outputs, and communication interfaces.
Used to safely interface between different voltage levels, such as 3.3V and 5V.
A variable resistor with a resistance of 10k Ohms, used for adjusting voltage levels.
Two resistors with a resistance of 4.7k Ohms and one with 10k Ohms, used for current limiting and as pull-up resistors for the I2C bus.
Multiple small motors used to provide haptic feedback.
A sensor module that provides orientation data using a combination of accelerometer, gyroscope, and magnetometer.
Provides power to the circuit.
Used to control the power supply to the circuit.
Used for user input to control the circuit's behaviour.
A DC-DC step-up converter used to boost the voltage from the battery.
A2: Connected to the wiper of the Trimmer Potentiometer.
A1: Connected to pin1 of the Resistor (10k Ohms) and pin2 of the Push Button.
D20/SDA3: Connected to HV4 of the Bi-Directional Logic Level Converter.
D21/SCL3: Connected to HV3 of the Bi-Directional Logic Level Converter.
5V: Connected to HV of the Bi-Directional Logic Level Converter.
GND: Connected to GND of the Bi-Directional Logic Level Converter, Resistor (10k Ohms), Trimmer Potentiometer, Adafruit BNO085, Boost module MT3608 and Vibration Motors.
VIN: Connected to L1 of the Toggle Switch.
D34 to D53: Connected to the positive terminals of various Vibration Motors.
GND: Connected to GND of the Arduino Mega 2560 or Arduino Due and other components.
HV: Connected to 5V of the Arduino Mega 2560 or Arduino Due.
HV3: Connected to pin1 of the Resistor (4.7k Ohms) and D21/SCL3 of the Arduino Mega 2560 or Arduino Due.
HV4: Connected to pin1 of the Resistor (4.7k Ohms) and D20/SDA3 of the Arduino Mega 2560 or Arduino Due.
LV: Connected to pin2 of the Resistor (4.7k Ohms) and leg2 of the Trimmer Potentiometer.
LV3: Connected to SCL of the Adafruit BNO085.
LV4: Connected to SDA of the Adafruit BNO085.
Wiper: Connected to A2 of the Arduino Mega 2560 or Arduino Due.
Leg1: Connected to GND of the Bi-Directional Logic Level Converter.
Leg2: Connected to LV of the Bi-Directional Logic Level Converter.
10k Ohms: Pin1 connected to A1 of the Arduino Mega 2560 or Arduino Due, pin2 connected to GND.
4.7k Ohms: Pin1 connected to HV3 and HV4 of the Bi-Directional Logic Level Converter, pin2 connected to LV of the Bi-Directional Logic Level Converter.
Positive Terminals: Connected to D34 to D53 of the Arduino Mega 2560 or Arduino Due.
Negative Terminals: Connected to GND of the Arduino Mega 2560 or Arduino Due.
3.3V: Connected to LV of the Bi-Directional Logic Level Converter.
GND: Connected to GND of the Arduino Mega 2560 or Arduino Due.
SCL: Connected to LV3 of the Bi-Directional Logic Level Converter.
SDA: Connected to LV4 of the Bi-Directional Logic Level Converter.
connected in series, + pole of first is connected to + pole of the second
- pole of First 18650: Connected to VIN- of the MT3608.
+ pole of second: Connected to VIN+ of the MT3608.
L1: Connected to VIN of the Arduino Mega 2560 or Arduino Due.
COM: Connected to VOUT+ of the MT3608.
VIN-: Connected to - pole of the first 18650 Battery.
VIN+: Connected to + pole of the second 18650 Battery.
VOUT-: Connected to GND of the Arduino Mega 2560 or Arduino Due.
VOUT+: Connected to COM of the Toggle Switch.
Pin1: Connected to LV of the Bi-Directional Logic Level Converter .
Pin2: Connected to A1 of the Arduino Mega 2560 or Arduino Due and connected to pin1 of 10 k Ohms resistor.
The Arduino Mega 2560 or Arduino Due is programmed using a sketch that includes several libraries for handling the haptic belt, compass, and button inputs. The code initializes the IMU sensor and sets up the vibration motors for haptic feedback. The main loop reads the button states and updates the compass heading based on sensor data or serial input. The haptic belt is updated to provide feedback based on the compass heading.
Libraries: Includes custom libraries for handling the haptic belt and compass, as well as standard libraries OneButton.h for the button clicks, Wire.h for I2C communication and Adafruit_BNO08x.h for the BNO08x sensor.
Pin Configuration: Defines pins for buttons and vibration motors.
Sensor Initialization: Initializes the BNO08x sensor and sets up the desired reports.
Main Loop: Continuously reads button states, updates the compass heading, and controls the haptic belt based on the heading.
I've heard that smart clothing is being developed nowadays. There's a website http://www.plusea.at/ which has surreal suggestions for smart clothing. In real life, for example, there is a smart shirt that detects if a person's back is not straight and then vibrates to remind them to straighten their back. Then there are smart socks that measure the temperature of a diabetic's feet and vibrate to warn if there is risk of infection. So this compass belt is a smart garment that tells me with a vibration which way is the north pole. It also works at night or if I'm totally blind. Through this electronics design, I got my first contact with the so-called I2C bus. To understand it better I put two Arduinos together, for example, so that one Arduino sends a text via I2C bus to the other and the other Arduino acknowledges the text as received. I also tried putting two separate sensors (MPU6050 and QC5883L) on the same I2C bus to the Arduino, and got it to work. In previous Arduino builds, I always put 9V batteries to power the Arduino, but for this project I found that the marketplace has a much better power supply unit with 2 Lithium - 18650 cells as power supply.
I have followed an instruction by Kyle Corry. That seems to be good for me, as I am going to orienteering competionions, even by night. Instructables, Kyle Corry
I would not have been able to write such a program, thumbs up to Kyle Corry! Github, Kyle Corry
My adaption here is still unfinished. Because MPU9250 seems to be not anymore produced, I use BNO055 (after going through QM5883L and MAG3110 and, because they were bad quality sensors, I shift to the better model). I also use logic level shifter, although most tutorials for BNO055 don't use them. I think, even though I connect only GND and 3.3V from Arduino, there still might get 5V from the Arduino through the A4 (SDA) and A5 (SCL) pin. There is a tilt compensation algorithm in compass.cpp with Xm=mag_xcos(thetaRad)-mag_ysin(phiRad)sin(thetaRad)+mag_zcos(phiRad)sin(thetaRad); and Ym=mag_ycos(phiRad)+mag_z*sin(phiRad); following the tutorial by Paul McWortherPaul Mc Worther
In my program the tilt compensation doesn't seem to work. For my own visualization and while testing I add the python program cuboid_draw_ursina_B.py, which reads out the COM6 port and draws a 3D cube like a symbolized arduino on the screen and writes the present orientation of the sensor on the same screen. "N", "NE", "E", "SE", "S", "SW", "W", "NW" So I checked with a compass at the same time, and it seems to work fine. I delete code rows from Kyle's program, which are related to calibration, because the BNO055 (Adafruit) has an own calibration routine.
Arduino Nano Uno (Sertronics Berrybase)
BNO055 (magnetometer) Sertronics Berrybase
coin vibration motors (Aliexpress)
Button switch
10K resistor
USB cable Belt Battery pack
Breadboard
Logic level converter
glue
Soldering kit
Adafruit_BNO055
utility/imumaths.h
Adafruit_Sensor
Kalman Filter
Instructions: While wearing the belt, make a mark on it every 45 degrees starting with directly in front of you. This is where the motors will be placed. The motor directly behind you is indicating south and the one to the right or left of it are southeast and Southwest. I will refer to all motors by their cardinal direction, assuming the North is the front of the belt. Secure the vibration motors onto the belt where marked. The vibration motors I used had sticky backings which made this easy. Assemble the circuit shown in the following schematic. Put the connected circuit consisting of Arduino Nano, magnetometer, button switch, logic level converter, and Power supply based on rechargable 18650 cells inside a suitable box, and secure the box onto the belt. Note: The schematic shows the vibration motors sharing a common ground wire - this makes attaching to the Arduino easier but is not required. In the photo, the power supply is not there, because at the time when I made this instruction, it was broke, because I inadvertently put the 18650 with wrong polarisation into the box. Some smoke rose and it smelled.
Fix the cables with electric tape. For the best results, get electrical shrink tube with equal width as the belt and wrap the whole belt, leaving just a USB cable exposed for the Arduino. Upload the sketch to the Arduino after installing the required libraries. Press the button to toggle between discrete mode (small pulse toward North only when direction changes) or always on mode (always vibrate toward North).
The vibration motors are very fragile, and the cables are hair-thin and the smallest pull destroys the connection. It is therefore necessary to protect the vibration motors against mechanical damage. For this, I glue vibration motor to a plastic base, which protects the vibration motor connectors. The plastic base is U-shaped. I use a soldering iron to make little holes in the side of the U-profiles, through which I braid the wires. I tie a knot in the ends of the wires so that the tension is not transferred to the soldering points. Then I solder the vibration motor to the supply cable and the ground cable.
I cut off the tips of an old glove and sewed these tips at regular intervals onto the rubber band, creating "nests" for the vibration motors. Then I first use Teflon tape to tape the motors inside the protection and cables firmly to the plastic base. The Teflon tape allows me to dismantle one of the motors later in case of a failure. (A normal scotch tape is very sticky and when unraveling scotch tape, one has to use scissors, and then it's easy to unintentionally cut the cables) I put a few more turns of surgical tape on top of the Teflon. Surgical tape is not so sticky, but yet strong.
This is what the test board looks like with the MLX90393 sensor, Arduino Uno and a voltage level shifter. This also shows the start end of the rubber band belt, where I sewed the buckle, and the "nest" of the first vibration motor. You can also see that I protected the belt with a bicycle inner tube. The black cable is the grounding cable that runs to each vibration motor. Powering the unit are two rechargeable 18650 cells. I have a lot of these 18650 cells because the night vision headlamps work with them, I also have a decent charger for them because of that. The power supply unit has one toggle switch "Normal" - "Hold" and its position must be "hold". On the other side is a white push button, and when you press it, the LED lights on the power supply unit turn on. Most of the time the LED lights don't switch on anyway, then I briefly plug in the USB cable, then it should turn on. The edge of the power supply unit has 3V pins on one side, and 5V pins on the other. In this setup, I attach the 5V pins to the 5V side of the arduino. Basically, this power supply unit also works as a charger, you just have to plug in the USB cable. Note that the cells must be inserted in the right way, otherwise the device will break with a bang and smoke will rise. That's why I taped the 18650 cells with white tape on the plus side, and the same for the unit with white tape. I destroyed two such units already. I think it's better to use a voltage level shifter, because the internal voltage level of most sensors is 3.3V rather than 5V, and 5V can break the sensors.
breadboard with the basic components: BNO055, logic level convertor, switch between continuous-intermittent and Arduion Nano. Clearly arranged so that it is easier to reproduce the electronic circuit.
The electronics box opened in a horizontal position, with the Arduino nano, logic level converter, power supply and IMU sensor, which is now horizontally. I don't think, it is possible to change the code so that the BNO055 can be in a vertical position, it is not meant to be like this, internal calibration of BNO055 will not work.
The vibration motor fixed to a leather belt in a simple fashion. To make the vibration more noticable, I put wadding under the vibration motor. If the vibration motors would be glued directly to the leather belt, the vibration doesn't feel so well.
Whole configuration of a haptic compass belt based on a leather belt, and the electronics box directly fixed in vertical position to the leather belt. In the vertical position, the box will swing very much, and it causes much distortion, but it is easier to put on, because everything is in one piece. Simple, but in practice this version is not that good.
The haptic compass belt with textile rubber band on the hips, and opened. I cut the breadboard, so that the BNO055 can be in the horizontal position. the vibration of the motors can be clearly felt on the skin because the textile elastic band holds the vibration motors gently on the skin. The fact that the box with the electronics is horizontal means that the electronics are less likely to be shaken when running quickly through the bushes and there are fewer signal errors. This means that there are fewer sudden tilting movements of the sensor, for example when you jump off a rock or stumble and fall. it is also better that all the electronics are separate from the actual haptic compass belt.
Elastic textile band variant, with bicycle inner tube as protection and a plastic quick-release buckle. The electronics are in the electronics box within a hip pocket. The conductors go from the belt to the hip pocket. To protect this section with small electrical conductors, a silicone tube is cut into a spiral with a knife and then wrapped it around the electrical conductors so that they cannot get tangled up in the bushes and on the branches of shrubs. I still want to leave the electronics on the breadboard, because I'm still not quite sure whether I want to stick with the BNO055 sensor, or whether it might be possible to switch to a circuit with a simpler and cheaper magnetometer without an acceleration sensor. (i.e. a full scale IMU sensor)
I am not happy with single wires from the arduino to each vibration motor. It creates a mess. Flat cable solution seems to be the cleaner solution. The distance from the bucke should reflect more the true directions, but as the waist of the human is not true round, but more like an ellipse, adjust the distances between the motor points. In case, other people with bigger waist want to use the compass belt, I use a waist circumference of 110cm. The point is, I want to make 2 vibration belts, so I do everything so , that I get 2 identically cutted flat cables. Everything is symmetrical around the center mark. All the cable ends I furbish with dupont connectors, and - very important - I test all cables, to be able to know, that there are no faults, and each and every wire is conducting from connector to connector.
The flexible textile band with sewed on buckle, a tape measure and the flat cable laid on the ground. I mark the middle point. On the flexible textile band, there are trial "nests" for the vibration motors, laid down in the distance.
The end of the female part of the buckle. In fact, the buckle is wider then the normal distance between two vibration motors, so there will be some mistake.
The ends of the flat cables are taped to the floor, so the flat cable is stretched straight. The number of wires on the flat cable is 26, so I leave the outer 3 wires without a cut. The cut point is marked first with felt-tip pen according to the table with cut length. Then, after all marks are done and also checked (from both sides, it should be symmetrical)
After all single wires are marked, I use a knife to slit the flat cable around the marked spot. I go through all the marked points.
This is the last stage. When the slittling has been done, continue the slitting so that finally the both symmetrical cutted flat cables come apart. Finally make the cuts with cutting pliers.
The vibration motors come with JST-SH male connectors. I therefore purchase the appropriate female connectors. These need to be soldered. The connector pins are very small.
It is better to use only a little tin to keep the wire strands as flexible as possible. The soldering point is more brittle and does not take as much bending.
I do not have a specialized crimping tool for JST-SH plugs. Therefore I took advice from an youtuber, which only soldered without a crimper. This picture shows how I clamped down the plug with scotch tape. With this small plug, it was very important to use only a very tiny amount of tin onto the soldering iron. If too much tin, it will also fill the metal plug with tin, and then it doesn't work. I press the metal part together with small pliers, so it fits exactly into the small slit of te plug. After the work, it must be tested. I also put a small drop of epoxy glue, where the electrical cable comes out of the plug.
I scraped open the earthing cable with a hot soldering iron under a magnifying glass. I firmly clamped the flat cable with the stand and the clamps. I pushed a piece of sheet metal into the gap between the earthing cable and the other cable as a base. Then carefully scrape away the cable sheathing with a hot soldering iron, taking care not to break off the strands. Also run the soldering iron under the strands. I stripped the connecting cables all together beforehand. When soldering, clamp the wires firmly and solder under a magnifying glass. Once you have managed to get the first solder joint right, the next solder joints are much easier because you only ever have to move the cable.
It is clear that soldered joints break off easily if a cable is constantly exposed to slight bending back and forth, as will certainly be the case with a compass belt. That's why I glued all the soldered joints firmly with epoxy glue (2-component adhesive). So first I wrapped a scotch tape around the plug to form a kind of “trough”. And then all the cable ends with the plugs are firmly glued to the table with Scotch tape so that nothing can move. Then I mix the epoxy glue and fill all the solder joints as well as I can with epoxy glue.And then I wait a day for everything to set. The next day I remove the Scotch tape and wrap insulating tape around the two conductors.
a diagram of the circuit. The picture shows an Adafruit BNO08x, but I actually have a BNO085 slimeVR. The interfaces are the same. The protection diodes are used to eliminate the sudden voltage spike in the inductive load when the supply current is interrupted. Indeed here the current spike is apparently small enough, the Arduino has not yet broken.
the picture shows how the flatcable is attached with two clamps. Below, a wire brush, which I used to remove the melted plastic from the soldering iron. Supporting the stable soldering iron with another bendable goose neck. I first look past the magnifying glass to make sure the soldering iron is roughly on target, then look through the magnifying glass.
the yellow wire is attached to the second goose neck clamp from below. The soldering iron rests on the second goose neck. Be sure to smear the soldering point with soldering fluid. I try to be sparing with the tin, as tinned wire is fragile, so it's best to have as short a length as possible tinned. Soldering with magnetic flexible goose collar clips speeds up the job, as you will be needing more than two hands.
The picture shows how I wrapped electrical tape around the outlet wires to the vibration motors to keep them neatly together. There may also be a shrink tube at this point.
The picture shows the entire flatcable. At this stage, it is important to test everything to make sure that all solder points are conducting electricity. I think this is a much neater solution than the previous one with separate wires, resembling spaghetti.
I got 3mm thick chipboard from a local wood shop. The thickness of the board must be 3mm, because that is the thickness of the vibration motor. The appropriate height is 45mm, because the width of the flexible textile band is 50mm, and I think the vibration motor housing should be a bit narrower. I drill 4 small holes with a diameter of 3mm, which I then use to sew this holder to the stretchy textile tape. For the motor I drill one 10mm hole, it will then fit tightly in the hole. You can drill several plates at the same time, and then under the plate stack there are 2 extra plates. When you do it this way, no chips come off the bottom plate and all the chamfers in the drill holes are clean and smooth. For JST-SH Plugs, 8mm drilling is sufficient. The vibration motor has a small outlet tongue, and for this tonge, I have to file a small recess with dimension of about 2mm x 2mm x 1mm, otherwise the motor does not fit snugly.
It is important to place the shrink tube BEFORE soldering the connector. Then I solder all connectors, and then I put a epoxi glue on all the solder points, and then I pull the shrink tube over the connector, when the epoxi is still wet.
This picture shows all 20 motor holder in one picture.
In connection with the flower watering arduino experiments, I wanted the same amount of water to always go to the four flower pots. I imagined it would be easy to do, but it's not. For some reason, the water always goes to one flower pot too much, and the other flower pot has nothing. I imagined that if I made holes of the same size, it would work. First, I made a trial version out of plastic blocks by gluing, and by poking with a needle I made holes of the same size as possible, a bit similar idea to hospital infusion drip devices. It didn't work, always a hole was a little bigger and then the water only went to one pot. That's why I decided that if I tried 3D printing, the holes should be precise. It still didn't work. What it looked like on the inside looked like half.
That's what the stl model looked like from the outside. I saved the "stl" file of that 3d model to the Cloud server, because the file was too big, I could not sent it as an email attachment. When I drew the model with the Unigraphics program, nowadays the name of the program is "Siemens NX", it was also a nice exercise in 3d modeling for me. For example, I had to remember that a 3d printer cannot have arbitrary protrusions, because it always prints a layer of plastic on top of another layer, and when that plastic is a bit hot, it might clump up a bit and lose its shape. Siemens NX is very suitable for modeling special wavy and curved surfaces.
I found the printing service on the www.tori.fi website. www.tori.fi is mainly an online sale of used goods, similar to what the yellow pages used to be. The 3-d model cost me about 15 Euro, and it came by mail quite quickly. Anyway, that 3d printing experiment wasn't worth the effort because my principle doesn't really work. The water dispenser must have a different shape. A functioning shape is on the website:
As an impulse buy, I bought a very cheap LIDAR. Partly also becuase I already saw from a youtube blogger that it is possible connect some lidars to the arduino. And even though the construction of the robot still seems like a too large project for me, well, I can still have dreams. ... to use servo motors, an arduino and other sensors to make such a nimble looking toy that can drive around my flat, and of course the Lidar would be the eye of the robot, so that it would not crash into doors and hurt himself, but my robot would always stop safely before any obstacle. This is still a complete dream. The hindrance is a lack of time and maybe also patience. I would probably need quite many weeks in a row to focus only on this, but I can't spend all weekends on this, after all, I have many other hobbies and other mandatory household chores. Anyway, this little project could be one little step forward on the long road to making my own robot. This is the link to where I bought this wonder device.
When I bought this LIDAR, I still imagined that I would connect it directly to an Arduino, at least that's what the Swiss blogger did, where he had a completely different converter, which I also bought, but which is now still awaiting its destiny while lying around among in the heap of my other electronic stuff. But actually this connection directly to the USB port of the computer is at least for me already easy, because the programming tool Visual Studio Code, and python is pre-installed and reasonably familiar to me. The required plug-in module for the computer's USB port can be found at the following link. According to wikipedia TTL stands for Transistor-Transistor Logic, the name means that transistors, bascially 2 circuits in series both amplifiy and performs logical functions. I don't think it means anything, but it's a converter between the USB port and the RS232 serial signal. I still remember that the abbreviation RS232 appeared with the C64 computer. Link:
There is also a reference on Lidar's sales site to find the right program snippets for decoding the signal. This Discord discussion group came into the public eye because an American posted secret photos and other information about the war in Ukraine, apparently just bragging how much he knew. On that specific channel named mb_1e2tydlidar-s4b there is a man called VIDICON who has been investigating this lidar deeply. Apparently the seller has not provided any documentation about this device. Not to say that it is not untypical of Chinese vendors. VIDICON apparently has the appropriate signal analysers to gradually work out what all the its and bytes of data packet means that the device is putting out. Wow, I have great respect that such gurus like VIDICON are around in this world. By the way, even though the code comes from github, that for me it was not exactly a one-to-one, but I had to experiment a bit, what kind of baud-rate it works with, turned out to be 153600. Fortunately my computer already had python installed with VS Code, but I had to add the additional modules pygame, serial, math and enum. I can't remember, something similar like sudo apt-get install -y enum was necessary or maybe the equivalent on a windows machine.
The program as listed here is not exactly the same as the github program, but in addition to baudrate, I changed the pygame command set_at, which produces only a very faint dot on the screen, and replaced it with a rectangle pygame.draw.rect, which is much better visible. I also tried pygame.draw.circle, but it's just too slow, makes a lot of horizontal lines on the screen. I also changed the magnification factor, distancef = distance / 40 then when I want more details to be highlighted, my own face profile as an example, then I set this factor to 3. However, I am quite unfamiliar with pygame and the whole program is like Hebrew to me, especially this class State(Enum). I'll still have to get familiar with it.
LIDAR connection scheme to computers USB port
Testing the LIDAR by walking around in my flat
This seems to be a pretty common type of Arduino project. I’m terribly lazy to water my flowers, often forgot for weeks, and I want the flower to be watered automatically with a pump whenever the water runs out. The setup includes an Arduino Uno, water pump, water hose, water level sensor and Arduino adapter card, and a blue relay.
Arduino program code