The Hidden Cost of the Raspberry Pi (and other “cheap” SBC’s)

The Raspberry Pi and other small single board computers have really taken off in the past few years, especially with the burgeoning wave of development, both commercial, but mainly hobbyist of the Internet of Things (IoT) arena.

Now Raspberry Pi (I am focusing on RPi here because it kicked off the whole shebang in a big way, small SBC’s existed before then but they were not as widely available or used) was never intended to be a IoT board, it was originally intended to be used to teach programming to children. The success of this original project (with over 5 million, yes that is 5,000,000 sold) has not only spawned a myriad of projects but a whole bunch of clones and similar devices looking to capitalize on the success of the project.

With the hobbyist community getting a hold of these devices and putting them into various projects one has to question the cost of these devices. The devices for those who do not know cost US$25 or US$35 depending on the board revision however you also need to add a SD card (either standard or micro depending on revision), power supply, case (enclosure) and if needed a USB wireless dongle and you are looking at getting towards US$100, not as cheap as it sounds to be, and that’s in a basic headless configuration.

The other side to this is the environmental cost, with all these devices (remember there are 5 million RPi’s alone) floating around that will at some point in there lives end up being thrown out, and mostly into landfill it is not overly environmentally cost effective with all those electronics leaching chemicals and other materials over time. What causes this, upgrades to newer models or migrations to other platforms, or even loss of interest, the result is the same.

Now don’t get me wrong, I am not saying these systems are all wasted, or all an issue. Many interesting projects and products are developed from them, not to mention the education that people get from developing on and for these systems. What I am saying is that their use should be more specialized to where the processing power is actually required or used to aggregate the data (done through a technology such as MQTT), cache it and forward it to a more powerful management system (home server anyone).

Further to this, the idea here merges nicely with my move to containers (Docker) and my continuing work with Virtual Machines. If we take the services the RPi runs for each function and put them into a container, and that container syncing through either MQTT or directly through the applications services to a micro controller which then carries out the functions.

Why is this more efficient, because the micro controller only needs to be dumb, it needs to either read the data on the interface and report it to the server, or turn an interface on or off (or perhaps “write” a PWM value) to perform a function. This micro controller does not need to be replaced or changed when changing or upgrading the server, and can even be re-tasked to do something else without reprogramming the controller and only changing the functions and code on the mother controller node.

Much more efficient and effective. It does however have the downfall of an extra failure point so some simple smarts on the micro controller would be a good idea to allow it to function without the mother controller in the event of a failure but the MQTT controls are agnostic so we can work with that, at least for monitoring.

Opinions?

Justin

SafeDuino – Part 05: First Released Part Sketches

Further to my last post on the subject I have had a little time, or rather made a little time and created two boards for use in the movement of power and data from the EtherMega to where it’s needed. The first is a RJ12 connection so 4 data pins are possible, the second is a RJ45 connection so 6 possible data connections.

Both boards are double-sided, and have multiple power inputs/outputs and are designed in such a way as to be stackable either vertically, horizontally or both to allow a layer cake effect for these connections, there is a row of single header pins at the “back” for the board and you can mount either horizontal or vertical pins in it, or as I intend to do, pins at an approximately 45 degree angle, but we will see how that works.

As the boards use standard header pins for all instances it is possible to integrate them into your own circuits, however where possible I would recommend integrating the RJ12/RJ45 part directly just to eliminate un-neccicary connections and components.

Anyway eithout futher adu;

RJ12

RJ12

RJ45

RJ45

Fritzing Files

RJ12Connector

RJ45Connector

SafeDuino – Part 04: Further Afield – A Complete Redesign?

After having not had much time to work on this project in the past few months, with a major half-million dollar project going on at one of my clients, which was/is the implantation of a new computer system of my own design that will be serving them for the next 20 years or more (well the physical infrastructure will be, the PC’s wireless, network, servers etc won’t they are replaced on a 3 year cycle, again on my insistence) and with one of the suppliers delivering critical components in excess of week late it has pushed back the final deployment for a couple of months as now I can only do core works on weekends and after hours, I have not had much time for this project.

What I have been doing/contemplating is two things however, firstly is whether I need an LCD screen/buttons interface, and I have decided that I do need one, this has become evident so that I can set up the system “in place” when it is finally deployed.

The other thing I want to do is be able to deploy some sensors and control circuits remotely, including some in hard to access places, well ones that once they are in they will not be easily accessible. To this end I have come up with the idea of using network cable for limited power (5VDC for system power) and command and control signals, and where required I will use Flat-Flex Cables’ (FFC’s)  to get into those tight spots that I cannot otherwise support sensors in. 

 What this leaves me with is a system that is essentially divided into three distinct parts, the main controller (the Freeduino EtherMega) the distribution node which is connected to the EtherMega via network cable, and the sensors and control points are connected to the distribution nodes via CAT3 (telephone) cabling or via FFC’s (which are limited to 18″) where required.

This now leaves me of working out how to select which pins go to which distribution point via the network cabling, this I am still trying to solve, however jumper wires are looking like the best option at this point

More Arduino Project Stuff

Just thought I would make a quick entry in a couple of spare minutes to state that I have decided to “split” the Arduino system, well rather the PCB’s as I was simply trying to do to much on one PCB so what I have done is split the power supply onto one board, and as I am splitting it I have taken the opportunity to add a second regulator to the design for 3.3volt along with its associated smoothing capacitors so I can integrate 3.3v electronics into the system in the future if I want, besides I can then intergrate the powerboard design into other projects making the extra PCB’s I will purchase usefull as most places have a minimum run of 4 or 5, which means that for the once of projects its not paticuarly useful, but if I design it right the first time I can use the board on other projects as well. On this board as well will be the two OPAMP’s and the linear optocoupler to allow for the monitoring of the power via a plug in lead to the board, meaning that in total there will be 2 leads to the board, the first one carrying power (12VDC, 5VDC, 3.3VDC and ground) and the second one being the voltage monitoring.

I will release the designs for it once I have built it and tested it

SafeDuino – Part 03: The goalposts change

Ok, I admit it… feature creep has officially set in on this project.

After doing the basic designs and working out I needed the EtherMega (from Freetronics) for the SafeDuino project, and consequently purchased some (I say some as I keep changing the design) of the components I decided that it was a “waste” of a mega to only use the small number of I/O’s I needed (but more than I could get from an ethernet connected UNO), and this is where the feature creep began.

So, now what I have is more of an environmental monitor not only for the cabinet it was to maintain originally, but also for the room/building it is housed in, this will allow me to do differential monitoring for parts of the building vs the areas I am going to monitor/control individually.

So far I have determined, that beyond the original cabinet it was going to monitor, the following are going to be monitored;

  • The building itself, this is to allow for differential comparisons and fluctuations in temperature and humidity to see if the things I am putting in place to control humidity are in fact working
  • Two other cabinets, including one humidor, just because I can 😀
    • Turn on/off humidification/dehumidification equipment and fans to allow for circulation in the closed environments based upon readings
  • Possibility of wine/beer fridges
  • External temperature/humidity
  • Solar Radiation (for estimating solar panel power generation)
  • Background radiation, this is more of another because I can thing, being able to monitor radiation (Alpha, Beta, Gamma) in the background of the environment long-term will be useful in the future just to see the changes over time, I will be connecting it to one of the sensor networks that have popped up after the Fukushima accident
  • Internal and External light sensors, again to see how it affects temperature/humidity in the closed environments/building
  • Same goes for door/window openings

I am sure there is more to come, in fact I know there is, I have 40 odd pins to fill up :D.

In addition to these added features, I have decided to add some protection to the arduino itself through the use of optocouplers/optoisolators to isolate the external electronics from the device itself, where possible anyway, this will also take some of the current loading of the arduino board. So far I have confirmed that the 4N25 optocouplers work, and I have tested those which I have purchased to ensure they operate correctly.

I am still to get a few linear optocouplers for use the with the voltage divider to allow me to monitor the voltage in the battery system.

Considering ultimately that the EtherMega will be powered via POE (supplied by the switch, so a proper 801.11af regulator, which is being done to ensure monitoring will continue even if the batteries for the lights etc fail) there will be no load on the batteries apart from a few mA for sensors and alike for the most part, but I will be configuring the reed switches for example to be Normally Open (NO) so that there is no power going through them when they are not activated (apart from what is used by the resistors to keep a proper ground) I should be able to maintain this for a long period with just the batteries, and with a solar charger, I should be able to maintain this use of the system indefinitely.

SafeDuino – Part 02: (Partial) Parts test

I have now got some of the equipment for my SafeDuino, as has been mentioned previously I have selected Freetronics for much of my kit for this, sure I could make most of it manually, but I do prefer it being on a circuit board to make it that bit easier to mount.

So far I have obtained the following from a local Jaycar store

  • Freetronics EtherMega
  • RGB LED, This may yet be changed, as something I would like to do would be easier if I just had the RGB LED itself without the board, well rather easier without the IC on it, the board is prefered however.
  • Humidity sensor, Freetronics board mounted, however it is a “common” DHT22
  • Reed Switch, this came from my stash of components, but was originally from Jaycar as well
  • 2000 Ohm and 8000 Ohm resistors to make a voltage divider
  • NDriver Transitor relay, this is to allow me to turn on/off the LED light strip

Good news is all parts have so far passed testing, now its just a matter of waiting for the rest of the items to arive, in the mean time however I will not be slacking I will be using a simulator  (Simulator for Arduino from Virtronics) and the components already at hand to start work on this project.

Whats worse is I have already decided on my next project, several (as we have several locations on the property that require it) water tank level sensors, based upon the Freetronics EtherTen, this one has been chosen for that project as I can use the Cisco POE switches I have at home to power it from the network, meaning no external power requirements

%d bloggers like this: