Protest Phone – Part 1

This is the rough draft of the letter for the Hackaday 2016 challenge with Naim Hilal:

SMAC

Go check out the project!

These ramblings are left here as reference.

Protest Phone is a series detailing the idea, design, and hopefully realization of this idea that has been in my head for months.

As we have seen in numerous recent protests and uprisings, social media and instant communication are crucial to organisation of the group. The means to quickly disseminate information to participants means larger numbers are able to arrive and organize. We have also seen governments and organisations start to realize this, and deploy counter measures, ensuring that protests are stopped before they get started, in a more PR friendly way than force.
What we purpose is a phone that is resilient to both surveillance, trust network infiltration, and jamming. It is also cheap, resilient, and can function without an energy grid. Those last two points are crucial for it to work in actual protest situations. The phone would be used in text only mode for the majority of use cases, with audio and video possible when connected to a normal network, or when priority/reputation is high enough for the user (more on this later)
Lets start with Jamming. The phone uses a mesh network topology where every message sent from each device is packetized and routed by any available route. This protects against a centralized take down of the cell infrastructure, and is somewhat resilient to jamming, as it can route around trouble areas, but it is not totally invulnerable.
To make the phone almost invulnerable to jamming, we turn to the backup RFID sneaker-net system. In heavy jamming situations, users would touch phones together with all their closest neighbors, thereby passing on messages like nodes in a network. This would take roughly 10 hops to get from end to end of a large crowd, so as long as people tap phones ~10 times a minute, communication latency would be fairly low. The power requirement of jamming near range, shielded (by the interlocking bodies of the phone) RFID communications would be so large, they are well outside the range of conventional or military hardware.
Surveillance is the easiest to explain. With a modern, public-private key architecture, encryption of all message contents should be about as secure as currently feasible. Key exchange would take place between phone users for private conversations, and shared public-private key groups would enable messaging boards, etc.
Trust network infiltration is a more difficult one to get totally right, and so far is fairly underdeveloped. The issue with public-private key exchange, and with covert networks in general, is that if an informant is place in the organisation, the group is exposed. To solve this issue, my current thoughts are to use a similar, if not identical, model to the bitcoin blockchain. Here, the blockchain would be used to authenticate that messages actually came from the user the message claims, and to accrue reputation for users.
The idea here is that when messages are passed on, the user doing the passing gains a little reputation. Positively acknowledging the receipt of a message intended for you also gives the sender some reputation. Thus, to send messages, users must be actively passing messages on, which acts as an incentive for snearker-net message passing, and generally good behavior. If the recipient sends a negative message receipt, this decreases the senders reputation, effectively preventing message spamming. This also conversely makes the most convincing voices (the organizers or leaders of a protest) the highest priority messages in the network, as they would naturally have the highest reputation. Reputation donations would also be permitted, along with paying more reputation for higher message priority, or higher bandwidth requirements.
Users would have their own, private, encrypted “phone book” containing identities that they have exchanged keys with. Exchanging info would be as simple as taping phones together, and pressing accept.
Lastly, voice messages or even images/video would need huge bandwidth and packet fragmentation. This would only be possible for users willing to pay a lot of reputation.
The network would maintain anonymous information on the amount of active modules, to help balance load and set the blockchain specifics (size, distribution, etc). New networks would be spun up for every event, and most likely dissolved afterwards.
Hardware:
The design is centered around the ESP8266. This chip is low cost, high bandwidth, flexible, and is fairly powerful.
The system contains:
– solar panels
– li-ion battery, battery charger and management,
– ESP8266,
– RFID transceiver + antenna,
– low power touch screen,
– speaker + mic + ADC,
– possibly low cost camera.
Software:
– Simple UI with on screen keyboard
– Encrypted top to bottom with public-private key exchange
– Bitcoin-like blockchain implementation
– mesh network + packetizing protocols
Mech:
– Strudy plastic casing, mostly waterproof
– Clear back for solar cells
– About the size of a large smartphone (7″)
IP:
All designs are open source, and can be made by anyone with access to parts. Parts are specifically chosen to be hand solder-able and low cost.

Altium Circuit Maker – Review and Tutorial Part 1

Altium Circuit Maker

Altium (used to be Protel) makes some very nice PCB design tools, and Altium Circuit Maker is their newest product, with the added benefit that it is free! This two part series looks into Circuit Maker, and has a quick tutorial on usage. As always, leave comments below!

Altium Circuit Maker has upsides and downsides, but overall I think this will be a GREAT addition to the open source hardware movement! Sharing all your designs and parts libraries by default is a bold move, and should lead to great things!

Pros:

  • New, Modern tool, looks good and is much easier to use than most other stuff out there.
  • Integrated design and library sharing system (see cons), integrated parts backend uses Ciiva
  • Exceptionally well done online manual
  • Unlimited FREE usage (no layer limits, no parts limits)
  • Did I mention it is FREE with NO LIMITS (looking at you EAGLE, Upverter, etc…)

Cons:

  • Always online, no local storage of any files
  • Forced to share designs, no real choice apart from a few “Sandboxed designs”
  • Slightly buggy, though way better than the professional version of Altium!
  • Not much Tutorial content, more of a manual here-is-everything-and-kitchen-sink approach from Altium.
  • Fatal version control flaw!

If I had to point to one thing that Altium Circuit Maker desperately needs is better community support! The starting community page is lackluster and random.

Altium! Please add this stuff:

  • Ability to rate Users. Show recognition for the best and brightest designers!
  • Make re-use of sub-circuits easier! Right now, my only real option is to go randomly searching through projects, hoping to stumble onto something useful, copy the project, and tear it out. The ideal case would be to have separate sub-circuits section, where I can easily find a buck/boost converter, battery charger, and other stuff EEs use over and over. Then make it easy to place right into the design.
  • Improve Ability to rate designs! You can post a comment and rating, but there is no detail. What about the design is 5/5 stars?
  • Let us comment and accept pull requests on commonly used parts.
  • Let user have their own homepages to show their work! (Kinda exists under Community Profile…)
  • Have a website we can check for community activity, instead on only through Altium Circuit Maker.
  • Speedup access to community. I have a fairly fast internet, and it takes 5-10 seconds to load each page. Very frustrating when you are searching for anything.
  • Bring back the Altium keyboard shortcuts! I miss being able to press P(place) -> W(wire)
  • Many to one relation, or generic parts. I need only 1 model of a 0402 resistor, and then specify that it is a 10k 0402 resistor later.

Version Control

Here is the current deal breaker though: There is no version control for library parts or anything in place at the moment! I can go in and change practically any library part in any way I want, authors retain no control on their parts library entries. My changed part becomes the new default revision, as in the first one listed and selected when importing a part. THIS is a deal breaker, for 3 reasons:

  1. A malicious script kiddie can come in make empty parts for every part in the library, which is easy to restore but annoying. More serious is they can subtly break designs, such that when users make em, the board goes up in smoke!
  2. There is no way to know how good or accurate a design is! It could be off by a mile or perfect, but without visibility into the versioning, I can’t tell what has happened to it.
  3. Even with the best intentions of fixing a mistake, changing a part that is already in someone’s design is a recipe for disaster. The existing design doesn’t change by default, but doing a library update or making a new design and bringing in the part does cause the change. Multiple version revision control is needed.

If Altium Circuit Maker wants to fix this, they need to employ the Github model, and FAST! That way, every part would have an “issues” page, a rating page, and authors would hold the “master” copy. If someone comes along and notices a mistake, they can submit a pull request. If the author is not responsive or doesn’t want to fix, they can then make a fork and direct people to the corrected version. This would solve all of the versioning issues very quickly.

Quick tutorial

There doesn’t yet seem to be a lot of tutorial content out there for Altium Circuit Maker, so I am going to walk through getting a simple board produced! The tutorial will also cover some tips for first time circuit designers. General steps are idea, parts selection, schematic capture, part creation, board layout, and production output. The full documentation is available here: http://documentation.circuitmaker.com/

Idea

What do you want the circuit to do? Does this function already exist? (please please PLEASE do not make another level converter or RS232-USB circuit, there are thousands of em). Things to consider:

  • Voltages and currents. Designing for 5V at 500mA max is a good place to start, as you can easy get tons of power supplies for this (USB)
  • Complexity. The complexity of what you are trying to do drives both board size and layer count, which in turn is the major driver of cost on most small projects
  • Manufacturing. Is this a 1 off, or something you are planning to make thousands of. The more you are planning to make, the more time you should spend minimizing parts counts and making more robust designs.

In this example, I will be making a small programming header board to get from the venerable AVRISPv2 to a small integrated board. I will need to source USB power, provide some simple protection, and have a signal inverter for the reset line. I am making 1 board only.

Parts selection

Now that you have decided what the circuit must do, we should consider the core parts of the design. The main microprocessor or other central parts should be listed. For my project, this is simply a header, an inverter, plus a 3.3V linear regulator. When selecting parts, be sure they follow the requirements from the Idea section above.

Schematic capture and starting a Project

Open Altium Circuit Maker, and start a new project. Note that Altium Circuit Maker makes project open to the world by default, but has recently made a “Sandbox” mode available to keep it private. Next, right click on the project and select Add New To Project -> Schematic

Pro Tip: Use the Windows Problem Steps recorded to help easily write super detailed tutorial steps and screenshots

The first part I am going to add is the inverter. Go to the View top toolbar, and select Libraries. On the right side menu, I input the part I am looking for, ensuring the top “Has Model” checkbox is checked, the NC7SV04P5X. Repeat this with enough parts until you have most of the important ones.

Now that we have some components, we can take our first stab at wiring them together. For now we are going to stick strictly to the basics, things like sheet re-use, buses and differential pairs are to be covered later. First add power ports, one for each GND and power signal. Don’t make the mistake of leaving the power port named VCC, double click it and rename it to something like 3.3V. This makes your design less error prone and much more readable. After your power ports, wire up all remaining connections.

You can also add comments, to help explain design decisions. These are publicly viewable, and can also let users flag issues.

Part Creation

Sometimes the part you want does not exist in the Altium Circuit Maker included CIIVA library. This is your chance to create a part and give back to the community! In my case, a header that matches the AVRIPSII programmer does not exist, with part number 75869-131LF.

Open the Libraries side panel under View -> Libraries. Here, enter the part number you want (ensuring the top “Has Model” checkbox is NOT checked) right click on the brought up component and select “Build this component”. Altium Circuit Maker now automatically populates the part entry with a ton of data, saving you time. We now need to add a Schematic symbol and a Footprint. This is done by clicking the + signs at the bottom of the page.

If you realize later on that you made a mistake here, got to Libraries, search for your part, right click and select Edit.

WARNING: Make sure to click “Commit” when leaving, else your work is LOST!

Schematic symbol

Here we draw the schematic representation of the part. This consists of adding pins (Passive, In, Out, etc) and drawing an overall shape of the part.

Tips:

  • Keep inputs on the left, outputs on the right, +Ve Power on top, -Ve (or Gnd) on bottom
  • You don’t have to match the physical layout of the part, make it easy to understand instead
  • For truly huge pin counts, split the part into several schematic parts. Take a look at the STM32F407 for an example of this, they split the power from all other pins.
  • Keep pin lengths at 20 or 30
  • Hit Tab when placing a part to change its properties
  • Select multiple parts, hit F11 to change properties for all of them
  • The “Display Name” should match what the spec sheet for the part states, the “Designator” is used to match pins from schematic to footprint.
  • When drawing a bounding box, keep it transparent and extend slightly past last pin
  • Adding symbols is optional, but recommended for usability. Good free list here: symbols
  • Add a Reference Designator to your part! Click Library -> Component Properties. My connector is labelled J, from the Standards here: Reference Designator

More info here: Add a Symbol

Footprint

The footprint is the physical model of the part. It is used to define pin and pad placement, silkscreen outline, and ensure mechanical fit. All parts created should ideally have a 3D model, but this is not required. The bare minimum is a mechanical outline, pads, and indicator for orientation (usually silkscreen symbol for pin 1).

Tips:

  • Search for existing community footprints with “Place Existing Footprint”, don’t re-invent the wheel!
  • For complex parts, search to see if a manufacturer provided .step model exists. This can be directly imported into the footprint. Read more here: 3D body
  • If there is no pre-made 3D model, draw the outline, and then head to Tools -> Manage 3D Bodies. There, extrude the outline you drew up to the height of the part.
  • Pin 1 or center of the part is generally used as the “reference” point of the part, that is the 0,0 location.
  • You can have multiple footprints. This is generally used to make a “tight tolerances” version, and a “relaxed tolerances” version.
  • Press q (with nothing selected) to toggle between imperial and metric measurements
  • Always identify Pin 1 with silkscreen markings or pad shape or BOTH (ideal solution)!

Simulation Model

You may have noticed a third box on the parts creation page titled Simulation model. This is used when simulating electrical parts prior to production. In my opinion, in 99% of cases for the hobby/small project world, it is not worth the effort to use the simulator.

 

That’s all for today! Tune in next week for Part 2 – schematic naming, Board layout and manufacture!

Voltera – Circuit Board printing at home

Circuit Board printing at home

This week I want to talk about a great project another Waterloo sufferer grad has created: A all-in-one circuit board printer, paste dispenser and re-flow oven. You can do circuit board printing at home!

Whenever you want to create an electronics project, you usually have to have some amount of circuit design. (Unless you are playing with Lego Arduino) This usually cools the fire a bit on your project, as you have one of two options for PCB manufacture:

  1. Make it yourself
  2. Pay a circuit board house to make it

Traditionally, I had always done #1, with ferric chloride, a laser printer, and a lot of patience. I definitely recommend making circuit boards yourself as a student, because it is the fastest, cheapest, and best way to learn about the PCB process. However, as I have gotten relatively busier (and relatively less-poor), I had switched to getting my circuit boards made for me. (Check here for links) The upside is less time spent huffing questionably safe chemicals, the downside is a trade-off of time for money. The faster you want your board, the more you are paying for it.

Comparison

Etching at Home

  • Cheap ++
  • Fast +
  • Labor Intensive +++
  • 2 layer board possible, hard to do

Getting PCB Fabbed

  • Cheap or Fast, not both
  • High Precision
  • Multilayer boards
  • Easy +++
Voltera

  • Cheap*
  • Fast ++
  • Easy ++
  • “2 layer board” possible

* Note that Cheap in the Voltera case is only if you are making a significant number of boards. At $1.4k, the cost of the machine pays for itself in as little as 10 prototype boards made with an overnight service like APC.

Thoughts

Here is the killer app of the idea though: The swapable head. I give huge kudos to the Voltera team for developing an incredibly complex paste that can be printed, but is then also temperature stable enough for soldering at reasonable temperatures. Being able to press the start button and walk away is a huge boost to productivity. When I had to etch boards and solder paste stencils by hand, it was cheap, but required hours and multiple re-tries to get it right. A slight downside is the need to swap heads twice each print, once for traces, once for isolation print (to get 2 layers), and again for connecting traces.

After printing, the system can dispense solder paste to each pad. When I started making circuits, I hated solder paste and reflow, as carefully placing the components one by one seemed slow and more error prone than simply soldering each one. However, the magic of reflow is that each part will float a little, and correct its own position. This allows you to be less careful with positioning than you would be with hand soldering.

About the only downside I can call out about the printer is the lack of drilling ability. With the swapable head setup, it should be fairly easy to design in a small rotary bit attachment to automatically drill holes. This would allow vias and through-hole components to be used. Recently, Voltera posted an update with a step in the right direction for through hole components. The printer will leave a small non-inked circle in the middle of the through hole pad, to prevent the drill head from drifting while drilling.

b192314aba24b3edcace094f73ae3044_large

With the right material provided by Voltera, I am sure that the next version (or maybe even software upgrade to this version) could allow for printing on both sides, drilling a hole through, and filling the hole with conductive paint. This would allow the setup to truly start to compete with traditional 2 layer boards. I suspect the Voltera team wisely chose not to overreach for the Kickstarter campaign, and may sell the drill attachment as an add-on later.

Future

It remains to be seen how long printed boards survive in harsh environments. Things like vibration, corrosion, and even dust can destroy home printed boards. I would love to see if the printed material is flexible enough to use on flexible plastic. This would allow a whole range of great applications, from smart clothing to innovative sensors.

It is interesting to see a lot of the same movements that had been made in the 3D printer space now being applied to the electronics space. Makerbot and similar companies have proven that people are willing to spend a few thousand on making small 3D models. Will they be willing to do the same for electronics? A clever move for Voltera now would be to open a “Thingiverse” type setup for electronic circuits. Perhaps, let people upload a design and a BOM. Creating a marketplace where people can sell both designs and entire kits would be a great way for Voltera to generate ongoing revenue. The other question is whether or not Voltera will be able to hang on to their secret formula for conductive ink. If aftermarket inks start proliferating, it could bite into future sales.

Go now!

You can check out the project here: Voltera

Their Kickstarter is running for another 6 days, so go now!

Thanks for the shout-out for the ruler 🙂