Saturday, December 22, 2018

BMP180 based USB atmospheric pressure monitor

We initially developed this USB atmospheric pressure monitor to study some operating characteristics of Bosch BMP180 sensor. BMP180 is low cost sensor to measuring barometric pressure and temperature. According to the data sheet this sensor can use to measure pressure ranging between 300hPa to 1100hPa. This sensor is introduced couple of years back but still it is popular due to lower cost and simplicity of it's interface.

BMP180 based sensor module

We did this unit to test BMP180 sensor more accurately and to study it’s behaviors. This unit is based on PIC18F2550 microcontroller and the main reason to select this MCU is because of it’s built-in USB 2.0 interface.

BMP180 sensor monitor application

To display sensor calibration data and it’s readings we did small windows application. This application display and plot temperature and pressure readings captured from the BMP180 sensor.

This unit is programmed to work as a USB HID device and no any special device driver is required to use this device. We test this unit in Windows 10 environment.

All the schematics, firmware files and source codes of this project are available at

Sunday, December 9, 2018

RTC based automatic LED lamp

This is real-time clock based automatic LED lamp which we originally designed to use as night light. This lamp can programmed to turn on and off at the specific time of the day. For example, it can program to turn on at 6 PM on each day and to turn off at 4 AM next day.

The core component of this project is PIC16F883 MCU and it's firmware is developed using MikroC Pro for PIC. We select this MCU because of it's 7 KB flash memory, I2C, UART, E2PROM and built-in 8-bit and 16-bit timers. In this system we use DS1307 RTC because of it's availability in the market and lower external component count.

Prototype version of RTC Lamp

This lamp is designed to work with commonly available 7W LED panels. In our prototype design we use 7W 24V warm-white LED module to test this system. To drive other LED modules change value of the R5 resistor of the current limiter circuit.

This system is designed to program using RS232 serial port. User can modify system time, light start and end times by connecting this system to any computer through RS232 serial port. To program and view system information user can use any serial terminal application like minicom, putty, etc.

Wednesday, September 26, 2018

HC-06 Bluetooth module programmer

HC-06 is quiet popular slave mode Bluetooth module designed for wireless serial communication. This module can pair with PC, mobile phone or with any master mode Bluetooth peripheral.

HC-06 Bluetooth module

This simple .net framework based application can use to modify following parameters of the HC-06 Bluetooth module:

  • Bluetooth display name
  • Pair password
  • BAUD rate
  • Parity check type

HC-06 Bluetooth module programmer

This application communicates with HC-06 module through COM port. To emulate the COM port use any Windows compatible USB to Serial converter. While at the testing we try following modules with this application:

  • FTDI FT232 USB to Serial module
  • CH340 USB to Serial module
  • CP2102 USB to Serial module

This application is developed using .net framework 4.5 and Visual Studio 2012. All source code and compiled binaries are available to download at This application and it’s source code are distribute under the terms of MIT License.

Thursday, August 30, 2018

How to resolve Windows 10 IoT core provisioning file flash failure

Recently I checked Windows 10 IoT core on Raspberry Pi 3 B+ board. While flashing this operating system using Windows 10 IoT dashboard I got "Failed to write provisioning file to the microsd card" error. I tried several options in dashboard UI but I got this error continuously.

After some google search I found a forum in Microsoft MSDN saying that this issue happen due to poor or slow speed SD cards. The SD card which I used previously is Kingston 16GB class 4 SDHC memory card. Later by following the site I flash this image into new class 10 SD cards and SDXC cards but repeatedly I got this same errors.

After couple of hours of digging I fix this issue by following the steps below:
  1. Open Windows 10 IoT core dashboard and try to install the OS image. 
  2. If you got "Failed to write provisioning file to the microsd card" error, close the Windows 10 IoT core dashboard.
  3. Open C:\Users\USER-NAME\AppData\Local\Temp\RPi2\msi\msicontent\Microsoft IoT\FFU\RaspberryPi2\ directory and make sure that the appropriate FFU file is located in that location. In my case FFU file is "Flash.ffu". If you can't locate the FFU files try to search the C:\Users\USER-NAME\AppData\Local\Temp\RPi2\msi\msicontent\Microsoft IoT\FFU directories.
  4. Open command prompt with administrative privilagues.
  5. Type "diskpart" and in the diskpart prompt type "list disk".
  6. Identify the SD card and it's disk number. In my system SD card is mapped to disk #1.
  7. Close diskpart prompt by issuing "exit" command.
  8. Now type this following command: "C:\WINDOWS\system32\dism.exe" /Apply-Image /ApplyDrive:\\.\PHYSICALDRIVE1 /SkipPlatformCheck /ImageFile:"C:\Users\USER-NAME\AppData\Local\Temp\RPi2\msi\msicontent\Microsoft IoT\FFU\RaspberryPi2\Flash.ffu". In this command be sure to replace PHYSICALDRIVE1 with the value you found in step 6. For example if the disk #2 is mapped as SD card then replace PHYSICALDRIVE1 to PHYSICALDRIVE2.
Once I flash my SD card(s) with above steps Windows 10 IoT core start successfully in Raspberry Pi 3 boards. Also I checked this with class 4, class 6 SD cards and operating system flashed successfully on all devices.