Let's see ALL of what I've experienced. [Click on the titles to see each article.]
(NOTE: These articles are personal records of what projects I have attempted. These are not
articles to take directions from; instead, I have left references to those articles at the
end.)
If you are looking for a particular tag of project, then use Ctrl+F to search for your
desired keyword.
While scouting online for cheap physical PLC options, I found the Canaduino PLC 100 on Amazon.
It's a small board (about $30) that I had to solder myself and can
attach to an Arduino Nano. It contains ruggedized inputs and outputs at higher
voltages than what the Nano natively supplies, like
6 relay digital outputs with optoisolators; 4 digital inputs that can handle 3.3 - 24V; 4
analog inputs and 4 analog outputs that can both track in ranges between 0 - 10 V (very
similar to what many professional PLCs can do);
onboard LEDs for digital state notification; and 5V and 10V supply lines.
More importantly, it can be programmed with free Arduino IDE or the free OpenPLC editor and runtime.
In this video I showcase the board demonstrating its power with a makeshift 'water heater
and humidifer plant'.
In previous articles, I've mentioned training and experiencing PLC development using OpenPLC
and FactoryIO.
In this demo, I using SFC to program FactoryIO's warehouse scene.
In previous articles, I've mentioned training and experiencing PLC development using OpenPLC
and FactoryIO.
In this demo, I using SFC to program FactoryIO's pick and place scene.
In previous articles, I've mentioned training and experiencing PLC development using OpenPLC
and FactoryIO.
In this demo, I using FBD to program FactoryIO's filling tank scene.
I'm trying to develop my PLC automation skills as a possible career path, and I'm currently
a
student with a student budget.
PLC programming software can be expensive, and I wanted to find a way to expand my learning
of PLC programming (and utilize test projects) without breaking the bank.
OpenPLC is an open-source PLC programming software that can run on a Raspberry Pi, Arduino,
or just your own PC, and FactoryIO is a virtual plant software that can simulate a plant
environment (which you can get a free trial for 30 days).
Together, they can be used to learn PLC programming and simulate a plant environment for
free (for 30 days, then about $20/month for FactoryIO).
This is my demo of how to get these to work together using the Modus communication protocol
as a link.
TAGS: electronics; automation; industrial; PLC; Allen Bradley MicroLogix, CompactLogix,
ControlLogix; Ladder; Function Block; Sequential Function Diagram; Structured Text
Why I Did This
One of the possible careers paths I wanted to branch into was Automation. I had previous
history with industrial operations,
so using industrial automation controls (dubbed Operational Technology) and using PLC
(programmable logic controllers) systems;
but less familiar with the programming side of it (I only 'heard' of Ladder logic and
function block programming).
NAIT offered courses in PLC programming, and I wanted to learn more about it. I took the PLC
Ladder Logic Programming and PLC Advanced Programming courses
where I learned to program in the different IEC 61131-3 languages (Ladder Logic, Function
Block Diagram, Structured Text, Sequential Function Chart,
but not Instruction List as lots of companies consider it too archaic). I also learned to
program Allen Bradley MicroLogix 1100 controllers using RSLogix 500 software; and then
CompactLogix 1769-L24ER controllers and 1756-L71 ControlLogix Logix5571
controllers using Studio 5000 Logix Designer.
We also did some short programming/training on a microsystems SCADAPack32 remote terminal
unit (RTU) when we were
learning of
different communications protocol/methods, but these were slower systems so the training was
minimally covered.
TAGS: software; Linux Porteus; USB operating system
Why I Did This
I recently learned about Linux distros that be held on small USB sticks so that you can boot
them from most computers (through the BIOS boot menus), and I wanted to try them out. They
are small sized packages (like half a gig, so they can fit on even the really cheap small
USBs), and they have the ability to save things to their USB storage.
TAGS: software; operating system OS; TrueNAS; OpenMediaVault; Docker; Linux Ubuntu with
Jellyfin
Why I Did This
I had an old (really old Windows Vista) PC that was collecting dust, so I wanted to see if I
could use it as a NAS storage server (just to increase my knowledge of it), or something
else like a Linux distro.
In my pursuit to experience industrial automation and PLC programming, I wanted to test the
OpenPLC runtime on my Raspberry Pi. I wanted to see how effective this runtime was and
how effective the ability to connect to slave devices was. OpenPLC allows users to install
the runtime (the PLC cycle) on a Raspberry Pi, but also can program Arduinos and ESP
microcontrollers to act as I/O extensions (giving the ability to connect more sensors
actuators, but also wireless connectivity), all apparently with the help of Modbus communication.
TAGS: nature projects; solar; renewable energy design
Why I Did This
I'm a member of the UofA student club Renewable Energy Design (RED), and we were invited by
the Women In Renewable Energey (WIRE) organization to
tour the Scotford Solar Farm. It was a great opportunity to see a large scale solar farm,
especially one that is considered the largest "behind the meter" project in Canada; "Behind
the meter" means that all the generated power goes directly to the Shell Scotford industrial
site (no grid supplying). Aside from getting the opportunity to see a giant ~58MW solar farm
(which I
have not done before), it was also an opportunity to see what challenges and solutions were
present for such a unique project.
TAGS: electronics; nature projects; aeroponics; hydroponics; garden; tower; water pumps
Why I Did This
I’m grow greens in my hydroponics bin on a desk near my window, but the hydroponics box
doesn’t hug the window as much as I like (it doesn’t utilize the available window space). I
learned about these aeroponics towers and love the idea that they can be freely 3D printed
and they utilize cramped spaces (perfect for urban farming). This also can be a good trial
test for finding info for my university club’s greenhouse (to possibly utilize space in
there).
I had an ESP-01 device and wanted to see if it could be a fit for low input, low power,
deep-sleep-mode applications. I just started a worm farm in some 5-gallon pails (it’s just
some layered pails with holes, filled with old vegetables and composting material; I wanted
to build it for compost, and to get worms for fishing). I figured this worm farm could be an
appropriate project to monitor pail temperatures and test the deep-sleeping capabilities of
an ESP-01 device.
TAGS: software; hackathon; Alberta Power Industry Consortium
Why I Did This
Hackathons are great place to: brainstorm project ideas; meet other innovators; get some
recognition and prize money. This hackathon was hosted at my university by the Alberta
Power
Industry Consortium, with the theme being centered around: Safety and Security for the
Smart
Grid, System Modelling and Artificial Intelligence for Power Systems, Grid Integration
of
Renewable and Distributed Energy, and Advanced Power Electronics for the Smart Grid. I
love
electrical-based projects so I figured this hackathon would be great for me.
For our Requirements Engineering course at university, we went through the process of how to
make a Vision document and a Software Requirements Specification (SRS) for imaginary app
ideas that other lab groups had made up. For my team, we chose to act as the software
contractors for an interactive map app of the UAlberta campus. This app would connect with
the user’s university schedule and provide suggested walking routes between its classes. It
would be tailored to incorporate construction, path/elevator outages, or high traffic
(similar to how Google Maps works for construction).
The course’s project was designed to incorporate software requirements concepts and give us
an idea of how to interact with customers on getting their requirements for a software
product. While it was a great project for understanding those concepts, it was also an
opportunity to use Figma for the prototyping part of the software development presentation.
At the end of the project timeline, we were to present to our ‘clients’ a prototype of the
product (typically as a picture walkthrough), but I knew about Figma from previous use
during a UI/UX hackathon, so I wanted to use it for this project.
TAGS: software; Linux Ubuntu; Icecast radio server; Mixx DJ software
Why I Did This
On a previous test, I had repurposed my old PC into something new (and hopefully useful); I
could only manage to get Ubuntu installed which seem to make the system run relatively well
(but not fast). I wanted to extend the repurposing of the PC, and build some experience with
Linux servers by trying to make an internet radio server on the PC. I heard about Icecast, a
free internet server system, so decided to install it and use free Mixx DJ software to
broadcast music (I could also just copy songs to a folder readable by Icecast but I just
chose this route).
TAGS: electronics; software; Linux Armbian Debian; RK3318 Android TV box; un-bricking;
factory firmware flashing; maskrom boot mode;
Why I Did This
I had an Android TV box that was previously used to turn my old TV into a smart TV (with
internet access and external hard drive access), but I had bought a cheap TV that had smart
capabilities, and this box was slow and always ran hot, so it was pretty much useless as is.
I wanted to see if I could test my electronics skills by repurposing this android box with
something new. I found online that some people built a Linux distro specifically for these
ARM based systems, called Armbian (based on Debian), and, further, made a sub-distro for
these Android TV boxes, called RK3318 Box (the chipset that I have).
I was able to install the system quite easily following the tutorial, and it dramatically
reduced the temperature of the chip (before it was scalding hot), but I wanted to see if I
could then install a Lakka gaming OS firmware; but something went wrong with the install and
my box became totally unresponsive (bricked). I spent the next few days going over tutorials
and forums of people who have unbricked these before by using factory firmware tools (with
an unconventional USB A male to male cord), and grounding some of the board’s terminals, in
order to get the board into maskrom mode, in which then its able to be communicated with and
flashed with factory firmware. The factory firmware then allows a jumping point for which I
can then flash the system via USB sticks of preload firmware of custom Linux
software.
With a lot of patience, I finally got it to connect and flash, after which I pledged to not
attempt that Lakka install again, but instead try something else.
A part of my software engineering training was to use GitHub as a basic version
control
software (for
tracking changes), but GitHub has some amazing tools for the larger picture of
project
management. For my University course where I had to build an Android Studio
application, I
used GitHub as the main management tool for that app development.
GitHub has useful features like: - Wiki pages for documenting the plans of our
app; - Project Boards for tracking task completion schedules and any development
issues;
- Organization designations for allowing other team members to separately interact
with
the same
project;
- GitHub Actions DevOps tools for allowing automated continuous-integration scripts
for new
repo changes. ...And, of course, the obvious version control features like
commit
history, and push/pull requests, etc.
TAGS: software; Android Studio; Android; smartphone; Google Firebase; Open Street
Maps;
GitHub
Why I Did This
Some of my engineering courses taught me about some fundamental concepts of software
engineering (through an object-oriented style using the Java language); In doing
this, I was
also guided on how to use Android Studio, a standard application for developing
Android
based apps using the Java language.
Here I will go over the application my team and I built called QR Hunter, an app for
translating any QR or bar codes you find with your smartphone camera.
In one of my university’s courses, we learned about real-time embedded systems.
Real-time
operating systems are systems that strive to complete tasks within hard time limits;
these
can be both scheduled and interrupt triggered tasks. They are important systems
because not
only do they express high performance with their ability to respond, but they are
suitable
for mission or safety critical systems (like vehicle accident black boxes, aircraft
systems,
medical devices).
FreeRTOS is an example of a real-time operating system (it’s in the name). I learned
that
you could import the FreeRTOS library on the Arduino IDE, so I wanted to reflect on
the
concepts in learned in my course and how I could apply them to an Arduino
project.
The main concepts our course focused on were: multi-tasking/concurrency and
priorities;
queue containers; UART and SPI communications; device control (motors with
opto-isolator,
displays, buttons, leds); hardware interrupts and polling;
I wanted to understand more about the basics of building and hosting a website; this
included: html files that are the bones of the website (provided for free by Html5up),
optional free photos from Unsplash, an optional domain name (for $6 to $13 from
Namecheap),
and from web hosting service from GitHub Pages.
Many popular website builder’s (like Squarespace, Wix and Wordpress) are good at setting
up
nice looking, fast generated websites, but they require a monthly service fee for
hosting
it. Typical website fees stem from: holding a domain name (like ‘myexample.com’) for a
yearly fee of ~$13; using web hosting servers (like Wordpress or HostPapa) for a monthly
fee
of ~$2; HTML theme files for free or ~$55 for fancy ones.
The website building method I chose can get you all elements you need to host your own
website for free (but I spent the extra few dollars to get a nice domain name instead of
'username.github.io’). Note that GitHub Pages is a static website, which means it’s
primary
usage it to display consistent content regardless of user (while dynamic websites can
display content dynamically for different user profiles, like Netflix). For me right
now,
GitHub Pages is fine.
I had a cheap Raspberry Pi 3B and learned they were capable of hosting web servers. I was
learning more about web servers and figured this would be a good pi project; additionally, I
figured this project might teach me more about the intricacies of non-cloud web servers.
Cloud based web servers aren’t free (for the most part; you can get an exception to this by
using GitHub Pages, but apparently the level of service is limited); the costs arise from
the power and service time allocated from companies to have their computers serve the cloud
requests (think of it like charging for virtual parking and virtual valets of your website
or other internet services). To get around this (at least at the individual tinkerers’
level) you can host your own website on your own hardware.
TAGS: electronics; software; NAS network attached storage server; Android TV box; Linux
distro Armbian; OpenMediaVault
Why I Did This
In a previous experience I had converted my useless Android TV box (used to make TVs into
pseudo-Smart TVs) into a Linux distro Armbian. The RK3318 Armbian distro could also download
an ‘armbian-config’ library package that allows quick integration of third part software
(from a predefined list), so I wanted to see what I could install to make use of the box.
TAGS: electronics; software; Esp8266; Arduino; WIFI Web Server; Cayenne
Why I Did This
I wanted to test a free IOT server service that allows me to monitor my microcontroller
sensors from the web (from my smartphone). Cayenne (powered by myDevices) allows a user to
add arduinos, esp devices, and raspberry pis to its server so you can monitor whatever
sensors you attached to them from their website.
TAGS: electronics; software; Arduino nano; NRF24L01 radio module
Why I Did This
I love the ‘magic’ of remote communications (i.e. being able to control items from long
wireless distances).
I wanted to test out some widely popular radio communication modules known as the NRF24L01
(I specifically have the longer-range PA/LNA ones, but the wiring and coding techniques are
the same as the original).
NRF24L01 modules operate under the widely popular 2.4GHz unlicensed radio band.
I wanted to see how well internet connected microcontrollers could work with the simple
and
powerful Google Firebase.
I’ve used Firebase before but never with microcontrollers and it could be a great
candidate
for simplifying data servers with Arduino devices.
I wanted to experience owning a solar storage system. I had the opportunity to receive
some
free 12V batteries, and I found a cheap basic maximum power point tracking (MPPT) solar
charge controller and 50W solar panel online.
The system totalled about $100. I also have a cheap 12V inverter (used in vehicles to
get a
120V AC supply).
TAGS: electronics; software; Esp8266; Arduino; WIFI Web Server; AdafruitIO
Why I Did This
I wanted to test a free IOT server service that allows me to monitor my microcontroller
sensors from the web (from my smartphone). I had previously tested the Cayenne service,
which was ok but seemed to not display well on my smartphone. Now I’m testing the
AdafruitIO
IOT server service. It, like Cayenne, can allows a user to add arduinos, esp devices,
but
seems to only allow raspberry pi picos (their ‘arduino nano’ microcontroller version of
raspberry pi) to its service; this is probably because they are a microcontroller
service
and not focused on microprocessors, but I’m speculating on that.
Wanted to experience the impressive long-range (LoRa) abilities of the TTGO esp32 LoRa
technology.
I figured a perfect use for pair of these is a messaging network that doesn’t use cellular
nor WAN-wifi service
(like if I’m hiking in deep woods); I would program the LoRa esps to each pair with separate
smartphones
(via wifi access points or Bluetooth), then use the LoRas to communicate with each other
over long distance;
The smartphones could then send messages to each other through their LoRa counterparts.
But… it turns out someone already made that!
The Meshtastic project is an open-source project design to build mesh communication networks
using low powered devices.
I wanted to see if I could monitor and control a small microcontroller from a privately
owned web server and website that is hosted on that same microcontroller.
One of the beauties of having Wi-Fi on a tiny microcontroller is that you can monitor and
control the sensors from a separate smartphone or computer display (so no need to hook up an
LCD, and you get to view the information remotely). Another cool thing is that some smart
developers created libraries for the Arduino/Esp compatible microcontrollers that allow a
person to host html code so you can view it from the web.
I needed to access my university’s Linux servers from my own computer. I needed to access
them to complete Unix compatible assignments that needed to function on those particular
servers. I was presented with a desktop client, X2GO, but then later learned about VSCode’s
SSH extension.
TAGS: electronics; software; ESP8266; Arduino; WIFI Web Server
Why I Did This
I wanted to make an ESP8266 into a WIFI access point so that anyone who connects to it could
control its webpage server;
I figured that a fun example could be to control a string of holiday scenery lights (so any
passerby stranger could change the flickering mode of the lights).
I have a garden, old irrigation supplies, rain collection barrels, and wanted to see if I
could apply my computer skills into creating an automated watering system.
TAGS: software; Unity; University of Alberta; Augmented Reality; smartphone
Why I Did This
I had the opportunity to work with some fine people on the University of
Alberta’s
Augmented Reality app called “UAlberta AR”. The app showcases many engineering
course
concepts that students and teachers can use as an aid in visualizing/ experiencing
said
concepts. It was a great experience to develop my Unity skills but also develop team
collaborations skills especially with DevOp style git version control (we had our
project on
a git repo and used Unity’s Continuous Integration checker to check our updates
everything we made a
revision to
the app). We also followed a sprint team review style when setting project goals.
After my first year of engineering, I was asked by my MacEwan University teacher,
Dr. Davis,
if I wanted to participate in an Undergraduate Student Research Initiative (USRI)
study. The
study was centered around researching if augmented reality tools could aid in a
student’s
learning.
I wanted to participate mostly because it was an opportunity to learn the Unity game
engine
(which I have never used before, but heard it was great for developing games and
simulations). In this study I researched what other articles focused on AR for
pedagogical
use and if I could develop scenes in Unity (and Fusion 360 for drawing) that
reflected
engineering course concepts that could be better explained with AR model scenes.
TAGS: electronics; software; nature projects; Arduino Uno; data logger shield; real time
clock; relay; water pump; DC motor fan;
Why I Did This
One of my passions is with nature related automation (because I like growing food plants and
I love the idea of them being cared for through automation).
Normally I can achieve this with minimal equipment (like a bubbler alone), but I have an
Arduino, lots of sensors, and data logger shield; and, as an engineer,
I figured this would be a perfect project for testing all of this equipment.
I bought the cheap GUVA-S12SD UV sensor because I figured it could be a useful sensor for a
myriad
of solar projects (weather station; garden solar quality measurement; solar panel monitors;
UV research projects)
so I wanted to test out its measuring qualities with a simple portable meter.
TAGS: electronics; software; nature projects; Arduino; DHT22; Anemometer; Rotary Encoder;
3D modeling; 3D printing; product reporting
Why I Did This
It was the project of one of my engineering courses where the focus was to learn some
Arduino electronics building
and to learn how to brainstorm and report projects (for imaginary customers). We were tasked
with building a wind
speed sensor (turbine) using a rotary encoder and Arduino, plus 2 additional sensors of our
choice. I was able to
build on my Fusion 360 3D modeling and printing skills by printing some wind blades and
housings. Finally, we had
to summarize our project into a report PDF.