Enter Your Electronics & Design Project for a chance to win up to a $200 Shopping Cart of Product! | Project14 Home | |
Monthly Themes | ||
Monthly Theme Poll |
Congratulations to avnrdf for PanelDriver: A FPGA based HDMI to FPD-Link converter! You are the winner of the Grand Prize of a $200 Shopping Cart!
Congratulations to jomoenginer for VidorScout - MKR Vidor 4000 Mobile Robot, bernhardmayer for bb-cpld - a robotics expansion board for the BeagleBone Black with an Altera MAX II EPM1270 , and dixonselvan for Display for Traffic Predictor - Cypress PSoC6 BLE Pioneer kit ! You are the First Place winners of the $100 Shopping Cart!
Since this theme was Programmable Logic, we thought it would be fun to trace the roots of this broad topic to the man who is considered the father of of the programmable logic controller, Richard Morley. He passed away a few years ago on October 17th, 2017. Before passing away he was known for hosting Geek Pride picnics at his farm in New Hampshire for fellow inventors and tinkerers. He was a self-schooled engineer who dropped out of M.I.T. (Massachusetts Institute of Technology) and refused to work corporate hours. He often recalled how he was hung over on New Year’s Day in 1968 when he designed a rugged computer that revolutionized factory automation. Prior to his invention, automation had depended on electromechanical relays, thousands of "on/off" switches, to tell machinery what to do. If there was a new or a changed product was introduced, thousands of wires and switches had to be reconfigured by an electrician. The device that Morley introduced was later known as a programmable logic controller, or PLC. On that New Year’s Day, he had to sketch out his concept quickly due to the headache he felt coming on from having celebrated the night before. The device, which was about the size of a suitcase, allowed electricians to use a simple computer to reprogram machinery controls. Now adjustments to controls which had previously required months of drudgery, could be completed in hours. He and associates formed a company called Modicon Inc. to make the PLCs, then sold it to Gould Inc. in 1977. Modicon now is a PLC brand made by Schneider Electric.
In the 1990s, vendors began developing control devices that integrated logic and I/O with additional capabilities. By 2001, the moniker Programmable Automation Controller (PAC) was given by the ARC advisory board to describe this approach. PACs include multiple processors to address a variety of functions beyond just basic logic and I/O. These capabilities include digital (e.g. motion control), analog (e.g. process control), and serial (I/O from test equipment, keypads, scanners, etc.) tasks. Because PACs already include these functions, they eliminate the time and effort involved in integrating a PLC with the motion controller, for example. As a result, they’ve grown increasingly popular in discrete manufacturing. Another control option that delivers even greater levels of flexibility is soft motion enabled by PC. Today’s industrial PCs have been ruggedized, top to bottom, with environmental protection and removal of any moving parts. Hypervisors like VMware allow a single core to be divided into multiple discrete partitions that run independently of one another, right down to the operating system. This enables a motion application to run on a partition with Linux or a robust proprietary real-time operating system (RTOS) while remaining completely isolated from a Windows partition supporting the HMI or a machine vision system. At the opposite end of the spectrum lies embedded control systems that leverage field programmable gate arrays (FPGAs) to customize performance using hardware rather than software. When unusual requirements can’t be satisfied by conventional control solutions, FPGAs provide a more accessible solution than more expensive and difficult-to-develop application-specific integrated circuit (ASIC). The approach can be used to address one-off, high-performance projects like a segmented telescope with multiple thousands of actuators that can’t be addressed with a conventional PLC/PAC solution. Conversely, FPGAs can be used to offload tasks such as control logic and I/O triggering in highly complex systems, freeing CPU cycles to handle more complex tasks like trajectory generation.
Without further adieu here are your winners......
{tabbedtable} Tab Label | Tab Content | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
The Winners |
The Grand Prize:
PanelDriver: A FPGA based HDMI to FPD-Link converter by avnrdf:
This Programmable Logic theme comes about almost a year since avnrdf first started working with FPGAs. While the project at its current stage it does not make use of the ARM core in the Zynq, he managed to make use of a lot of what he learnt in Path to Programmable.
You can view avnrdf progress here:
His entry for this month's Project14 contest is an FPGA based HDMI to FPD-Link converter - a device that takes video from a HDMI source, decodes it, encodes it and sends it to a LCD panel over FPD-Link (commonly referred to as LVDS). He completed this project around 4 months ago:, but decided to enter it into this month's contest for two reasons: - it's a good example of a project that cannot be done using a microcontroller, and makes good use of FPGA capabilities. - it's got the right mix of Project14 material: a little reverse engineering, pushing hardware to its limits, overcoming obstacles, a mix of hardware & software HDL and the right about of duct tape holding all of this together.
3 First Place Winners:
VidorScout by jomoenginer:
VidorScout is an autonomous mobile robot that uses Sensor Fusion which combines camera vision, Time of Flight Sensor data and IR Sensors to identify objects for both avoidance and for object identification. The camera sensor can also be used for QR code identification to identify that an object has been labeled correctly or as a waypoint with autonomous navigation. The Arduino MKR Vidor 4000 Development Board is used to take advantage of the on board SAMD Microcontroller and Intel Cyclone 10 FPGA capabilities. A 5MP OV5647 Camera sensor captures real-time images to be output via the Vidor HDMI port as well as for analysis. A closed Maze is used to demonstrate the functionality of the bot.
Part of the intent of the VidorScout project is to take advantage of the FPGA code that Arduino has provided and modify it for a particular purpose. It is unknown at this time whether this is possible since not all of the released FPGA code has been provided by Arduino for the MKR Vidor 4000, so it will be a matter of working with what is available. However, Arduino recently posted the VidorBitstrem code which has the majority of the FPGA code used in the VidorPeripherials and VidoGraphics examples. To compile the VidorBitstream code, a few steps are required. To edit and synthesis the Intel Cyclone 10 LP code for the Vidor 4000, the Intel Quartus Prime (includes Nios II EDS) software needs to be downloaded an installed. Intel provides a Lite 18.1 version that is free to download and use but is a couple of steps behind the latest release. This includes the Intel Quartus Prime development environment, Nios II Embedded Design Suite, ModelSim Starter Edition and much more.
The VidorScout is a mobile robot that self navigates using Sharp IR sensors and a VL53L0X Time of Flight Distance Sensor When a QR Code is Identified, the bot will stop and a Ref RGB LED on the back of the bot will flash indicating the code was found. The Base of the VidorScout is made of Expanded PVC board that was obtained from a local Tap Plastics store. The Wheels of the VidorScout are Adfruit Thin White TT Wheels and the motors and OSEPP TT Gear Box motors. The Motor Controller used is a Adafruit DRV883 with Dual H-Bridge. The Time of Flgiht sensor is a VL53L0X sensor.
bb-cpld - a robotics expansion board for the BeagleBone Black with an Altera MAX II EPM1270 by bernhardmayer:
When you build robots you always have to control lots of motors or RC servos. If you use a micro controller as main computing device you are fine because these devices have plenty of PWM outputs to control motors. But when you switch to more powerful controllers like the Raspberry Pi or the BeagleBone Black you have a little problem because these only have two or three PWM outputs and you can't stick your motor drivers directly to them. Then you usually use an additional motor controller board with a micro controller and connect it via serial or SPI to your Raspberry Pi or BeagleBone. Another option is to use a CPLD, connect it to the main CPU via SPI and generate the PWM outputs with this device. bernhardmayer built a board doing just this and describes it in this post.
Display for Traffic Predictor - Cypress PSoC6 BLE Pioneer kit by dixonselvan:
The Programmable Logic competition was a chance to explore 'Programmable Logic' which is usually not explored by hobbyists or makers in the first place. This may be due to the code or hardware complexity. But recently FPGAs and other PLDs have been made easy for beginners to learn and explore. One best example to quote would be Arduino Vidor 4000. So checking his inventory, dixonselvan has the below four boards/ kits that would suit this competition's topic
Out of these four, this blog will cover a simple project done using the Cypress PSoC6 BLE Pioneer kit. This project may not use the full (programmable) capacity of the PSoC6 rather uses a single programmable GPIO.
Earlier, dixonselvan had prototyped a traffic predator for the IoT on Wheels Design Challenge . This did not have a display unit rather had an Android mobile application to have the details displayed to the user. Hence he wanted to make a display for my traffic predictor project using the E-Ink Display shield of the Cypress PSoC6 BLE Pioneer kit. Though initially, he had many plans running through my mind, time constraint, unforeseen incident (Breakage of the E-Ink Display Shield) and the fact that he is new to Cypress PSoC family and PSoC Creator, limited the display functionalities to Display the logo initially, Display an alert in case any vehicle in front approaches closer than a limit and Display the real-time temperature of the surrounding. The display unit would be an extension of the main traffic predictor system (Arduino UNO (replacing ST-Nucleo L476RG board), Ultrasonic Sensor and Servo Motor). Arduino Uno will send a HIGH or a LOW digital signal to the Cypress PSoC6 BLE Pioneer board, instructing when to display the alert in the E-Ink Display Shield and to turn ON/OFF the LED.
| ||||||||||||||||||||
Runners Up | Runners Up:
The following projects received first place votes from the judges....
Programmaball by Fred27:
Fred27 has been trying to get into FPGAs, but he’s found it a little hard going. Let's be honest it's not easy. It's the sort of thing that you understand when you read it, you understand when you try it, but you struggle with when you come back to it again. He was excited about the Programmable Logic competition because time-limited projects are always a good way to focus the mind. Having said that, he’s got a lot going on at the moment so there is a fair chance it won't get completed by the Project14 end date. As long he gets some of it done and learns as he goes then he'll be happy even if he misses the deadline. He has an Arty S7 sitting in front of him (thanks to the very generous kk99 ) and a PmodVGA board that seemed like a good add-on to a recent component order. Generating a VGA signal seems like a nice rite-of-passage for FPGA development so he’s going to go for a simple VGA-based game. He’s also got some micro:bits that his sons (age 7 and 5) are just starting to get to grips with. It would be really nice to get them involved in creating something. If he could include a micro:bit in a small way then that would be a bonus. Marble madnessPong is a great starter game. It's not that tricky and it really hits the nostalgia button. However, he doesn’t want to do something with a little originality. He’s not much of a gamer, but one game he remember for it's originality back in the day was Marble Madness. Now if you think that he’s capable of recreating that then think again! He just like that sort of idea. He also noticed when helping the boys with the micro:bit that it responds to tilt. Maybe a couple of micro:bits could be the game controllers and a ball could roll around the screen?
He settles on making it a ball-rolling sort of game controlled by a couple of micro:bits. He’s hoping his kids will be able to help with the micro:bit side of things. As the FPGA (a Spartan 7 on an Arty S7 board) will be generating the output VGA signal he started looking into how to generate FPGA. He found an excellent resource on VGA generation at timetoexplore. It describes all the timing required for a 640 x 480 VGA output from a VGA and even started going into generating graphics. He also discovered a different approach by Andy West here on E14. He really wanted to understand what he was doing rather than copy someone else's code so he took inspiration from both. The timing and generation on his version takes a lot from timetoexplore, but he liked the separation of the VGA signal generation from the rendering of element from Andy's solution. He also decided that he wanted to render the output on the fly rather than writing to an area of RAM to display from there. He felt that he'd learn more from doing it this way. Of course, he stumbled into a few FPGA pitfalls. At one point he managed to (he thinks) get the timing a little too close and half the screen was blanked and he got a smudgy green / purple mess. As a coder, that's not something you'd expect when only dealing with grey and blue. Once you've got timing issue sorted he decided to move on to having something a little more interesting than a square. This got me into the realm of uploaded an image file onto the FPGA. Once again timetoexplore was helpful. Still in his retro vibe and with a PacMan machine at work, he decided that a PacMan ghost would be cool. He ended up hand-entering image data in the form of a 14 x 14 grid of 2-bit binary data to form the image and a 4 colur palette to translate these to a 12-bit colour for display. If you look closely you can just about make out the figure in the image.
Pseudo random generator with Arduino Vidor MKR4000 by kk99:
Vidor Clock - Powered by FPGA by vimarsh_:
vimarsh_ wanted to do something useful with FPGA as he had Adruino MKR Vidor laying around. The Vidor is still not so beginner friendly but its Graphics Library is still awesome. Also, he had almost forgotten it has WiFi and a microcontroller also. So, he wanted to make something which uses all of the microchips and which can be used on a day-to-day basis. So, the direct thought came was to do something with display because the Vidor has an HDMI (micro) port and also a great library. For the project, he thought of making a digital clock- which shows time in analog format and it will also show the date and other information. This will test out his trigonometry skills as well as it can use the internet. Here's how it works... The Vidor connects to the internet with the help of its WiFi chip (Esp32) and gets the time in the world via NTP Server. Then the time is stored in the RTC of SAMD21 microcontroller. That time is then displayed in analog format with the date on an HDMI monitor. After the day is over it will automatically sync the time with the NTP Server again and hence it will also remain very accurate. The output on Monitor is done by Intel Cyclone FPGA onboard.
PSoC ultrasonic range meter by koudelad:
Programmable System on Chip (PSoC) is a component that mixes a CPU core (ranging from an 8-bit device to a dual-core 32-bit ARM Cortex-M4) and a configurable mixed-signal array. This way of designing is very powerful – while the CPU is used for computational tasks, peripherals are routed and used without any CPU load. Internal components of the PSoC can be arranged in a way that the measurement is taken periodically in the background and CPU is used only for the initial components’ setup and a final result collection. Ultrasonic ranging module HC-SR04 is a very popular module for hobbyists. It provides a fairly easy to use interface – besides from power and ground pins (5V power supply), there are two pins named Trigger and Echo. Trigger accepts a 10 us wide pulse to start the distance measurement. Echo sets the output to a logic high, proportional to the distance of an object to the module. Trigger controls an ultrasonic transmitter and internally the trigger pulse starts an 8 cycle sonic burst. Waves travel distance from the transmitter to an object (or more object) from which they reflect. These waves travel the same distance back to the receiver that detects them. Finally, Echo pin provides a pulse with the same length as the travel time of the waves (both directions). In ideal conditions, the speed of sound is about 343 m/s at 20 Centigrade.
|
What's Happening Now
There's always stuff going on in the community and the best ideas always come from you. Suggest your idea in the Monthly Poll! and vote on the themes you want to do projects on. Build an electronic toy such as an executive toy, puzzle toy, educational toy, or cuddly toy. Or create a techno toy from an existing toy by adding electronic innards in the Electronic Toys competition. You can build projects that involve remote monitoring or control of devices that are not easily accessible in the Remote Monitoring & Control competition.
Because, we're grateful to the element14 community for allowing us to exist, we wanted to do something extra special for the 10 year anniversary. Milestones are an opportunity to stop for a second and think about where you were 10 years ago and where you are today. What was important to you yesterday, what's important to you today? We're giving away some of our favorite boards to help get this conversation started. Let us know what you couldn't live without 10 years ago, and what couldn't you live without today. We'll be sending swag bags for posting thoughtful, entertaining, interesting, or enlightening responses. Each package will contain gifts including an Adafruit Feather ESP8266, an Arduino Uno, or an Arduino Nano board!
10 Years of element14 Community! | |
---|---|
10 Year Challenge | Tell Us What You Can't Live Without for an ESP8266, Arduino Uno, or Arduino Nano! | |
Thank you for continued support of Project14 !
In the comments below:
Top Comments