There were a lot of complaints regarding the power consumption of HM-10 ble module during sleep mode. My formula for computing how long the battery will last when the HM-10 is configured as ibeacon is quite close to being accurate but surprisingly in the real world, the module does not performed as described by the manufacturer. As proof I took a screenshot of the HM-10(IBEACON) and an AXAET Ibeacon(ZIRUZBEACONS). Both ibeacons having the identical configuration(TX Power= -23db and Advertising Frequency=1200ms) but the rssi and measured power had huge differences which indicates that the HM-10 is not performing as expected.
There are many work arounds to make the HM-10 consume less power and one of them would be to flash new firmware to the TI CC2541 chip using BlueBasic. Uploading a new firmware is quite risky and very challenging but if you succeed in this endeavor, it will be very rewarding because you can access all of the available resources on the TI CC2541 chip. You can even take the customization further to add buzzer, temperature sensors, heart rate monitors, monitor the current battery charge level and many more without the need of external microcontroller.
Here is how to connect the cc debugger to HM-10 BLE Module:
The downside of this is like saying good bye permanently to the original firmware that came with the ble module but in terms of benefits, it is well worth it.
Showing posts with label HM-10 Ble Module. Show all posts
Showing posts with label HM-10 Ble Module. Show all posts
Tuesday, June 16, 2015
Friday, May 29, 2015
HM-10 Over-the-Air Configuration Software from the Manufacturer
About 3 months ago, I attempted to test the available software provided by the manufacturer of HM-10 modules, and I failed to make it work but today, I tried to experiment with it and to my surprise, I was able to make it work! This probably because the software has been updated or it could be that my previous configuration of HM-10 was wrong, but I am quite sure that I used the same configuration as before.
The first step I did was used my configuration as indicated in my previous article(Configuring HM-10 to Support Over-the-Air(OTA) Update). Then, I downloaded the new apk from the manufacturer's website but I dont recommend downloading the software from there because they frequently update the files. Here is the apk file I used for my experiment and testing: http://bit.ly/1FkfwJ3. And check the screentshots below as a result of my successful testing:
The Initial Screen. I pressed the search button.
The app found my ibeacon, I had to tap the ibeacon to configure:
The configuration screen appeared, The initial status message is "connecting to ibeacon....", so I had to wait until it connects to the ibeacon. This is where my precious testing fails, the app could not connect to the ibeacon. But today, it mysteriously connected successfuly.
I tried to type "AT" on the input text and pressed the send button next to it, and the ibeacon responded "OK":
All AT commands should work with the software except those that will affect the ibeacon module's connectivity.
Thursday, May 7, 2015
Top 5 Benefits for Students can get from Ibeacons
Students are like employed people busy building up their skills, preparing for an exam, collaborate with colleagues to work on a group project, or had to stay on the lab to help Professor X finish his latest bionic brain designs. They have to work hard in order to pass their subjects. With their busy lifestyle, there are still so many grunt works that needs their attention and there may be social events and promos that they might miss. These could be very important for every students to bond with friends and cement connections. Thank God, Ibeacon technology is here to make sure every important events at school is not missed. I think these are the following top 5 benefits for students can get from ibeacons:
1. Receiving notifications and reminders using location specific devices coupled with visually appealing apps can truly make schools interactive and will captivate the students' fascination which will increase the students' desire to learn.
2. Getting every students' preference can help School Administrators send relevant notifications. It can also help Guidance Councilors formulate better career guidance program for every students.
3. In the classrooms, attendance can be taken automatically as the student enters the classroom, students can request the teacher's assistance while doing some experiments, resulting in a much better teacher-student relationship.
4. As mentioned above, with the help of ibeacons, important social, organizational, and/or sporting events can never be missed by the students because they could receive relevant reminders and notifications related to such events.
5. A truly interactive game that can help students learn with the help of ibeacons can also be developed. The interactive game could be related to improving and honing the students' social skills, or help them develop interest in solving some of Math's unsolved problems.
1. Receiving notifications and reminders using location specific devices coupled with visually appealing apps can truly make schools interactive and will captivate the students' fascination which will increase the students' desire to learn.
2. Getting every students' preference can help School Administrators send relevant notifications. It can also help Guidance Councilors formulate better career guidance program for every students.
3. In the classrooms, attendance can be taken automatically as the student enters the classroom, students can request the teacher's assistance while doing some experiments, resulting in a much better teacher-student relationship.
4. As mentioned above, with the help of ibeacons, important social, organizational, and/or sporting events can never be missed by the students because they could receive relevant reminders and notifications related to such events.
5. A truly interactive game that can help students learn with the help of ibeacons can also be developed. The interactive game could be related to improving and honing the students' social skills, or help them develop interest in solving some of Math's unsolved problems.
Saturday, October 25, 2014
The proper way of turning the HM-10 into Ibeacon
From my few days of testing of HM-10 as Ibeacon, I noticed that just by activating the ibeacon with the following AT command is not enough:
With this configuration alone, HM-10 will still be consuming its normal rated power which is
about :
But if your requirement is just for indoor use and would want it to consume much less power, here is the proper way to configure the BLE module but take note that the lesser power it consumes, the shorter the broadcasting range it becomes and for sure with this configuration, it can not go further than 10meters:
With this configuration, the HM-10 BLE Module can drain the fully charged 580mah lipoly battery in 6 months.
AT+IBEA1
With this configuration alone, HM-10 will still be consuming its normal rated power which is
about :
Rated Power = 3.3V*8.5mAmp = 28.05mWThis would mean it would only take a few days to drain the 580mAH Lipoly battery with this configuration but of course, the broadcasting range is still be at the confirmed value of above 100meters.
With this configuration, the HM-10 BLE Module can drain the fully charged 580mah lipoly battery in 6 months.
Friday, October 24, 2014
More Fun with HM 10
I got more curious about how to use the HM 10 BLE(Bluetooth low energy) module and asked myself if it will really be able to pair with arduino and instruct the arduino to do some tasks via an android phone. So did some research if anyone from the internet has posted similar project and I was so lucky that I found one that I thought is easy and would simply answer my question.
The original post can be found through this link: Control RGB lights from Android with Arduino & Bluetooth LE (BLE)
Aside from following the processes exactly as described in the article, I also did some twist to adapt it to what is available in my chest. The first thing I did is to deactivate the ibeacon function by issuing the following AT command:
Ibeacon is activated if it returns 1 and deactivated when it returns 0.
Here are the materials and components I used:
1. HM10 BLE module
2. Arduino Pro Mini 8Mhz and 3.3V
3. Dupont wires
4. The RS232-TTL Adaptor that I used to upload sketch on the Pro Mini
5. Li-Poly Battery
6. BreadBoard
I will still be using the same connection just like what I did in my previous testing of HM-10 and was described in detail in my previous post. If you haven't read it yet, you may click on this link: HM10 BLE Module with Ibeacon .
With that set-up, all I need is to upload the sketch as described in the reference article but since I don't have an RGB LED, I could just use the LED in the arduino pro mini which is connected to digital pin 13. Digital pin 13 is not a PWM pin so I can only turn it on or off and not able to dim it.
I also downloaded the android app in the reference article and installed on my android phone.
Test Result:
It was awesome!!!
Here's the video of my testing:
This is the sketch that I used:
I am still using the software serial library because that was my previous setup and I wanted to use the original serial port to communicate with the pc when ever it is needed or necessary.
The original post can be found through this link: Control RGB lights from Android with Arduino & Bluetooth LE (BLE)
Aside from following the processes exactly as described in the article, I also did some twist to adapt it to what is available in my chest. The first thing I did is to deactivate the ibeacon function by issuing the following AT command:
AT+IBEA0To check whether ibeacon function is activated or not, this AT command is used:
AT+IBEA?HM-10 will respond: OK Get 1|0
Ibeacon is activated if it returns 1 and deactivated when it returns 0.
Here are the materials and components I used:
1. HM10 BLE module
2. Arduino Pro Mini 8Mhz and 3.3V
3. Dupont wires
4. The RS232-TTL Adaptor that I used to upload sketch on the Pro Mini
5. Li-Poly Battery
6. BreadBoard
I will still be using the same connection just like what I did in my previous testing of HM-10 and was described in detail in my previous post. If you haven't read it yet, you may click on this link: HM10 BLE Module with Ibeacon .
With that set-up, all I need is to upload the sketch as described in the reference article but since I don't have an RGB LED, I could just use the LED in the arduino pro mini which is connected to digital pin 13. Digital pin 13 is not a PWM pin so I can only turn it on or off and not able to dim it.
I also downloaded the android app in the reference article and installed on my android phone.
Test Result:
It was awesome!!!
Here's the video of my testing:
This is the sketch that I used:
#include <SoftwareSerial.h>
int bluetoothTx = 3; // TX-O pin of bluetooth mate, Arduino D2
int bluetoothRx = 2; // RX-I pin of bluetooth mate, Arduino D3
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
const int redPin = 13;
const int greenPin = 5;
const int bluePin = 6;
void setup() {
// initialize serial:
Serial.begin(9600);
// make the pins outputs:
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
bluetooth.begin(115200); // The Bluetooth Mate defaults to 115200bps
delay(100); // Short delay, wait for the Mate to send back CMD
bluetooth.println("U,9600,N"); // Temporarily Change the baudrate to 9600, no parity
// 115200 can be too fast at times for NewSoftSerial to relay the data reliably
bluetooth.begin(9600);
}
void loop() {
// if there's any serial available, read it:
if(bluetooth.available()) // If the bluetooth sent any characters
{
while (bluetooth.available() > 0) {
// look for the next valid integer in the incoming serial stream:
int red = bluetooth.parseInt();
// do it again:
int green = bluetooth.parseInt();
// do it again:
int blue = bluetooth.parseInt();
// look for the newline. That's the end of your
// sentence:
if (bluetooth.read() == '\n') {
// constrain the values to 0 - 255 and invert
// if you're using a common-cathode LED, just use "constrain(color, 0, 255);"
red = 255 - constrain(red, 0, 255);
green = 255 - constrain(green, 0, 255);
blue = 255 - constrain(blue, 0, 255);
// fade the red, green, and blue legs of the LED:
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
}
}
}
I am still using the software serial library because that was my previous setup and I wanted to use the original serial port to communicate with the pc when ever it is needed or necessary.
Subscribe to:
Posts (Atom)


