SWD programming using a RaspberryPi

I previously write this post on how to use a BeagleBoneBlack as a JTAG (SWD) programmer. It was fun but really slow. I port my code on RaspberryPI and now what was taken 5-8 hours is a couple of minutes.

I use this peace of code to reflash my TD1204 and TD1208 based both on EFM32 when bricked after unsuccessful update…

Get the post about beaglebone to find the right way to connect the TD to the RPI ; pin number to be use are written in the python file header.

Here is the python file to interact with SWD : https://github.com/disk91/PySWD/blob/master/RpiGPIO.py

I hop it will be soon integrated in the main PySWD project as the previous one.

 

Posted in Programming | Tagged , , , , , | Leave a comment

baby and child alarm clock

Arduino alarm clock for baby
Arduino alarm clock for baby

The purpose of this post was to create an alarm clock form my 2 year old son. I’m lucky he is sleeping well but is waking up before I do and generally call me and mum to go out of the bed, then play in his room … So the problem is that he never know if can wake up and play or if it is too early and have to stay in the bed. For this reason I created this alarm clock to easily indicate him if it is sleep or play time.

The system is quite simple : you program the number of hour you want him to sleep. During sleep time a led display a pink color. After this configured duration, the color change for green. When green, my son is allowed to wake up and play in his room

The post describe how to do it based on an arduino nano.

Continue reading

Posted in Hardware | Tagged | Leave a comment

Manage sigfox device for consumer deployment

sigfoxWhen you plan to deploy / sell sigfox based solution to consumer, you have to manage you device park. The sigfox network have a restricted radio medium to ensure you will not emit more than what you payed for you will be charged by them if a device you own is emitting, even if it is emitting out of your control. There is no network subscription like in 3G before being able to emit so anyone can emit.  That is why, to ensure every one is clear, you have an extra cost if you emit more than you are allowed or if you emit from a non registered device.

When you are designing end-user system you have no control on the device and if you propose a monthly fee to use your solution you will never sure the end user will unplug it once he stop to pay for your service. It means you could have a consumer stopping to pay for your service but a device continuing to emit and sigfox request you to pay for it.

Since the network allow you to have downlink message, now you have the capability to send order to your device and as a consequence allowing you to kill the device remotely. This is a good solution !

Next you have a new scenario where your end user finally decide to reuse your service and want to reactivate the device. At this step you won’t be able to communicate with it and you will have to find another way to reset its state to normal. You can eventually add a “factory reset” button or request to reflash it. There is another funny when : playing with the reboot time.

This post will describe how to lock a device to stop emit on network and how to play with the startup sequence to reset it. Read more !

Continue reading

Posted in Programming | Tagged , , , , | Leave a comment

Download Arduino 1.5.8 Beta for Mac Os X

arduino_logoAfter having update my Mac Os X, the java 6 have been removed and unfortunately Arduino request to use it. Personally I’m not really happy to install this not even more supported version of Java on my machine.

I was looking for the 1.5.8 Beta made for Java 7. I was not able to download it as the download stops in the middle even if I have a really good transfer rate at the beginning.

It seems that there is no mirror for Arduino (waouhou !! what that sh*t ?!?) and it seems this download problem is not really new. Here is the solution obtained from here. Use command line curl program:

curl -LOGC - http://arduino.cc/download.php?f=/arduino-1.5.8-macosx-java7.zip

The last step to be able to use it is to install Java from java.com

Posted in Programming | Tagged , , | Leave a comment

Draw breadboard circuits on Mac Os X

Tp7_schema_bbTo prepare some lessons on Arduino I was looking for a solution to draw breadboard schemas. I found fritzing open-source tool really great.

The tools works on Max Os X but also many other platform. It includes many standard component libraries with arduino board and shields and standard components.

The time to be ready for using it is not really more than a minute. It exports your design is PNG, JPG, SVG. It also includes different display to create circuit schema and PCB printout. But I did not use them, preferring kicad for such things. By-the-way, this is a really great tool.

Posted in Hardware | Tagged , | 1 Comment

Telecom Design sdk – track your stack usage

When trying to see what is happening with your code, you could try to follow stack size and current running time. Here is a simple function for doing the work :

void dsk_printDebug() {
#ifdef DEBUG
    uint64_t time;
    uint32_t msec, t;
    uint16_t hour, min, sec;
    time = TD_SCHEDULER_GetTime();


    msec = time & 0x3FFF;
    time >>= 15;
    t = time;

    sec = t % 60;
    t = t / 60;
    min = t % 60;
    t = t / 60;
    hour = t % 24;
    t = t / 24;


    #ifndef __ICCARM__
        extern char __cs3_stack[];
        char *limit=__cs3_stack;
    #else
        extern char CSTACK$$Limit[];
        char *limit = CSTACK$$Limit;
    #endif
        uint32_t *sp = (uint32_t *) __get_MSP();

    tfp_printf("[debug] Time:%d.%02d:%02d:%02d.%3d || Stack size : %d / %d \r\n",
        (uint32_t) t, hour, min, sec, (msec * 1000) >> 15,
        ((uint32_t)limit - (uint32_t)sp), CONFIG_STACK_SIZE
    );
#endif
}
Posted in Programming | Tagged , , | Leave a comment

Telecom Design SDK – TD_USER_Loop working way

After some discussions this afternoon with TD support and get a good advice from them, this post details some notice about TD_USER_Loop working way and power saving.

For those like experienced with Arduino, Telecom Design loop is not working like

while(1) {
   loop();
}

But it is called on Interrupt ; I don’t know why but I was expecting it to be called every tick (32KHz) which was a wrong assumption. In fact, this procedure is called on wake up from any interrupt. The frequency of call can’t be determined, it can be not called in a minute if no events occurs. That is why schedulers helps you to have a predictable call.

Posted in Programming | Tagged , , | Leave a comment