分类 无线电 下的文章

        clockworkpi是一家中国公司生产的可以独立运行的树莓派掌上电脑,集成了CM4核心卡,一块720P的屏幕,一个全键盘,以及微型轨迹球,两节18650电池等,工业朋克风的设计风格让人爱不释手。一直想用树莓派做个微型电脑,用来学习linux和对家里的诸多树莓派进行一些命令行的操作,然而工作量不是一般的大,合适的屏幕和配件就很难找到,而这种东西一旦凑合用了通用的配件,一下子格调就降下来了,变成手工耿那样的手工粗糙DIY了。clockworkpi设计很不错,外壳框架都是铝合金CNC出来的,看得出来成本不低,虽然块头大但考虑了人体工学设计,双手端着操作熟练了倒也相当舒服。不枉我等了八个月啊!
微信图片_20240209124339.jpg

        第二次因为修改raspberry的系统文件造成sudo无法使用了。第一次是因为修改了/etc/sudoers导致,那一次是用以下语句救回来的:
pkexec --pi nano /etc/sudoers

        这一次是因为python脚本执行问题,怀疑导入的模块环境变量不对,修改了/etc/profile导致。用上面这个语句无法救回,试验了半天,用下面这句:
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin
        运行这一句后,sudo语句暂时可以运行,赶紧进/etc/profile把添加进去的环境变量路径删掉,然后用如下语句刷新:
source /etc/profile
        系统sudo语句恢复正常。

        所以raspberry的系统文件修改有风险!还有就是要事先设置好root账户的密码,这样sudo用不了以后可以用root账户登录,不用sudo语句就可以修改。

        需要修改环境变量的缘起,是将流星监测站的叠加图上传由sm图床改为腾讯云COS自建图床,当时试验是好的,后面就没有能够收到图片推送,今天putty登录人工运行python脚本发现报错缺少qcos模块,可是我已经安装过cos-python-sdk-v5模块了啊,pip freeze也能看到安装的模块,最后各种添加环境变量都没有用,还是用pip uninstall以后再install这个模块才解决了这个问题。记住,以后再有这样的幺蛾子,先卸载,再安装试试。

  • Arduino的开发板是拿来搞开发的,不是拿来搭建应用系统的,nano这样小体积的板子除外。批量应用用ATMEGA328P或ATMEGA2560单片机最小系统搭建即可。

    • 网上找的电路图注意看是对应哪种封装的,DIP封装和TQFP封装的管脚定义不同。PU是DIP封装,AU是TQFP封装。
    • 用ICSP接口灌装bootloader,之后用UART0灌装程序。UART0接口要附带reset,否则无法成功烧录。
    • 如果自制的板子不工作,在电路本身无错误的情况下,大概率是ATMEL芯片引脚出现虚焊、短连等焊接质量问题。
    • 不能盲信嘉立创的自动布线,布线完成后一定要仔细核查DRC,可能出现短连等非正常情况。
    • 绝对不要把系统的复位电路和其他模块的复位电路直接并联,如果电平或复位逻辑不一致会导致复位管脚电平处于浮动状态,会导致一系列匪夷所思的故障。
    • D0口要做外部上拉。会大幅提升供电可靠性。
  • Arduino的内存没那么容易用完。如果编译时提示动态内存太低,肯定是哪个地方没弄对。

    • 用自定义函数,函数内使用局部变量,减少全局变量使用。
    • Serial.print语句用到的固定字符串用F()包起来,这样固定字符串就只占用程序空间而不会占用内存空间。
  • 串口读取数据语法升级。按照一般的Arduino教材(包括中文互联网中)说明,串口读取只能采用read()方法,一次读取一个字节,如果需要读取字符串需要人工构建算法,但实际上现在Arduino已有readString()方法,可直接读取串口接收到的字符串,无需人工构建算法。用英文在google中搜索可以找到相应信息。
  • 有关Arduino扩充串口缓冲区的设置。当一次接收串口数据数百个字节时,因Arduino串口默认发送、接收缓冲区各只有64字节,如接收到的字节数超出64字节,其后的将会被舍弃。因此,必须在Arduino的HardwareSerial.h中设置发送、接收缓冲区尺寸,将字节数扩充到450字节。需要注意的是,必须修改以下目录中的HardwareSerial.h才有效!C:\user\xxxx\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.23\cores\arduino\HardwareSerial.h
    (其中XXXX为所安装机器的用户名) 修改方法:在HardwareSerial.h中开头增加两个宏定义:

    #define SERIAL_RX_BUFFER_SIZE 450
    #define SERIAL_TX_BUFFER_SIZE 450
    两个缓冲区尺寸必须一样,否则无法通过编译。 Arduino IDE如果升级了,一定要再次进入该目录进行修改,否则串口响应会出现问题。
    *《ARDUINO技术内幕》是本好书,深度开发必看。

本记录持续更新中。