author

BigjBehr

26
Inbox View Profile
6Instructables49,215Views33CommentsMacedon, NY, USA
I am a retired Embedded Systems Engineer. I enjoy playing around with microcontrollers, SBCs, 3D printing and woodworking.

Achievements

10K+ Views Earned a bronze medal
  • Raspberry Pi Scrolling Sign

    I have not done anything with that project since 2-21-2018. Check the dates on the files you downloaded and see what thedate on RGB-32x64.py file is. If it is before 2-21-18 then I may have an update.Can you give me more details about the problem you are having. OpenWeatherMap changed how you specify the location that you want the weather data for. The latest requires the zip code and country (ie "14502,us") or city and state (ie "fairport,ny").As I stated in an earlier reply, I have designed a 3D printed part that holds the HUB75 interface board and the RPiZW securely in place. If you have access to a 3D printer I can send you the files for the part.

    View Instructable »
  • Yet Another Weather Station (Y.A.W.S.)

    First, BMEADRS is not a var, it is a macro. Near the end of the BME280.h file is the line; #define BMEADRS 0x76 // I2C address of the BME280. Macros are replaced by their defined value by the 'C' preproccessor. In other words, BMEADRS is replaced by 0x76 where ever it appears in the source code.BME280_DIG_T1_LSB_REG is also a macro.If the BME280.h file is in the same directory as the .ino file and the #include "BME280.h" directive is in the beginning of the .ino file then it should be added to the source code by the preprocessor.What version of the Arduino IDE are you using ?What OS are you using (Mac, Windows, linux) ?I have the same code and cannot reproduce your issue. I am running Windows 10 and Arduino IDE version 1.8.12.If you are still having an issue then co…

    see more »

    First, BMEADRS is not a var, it is a macro. Near the end of the BME280.h file is the line; #define BMEADRS 0x76 // I2C address of the BME280. Macros are replaced by their defined value by the 'C' preproccessor. In other words, BMEADRS is replaced by 0x76 where ever it appears in the source code.BME280_DIG_T1_LSB_REG is also a macro.If the BME280.h file is in the same directory as the .ino file and the #include "BME280.h" directive is in the beginning of the .ino file then it should be added to the source code by the preprocessor.What version of the Arduino IDE are you using ?What OS are you using (Mac, Windows, linux) ?I have the same code and cannot reproduce your issue. I am running Windows 10 and Arduino IDE version 1.8.12.If you are still having an issue then copy the contents of the BME280,h file to the .ino file, near the top, into the area where other #defines are. Copy everything from the line; #include "stdint.h" to the line; #define BME280_CHIP_ID 0x60 // chip ID for BME280, inclusive. The rest is just comments and to prevent the file from being included more than once.

    View Instructable »
  • Yet Another Weather Station (Y.A.W.S.)

    You are missing the file; BME280.h. This file should be in the same directory as WeatherStation.ino. Go back and check your github download, the file should be there. If you cannot find it give me your email address and I will email it to you.

    View Instructable »
  • ESP32 Bluetooth BLE Remote Control

    Did you change the "VR BOX" in the line; #define ServerName "VR BOX" to match the advertised name of your BLE joystick device ? Must be an exact match. Do you have a good battery in you joystick device ? Are you in range (<30ft) ?

    View Instructable »
  • Raspberry Pi Scrolling Sign

    So you are new to Python. I am not a Python master, I use itsporadically. I prefer C/C++ or Java over Python.BadError Code: 401 looks like an internet error code. Maybe a bad URL ?Try wrapping a try/except block around the code that is generatingthe error. In the exception block print out the URL that caused theproblem. Maybe that will shed some light on the issue.Headlines works byiterating through a list of headline URLs. For each URL in the listall the headlines found are parsed into the headlines list. When donethe headlines list is merged with the master display list and theheadlines list is destroyed. There is no way to know how manyheadlines one URL will produce. You can limit the number of headlinesin several ways. You can check thelength of the headlines list after each headline…

    see more »

    So you are new to Python. I am not a Python master, I use itsporadically. I prefer C/C++ or Java over Python.BadError Code: 401 looks like an internet error code. Maybe a bad URL ?Try wrapping a try/except block around the code that is generatingthe error. In the exception block print out the URL that caused theproblem. Maybe that will shed some light on the issue.Headlines works byiterating through a list of headline URLs. For each URL in the listall the headlines found are parsed into the headlines list. When donethe headlines list is merged with the master display list and theheadlines list is destroyed. There is no way to know how manyheadlines one URL will produce. You can limit the number of headlinesin several ways. You can check thelength of the headlines list after each headline is added. When youget to a number that you feel is appropriate then stop parsing orstop adding new entries to the headlines list. Build the headlineslist only is there are no entries in the headlines list. Change wherethe headlines list is merged with the master display list to add afixed number of headline list entries to the master display list,removing the entries from the headlines list as they are added to themaster display list. When you have used up the headlines list (length== 0) then make a new headlines list. Another thing to tryis to process only one URL from the list of headline URLs. Then thenext time a list of headlines is to be created use the next URL inthe list. When you get to the end of the list, start over with thefirst URL (in effect using the URL list as a circular list). Or remove someheadline URLs from the options.ini file.I will need to lookinto the OWM issue. May take some time.

    View Instructable »
  • Raspberry Pi Scrolling Sign

    From the output; "ValueError: invalid literal for float(): 87}", it would appear that there was a parsing error.The line; "humidity = float(l[l.find(':') + 1:])" is searching "l" (a line of text) to find a colon. Then skip over it and parse a floating point value. The text after the colon is not in the proper format to be parsed as a float.You could wrap a try/catch block around the statement. Then if an error occurs the system would not crash, the catch block would run.Or you could dump the line of text and see what is actually after the colon that is causing the problem. it may be as simple as replacing the float() function with an integer() function.Open Weather Map has made some changes since I originally wrote that code. I did a complete re-write of that…

    see more »

    From the output; "ValueError: invalid literal for float(): 87}", it would appear that there was a parsing error.The line; "humidity = float(l[l.find(':') + 1:])" is searching "l" (a line of text) to find a colon. Then skip over it and parse a floating point value. The text after the colon is not in the proper format to be parsed as a float.You could wrap a try/catch block around the statement. Then if an error occurs the system would not crash, the catch block would run.Or you could dump the line of text and see what is actually after the colon that is causing the problem. it may be as simple as replacing the float() function with an integer() function.Open Weather Map has made some changes since I originally wrote that code. I did a complete re-write of that code when I ported the project to a Raspberry Pi Zero W connected to a 32x64 matrix. If you give me your email address I can send you that code. The new code also parses out the forecasts for the next few days. The new code is not a drop in replacement. As i said, it is for a Raspberry PI, what you are using is for a Linkit Smart 7688 Duo. Both are Python code. If you can do Python then you should be able to locate the functions that parse the Open Weather Map data and copy them into the LinkIt code base. No guarantee that OPW did not change again. I also have a stock of the Linkit Hub75 interface boards and the Raspberry Pi Hub75 interface boards. I will give you an unpopulated board of your choice. Surface mount soldering will be required to build the boards.For the Raspberry Pi version, I designed a 3D printed mount that securely mounts to the 32x64 display and then holds the Hub75 interface board in place. I have not tried it on the 16x32 display. I do have a 3D printed back for the 16x32 display. I can send you the files if you have access to a 3d printer.

    View Instructable »
  • ESP32 Bluetooth BLE Remote Control

    I never said I was not a programmer. I said that I am a retired Embedded Systems Engineer. I developed hardware and software. So, yes, a programmer. I probably said that I am not a BLE expert. I just learned enough about how BLE works to be able to program the ESP32. Glad to hear that it works for you.BTW, I got my VRBOX controller from my local 5Below store for $5.00. Where did you get your Utopia 360 controller & what did you pay for it ?

    View Instructable »
  • ESP32 Bluetooth BLE Remote Control

    After you do the @+D the device should be in mouse mode. You only need to do this once. The ESP32 looks for the joystick on startup. If it does not find it then the scanning stops after about 30 seconds. You should always turn the joystick on first, then power up the ESP32. The line, "pBLEScan->start(30);" in startup() sets the timeout to 30 seconds. Change the "30" to increase or decrease the time. Once a connection is established the ESP32 is able to re-connect if the connection is lost.You can fix this problem by modifying the code to do an ESP32 soft-reset if a no connection timeout occurs before a connection is established. This is the only way that I know of to reset the BLE stack so that it will try to connect again.If you made the connection before being i…

    see more »

    After you do the @+D the device should be in mouse mode. You only need to do this once. The ESP32 looks for the joystick on startup. If it does not find it then the scanning stops after about 30 seconds. You should always turn the joystick on first, then power up the ESP32. The line, "pBLEScan->start(30);" in startup() sets the timeout to 30 seconds. Change the "30" to increase or decrease the time. Once a connection is established the ESP32 is able to re-connect if the connection is lost.You can fix this problem by modifying the code to do an ESP32 soft-reset if a no connection timeout occurs before a connection is established. This is the only way that I know of to reset the BLE stack so that it will try to connect again.If you made the connection before being in the proper mode then the ESP32 will have established what services and characteristics were available at the time the connection is made. Changing the joystick mode after connection will do nothing. You will need to break the connection and then re-establish it. Also, if your joystick is not exactly the same as mine then you may need to find which mode provides the features that you want to use.The easy way is to select a mode, establish a connection and press buttons & move the joystick and see what you get. You might have to re-write the notifyCallback() function to parse the data packets that you receive. Your device is different. Mine indicates its name as "VRBOX", yours says "Utopia 360 Remote". The printout was cutoff so that I could not see the UUID of the service. You can modify the code to print the UUIDs of services found and the UUIDs of the characteristics for each service. The code looks for a remote server with the name "VRBOX" and then if it has a service with the HID UUID. and then for characteristics that use the REPORT UUID. Due to the name of your device being different you are not actually connecting to the joystick. Line 76 (or there abouts) defines ServerName as "VRBOX". You need to change this to "Utopia 360 Remote" and recompile. You can change the code to connect to a remote server that has a matching MAC address or name, I chose to use the name. If I was going to use multiple remotes with multiple ESP32s in the same vicinity then I would use the MAC address instead because it has to be unique, whereas the name does not.. Because your joystick is different you are going to have to do some experimenting to find out which mode has the data you want and how to parse it. Your output does not indicate that a HID service was found, so no connection is made. When I started this project, I used an app on an Android device to display all the services and characteristics that the joystick was advertising. If you cannot figure out how to have the ESP32 display the advertised services then try to find an Android app to do it for you, then use your phone or tablet. I do not use Apple products, so I do not know if there is an IOS app for BLE snooping.I hope this helps, Good luck,

    View Instructable »
  • Raspberry Pi Scrolling Sign

    This message will address the last three message that I received. Asfar as I know, Raspian Stretch comes with Python 2.7 and Python 3already installed. Python code written for one may not work with theother. Same for libraries. All you should have to do would be toupdate Raspian to get the latest Python updates. I believe that theRGB32x64 code was written for Python 2.7. One last note on Python,Raspian Buster did away with Python 2.7 and only has Python 3.The issue with thenews is that the websites that have the news do not present it usingthe same digital formatting. As it turns out, the three that I usedwere similar enough that I was able to parse them using some commoncode. The are some libraries available for Python that attempt toparse headlines from news feeds. I used them in an ea…

    see more »

    This message will address the last three message that I received. Asfar as I know, Raspian Stretch comes with Python 2.7 and Python 3already installed. Python code written for one may not work with theother. Same for libraries. All you should have to do would be toupdate Raspian to get the latest Python updates. I believe that theRGB32x64 code was written for Python 2.7. One last note on Python,Raspian Buster did away with Python 2.7 and only has Python 3.The issue with thenews is that the websites that have the news do not present it usingthe same digital formatting. As it turns out, the three that I usedwere similar enough that I was able to parse them using some commoncode. The are some libraries available for Python that attempt toparse headlines from news feeds. I used them in an earlier version,but ran into problems later on. It seems that a lot of websites liketo periodically change their formatting, breaking the code. ThePython code that is currently parsing the news feeds was written byme after painstakingly going through numerous RSS downloads andnoting how the headlines were different from the bulk of the newsstory. I had a lot of trouble with embedded Unicode characters thastwere not translated to eight bit ASCII code. I had to setup afunction to try and catch these Unicode characters before they wentto the display driver. If a Unicode character made it to the displaydriver then it would throw an exception and shut down the program.Not nice.You are correct thatmy parsing code was written to handle the three URLs that youmention. I personally did not want the news headlines to dominate thedisplay, so I intentionally limited it to those three. You can addas many other URLs as you like. Just download the RSS feed from a URLinto a file and then go through the file trying to determine how thatparticular URL sets its headlines off from the rest of the data. Thenwrite some Python code to parse the URL. Try it out and fix yourmistakes. Rinse and repeat. Sounds like fun. Watch out for Unicodecharacters that did not translate to ASCII. You will usually see themas four hex bytes in the data. Usually the first two bytes are ‘00’,at least for English.Some of the issuesyou are having are occuring because this project was posted a fewyears ago and the world moved on, the code did not.I am glad to hearthat you have the basics up and running. Persistence will pay off inthe long run. You may even become a better Python programmer.

    View Instructable »
  • Raspberry Pi Scrolling Sign

    If you are using display modules with a Hub75 interface then you can daisy chain more modules to achieve more columns. However, you cannot daisy chain module to achieve more rows.The software would need to be adjusted to handle the greater number of columns. If you are using the Linkit Smart 7688 Duo to drive the display then you are out of luck. The Duo part of the Linkit Smart 7688 Duo is an Arduino Leonardo. The Leonardo has more RAM than an Arduino Uno, but not enough to run a bigger display. You will need to move the project to different controller board. Adafruit has Hub75 boards for the Raspberry Pi and the Teensy. The Teensy does not have a built-in WiFi interface. I have used a Raspberry Pi W to run a 64x32 module. 64x32 is four times the pixels of the 32x16 module. If you go awa…

    see more »

    If you are using display modules with a Hub75 interface then you can daisy chain more modules to achieve more columns. However, you cannot daisy chain module to achieve more rows.The software would need to be adjusted to handle the greater number of columns. If you are using the Linkit Smart 7688 Duo to drive the display then you are out of luck. The Duo part of the Linkit Smart 7688 Duo is an Arduino Leonardo. The Leonardo has more RAM than an Arduino Uno, but not enough to run a bigger display. You will need to move the project to different controller board. Adafruit has Hub75 boards for the Raspberry Pi and the Teensy. The Teensy does not have a built-in WiFi interface. I have used a Raspberry Pi W to run a 64x32 module. 64x32 is four times the pixels of the 32x16 module. If you go away from Hub75 modules then I am unable to provide any help, I have only worked with Hub75 LED modules.

    View Instructable »
  • Yet Another Weather Station (Y.A.W.S.)

    The first error message indicates that you did not declare what GPIO pin is used when 'D4' is the target. This error is most likely caused by using a different ESP8266 module than the one I called out. In the Arduino IDE, some ESP8266 modules have the GPIO defined similarly to how they are defined for the Arduino Uno board. Other ESP8266 modules use the actual GPIO pin number. To fix this problem add a "#define D4 xx" statement at the top of the file. xx should be the GPIO pin number that you want to use (for GPIO 5 then just use 5).The second error appears to be because you do not have the Brzo I2C library installed. The documentation tells you where to get the library and how to install it. The Brzo library is used because the Arduino Wire library for I2c did not always work o…

    see more »

    The first error message indicates that you did not declare what GPIO pin is used when 'D4' is the target. This error is most likely caused by using a different ESP8266 module than the one I called out. In the Arduino IDE, some ESP8266 modules have the GPIO defined similarly to how they are defined for the Arduino Uno board. Other ESP8266 modules use the actual GPIO pin number. To fix this problem add a "#define D4 xx" statement at the top of the file. xx should be the GPIO pin number that you want to use (for GPIO 5 then just use 5).The second error appears to be because you do not have the Brzo I2C library installed. The documentation tells you where to get the library and how to install it. The Brzo library is used because the Arduino Wire library for I2c did not always work on all ESP8266 boards. Plus the Brzo library is faster.

    View Instructable »
  • You did a fine job of explaining how to calculate the currentrequired for each hexagon. Then you displayed a lack of understandingof how PWM driving of LEDs works. If you measure the current drawwith an ammeter you are getting the average current, not the peakcurrent. When an LED is driven by PWM the LED will draw the full 20mAfor as long as it is powered on. PWM allows you to set how long theLED is on for in a fixed window of time. The longer the LED is on,the brighter it appears to the human eye. If you were to use opticalequipment to measure the brightness, you would see that the LED has aconstant brightness, no matter the PWM on time. PWM is a trick usedto fool the human eye into thinking that the LED is dimming.My main point hereis that no matter the perceived brightness, the LEDs a…

    see more »

    You did a fine job of explaining how to calculate the currentrequired for each hexagon. Then you displayed a lack of understandingof how PWM driving of LEDs works. If you measure the current drawwith an ammeter you are getting the average current, not the peakcurrent. When an LED is driven by PWM the LED will draw the full 20mAfor as long as it is powered on. PWM allows you to set how long theLED is on for in a fixed window of time. The longer the LED is on,the brighter it appears to the human eye. If you were to use opticalequipment to measure the brightness, you would see that the LED has aconstant brightness, no matter the PWM on time. PWM is a trick usedto fool the human eye into thinking that the LED is dimming.My main point hereis that no matter the perceived brightness, the LEDs always draw thesame amount of current, just for a variable amount of time. Thereforeyour power supply should always be capable of supplying thecalculated current for all of the LEDs that you are using. If you donot then the 5V line will drop when the maximum current of the power supply is exceeded.This could cause random momentary errors.If you insist onusing an under powered power supply then add large bypass capacitorsto each hexagon. Something on the order of 500uf 10V electrolytic capor a 5V supercap should do it. Then the capacitors can supply theextra current when needed and charge when the PWM turns the LEDs off.You need to use anoscilloscope with a current probe to see the peak current draw whenthe PWM lights up the LEDs. Bottom line here is that your power supply and wiring should be capable of supplying the full calculated current or suffer the consequences.

    View Instructable »
  • You are welcome.I am glad to hear that you made a similar device and that you were able to figure out how to make the changes that you wanted to make.

    View Instructable »
  • You can comment out the line: #include controller.h.This project will no longer compile. The latest release of the Expressif SDK for the Arduino IDE no longer has the Bluetooth support files for this program.There is a new BLE_client example that uses Neil Kolban's class based Bluetooth library (which is built-in to the SDK). You will have to modifiy it to change the UUIDs of the service to connect to and the characteristic to use. This can be made to work. However, there is a bug in the Expressif Bluetooth stack that will crash the stack if you try to use more than one characteristic with a service. I have code somewhere that sort of works, only the joystick and trigger buttons work. Let me know if you would like this and I will look for it.

    View Instructable »
  • Your device looks a lot like mine. Are you sure that it is a Bluetooth BLE device ?Did you turn it on before trying yo scan for it ?Are you using a fresh battery ?On my device you press the power button and the blue LED starts blinking. Does yours do the same ?Some issues with my code have come up in the past few months. It seems that somewhere between when I wrote the code and posted it on Instructables, a new Arduino SDK for the ESP32 came out. The new SDK broke a few things and has a bug in it that prevents you from using more than one characteristic with a service. I have posted updated code that fixes some of the broken parts, but I cannot fix the issue with one characteristic per service. None of this matters if you cannot find your device and none of the issues had to do with findi…

    see more »

    Your device looks a lot like mine. Are you sure that it is a Bluetooth BLE device ?Did you turn it on before trying yo scan for it ?Are you using a fresh battery ?On my device you press the power button and the blue LED starts blinking. Does yours do the same ?Some issues with my code have come up in the past few months. It seems that somewhere between when I wrote the code and posted it on Instructables, a new Arduino SDK for the ESP32 came out. The new SDK broke a few things and has a bug in it that prevents you from using more than one characteristic with a service. I have posted updated code that fixes some of the broken parts, but I cannot fix the issue with one characteristic per service. None of this matters if you cannot find your device and none of the issues had to do with finding a device. Make sure your device is on when you start the ESP32 code running. There are come Android apps that can be run on an Android smartphone or tablet that provide information about Bluetooth devices. I suggest that you download and install one of these apps (look in the Google Play store) and see if they can find your device.Can you capture the debug messages that are output on the serial port when you are trying to find your device and post it here. Can you tell me the exact manufacturer's name and model number and where you bought it.I have talked with a fellow in Germany who bought a German version of the device. It was exactly the same, different color and branded different, but worked identically. His came in a different mode than mine. He could not get it to work until he tried a different mode. Modes are changed by holding down one button and pressing another. Check with you instruction booklet and try all the different modes.Hope this helps

    View Instructable »
  • More information please, what micro-controller are you planing on using ?What is the approximate interval between sound bursts, microseconds, milliseconds, seconds, days ?What are you offering for compensation ?I am a retired embedded systems engineer with over forty years experience designing with micro-controllers, designing software and coding micro-controllers.

    View Topic »
    • ESP32 Dual H Bridge Breakout Board
      214 views
      2 favorites
      0 comments
  • John,I recently posted a new project on Instructables that you may be interested in. It is for an ESP32 breakout board with a built-in dual H bridge motor controller

    View Instructable »
  • John,Jim, not Ben.I posted the files for the ESP8266/ESP32 Breakout board to github.Use this link; https://github.com/BigJBehr/ESP-Breakout-Board

    View Instructable »
  • Hello John in the UK,Nice to hear from someone across the pond. The red board that you are asking about is one that I made myself. The board was designed in either Eagle or Kicad and manufactured for me in China. The bare bards are hand soldered by myself. If you are fairly good with a soldering iron then you should be able to solder the board yourself.I have designed several breakout boards for the ESP32 and ESP8266. The one you are asking about will accept ESP32 boards that have two rows of fifeteen pins that are 1.0 and 1.1 inch apart. The board has all the GPIO pins broken out to headers, a pushbutton switch, tri-color LED and a place for an IR sensor.I have other ESP32 breakout boards. All have headers for all of the GPIO pins and a tri-color LED. Some have places to connect a 5V HC-…

    see more »

    Hello John in the UK,Nice to hear from someone across the pond. The red board that you are asking about is one that I made myself. The board was designed in either Eagle or Kicad and manufactured for me in China. The bare bards are hand soldered by myself. If you are fairly good with a soldering iron then you should be able to solder the board yourself.I have designed several breakout boards for the ESP32 and ESP8266. The one you are asking about will accept ESP32 boards that have two rows of fifeteen pins that are 1.0 and 1.1 inch apart. The board has all the GPIO pins broken out to headers, a pushbutton switch, tri-color LED and a place for an IR sensor.I have other ESP32 breakout boards. All have headers for all of the GPIO pins and a tri-color LED. Some have places to connect a 5V HC-SR04 Sonar sensor with a voltage divider on the Echo signal to make it compatible with the ESP32. One has a place on board for a TB6612FNG Dual H bridge daughter board. Another is more of a universal breakout board that can accept ESP32, ESP8266, Arduino and STM32F103xx, LPC1768 and similar boards.If you tell me what features you are interested in, I will create a github entry for that board and post the link here. Then you can down load the files needed to have boards made. Once you have the files you can have the boards made in China by Seed Studio, AllPCB or any of the others manufacturers.

    Cute robot. The controller in the picture, is it Bluetooth ?The board that you want is part of a three board set. The other two boards are an IR blaster and an HC-11 Bluetooth module breakout board. All three are together as one layout. When you get the boards you will have to cut them apart. I use a bandsaw with a metal cutting blade to separate the boards. A hacksaw will also work, but takes longer. There are no cut lines on the board, but it is fairly obvious where to cut them apart. Order the board as one layout. This will minimize the price.I will post all the files in a day or two. If you are adept at using Eagle, you can modify the schematic to remove the other two boards and then change the board outline. You would then have to make all new files. I could do this for you, but will…

    see more »

    Cute robot. The controller in the picture, is it Bluetooth ?The board that you want is part of a three board set. The other two boards are an IR blaster and an HC-11 Bluetooth module breakout board. All three are together as one layout. When you get the boards you will have to cut them apart. I use a bandsaw with a metal cutting blade to separate the boards. A hacksaw will also work, but takes longer. There are no cut lines on the board, but it is fairly obvious where to cut them apart. Order the board as one layout. This will minimize the price.I will post all the files in a day or two. If you are adept at using Eagle, you can modify the schematic to remove the other two boards and then change the board outline. You would then have to make all new files. I could do this for you, but will not be able to do it quickly due to the Holidays coming up.I usually order the headers on ebay. I use so many that I keep them on hand. I buy the forty pin snap apart headers and then break them down to the size I need. Same with the female socket strips. However, you cannot cut the female socket strips between two pins. You have to burn a pin to cut them down. So a forty pin strip will yield a 20 pin strip and a 19 pin strip, not two 20 pin strips.Let me know if you want me to separate the boards for you.

    View Instructable »
  • BigjBehr's instructable 3D Printed Tablet Holder's weekly stats:
    • 3D Printed Tablet Holder
      111 views
      1 favorites
      0 comments
  • Martin,Bad news. I have been going over the problems caused by the new SDK from Expressif. I am unable to fix what the new SDK broke. After spending time searching the Internet, it seems that lots of people are having the same or similar issues with the changes Expressif made to the SDK. It looks like the only solution is to wait for Expressif to acknowledge and fix their problems. If you can somehow download and install the previous SDK the project will compile and function. To be clear, I have corrected the issue with the code not compiling. The current issue is that a runtime error is occurring that is causing the ESP32 to do a reset. I cannot tell exactly when the error occurs. The ESP32 finds the server, connects and then crashes sometime after that. Looks like it might be a watchdog…

    see more »

    Martin,Bad news. I have been going over the problems caused by the new SDK from Expressif. I am unable to fix what the new SDK broke. After spending time searching the Internet, it seems that lots of people are having the same or similar issues with the changes Expressif made to the SDK. It looks like the only solution is to wait for Expressif to acknowledge and fix their problems. If you can somehow download and install the previous SDK the project will compile and function. To be clear, I have corrected the issue with the code not compiling. The current issue is that a runtime error is occurring that is causing the ESP32 to do a reset. I cannot tell exactly when the error occurs. The ESP32 finds the server, connects and then crashes sometime after that. Looks like it might be a watchdog timeout that causes it to reset.

    View Instructable »
  • BigjBehr commented on BigjBehr's instructable Cubic Art

    You are correct, the spacers.stl file is incorrect. I have uploaded the correct file to the github repository. If you download it again you will have the correct file. The file LedCubJig.scad has the source code for the LEDCubeSpacers.stl file. If you install OpenSCAD and comment out line 20 and change the "70" in line 21 to "0", render the object and create an STL, you will have the LedCubeSpacers.stl file (you will have to change the file name when it goes to save the stl file).I am glad to hear that someone (you are the first as far as I know) is attempting to build one of these. It is quite fascinating to watch it go through its range of effects. Let me know if you have any problems with this. I am happy to help.

    View Instructable »
  • Martin,This is a little strange. The error you are having is due tothe ‘esp_ble_gattc_open’ function requiring four parameters and only beingpassed three. When I wrote this it only required three parameters. So it mustbe a library difference.The code was written for the Arduino IDE (ver 1.8.5) usingthe ESP32 add on library ver 0.0.0 (as far as I can tell). I was not awarethere was another release.Are you using the Arduino IDE ?

    Martin,I was able to compile without any errors. After I realized that this is a problem with the ESP32 SDK for the Arduino, I updated to the latest version and am now getting the same error that you are getting. I made a change to the code to fix the error. The code now compiles, but generates a run-time error. I am looking into fixing the run-time error. I do not know how long it will take me. Once I have everything working correctly I will update the code on github and let you know that the new code is there.

    View Instructable »
  • Mike,I am glad that it is working for you. I had a thought thismorning, you may be having the problem because of the editor that you used toedit the options.ini file. Options.ini is a plain text (ASCII) file. It assumes thateach line of the file is terminated with a carriage return(0x0D) and a linefeed(0x0A). Most programming languages convert the CR/LF combo to what is referredto as a newline character (in ‘C’, ‘\n’ or linefeed only). When a text file isread the CR/lf is converted to newline and when written the newline characteris expanded to CR/LF.Editors like MS Word or WordPad do not do a proper job ofworking with plain text files. This is due to them being paragraph oriented andnot line oriented. They may display the text as lines, but the actual file doesnot…

    see more »

    Mike,I am glad that it is working for you. I had a thought thismorning, you may be having the problem because of the editor that you used toedit the options.ini file. Options.ini is a plain text (ASCII) file. It assumes thateach line of the file is terminated with a carriage return(0x0D) and a linefeed(0x0A). Most programming languages convert the CR/LF combo to what is referredto as a newline character (in ‘C’, ‘\n’ or linefeed only). When a text file isread the CR/lf is converted to newline and when written the newline characteris expanded to CR/LF.Editors like MS Word or WordPad do not do a proper job ofworking with plain text files. This is due to them being paragraph oriented andnot line oriented. They may display the text as lines, but the actual file doesnot have CR/LF as line terminators.The Python script reads in the options.ini file and parsesit into an array of lines and then processes then line by line. When it parsesout the value variable, it assumes that there is a newline character at the endof the line and removes the last character in the line. If your editor did notput a proper plain text end of line at the end of the ‘military=t’ line thenthe last character would be the ‘t’ and not a newline character. Therefore the ‘t’was removed instead of the newline, resulting in the problem you are having.If you have some way to view the options.ini file as hexcharacters you can verify this. I suggest that you try using a differenteditor. Maybe Notepad or Notepad++. I use a free text editor named PSPad.Google it and try it out. It has the ability to display the options.ini file inhex mode or in text mode. It also has many features that make it a great editorfor programming. Or look into Visual Studio Code. It is also free and is a verynice editor for coders.I hope this helps.PS I have a newer version of the Python script for thescrolling sign. I was having some trouble with the Python library used withOpen Weather Map so I deleted it and wrote my own parser. A side effect of thisis that the scrolling sign can now do weather forecasts. I also made someimprovements to the jokes and headlines. I dropped the stock ticker out becausethe Python libraries were not working properly and I no longer needed it. Areyou interested in the updated code ?

    Mike,I took a look at what you said. The options.ini file asdownloaded from GitHub does indeed have the 0x0Ds missing from each line (onlythe 0x0A is present). I reposted the original file (with 0x0D & 0x0A) anddownloaded it again only to find that the 0x0Ds had been stripped out !!! Thismust be something that GitHub is doing. Very strange. If I download as a zip file from therepository the 0x0Ds are stripped out. If I push the repository to my computerusing GitHub Desktop the 0x0Ds are in the file.I am going to look into a proper fix for this issue and thenupload a new Python script. I will let you know when the new code is up.

    Mike,New RGB-32x64.py has been posted to GitHub. New version fixes issues with options.ini, using military time format and does weather forecasts. Enjoy

    View Instructable »
  • I have attempted to reproduce the error you are seeing. Ichanged my options.ini file to have ‘military=t’. This ran without a problem. Ithen changed it to ‘military=’. This caused the exact error that you arehaving. Please check your options.ini file and make sure that you have at leastone character after the ‘=’.The problem is that the variable ‘value’ is ending up as anempty string. You can add the line; ‘print len(value)’ after the line ‘value =s[1][:len(s[1]) – 1’. If you see that value has a length of zero then yourissue is that options.ini does not have any characters after the equals sign inone of the true/false lines.You could change truefalse(str) to add a test for an emptystring.def truefalse(str): if…

    see more »

    I have attempted to reproduce the error you are seeing. Ichanged my options.ini file to have ‘military=t’. This ran without a problem. Ithen changed it to ‘military=’. This caused the exact error that you arehaving. Please check your options.ini file and make sure that you have at leastone character after the ‘=’.The problem is that the variable ‘value’ is ending up as anempty string. You can add the line; ‘print len(value)’ after the line ‘value =s[1][:len(s[1]) – 1’. If you see that value has a length of zero then yourissue is that options.ini does not have any characters after the equals sign inone of the true/false lines.You could change truefalse(str) to add a test for an emptystring.def truefalse(str): if len(s) > 0: s = str[0].lower() else: s = ‘t’ # or ‘f’ for default to false return ‘t’ == sThisdoes not fix the root cause of the problem you are having, but will effectivelyhide it. You will be able to run without crashing, but will always get thedefault value that you set.Abetter fix would be to trap the exception you are having and print the linethat caused it. After the lines ‘except IOError:’, print “Falure readingoptions file”’ add;wxceptIndexError: print ‘Error in options.ini: ‘ + lineLetme know if this helps.

    View Instructable »
    • ESP32 Bluetooth BLE Remote Control
      175 views
      1 favorites
      0 comments
  • Sorry, I do not know anything about an 'aggressive mode' in the ESP8266. I do not believe that you can do what you described. If you could, then the system would be extremely vulnerable to attack.What you could try is to run the ESP8266 in station mode. That way it will be like a router with DHCP and allow you to log on to it to get the weather data. It would appear in the list of available WiFi networks. You could also try running in dual mode, station and AP (access point). Then it is part of your network and also its own network.As far as forecasts go, I know how to do that with openweathermap. I do not know how to get forecasts from other weather services.I hope this helps.

    View Instructable »
  • There are many display driver libraries for the OLED display. I used one that was specifically for the ESP8266/ESP32 and an SSD1306 based OLED display. There are some small ESP8266 boards that are about the same size as the OLED display. Look for a Witty ESP8266 or a WeMos D1. Banggood or AliExpress should have them. I found that the BME280s that I have were reading the temperature about five degrees Fahrenheit too high, so I adjusted for it in the code. Glad to hear that you made one. I recently figured out how to get forecasts from openweathermap.com. I added forecasting to my scrolling sign projects. If you are interested in adding forecasts let me know.

    View Instructable »
  • Xavier,It looks like you changed something in the options.ini file. You are trying to use something other than 't', 'T', 'f' or 'F' for a true/false entry.If you are still having issues, show me entire options.ini file.

    View Instructable »
  • BigjBehr's instructable Cubic Art's weekly stats:
    • Cubic Art
      314 views
      7 favorites
      0 comments
  • BigjBehr entered Cubic Art in the Epilog Challenge 9 contest
  • BigjBehr entered Cubic Art in the Arduino Contest 2017 contest
  • BigjBehr's instructable Raspberry Pi Scrolling Sign's weekly stats:
    • Raspberry Pi Scrolling Sign
      603 views
      15 favorites
      1 comments
    • Yet Another Weather Station (Y.A.W.S.)
      592 views
      13 favorites
      3 comments