This RU-vid channel is for anyone interested in Internet of Things (IoT), wireless sensor networks (WSN), embedded systems, microcontrollers, sensors, protocols (Matter, CoAP, Thread, IP, IEEE802.15.4, BLE), interfaces (I2C, ADC and SPI) and the RTOS zephyr especially with SoCs from Nordic Semiconductor. The channel offers in-depth and easy-to-understand explanations and tutorials on these topics. From beginner to advanced, everyone will learn something and benefit from it. The channel shows how to use the latest technologies and the development of innovative projects from practice. Anyone interested in embedded systems, microcontrollers, and the Internet of Things will find a valuable resource here.
You are welcome. No, the book does not go into detail about the SMP. However, CBC-MAC and CTR are explained in more detail in the chapter about IEEE 802.15.4.
Yes, it can sometimes be a bit frustrating, especially if something has been changed in the basic settings during updates. What error is occurring? Perhaps someone can help.
Such a great hands on video.could you please explain the I2C code in zephyr in this that would be more helpful and much appreciated. Keep up the great work.
hi i wanna work with the lsm6ds3 integrated in the seeed when i build it always builds xiao_ble.dts not xiao_ble_nrf52840_sense.dts can you help me please
Hi, sir, I have a question. Have you tried the zephyr SPI comm with an NRF52832? I seem to have a trouble trying to communicating with a DWM1000 qorvo devboard. I manage to send 0x00, but failed to receive the chip ID, I always get 0xFFFFFFFF
You can use the function sprintf for example to generate a Json-String: static uint8_t buf[20]; static int buf_length; static int counter=0; while (1) { k_msleep(1000); buf_length= sprintf(buf, "{\"Counter: %d ", counter\"}); counter++; }
Did you ever find a way to upload code without entering bootloader mode every time? The button is so small it's a deterrent to use this chip in my projects.
Not really. You could try to solder a bigger switch to reset on the downer side and GND. Or using a J-Link programmer, but also not more comfortable. Or you are just using another dongle like from Nordic or MDK instead with the ner52840. MDK support also uf2 Bootloader as i remember.
Right, honestly, I am a hardware engineer and also would like to understand the deep therories in every functional diagram a long time. This video really inspir me a lot. thank you! I also also pricking up the Nordic nRF52840 :)
Hi Markus, This is a great and informative video for an introduction into the Zephyr I2C implementation. I have a quick question if I may; You described a method to connect to an I2C device if you don't have an inbuilt library and a method if you do have access to a library. My question is, how do you mix the two if you have for example a sensor on your I2C bus for which you need to write your own interface driver and another sensor on the I2C bus (at a different I2C address) that has a Zephyr driver? is it possible to use both I2C drivers methods on the same port? Cheers Michael
Thanks for the nice feedback. Yes, should be no problem. The access to the I2C-bus is not exclusive. At the end the driver uses the same instruction like writing it manually with the Zephyr functions.
I had an issue with my BMP280 sensor that the value printed out would not change. For anyone else that this might help I had looked in the driver code and the datasheet and figured out that I had to turn the device from sleep mode to normal mode (or forced). I did this by adding these lines: #define BME280_TEMP_OVER (3 << 5) //3.3.2 #define BME280_PRESS_OVER (3 << 2) //normal power. 3.3.1 of datasheet #define BME280_MODE 0x03 //normal mode #define BME280_CTRL_MEAS_VAL (BME280_PRESS_OVER | BME280_TEMP_OVER | BME280_MODE) err = i2c_reg_write_byte(i2c_dev, BMP280_I2C_ADDRESS, 0xF4, BME280_CTRL_MEAS_VAL); where 0xF4 is the ctrl_meas register. Thanks for the videos they are really helping with learning zephyr RTOS!
Hi Markus. I've been following your process with the dk version with a Pi4 and been able to fix some of the issues on the way. Now I'm getting stuck at the script for bootloader "Detecting C compiler ABI info - failed" Pardon my ignorance, but I can't seem to find a way for cmake to recognize the compiler. Would you be able to point me in the right direction?
You are probably missing something. The stick is an IEEE 802.15.4 sniffer. If you have set the correct channel, you will also receive ZigBee packets since IEEE 802.15.4 are the two downer layer from ZigBee. Is your ZigBee network encrypted? Have you set the network key in Wireshark? At least you should see the IEEE 802.15.4 part from the ZigBee-pakets
Hi, this video is very useful, thank you for sharing. I try with nRF52840 it is working but, when l try with nRF52832 it can't build. is the nRF52832 not support battery services? What is the problem?
The BAS support is normaly only a software point of view. If it canont be build with the nRF52832, I guess there is another problem. Maybe not enough memory.
Thanks for this. Can you please explain how the passcide or QR code gets generated? Can this be anything? I read somewhere that the QR code gets generated from the Vendor and product ID. How does the commissioner then check that this passcode or QR code is something valid that makes sense?
So close to working, but I keep getting the following error when I try to install the blinky application "Access protection is enabled, can't read device version." I have two NRF53 DK boards and it does the same thing on both, not sure why
Strange. Had newer problems with access protection. Did you maybe flash a programm where the FLAGS for access protection are set? You can try to setting the access protection to disable with an ERASEALL. See also: developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/security/ap_protect.html
@@wsniot I figured it out. In addition to running eraseall and recover, I had the wrong board configuration selected and I finally found the right one! All works now, thanks!
hi I am using nrf52840dk- nrf52840 board to interface the IMU Sensor lsm6dsox using I2C using nrf connect sdk for vs code. But I am facing error: i'm using the code in ncs/samples/sensor/lsm6dso here is prj.conf: CONFIG_STDOUT_CONSOLE=y CONFIG_I2C=y CONFIG_SENSOR=y CONFIG_CBPRINTF_FP_SUPPORT=y CONFIG_LSM6DSO_TRIGGER_GLOBAL_THREAD=y CONFIG_LSM6DSO=y here is thr overlay file: &pinctrl { i2c0_default: i2c0_default { group1 { psels = <NRF_PSEL(TWIM_SDA, 0, 26)>, <NRF_PSEL(TWIM_SCL, 0, 27)>; bias-pull-up; }; }; i2c0_sleep: i2c0_sleep { group1 { psels = <NRF_PSEL(TWIM_SDA, 0, 26)>, <NRF_PSEL(TWIM_SCL, 0, 27)>; low-power-enable; }; }; }; &i2c0 { compatible = "nordic,nrf-twi"; status = "okay"; pinctrl-0 = <&i2c0_default>; pinctrl-1 = <&i2c0_sleep>; pinctrl-names = "default", "sleep"; label = "I2C_0"; clock-frequency = <I2C_BITRATE_STANDARD>; lsm6dso@6a { compatible = "st,lsm6dso"; reg = <0x6a>; }; }; the probleme is when i flash my code this the output : *** Booting nRF Connect SDK v2.5.2 *** Testing LSM6DSO sensor in trigger mode. Could not set sensor type and channel can you please help me
I dont have an lsm6dso sensor, so i cannot test it. So you dont get an error warning? Can be also connection problem or a faulty sensor. You should check the I2C connection if the sensor response. If you dont have a i2c capture device try to communicate with the sensor directly.
Thanks for this amazing video. I followed your instructions step-by-step and everything works like a charm. Thank you and you just earned a new subscriber for your superb explanation and guidance. Thanks again