Тёмный
Steppe School
Steppe School
Steppe School
Подписаться
Hi, my name is Yerke, a founder of Steppeschool.

I got a Bachelor's degree in electronics and a Master's degree in robotics and mechatronics. Currently, I am doing my PhD in robotics. I've always had a keen interest in robotics and used to spend hours developing robots and devices.
I dream of building an educational platform on robotics to make knowledge accessible to everyone and to help beginners and enthusiasts who want to grow into professional engineers.
Why Steppeschool? Mastering robotics requires not only understanding theoretical and practical aspects but also implementing very abstract ideas into practice. My aim is to equip YOU with the necessary theory and reinforce YOU to use it practically.

STM32 Intro course:
www.steppeschool.com/courses/stm326

You can support me on Patreon and to source code and complementary materials of all my projects:
www.patreon.com/user/posts?u=80399744


P2 STM32 USB Speaker: USB Audio Library
28:29
6 месяцев назад
Use STM32 Flash Memory to store data Permanently
13:34
9 месяцев назад
STM32 Intro Course announcement
1:58
Год назад
C programming: double pointers
5:16
Год назад
Комментарии
@Sx107music
@Sx107music 4 дня назад
Did you encounter issues when in some USB ports you get flooded with isoOutIncomplete and glitches since a packet is received not each SOF?
@lohikarhu734
@lohikarhu734 4 дня назад
Nice one... useful function, simple presentation. Thx!
@matin9005
@matin9005 7 дней назад
🫡❤️
@douglasrom40
@douglasrom40 11 дней назад
Congrats!!! Smooth explanation.
@sumedhburbure4173
@sumedhburbure4173 12 дней назад
wonderful demonstration of the PID controller!
@kishankumarhazari3692
@kishankumarhazari3692 14 дней назад
Good work bro 👍👍
@buuvo4711
@buuvo4711 17 дней назад
You only plot the Spectrum of a signal. Can you have a video to guide and filter the signal?
@buuvo4711
@buuvo4711 17 дней назад
Sorry ! You only record in a half of data_i2S buffer with statement :HAL_I2S_Receive_DMA(&hi2s2, (uint16_t *)data_i2s, sizeof(data_i2s)/2 but you write data in full data_i2S buffer in SD card with statement write2wave_file(((uint8_t*)data_i2s), WAV_WRITE_SAMPLE_COUNT); Can you explain to me?. Thank you very much!.
@jf4-d5m
@jf4-d5m 20 дней назад
Thank you! The concepts are explained neatly, and the video is one of the best-structured ones I have watched on Kalman Filters!
@faezefaraz
@faezefaraz 24 дня назад
Why does it show zero speed in all cases when I run this code?
@jakvirtua5631
@jakvirtua5631 27 дней назад
Thanks for sharing. These simple examples explain the concepts crystal clear... concise and substantial.
@ltlt6117
@ltlt6117 27 дней назад
Hi Why uart sends data reversed For example If I want to send 1139(ascii) = 0473(hex) When uart sends data i have 7304(hex) in my computer How I can prevent this?
@Flawake
@Flawake День назад
Can't say without code. But you should take a look into little endian and big endian
@ltlt6117
@ltlt6117 День назад
@@Flawake thanks👍
@AbbasHashemi-pe2st
@AbbasHashemi-pe2st Месяц назад
was very useful, thanks! Are you Afghan brother?
@padakathu2882
@padakathu2882 Месяц назад
thank you, excellent, very clear explanations
@electronic-ebox6403
@electronic-ebox6403 Месяц назад
IS IT POSSIBLE TO IMPLEMENT THIS ON MULIPLE ADC CHANNELS? I AM USING FOR SING CHANNED BUT FAIL TO IMPLEMENT ON MULTIPLE ADC CHANNEL..
@steppeschool3629
@steppeschool3629 Месяц назад
of course you can. Just create multiple instances
@electronic-ebox6403
@electronic-ebox6403 Месяц назад
@@steppeschool3629 okay. you mean fir_instance[12], fir_in_arm[12] and fir_out_arm[12] is only modification in program for 12 ADCs? or something more nedded? am I correct?
@hasanoktem8792
@hasanoktem8792 Месяц назад
the repository is not public
@user-ld9fi4ej6q
@user-ld9fi4ej6q Месяц назад
nice tutorial, hello from Ukraine
@steppeschool3629
@steppeschool3629 Месяц назад
Thanks! Слава Украине!
@ApertureApex
@ApertureApex Месяц назад
Excellent video! Thank you.
@steppeschool3629
@steppeschool3629 Месяц назад
Thanks a lot!
@batosato
@batosato Месяц назад
Thanks for the video and a great tutorial. Could you do a video on how we use stm32 to make USB microphones? I would like to connect two or more microphones and record the multichannel sounds.
@steppeschool3629
@steppeschool3629 Месяц назад
Thanks a lot. I can make a tutorial about the USB microphone, but currently, I do not have much time.
@user-ox4qj7ue9x
@user-ox4qj7ue9x Месяц назад
hey I have one doubt I want to connect more led stripes in parallel then i want use the different timer pwm but I have problem in the configuration DMA request another timer dma does not show that dma trigger option But I will change the code like that but my code run only single timer In my main c this for tim 2 reset_all_leds(leds, NUMBER_OF_LEDS); HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_3, (uint32_t*)leds, NUMBER_OF_LEDS1 * 24 + 24); HAL_Delay(300); set_all_leds(leds, NUMBER_OF_LEDS1); HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_3, (uint32_t*)leds, NUMBER_OF_LEDS1 * 24 + 24); and this one is same code tim 3 led_pos_counter++; if(led_pos_counter == NUMBER_OF_LEDS) { led_pos_counter = 0; } temp_neo_pixel = circular_pattern_led[led_pos_counter + NUMBER_OF_LEDS]; circular_pattern_led[led_pos_counter + NUMBER_OF_LEDS]; circular_pattern_led[2* NUMBER_OF_LEDS]; HAL_TIM_PWM_Start_DMA(&htim3, TIM_CHANNEL_1, (uint32_t*)&circular_pattern_led[led_pos_counter], NUMBER_OF_LEDS * 24 + 24); HAL_Delay(100); circular_pattern_led[led_pos_counter + NUMBER_OF_LEDS] = temp_neo_pixel;
@XuanpengZhao
@XuanpengZhao Месяц назад
YOU ARE THE LIFE SAVER
@steppeschool3629
@steppeschool3629 Месяц назад
thanks!
@flowmeet
@flowmeet Месяц назад
Excellent job man.
@steppeschool3629
@steppeschool3629 Месяц назад
Thanks!
@cglike
@cglike Месяц назад
Here is a note in datasheet, `Low Byte of Gyroscope Y-axis data. To convert the output of the gyroscope to angular rate measurement use the formula below: Y_angular_rate = GYRO_YOUT/Gyro_Sensitivity` What is Gyro_Sensitivity ?
@steppeschool3629
@steppeschool3629 Месяц назад
You just define the full-scale range (250 dps, 500 dps, etc) using a register of the IMU senor. Based on that you can compute the gyro sensitivity. For the full info, you can refer to my course: www.steppeschool.com/courses/stm32-hal-orientation-estimation
@Vutung8988
@Vutung8988 2 месяца назад
11:17 can you explain more about reg MAG_DATA_ONSET? why read 8 byte in that? many thanks!
@steppeschool3629
@steppeschool3629 Месяц назад
Sorry for the late reply. We just read 6 bytes for magnetometer data (2 bytes x 3 axes) and 2 additional bytes, so the magnetometer will update the readings. We just do serial read starting from MAG_DATA_ONSET. For full info, you can refer to my course: www.steppeschool.com/courses/stm32-hal-orientation-estimation
@Vutung8988
@Vutung8988 Месяц назад
@@steppeschool3629 is the address of MAG_DATA_ONSET same the MAG_ST1 (10h)?
@JohnJ-zj8ol
@JohnJ-zj8ol 2 месяца назад
Thanks a lot! what is the rest of line 106? printf("frequency %f: %f ", ((float32_t)(i * SAMPLING_RAT) / FFT_LENGTH), out...
@steppeschool3629
@steppeschool3629 Месяц назад
just bracket with a semicolon
@venkygoud7421
@venkygoud7421 2 месяца назад
Nice video,great explanation
@steppeschool3629
@steppeschool3629 Месяц назад
Glad you liked it!
@emyemy7504
@emyemy7504 2 месяца назад
Great Job. How do I get to interface mpu6050 with stm32 so that I only get readings anytime there is an interrupt coming from the interrupt pin of the mpu6050 when there is linear or rotational movement?
@steppeschool3629
@steppeschool3629 2 месяца назад
The easiest solution will be using the timer update interrupt in STM32 MCUs. Every time this event occurs, you can sample the IMU sensor.
@steppeschool3629
@steppeschool3629 2 месяца назад
What if you use the external interrupt to trigger reading the IMU sensor?
@batosato
@batosato 2 месяца назад
Thank you for the video and a great tutorial. If you don't want to remove the microphone from the board then switch to I2S3 instead and follow the tutorial. The recordings will be done without any hassle :)
@steppeschool3629
@steppeschool3629 2 месяца назад
Thanks for the info!
@reportimojega1522
@reportimojega1522 2 месяца назад
Do I need to solder with Nucleo-L412KB? Also how would I if I need to. Thanks.
@steppeschool3629
@steppeschool3629 2 месяца назад
I am sorry for the late reply. As far as I know, Nucle-l412kb does not have such functionality
@vix_s_hnu
@vix_s_hnu 2 месяца назад
I got error " undefined reference to 'arm_rfft_fast_init_f32'. I imported the DSP library as you mentioned in the other videos. Why i am stille getting the error?
@amitchautmal
@amitchautmal 2 месяца назад
How to store structure data to eeprome and read back
@mursalaboobacker3593
@mursalaboobacker3593 2 месяца назад
nice work. can i get all the files and code for your all videos when i join to steppeschool or i need to jion through patreon. which one i need to choose. cammant your answer please. i really like your videos and excited to making it my own.
@steppeschool3629
@steppeschool3629 2 месяца назад
Either works, but if join Patreon, you can write me direct messages
@subhamdas2491
@subhamdas2491 2 месяца назад
what is the perpose of filter out variable
@steppeschool3629
@steppeschool3629 2 месяца назад
Hi, 'filter out' is the output of the filter
@user-hu7iw5cp9j
@user-hu7iw5cp9j 2 месяца назад
Great Explanation!
@steppeschool3629
@steppeschool3629 2 месяца назад
Thanks
@BroMalte
@BroMalte 2 месяца назад
Hello Stepp School. I have everything setup as explained, yet im never able to enter the callback, i feel i have followed everything, do you have any idea as to what could be the reason as to why my callback is not working? I have enabled IT on my timer, i have run the HAL_TIM_Base_Start_IT(&htim2); and i have created a callback function with some actions to take during the interrupt. All i have in my main loop is a delay, and its just stuck in there, the interrupt never fires.
@steppeschool3629
@steppeschool3629 2 месяца назад
Hi, how do you check that the callback function is running? and what is the frequency of it?
@BroMalte
@BroMalte 2 месяца назад
@@steppeschool3629 For now, i am just using the live expressions and breakpoints. i also have an oscilloscope set up to sniff what is happening on my board, regarding the pins i am working on. Right now the frequency of the function is 100ms, my idea is i have to set the interrupting timer to fire first at 100ms, make a change to my signal and set the next interrupt in 9,9seconds, so 10 seconds total, make another change and that is it, after that just stop the timer. However i tried something simple, just toggling a pin at 1000Hz, not seeing anything there either. i have used this in other programs, and worked just fine. I think im going to try to restart the entire project and start with just this functionality and see what is going on.
@janpribyslavsky1554
@janpribyslavsky1554 2 месяца назад
Thank you for this video. It saved me lot of time. Can I also ask how to detect the event of disconnecting the USB cable? Otherwise, in such event, the output buffer keeps playing with no new data coming which makes annoying sound.
@steppeschool3629
@steppeschool3629 2 месяца назад
There is another callback function for disconnection. Unfortunately, I cannot check it right now. Hopefully, I can check it after a couple of hours
@steppeschool3629
@steppeschool3629 2 месяца назад
Inside usbd_audio.c, there is a function USBD_AUDIO_IsoOutIncomplete. Most probably, this function is invoked when the USB cable is disconnected. You can check it by using breakpoints or printing some messages. If this is the case, you can signal the audio speaker to stop audio streaming.
@janpribyslavsky1554
@janpribyslavsky1554 2 месяца назад
@@steppeschool3629 This worked. Thank you again! I also discovered, that there are functions HAL_PCD_SuspendCallback() and HAL_PCD_ResumeCallback() in usbd_conf.c that can be used for this purpose as well.
@steppeschool3629
@steppeschool3629 2 месяца назад
@@janpribyslavsky1554 🤙👍👍
@janpribyslavsky1554
@janpribyslavsky1554 2 месяца назад
Thanks!
@steppeschool3629
@steppeschool3629 2 месяца назад
Thanks a lot!!! I greatly appreciate your donation
@anupriyavishnoi6548
@anupriyavishnoi6548 2 месяца назад
When i am copying hal_statustypedef in another c file then it is not coming as Library function , hal_ok is also coming as simple line not as function. Can you please help me why it is happening . There is syntax error coming.
@steppeschool3629
@steppeschool3629 2 месяца назад
Hi, I do not get your question fully. What do you mean by copying hal_statustypedef?
@jitendrasingh-ob8nk
@jitendrasingh-ob8nk 2 месяца назад
Excellent work please tell me the motor voltage rating & rpm rating and torque and max current , also size of wheel diameter, in short please give the links for motor & wheels of pololu
@steppeschool3629
@steppeschool3629 2 месяца назад
Check this link. You should get all the info there: www.pololu.com/product/3073
@SimplementeNico
@SimplementeNico 2 месяца назад
Hi, what is your main code? I've copied all the code you showed in the video, but I get no audio.
@dwieztro6748
@dwieztro6748 3 месяца назад
Hii can you use stm32f030 to read ppm and work with servo pwm?
@lohikarhu734
@lohikarhu734 3 месяца назад
I figured that diff gain also increases response speed to perturbations of the motor speed, so that it may be possible to reduce the P gain... In your demo, it seems that you are showing the response from an uncontrolled state to a controlled state, rather than response to a perturbation of the load? Or? But, I'm just some old guy, who never did learn the mathematics part, more of a "hands-on" and conceptual driver.... 😀
@lohikarhu734
@lohikarhu734 3 месяца назад
It would be interesting/useful, to show, on the graph of the motor speed, the PWM value that is applied, so that we could see the action of the differential and proportional functions make the quick response of the PWM, and the slower changes due to the integral part... Hmmm... Possibly also show the values of each of the three correction terms? But, maybe that's in the next video?
@steppeschool3629
@steppeschool3629 3 месяца назад
It could be really interesting to show that using an oscilloscope, which I do not have currently😀
@AdaptivePhenix
@AdaptivePhenix 29 дней назад
At a sample rate of 1KHz?
@rabboud556
@rabboud556 3 месяца назад
I am not sure but I think your convolution formula should be y[n]= sum of (x[n-k] x h[k]) with k=0 to k=N ( N order of the filter). not sum of(x[n-k] x h[n]). I am sorry, I may be wrong!
@jonathanrodriguez8219
@jonathanrodriguez8219 3 месяца назад
Nice!! a lot learned!
@steppeschool3629
@steppeschool3629 3 месяца назад
Glad to hear it!
@lohikarhu734
@lohikarhu734 3 месяца назад
Pay to play... I guess it's a way of getting actual income for the work
@lohikarhu734
@lohikarhu734 3 месяца назад
Looks like nice way to handle "edge conditions".... I haven't read the timer information, yet, so I was surprised to see overflow on such a low speed operation. Thanks!
@noebrasseur3062
@noebrasseur3062 3 месяца назад
Hello, thank you for your video, but i have a major problem, when i go to debug configurations and try to enable the SWV, i can tick the option... would you have an idea about how to resolve this problem and why it occures ?
@noebrasseur3062
@noebrasseur3062 3 месяца назад
I am not working on an Nucleo but on a STM32F303 dicovery, might it be the problem ?
@steppeschool3629
@steppeschool3629 3 месяца назад
check the user manual of your discovery board. There might be some jumper to solder. Which board exactly are you using?
@kalyanijog
@kalyanijog 3 месяца назад
Trace become disable while debugging , what to do?
@steppeschool3629
@steppeschool3629 3 месяца назад
Hi, I do not get your question fully. What is the problem?
@kalyanijog
@kalyanijog 3 месяца назад
I debug the code and open window panel and click on swv viewer and ticket the Bo bit ,then click on ok , then click on trace button and click on resume run code but " trace button gets disabled" and program shut down unexpectedly what to do
@christianlabanca5377
@christianlabanca5377 3 месяца назад
Hi, how did you calculate the Covariance matrices?
@steppeschool3629
@steppeschool3629 3 месяца назад
There is an arm math cmsis library that allows us to do linear algebra operations within the MCU. You can get full information on my course: www.steppeschool.com/courses/stm32-hal-orientation-estimation