- Hardware
- 802.15.4/Zigbee
- CAN
- Ethernet
- USB
- Other
- Software
- Android
- Web
- PC/Others
- Hard/Software
- Other/Mechanical
- Documents
This is an old revision of the document!
Welcome to Johan Böhlin's project page!
This is a collection of software and hardware projects I have developed. Here you will find descriptions, schematics, images, downloads etc. for every project where it's available. If you got any question, suggestion or if you have sucessfully got any of the project working for you don't hesitate contacting me!
This is also a ego advertising column where i show what I have done and what my experiences are.
/ Johan Böhlin
Cykelstationer is an Android app to help you find Styr & Ställ public bicycle stations in Gothenburg, Sweden.
With Cykelstationer you can, in a list or on a map, find the closest station with available bikes or free stands.
There is also a widget you can add to your homscreen where you can see available bikes and free stands for a specific station. Just tap the widget to update it.
Download at https://play.google.com/store/apps/details?id=com.fjun.cykelstationer
sp_server is a HTTP server implemented in C which provide a REST API for Spotify, using libspotify. It implements almost all the API provided by libspotify 10.1.16. The source is available at bitbucket.
Its currently running on a raspberrypi connected to my home entertainment system.
A new version of NextDeparture was released yesterday. Now supporting the new widget type “Route” which displays a route between two stops, including changes. Also its now possible to change text and background color as well as transparency. Download Next departure here.
As a request from MikroElektronika, I'm starting a project to port the uIP-stack to MikroElektronika's microC compilers for PIC, dsPIC and PIC32. The ports will be available online as open source.
I'm currently working on an application for remotely reading and sending SMS on an Android device via a web interface. The fun thing about this is that I'm using Googles C2DM, or Cloud to Device Messaging, which let's me connect to the device from the webpage without any input/clicks needed by the user on the device. When a connect request is sent via the webpage, Google pushes the message to the device which in turn establishes a TCP/IP connection to a RPC server, which in turn the webpage communicates with.
Today we received our first initial PCB batch! 20 panels with 2x development PCBs, 1x Ethernet extension PCB, 1x USB extension PCB, 1x Dimmer extension PCB and 1x integrated Dimmer PCB each.
You can read more about the project at the Ember Cortex-M3 page.
Generic module for the wireless standard 802.15.4 to use with zigbee/lo6pan/MiWi/etc, build on an Ember Cortex-M3.
Status: Prototyping..
Date | Comment |
---|---|
2010-12-14 | First pcb batch received. |
2010-06-01 | Project created. |
This module is an improvement of the generic802154 using a Arm Cortex-M3 instead of PIC. Developed together with Erik Botö.
Currently we have the following PCBs:
All information found on this page are licensed. See the license page for more information.
I'm currently working on a Home Infotainment System to interact and control the 802.5.4 nodes nodes in the apartment. It runs on a Android 1.6 touchpad device, and you can check it out at the Android Home Infotainment System page.
Home Infotainment System for the wireless 802.15.4 nodes.
The Android Home Infotainment System is an Android application running on a cheep android touchpad device with Android 1.6. It interface to the world by displaying next departures for busses and trams, the google calendar and the weather, and as an interface to the home by displaying temperatures and controlling the lights, togheter with the 802.15.4 nodes.
I have released my first Android application, NextDeparture, on Android Market. The application is a widget showing the next departure time for busses and trams in the Swedish public transport company Västtrafik.
Västtrafik widget for Android.
Status: Ongoing…
Date | Comment |
---|---|
2010-08-10 | v1.3 - bugfix. |
2010-02-09 | v1.2 - bugfix. |
2010-02-09 | v1.1 - bugfix. |
2010-08-08 | V1.0 Project created, inital release. |
Next departure time widget for Västtrafik busses and trams. Add a widget for each stop and select 1 to 4 lines to display in the widget. To update, simply tap on the widget.
DokuWiki supports some simple markup language, which tries to make the datafiles to be as readable as possible. This page contains all possible syntax you may use when editing the pages. Simply have a look at the source of this page by pressing the Edit this page button at the top or bottom of the page. If you want to try something, just use the playground page. The simpler markup is easily accessible via quickbuttons, too.
DokuWiki supports bold, italic, underlined and monospaced
texts. Of course you can combine
all these.
DokuWiki supports **bold**, //italic//, __underlined__ and ''monospaced'' texts. Of course you can **__//''combine''//__** all these.
You can use subscript and superscript, too.
You can use <sub>subscript</sub> and <sup>superscript</sup>, too.
You can mark something as deleted as well.
You can mark something as <del>deleted</del> as well.
Paragraphs are created from blank lines. If you want to force a newline without a paragraph, you can use two backslashes followed by a whitespace or the end of line.
This is some text with some linebreaks
Note that the
two backslashes are only recognized at the end of a line
or followed by
a whitespace \\this happens without it.
This is some text with some linebreaks\\ Note that the two backslashes are only recognized at the end of a line\\ or followed by\\ a whitespace \\this happens without it.
You should use forced newlines only if really needed.
DokuWiki supports multiple ways of creating links.
External links are recognized automagically: http://www.google.com or simply www.google.com - You can set the link text as well: This Link points to google. Email addresses like this one: andi@splitbrain.org are recognized, too.
DokuWiki supports multiple ways of creating links. External links are recognized automagically: http://www.google.com or simply www.google.com - You can set link text as well: [[http://www.google.com|This Link points to google]]. Email addresses like this one: <andi@splitbrain.org> are recognized, too.
Internal links are created by using square brackets. You can either just give a pagename or use an additional link text.
Internal links are created by using square brackets. You can either just give a [[pagename]] or use an additional [[pagename|link text]].
Wiki pagenames are converted to lowercase automatically, special characters are not allowed.
You can use namespaces by using a colon in the pagename.
You can use [[some:namespaces]] by using a colon in the pagename.
For details about namespaces see namespaces.
Linking to a specific section is possible, too. Just add the section name behind a hash character as known from HTML. This links to this Section.
This links to [[syntax#internal|this Section]].
Notes:
DokuWiki supports Interwiki links. These are quick links to other Wikis. For example this is a link to Wikipedia's page about Wikis: Wiki.
DokuWiki supports [[doku>Interwiki]] links. These are quick links to other Wikis. For example this is a link to Wikipedia's page about Wikis: [[wp>Wiki]].
Windows shares like this are recognized, too. Please note that these only make sense in a homogeneous user group like a corporate Intranet.
Windows Shares like [[\\server\share|this]] are recognized, too.
Notes:
You can also use an image to link to another internal or external page by combining the syntax for links and images (see below) like this:
[[http://www.php.net|{{wiki:dokuwiki-128.png}}]]
Please note: The image formatting is the only formatting syntax accepted in link names.
The whole image and link syntax is supported (including image resizing, internal and external images and URLs and interwiki links).
You can add footnotes 1) by using double parentheses.
You can add footnotes ((This is a footnote)) by using double parentheses.
You can use up to five different levels of headlines to structure your content. If you have more than three headlines, a table of contents is generated automatically – this can be disabled by including the string ~~NOTOC~~
in the document.
==== Headline Level 3 ==== === Headline Level 4 === == Headline Level 5 ==
By using four or more dashes, you can make a horizontal line:
You can include external and internal images with curly brackets. Optionally you can specify the size of them.
Resize to given width and height2):
Real size: {{wiki:dokuwiki-128.png}} Resize to given width: {{wiki:dokuwiki-128.png?50}} Resize to given width and height: {{wiki:dokuwiki-128.png?200x50}} Resized external image: {{http://de3.php.net/images/php.gif?200x50}}
By using left or right whitespaces you can choose the alignment.
{{ wiki:dokuwiki-128.png}} {{wiki:dokuwiki-128.png }} {{ wiki:dokuwiki-128.png }}
Of course, you can add a title (displayed as a tooltip by most browsers), too.
{{ wiki:dokuwiki-128.png |This is the caption}}
If you specify a filename (external or internal) that is not an image (gif, jpeg, png
), then it will be displayed as a link instead.
For linking an image to another page see Image Links above.
Dokuwiki supports ordered and unordered lists. To create a list item, indent your text by two spaces and use a *
for unordered lists or a -
for ordered ones.
* This is a list * The second item * You may have different levels * Another item - The same list but ordered - Another item - Just use indention for deeper levels - That's it
DokuWiki converts commonly used emoticons to their graphical equivalents. More smileys can be placed in the smiley
directory and configured in the conf/smileys.conf
file. Here is an overview of Smileys included in DokuWiki.
DokuWiki can convert simple text characters to their typographically correct entities. Here is an example of recognized characters.
→ ← ↔ ⇒ ⇐ ⇔ » « – — 640×480 © ™ ® “He thought 'It's a man's world'…”
-> <- <-> => <= <=> >> << -- --- 640x480 (c) (tm) (r) "He thought 'It's a man's world'..."
Please note: These conversions can be turned off through a config option and a pattern file.
Some times you want to mark some text to show it's a reply or comment. You can use the following syntax:
I think we should do it > No we shouldn't >> Well, I say we should > Really? >> Yes! >>> Then lets do it!
I think we should do it
No we shouldn't
Well, I say we should
Really?
Yes!
Then lets do it!
DokuWiki supports a simple syntax to create tables.
Heading 1 | Heading 2 | Heading 3 |
---|---|---|
Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
Row 2 Col 1 | some colspan (note the double pipe) | |
Row 3 Col 1 | Row 2 Col 2 | Row 2 Col 3 |
Table rows have to start and end with a |
for normal rows or a ^
for headers.
^ Heading 1 ^ Heading 2 ^ Heading 3 ^ | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | | Row 2 Col 1 | some colspan (note the double pipe) || | Row 3 Col 1 | Row 2 Col 2 | Row 2 Col 3 |
To connect cells horizontally, just make the next cell completely empty as shown above. Be sure to have always the same amount of cell separators!
Vertical tableheaders are possible, too.
Heading 1 | Heading 2 | |
---|---|---|
Heading 3 | Row 1 Col 2 | Row 1 Col 3 |
Heading 4 | no colspan this time | |
Heading 5 | Row 2 Col 2 | Row 2 Col 3 |
As you can see, it's the cell separator before a cell which decides about the formatting:
| ^ Heading 1 ^ Heading 2 ^ ^ Heading 3 | Row 1 Col 2 | Row 1 Col 3 | ^ Heading 4 | no colspan this time | | ^ Heading 5 | Row 2 Col 2 | Row 2 Col 3 |
Note: Vertical spans (rowspan) are not possible.
You can align the table contents, too. Just add at least two whitespaces at the opposite end of your text: Add two spaces on the left to align right, two spaces on the right to align left and two spaces at least at both ends for centered text.
Table with alignment | ||
---|---|---|
right | center | left |
left | right | center |
xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx |
This is how it looks in the source:
^ Table with alignment ^^^ | right| center |left | |left | right| center | | xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx |
You can include non-parsed blocks into your documents by either indenting them by at least two spaces (like used for the previous examples) or by using the tags code
or file
.
This is preformatted code all spaces are preserved: like <-this
This is pretty much the same, but you could use it to show that you quoted a file.
To let the parser ignore an area completely (ie. do no formatting on it), enclose the area either with nowiki
tags or even simpler, with double percent signs %%
.
This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it.
See the source of this page to see how to use these blocks.
DokuWiki can highlight sourcecode, which makes it easier to read. It uses the GeSHi Generic Syntax Highlighter – so any language supported by GeSHi is supported. The syntax is the same like in the code block in the previous section, but this time the name of the used language is inserted inside the tag. Eg. <code java>
.
/** * The HelloWorldApp class implements an application that * simply displays "Hello World!" to the standard output. */ class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); //Display the string. } }
The following language strings are currently recognized: abap, actionscript-french, actionscript, actionscript3, ada, apache, applescript, asm, asp, autoit, bash, basic4gl, blitzbasic, bnf, boo, c, c_mac, caddcl, cadlisp, cfdg, cfm, cil, cobol, cpp, cpp-qt, csharp, css, delphi, diff, div, dos, dot, d, eiffel, fortran, freebasic, genero, glsl, gml, gnuplot, groovy, gettext, haskell, html, idl, ini, inno, io, java5, java, javascript, kixtart, klonec, klonecpp, latex, lisp, lotusformulas, lotusscript, lua, m68k, matlab, mirc, mpasm, mxml, mysql, nsis, objc, ocaml-brief, ocaml, oobas, oracle8, pascal, perl, per, php-brief, php, pic16, plsql, povray, powershell, progress, python, qbasic, rails, reg, robots, ruby, sas, scala, scheme, sdlbasic, smalltalk, smarty, sql, tcl, text, thinbasic, tsql, typoscript, vbnet, vb, verilog, vhdl, visualfoxpro, winbatch, xml, xorg_conf, xpp, z80
DokuWiki can integrate data from external XML feeds. For parsing the XML feeds, SimplePie is used. All formats understood by SimplePie can be used in DokuWiki as well. You can influence the rendering by multiple additional space separated parameters:
Parameter | Description |
---|---|
any number | will be used as maximum number items to show, defaults to 8 |
reverse | display the last items in the feed first |
author | show item authors names |
date | show item dates |
description | show the item description. If HTML is disabled all tags will be stripped |
n[dhm] | refresh period, where d=days, h=hours, m=minutes. (e.g. 12h = 12 hours). |
The refresh period defaults to 4 hours. Any value below 10 minutes will be treated as 10 minutes. DokuWiki will generally try to supply a cached version of a page, obviously this is inappropriate when the page contains dynamic external content. The parameter tells DokuWiki to re-render the page if it is more than refresh period since the page was last rendered.
Example:
{{rss>http://slashdot.org/index.rss 5 author date 1h }}
You can embed raw HTML or PHP code into your documents by using the html
or php
tags like this:
<html> This is some <span style="color:red;font-size:150%;">inline HTML</span> </html> <HTML> <p style="border:2px dashed red;">And this is some block HTML</p> </HTML>
This is some <span style="color:red;font-size:150%;">inline HTML</span>
<p style="border:2px dashed red;">And this is some block HTML</p>
<php> echo 'A logo generated by PHP:'; echo '<img src="' . $_SERVER['PHP_SELF'] . '?=' . php_logo_guid() . '" alt="PHP Logo !" />'; echo '(generated inline HTML)'; </php> <PHP> echo '<table class="inline"><tr><td>The same, but inside a block level element:</td>'; echo '<td><img src="' . $_SERVER['PHP_SELF'] . '?=' . php_logo_guid() . '" alt="PHP Logo !" /></td>'; echo '</tr></table>'; </PHP>
echo 'A logo generated by PHP:';
echo '<img src="' . $_SERVER['PHP_SELF'] . '?=' . php_logo_guid() . '" alt="PHP Logo !" />';
echo '(inline HTML)';
echo '<table class="inline"><tr><td>The same, but inside a block level element:</td>'; echo '<td><img src="' . $_SERVER['PHP_SELF'] . '?=' . php_logo_guid() . '" alt="PHP Logo !" /></td>'; echo '</tr></table>';
Please Note: HTML and PHP embedding is disabled by default in the configuration. If disabled, the code is displayed instead of executed.
Some syntax influences how DokuWiki renders a page without creating any output it self. The following control macros are availble:
Macro | Description |
---|---|
~~NOTOC~~ | If this macro is found on the page, no table of contents will be created |
~~NOCACHE~~ | DokuWiki caches all output by default. Sometimes this might not be wanted (eg. when the <php> syntax above is used), adding this macro will force DokuWiki to rerender a page on every call |
DokuWiki's syntax can be extended by Plugins. How the installed plugins are used is described on their appropriate description pages. The following syntax plugins are available in this particular DokuWiki installation:
DokuWiki is a standards compliant, simple to use Wiki, mainly aimed at creating documentation of any kind. It is targeted at developer teams, workgroups and small companies. It has a simple but powerful syntax which makes sure the datafiles remain readable outside the Wiki and eases the creation of structured texts. All data is stored in plain text files – no database is required.
Read the DokuWiki Manual to unleash the full power of DokuWiki.
DokuWiki is available at http://www.splitbrain.org/go/dokuwiki
All documentation and additional information besides the syntax description is maintained in the DokuWiki at www.dokuwiki.org.
About DokuWiki
Installing DokuWiki
Using DokuWiki
Customizing DokuWiki
DokuWiki Feedback and Community
2004-2009 © Andreas Gohr andi@splitbrain.org3)
The DokuWiki engine is licensed under GNU General Public License Version 2. If you use DokuWiki in your company, consider donating a few bucks .
The content published in the DokuWiki at http://www.dokuwiki.org/ is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License Version 2.0.
An exception is made for the content which distributed in the download tarball4) which is, for compatibility reasons, licensed under the GNU General Public License Version 2 as well.
Not sure what this means? See the FAQ on the Licenses.
Server for generic802154 nodes.
Status: In progress.
Date | Comment |
---|---|
2009-08-15 | Project created. |
The nodeServer is a C# console application running in the Mono and .Net-framework. It has a server core with a user-server that provides an XML-interface to access node data as well as managing the server. Node specific applications and functionalities runs in their separate plugins that are loaded dynamically into nodeServer. A client written in PHP that uses the XML-interface can be found at http://fjun.com/nodeServer/.
Latest source code can be found in repository
/software/trunk/PC/nodeServer/ in SVN.
===== License =====
All information found on this page are licensed. See the license page for more information.
The first wireless node is up and running in my apartment! Still very basic setup, especially firmware whise. Hardware are two Generic-802.15.4, one just as it is running on batteries and sleeping all the time, except for every 30s when it measures the temperature and sends the value out in the air as an UDP-broadcast packet. The other node is connected a ethernet-switch and the 802.15.4-ethernet expansion who only copy data between the 802.15.4 and 802.3 mac-layers. The node is running the uIP-stack and currently IPv4. All nodes and their data are monitored online at http://fjun.com/nodeServer/, using the nodeServer.
All information on this page and on subversion is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 2.5 Sweden License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/se/.
All content on this site and on subversion now relies under Creative Commons Attribution-Noncommercial-Share Alike 2.5 Sweden License.
Messauring heart rate and oxygen in blood.
Status: Idea.
Date | Comment |
---|---|
2009-07-22 | Project created. |
A unit that messaures the heart rate and oxygien in the blood for a human.
All information found on this page are licensed. See the license page for more information.
fjun.com has moved, and so has the subversion server. Check out the subversion page for the new url.
Soon I will order four new PCBs. First, there are three Generic 802.15.4 cards: One generic card that uses the MRF24J40MA 802.15.4 tranceiver card. The module has an uC and 18 I/Os and supply port, equipped with a DC/DC-buck-boost for battery supply. The other card is identical to the first one, except that the MRF24J40MA is integrated and replaced with a MRF24J40 and an onboard PCB antenna. The third card is an ethernet expansion to the two previous cards, so the 802.15.4 wireless network can be integrated to ethernet and internet. The fourth and last card is a new revision of the Generic-USB module, now in a 3.3V version as well as a new I/O-port compatible with the Generic 802.15.4 cards.
I have now sucessfully written a driver for Microchips MRF24J40 802.15.4 transceiver that work togheter with the C18 port of the uIP-stack. It's now possible to send ipv4 packets like UDP and TCP over 802.15.4! There are a lot of limitation and assumptions, but it works. I have added the driver to the uIP-stack, and there are a test project at SVN. Next step: 6LoWPAN.
I have successfully ported Adam Dunkels uIP 1.0 TCP/IP-stack to work with Microchip C18 compiler, and the enc28J60 ethernet controller. There are still some issues regarding strings and sockets, but it possible to ping the device as well as setting up an TCP-connection. You can read more about it at the uIP page .
A port of Adam Dunkels uIP 1.0 TCP/IP-stack to Microchips C18 compiler.
Status: In progress.
Date | Comment |
---|---|
2009-02-25 | Project created. |
As the official site for the uIP-stack says: “The open-source uIP TCP/IP stack provides TCP/IP connectivity to tiny embedded 8-bit microcontrollers, with maintained interoperability and RFC standards compliance.” This is a port of the stack using enc28j60 eternetcontroller for the Microchip C18 compiler. I have used the AVR version as a base.
There are some memory issues regarding Microchip C18 compiler. First, when building a project with the uIP stack, turn of “bank optimizer”. When I had that option enabled, writing to a specific varaible cleared the memory for a totally different variable, which failed dramatically. I also had to store variable values in a temorary varaible before assigning them to the uip_buffer in some places, otherwise the result was never written or read correctly. I have no idea why this happens.
Togheter with the source code are a Microchip ENC28J60 ethernet driver included (written by Pascal Stang) and a driver for Microchip MRF24J40 transceiver that now support sending of IPv4 packets over 802.15.4, but with a lot of limitation and assumptions.
Latest source code can be found in repository
/software/trunk/Embedded/Other libs/uip/ in SVN.
Example project for IPv4 over 802.15.4 (or later on 6LoWPAN) can be found in the /software/trunk/Embedded/802.15.4/6LoWPAN test node/ directory.
All information found on this page are licensed. See the license page for more information.
I and Fredrik have successfully implemented a chat application over USB, using the Generic zigbee togheter with the Generic-USB platform, and a chat client implemented in C#! Not that useful, but cool. :) Source code for the firmware and C# application can be found in the Embedded/082.15.4/MiWi P2P - Generic USB/ and PC/Chatbee folder at the SVN software repository.
After the zigbee success I and Fredrik has started to develop a generic module for the 802.15.4 wireless standard. The module replaces the generic-zigbee module, and can be found at this link at the Generic-802.15.4 module page.
Generic module for the wireless standard 802.15.4 to use with zigbee/lo6pan/MiWi/etc.
Status: Prototyping..
Date | Comment |
---|---|
2009-02-01 | Project created. |
The Generic 802.15.4 module replaces the more specific development version, genericzigbee. Developed together with Fredrik Svan.
Latest schematic/PCB-layout can be found in repository
/hardware/trunk/schematics/Generic-802.15.4/ in SVN.
Power supply references for dimmer and relay expansions
AC current measurement
Casing
Beagleboard
Heart rate
All information found on this page are licensed. See the license page for more information.
I and Fredrik successfully got genericzigbee to work today. We are now using the simplified Microchip MiWi P2P stack instead of the USB and MiWi migrated stack. We managed to toggle a LED remotely using a button and LED connected to each device. We also have to fix a bug in the MiWi P2P stack which caused a variable (ONE_SECOND) to overflow and thus prevented the node to send any packets at all. We needed to patch the PCB as well, removing the !CS control from the INT-signal.
You can reach me at projects@fjun.com.
Welcome to the blog!
I have added a blog feature to this wiki where I will keep you updated about my projects.
data
directory – eg: dokuwiki.txt
, syntax.txt
, dokuwiki-128.png